可変ブログ

色々メモとか。とりあえず自分が分かるように。その後、なるべく人が見て分かるように。可変。

ROS2の setup.bash を必要なときだけ source する

ROS2を入れたけど, setup.bash を source すると地味に時間がかかる.
これを .bashrc で source させるようにすると, ROS2 を使わないときでもターミナルを開くたびに時間がかかって地味にストレス.
かと言って, ROS2 を使うときだけ手打ちで source するのも面倒.
ということで, ターミナル開いて初めてROS2系コマンド (colcon含む) を打つときだけ source させるようなスクリプト書きました.
以下を .bashrc に追記すればOK

colconSetted() {
  if [ -z "$ROS2SETTED" ]; then
    source /opt/ros/dashing/setup.bash
    source ~/ros2_ws/install/setup.bash
    ROS2SETTED=1
  fi
  \colcon "$@"
}
ros2Setted() {
  if [ -z "$ROS2SETTED" ]; then
    source /opt/ros/dashing/setup.bash
    source ~/ros2_ws/install/setup.bash
    ROS2SETTED=1
  fi
  \ros2 "$@"
}
alias colcon="colconSetted"
alias ros2="ros2Setted"

一発なにかROS2系のコマンドを打たないと補完が効かないのが玉にキズ.
それだったらエイリアス組んで自分で打ったほうがいいのではと思ってしまったりするけど気にしない.
あとまっさらな状態からパッケージを作ったとき, ~ros2_ws/install/setup.bash が無いとエラー出る.



おまけで, colconでパッケージを指定してビルドする
colcon build --symlink-install --packages-select
も長くて面倒なので cbp に置き換えるスクリプトを書きました.

cbp() {
  cd ~/ros2_ws && colcon build --symlink-install --packages-select "$@"
  cd -
}




参考URL