Hex version API docs License ci-all_version

注: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つずつのペアを大量に作成できる.

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

動作環境(開発環境)

現在,下記の環境を対象として開発を進めています.

  • Ubuntu 20.04.2 LTS (Focal Fossa)
  • ROS 2 Foxy Fitzroy
  • Elixir 1.11.2-otp-23
  • Erlang/OTP 23.3.1

動作確認として,rclex/rclex_connection_testsを用いてRclcppで実装されたノードとの通信に関するテストを実施しています.

GitHub Actionsでは,複数の環境でのCIを実行しています.ただし,これら全ての環境での動作保証には対応できません.

Docker HubにCIで利用しているビルド済みのDockerイメージを公開しています. これを用いてRclexを簡単に試行することもできます.

インストール方法

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

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

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

ドキュメントはExDocで生成されてHexDocsに公開されています.
https://hexdocs.pm/rclexをご参照ください.