ROS環境の設定
Ubuntu上でROS1とROS2の双方を使って開発をすることが多くなり、環境をターミナルで行き来することが多くなったので、各ターミナルでこの環境が読み込まれてるかをわかりやすくしたときの設定のメモ。
環境
本記事では以下で検証しています。
- Ubuntu 20.04
- ROS noetic
- ROS2 foxy
Ubuntu18.04, melodic, eloquentの環境でも可能なはずです。
環境を読み込むためのaliasの設定
- bashの場合
-
~/.bashrc
か~/.bash_aliases
などに以下を記載 - それぞれ環境の設定ファイルの読み込みや、workspaceへのpath、ROS通信に関わる変数の設定を行っている
- それぞれの最後の行にある
PS1
をすることでターミナル上でどちらの環境が読み込まれてるかわかるようになっている。 - workspaceへのpathは適宜自分の環境に合わせてください
-
## ROS ##
LOCAL_IP=`hostname -I | cut -d' ' -f1`
alias noetic='
source /opt/ros/noetic/setup.bash;
export ROS_WORKSPACE=${HOME}/catkin_ws;
export ROS_PACKAGE_PATH=${ROS_WORKSPACE}/:$ROS_PACKAGE_PATH;
export ROS_IP=${LOCAL_IP};
export ROS_MASTER_URI=http://localhost:11311;
source ${ROS_WORKSPACE}/devel/setup.bash;
export PS1="\e[1;32m\]\u@\h\e[1;31m\]<noetic>\e[m\]:\e[1;34m\]\w\e[m\]$ "
'
alias foxy='
source /opt/ros/foxy/setup.bash;
export ROS_WORKSPACE=${HOME}/ros2_ws;
source ${ROS_WORKSPACE}/install/local_setup.bash;
export ROS_LOCALHOST_ONLY=1;
export PS1="\e[1;32m\]\u@\h\e[1;33m\]<foxy>\e[m\]:\e[1;34m\]\w\e[m\]$ "
'
- zshの場合
- bashの場合とほぼ同じです。
~/.zshrc
などに記載してください。 - 設定ファイルの読み込みファイルの拡張子が変わるだけです。
- bashの場合とほぼ同じです。
## ROS ##
LOCAL_IP=`hostname -I | cut -d' ' -f1`
alias noetic='
source /opt/ros/noetic/setup.zsh;
export ROS_WORKSPACE=${HOME}/catkin_ws;
export ROS_PACKAGE_PATH=${ROS_WORKSPACE}/:$ROS_PACKAGE_PATH;
export ROS_IP=${LOCAL_IP};
export ROS_MASTER_URI=http://localhost:11311;
source ${ROS_WORKSPACE}/devel/setup.zsh;
export PS1="%F{red}<noetic> %f"$_LIBERTY" "
'
alias foxy='
source /opt/ros/foxy/setup.zsh;
export ROS_WORKSPACE=${HOME}/ros2_ws;
source ${ROS_WORKSPACE}/install/local_setup.zsh;
export ROS_LOCALHOST_ONLY=1;
export PS1="%F{blue}<foxy> %f"$_LIBERTY" "
'
- 上記を記載後、
source ~/.bashrc
かsource ~/.zshrc
をし変更を読み込みます。(別ターミナル起動でも良いです。) - ROS1を使いたい場合は
noetic
をROS2を使いたい場合はfoxy
を実行することで環境が読み込まれます。
それぞれのworkspaceのmake
- 以下を追加することで
ros_make
とすると現在読み込まれている環境のワークスペースをビルドしてくれます - buildのoptionは適宜変更してください。
function ros_make() {
dir=$PWD;
cd $ROS_WORKSPACE;
if [[ $ROS_DISTRO == "noetic" ]]; then
catkin_make --cmake-args -DCMAKE_BUILD_TYPE=Release;
. devel/setup.zsh;
elif [[ $ROS_DISTRO == "foxy" ]]; then
if [ $# -gt 0 ]; then
colcon build --packages-select $1 --symlink-install --cmake-args -DCMAKE_BUILD_TYPE=Release;
else
colcon build --symlink-install --cmake-args -DCMAKE_BUILD_TYPE=Release;
fi;
. install/local_setup.zsh;
else
echo "set ros distribution";
fi
cd $dir;
}