概要
ROS2でノードを作成、実行する際のノウハウを記載する。
ノード作成~実行 手順
手順1: パッケージの作成
下記のコマンドを実行して、パッケージを作成することができる。
ros2 pkg create [パッケージ名]
追加できる主要なオプションには以下のものがある。
build-type
--build-type [ビルドタイプ]
を追加することで、ビルドタイプを指定することができる。
--build-type ament_python
でPython, --build-type ament_cmake
でcmakeを指定できる。
dependencies
--dependencies [パッケージ名]
を追加することで、依存するパッケージを指定することができる。
node-name
--node-name [ノード名]
を追加することで、ノードも作成することができる。
手順2: ビルド
下記のコマンドを実行して、パッケージをビルドすることができる。
colcon build --symlink-install
--symlink-install
オプションを追加することで、パッケージ内のPythonのソースコードを変更した場合に再ビルドが不要になる。
パッケージを指定してビルドしたい場合は --package-select [パッケージ名]
を追加する。
また、再ビルドする際は、ビルド実行前に下記コマンドを実行してキャッシュを削除しておくことが好ましい。
rm -rf build install
手順3: 設定ファイルの反映
下記のコマンドを実行して、ROS2システムの設定を反映することができる。
source /opt/ros/humble/setup.bash
なおARCで使用しているDocker環境では、コンテナ起動時に上記コマンドが実行されるようになっているため、手動での実行は不要である。
次に、下記のコマンドを実行して、オーバーレイの設定を反映することができる。
source install/setup.bash
手順4: ノードの実行
下記のコマンドを実行して、ノードを実行することができる。
ros2 run [パッケージ名] [ノード名]
ハンズオン
ros2 pkg create --build-type ament_python --node-name sample_node sample_package
上記コマンドを実行し、sample_packageパッケージを作成する。
オプションで設定した項目は以下の通りである:
- ビルドタイプをPythonに設定
- sample_nodeノードを作成
パッケージ内のファイル構成は次のようになる:
sample_package
│ package.xml
│ setup.cfg
│ setup.py
│
├─resource
│ sample_package
│
├─sample_package
│ sample_node.py
│ __init__.py
│
└─test
test_copyright.py
test_flake8.py
test_pep257.py
sample_node.pyの中身は次のようになっている:
def main():
print('Hi from sample_package.')
if __name__ == '__main__':
main()
本来はここにノードを実装していくが、今回はこのままとする。
以下のコマンドを実行し、ビルド~ノードの起動を行う。
colcon build --symlink-install
source install/setup.bash
ros2 run sample_package sample_node
以下の標準出力が行われていることから、正常にノードが起動できていることがわかる。
Hi from sample_package.