【ROS2関係トップページへ】
【ROS2レクチャー:初級 -class style-】
【次:ROS2プロジェクトの作成】
より詳細はこちら
ROS2の構造
用語
- ノード:node
- ROS2のサービスとしてpublisher/subscriber, service/client, parameterなどの機能を提供するもの.ひとつのnode内に複数の機能を提供することもある.
- ターゲット:target
- class化したnodeを組み込み,実行できるようにしたものをtargetと呼ぶ.ひとつのtarget内に複数のnodeを組み込むことも可であり,その場合nodeの実行順や並列動作などを柔軟に制御することもできる.
- ライブラリ:library
- nodeを共有ライブラリ化したもの.
- パッケージ:package,プロジェクト:project
- 関係の深いターゲット,ライブラリを集めたもの.ros2 pkg createで簡単に作成できる.
- ワークスペース:workspace
- 使用するパッケージを集めたトップディレクトリ.普通にmkdirなどで作成する.
- アンダーレイ:underlayとオーバーレイ:overlay
- ROS2が管理する領域.特に管理する全体の領域をアンダーレイ:underlayと呼び,source /opt/ros/<distro>/setup.bashで設定される.その中にworkspaceやpackageがある. workspaceやpackageなど,切り替えて使用するもの/できるものを,アンダーレイに対してオーバーレイ:overlayと呼ぶ.
ROS2における実装方法
ROS2での実装スタイルを大別すると以下となる.
- ROS風node
- クラス化したnode
- 初級 -class style-の説明対象
- 共有ライブラリ化したnode
- コンポーネント化したnode
クラス化したnode
ROS2ではターゲットとnodeを分離することが推奨されている.これによりnodeの再利用を高めるとともに,一つのターゲットで複数のnodeを使用できるようになる(それにより実行順番など細かな制御も可能になる).
nodeの実行はROS2システムのspin関数により制御されるので,クラスとしてはnodeの準備・設定についてのコードを書くことになる.標準的なプログラムでは,コンストラクタの中でほとんどの準備・設定を書くことになる.
![ROS2クラス化PG.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/284261/eafb4a29-3ac0-d54a-f06e-e85121e5a7aa.png)
【次:[ROS2プロジェクトの作成]】