変更:
2023/01/19: もしかしたら必要となるかもしれないpythonモジュール]をROS2 + pipenv installに移動
2023/01/18: もしかしたら必要となるかもしれないpythonモジュールを追加
2021/07/23: アンダーレイの設定に関して修正.colcon_cdの設定≠アンダーレイの設定,アンダーレイの設定=ROS2の全体設定.
初期設定
ROS2を使用するために,以下の5種類(1種類は必要に応じて)の設定を行う.
- colcon_cdの設定
- exportでcolcon_cdコマンドが管理するディレクトリを指定
- ROS2の全体設定(アンダーレイの設定)
- /opt/ros/<distro>/setup.bash
- 使用するバージョンに応じて<distro>を変更
- 複数terminalにてそれぞれ異なるバージョンを指定することでバージョンを混在させて使用可能
- 詳しくはROS2に関する基本情報を参照
- プロジェクト・プログラムの設定
- install/setup.bash
- ROS_DOMAIN_ID
- 他の人のノードと混ざらないため.ノード空間を分けるもの.逆に言うと,これが同じ値であれば異なる人が実行したノード間であっても通信・やりとりできる.
- 自分が使ってるPCのみで使用し,他のコンピュータ(上で動いている他の人のノード)と勝手にやり取りをしないために,以下のオプションが付け加えられたので活用.
- ROS_LOCALHOST_ONLY
- もしかしたらhumbleからなのかもしれない.
- ROS_LOCALHOST_ONLY
- 動的なノード発見範囲の設定について(やりたいときに設定)
- ROS_AUTOMATIC_DISCOVERY_RANGE={SUBNET,LOCALHOST,OFF,SYSTEM_DEFAULT}
- ROS_STATIC_PEERS={IPアドレス,FQDNなど}
- 詳しくはこことか
<distro>のところがバージョン.個々の<distro>の部分は以下の通り.
- <distro>の部分
- Galactic Geocheloneの場合
- galactic
- Foxy Fizroyの場合
- foxy
- Humble Hawksbillの場合
- humble
- Galactic Geocheloneの場合
下記の例ではcolcon_cdで管理するディレクトリを~/ros2_install
としている.個人的には~/program/ros2
としている.echoでえいっと設定するか.bashrc
を直接編集するか好きな方で.
とりあえずechoでえいっと設定する場合
$ echo "source /usr/share/colcon_cd/function/colcon_cd.sh" >> ~/.bashrc
$ echo "export _colcon_cd_root=~/ros2_install" >> ~/.bashrc
$ echo "source /opt/ros/<distro>/setup.bash" >> ~/.bashrc
$ echo "export ROS_DOMAIN_ID=<自分に割り当てられた番号>" >> ~/.bashrc
ROS_DOMAIN_IDに関しては一人で使用する分には 0
を割り当てるか ROS_LOCALHOST_ONLY=1
をexportする.
詳しくは同一ネットワーク内で複数人がROS2を使用する場合を参照のこと.
.bashrcを編集して少し工夫して設定する場合
...
# for ROS2
## User settings
ROS2_TOP_DIRECTORY="$HOME/ros2_install"
## 使用するディストロを有効化(コメントアウト)
#DISTRO_ROS2="eloquent"
DISTRO_ROS2="foxy"
#DISTRO_ROS2="galactic"
#DISTRO_ROS2="humble"
ID=0 # pleas contact Kurashige
## commands
if [ -f /usr/share/colcon_cd/function/colcon_cd.sh ]; then
source /usr/share/colcon_cd/function/colcon_cd.sh
echo "colcon cd root is $ROS2_TOP_DIRECTORY ."
export _colcon_cd_root=$ROS2_TOP_DIRECTORY
fi
if [ -f /opt/ros/$DISTRO_ROS2/setup.bash ]; then
echo "ROS2 $DISTRO_ROS2 is activated."
source /opt/ros/$DISTRO_ROS2/setup.bash
fi
if [ $ID -eq 0 ]; then
echo "ROS2 is executed only for local."
export ROS_LOCALHOST_ONLY=1
else
echo "ROS2 is executed through a network."
export ROS_DOMAIN_ID=$ID
fi
ROS2プログラムのexamples
もし興味があれば,公式githubのexamplesをDLしておく.ただあまり必要ではない.というのは,ブラウザで公式githubのexamplesを見る方が勉強しやすいから(個人的意見).
DL・コンパイル・実行の方法は,公式チュートリアルの一番初めであるUsing Colcon to build packagesにある.
ここではDLの方法のみ記載しておく.
$ mkdir -p ~/ros2_example_ws/src
$ cd ~/ros2_example_ws
$ git clone https://github.com/ros2/examples src/examples
~/ros2_example_ws/src/rclcpp以下にc++用のコードがあり,~/ros2_example_ws/src/rclpy以下にpython用のコードがある.