Hex version API docs License

English README

Rclex

ElixirによるROS 2クライアントライブラリです. ROS 2共通階層であるRCL(ROS Client Library)APIをElixirコードから呼び出すことで基本的なROS 2の振る舞いをさせています. またノード間の出版購読通信およびそれに付随するコールバック関数をプロセスモデルの一つであるタスクに実行させることで軽量にしています. これにより,メモリへの負荷を抑えつつ,また耐障害性を高めてノードを大量に生成,通信させることが可能になっています.

ROS 2とは

ROS(Robot Operating System)というロボット開発支援フレームワークの次世代版です. ROS,ROS 2ともに,機能単位をノードと表現し,ノードを複数組み合わせて所望のさまざまなロボットアプリケーションが作成できます. またノード間通信には出版購読通信が主に用いられ,パブリッシャとサブスクライバがトピックという名前でデータを識別してやりとりしています.

ROSからの大きな違いとして,通信にDDS(Data Distribution Service)プロトコルが採用されたこと,そしてライブラリが階層構造に分けられ,様々な言語でROS 2クライアントライブラリを開発できるようになったことです.これにより,Elixirでもロボットアプリケーションを開発できるようになりました.

詳しくはROS 2の公式ドキュメントを参照ください.

使い道

現時点では以下のことができるよう,Rclex APIを提供しています.

  1. 同一トピックに対して,複数のパブリッシャおよびサブスクライバを大量に作成できる.
  2. パブリッシャ,トピック,サブスクライバが1つずつのペアを大量に作成できる.

動かし方

こちらを参照してください.サンプルコードとともに使い方を記しています.

動作環境

下記の環境で動作を確認しています

他の環境でも動作が確認できたら,ぜひお知らせいただけますと幸いです.

インストール方法

rclexHexパッケージとして公開しています.

mix.exsの依存関係にrclexを追加することで,ご自身のプロジェクトにて使用することができます.

def deps do
  [
    {:rclex, "~> 0.3.1"}
  ]
end

ドキュメントはExDocで生成されてHexDocsに公開されています.

https://hexdocs.pm/rclexをご参照ください.