はじめに
ROS2のプログラミングの勉強(基礎編)とし実施したことをまとめて残していきます.
このページでは全体の流れを最も簡単なプログラム(ノード) hello_node の実行を例にして示します.
環境
・PC: Panasonic Let's Note CF-FV
・OS: Windows11 Pro (64bit)
・VirtualBox: 6.1.38 (Ubuntu20.04.5, GUI環境)
・ROS: ROS2 Foxy
ここまでの環境構築については下記参照
・Windows PCにVirtualBox+Ubuntuを導入
https://qiita.com/pez/items/a3ef1855f7e1e0ed3dfd
・ROS(ROS2 Foxy)をインストール
https://qiita.com/pez/items/1df36628524ff40a3d93
1. ワークスペース作成
$ cd
$ mkdir -p ~/<ワークスペース名>/src/
今回は <ワークスペース名>は hello_ws にすることにします.
2. パッケージ作成
$ cd ~/hello_ws/src
$ ros2 pkg create --build-type ament_python --node-name <ノード名> <パッケージ名>
今回は <ノード名> は hello_node
<パッケージ名> は hello
にすることにします
3. プログラミング
1. package.xml ファイルの編集
※エディタは自分の好きなものを使えばよい.下記は emacs を使う場合.
vi package.xml でもいいし nano package.xml でもよい.
$ cd ~/hello_ws/src/hello
$ emacs package.xml
自作パッケージを一般公開するときには変更する必要があるが,今回は特に何もしません.
2. setup.py ファイルの編集
$ cd ~/hello_ws/src/hello
$ emacs setup.py
23行目を確認
ノード名=パッケージ名.ノード名:main
となっている必要がある.今回パッケージを作成する際に --node-name のオプションを付けているので自動的に下記のようになっています
entry_point={
'console_scripts': [
'hello_node = hello.hello_node:main'
],
},
よって今回何もする必要はありませんが,もし1つのパッケージに複数のPythonファイルがある場合はそのファイルごとにエントリポイントを指定しなければならないので setup.py を必ず変更する必要があります.
3.ソースコード作成
本来ここでソースコードを作りますが,ここではパッケージ作成時に自動的に作られている hello_node.py をそのまま利用することにします.
中身を確認するため開きます.
$ cd ~/hello_ws/src/hello/hello
$ emacs hello_node.py
print文で Hi from hello. と表示するだけであることが分かると思います.
4. ビルド
ワークスペース名直下のディレクトリ以外はビルドできませんのでそうでない場合は移動します
初めてビルドしたとき build, install, log ディレクトリが作成されます
$ cd ~/hello_ws
$ colcon build
成功すると小さな別ウィンドウで 'colcon build' succesfull と表示されます
5. 設定ファイルの反映
アンダーレイ設定ファイル(ROS2システムの設定)を反映させます
$ source /opt/ros/foxy/setup.bash
オーバーレイ設定ファイル(自作ワークスペースの設定)を反映させます
$ source ~/hello_ws/install/setup.bash
上記2つのコマンドは .bashrc に記述しておくと便利です
自作パッケージが増えるとオーバーレイ設定ファイルも増えていきます
$ emacs ~/.bashrc
source /opt/ros/foxy/setup.bash
source ~/hello_ws/install/setup.bash
の2行を追加する
$ source ~/.bashrc
と入力するとオーバーレイ設定ファイルがいくら多くなっても一度で反映させることができます
6. ノードの実行
$ ros2 run hello hello_node
ros2 run <パッケージ名> <ノード名>
で実行できます.
Hi from hello.
と表示されたら成功です.
7. 練習
hello_node.py を編集して別の表示がされるようにしてみましょう.
下記を行う必要があります.
1.hello_node.pyの中身を編集して保存
2.ビルド
3.設定ファイルの反映
4.ノードの実行