ROS/ROS2の環境変数管理

ROS/ROS2 環境変数あるある

1台のPCにROS/ROS2の複数のディストリビューションがインストールされていて, 環境変数を切り替えながら使っていませんか?

自分の場合,趣味のプロジェクトで使っているディストリビューションがバラバラで

  • melodic
  • dashing
  • eloquent

を使い分ける必要があります.

環境変数の切り替え,どうしてる?

以前,こんなツイートを見かけました.

みんな環境変数切り替えで苦労してる. 考えることは一緒!

ちなみに自分は.bashrcに下のように書いて一番上のexportコメントアウトで切り替えてました.
今思うと超ガバガバでウケる(ウケない)

export CHOOSE_ROS_DISTRO=dashing
#export CHOOSE_ROS_DISTRO=melodic
#export CHOOSE_ROS_DISTRO=eloquent

if [ $CHOOSE_ROS_DISTRO = melodic ]; then
    source /opt/ros/melodic/setup.bash
    source ~/catkin_ws/devel/setup.bash
elif [ $CHOOSE_ROS_DISTRO = dashing ]; then
    source /opt/ros/dashing/setup.bash
    source ~/ros2_dashing_ws/install/local_setup.bash
elif [ $CHOOSE_ROS_DISTRO = eloquent ]; then
    source /opt/ros/eloquent/setup.bash
    source ~/ros2_eloquent_ws/install/local_setup.bash
fi

神ツール現る

なんと,ROS2本の著者であるyoutalk氏がROS/ROS2の環境変数管理ツールを作っていたみたいです. github.com

ROSJPのLT大会でも発表されてたみたいですね

ROS / ROS 2開発生産性向上ツール - Speaker Deck

複数のディストリビューションだけでなく複数のワークスペースも考えられていて素晴らしい!

使い方は簡単で

chdistro dashing ~/ros2_ws

のようにchdistroコマンドの後にディストリビューションワークスペースを指定するだけです.

よく使うワークスペースにはエイリアスをかけておけば環境切り替えが爆速になりそうです.

神ツールに補完をつける

素晴らしいchdistroですが,入力補完がないのでディストリビューションワークスペースのパスを全て入力する必要があります.

ということで補完スクリプトを作りました.

/etc/bash-completionに配置すると勝手に読み込まれるはずです.

ディストリビューション/opt/rosにインストールされているものを補完し, ワークスペース$HOME以下のディレクトリを補完してくれるようになっています.

本家の方にも補完を取り入れるようにはたらきかけているのでデフォルトで補完が出るようになるかも知れませんね.