ros2shellを実行しても,(ros1 noetic py3) になる
myAGV上でros2shellを実行しても,なぜか(ros1 noetic py3)の環境になる不都合です.
たぶん,myagv_ros2でcolcon buildするところを,間違えてcolcon_ws上でcolcon buildしちゃったからだと思います.
しかも,ros1の環境下で実行しちゃったのが原因ですね.
とすると,正しくは,
# ● 手順 0:クリーンな状態のシェルを開く Shellenv -i HOME="$HOME" USER="$USER" TERM="$TERM" bash --noprofile --norcShow more lines # ● 手順 1:ROS2 だけを読み込む Shellsource /opt/ros/galactic/setup.bashShow more lines # ● 手順 2:ワークスペースへ Shellcd ~/colcon_wsrm -rf build install logShow more lines # ● 手順 3:ROS2 専用として再ビルド Shellcolcon build --symlink-install
これで直るはずです.
以下は,対処療法でしたので無視して下さい.
er@er:~$ ros2shell MYCOBOT_ROS_2_INIT = 1 ros2-init ROS_DISTRO was set to 'noetic' before. Please make sure that the environment does not mix paths from different distributions. ROS_DISTRO was set to 'galactic' before. Please make sure that the environment does not mix paths from different distributions. (ros1 noetic py3)er@er:~$
なんでだろうと思って~/.bashrcを眺めてみると,
(ros1 noetic py3)er@er:~$ tail -n10 .bashrc . /etc/bash_completion fi fi source ~/myagv_ros/devel/setup.bash source ~/myagv_ros/devel/setup.bash export NVM_DIR="$HOME/.nvm" [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm [ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion source ~/myagv_ros/devel/setup.bash
なんかsource ~/myagv_ros/devel/setup.bashが3つも書かれています….
これらをros-initの関数の中に移動させればOKです.
お行儀良くしておきましょうか.
ros-init()
{
source /opt/ros/noetic/setup.bash
if [ -f ~/catkin_ws/devel/setup.bash ]; then
source ~/catkin_ws/devel/setup.bash
fi
if [ -f ~/myagv_ros/devel/setup.bash ]; then
source ~/myagv_ros/devel/setup.bash
fi
違った.
以下のsetup.bashも関係していました.
local_setup.bashへ書き換えましょう.
ros2-init()
{
source /opt/ros/galactic/setup.bash
if [ -f ~/colcon_ws/install/local_setup.bash ]; then
source ~/colcon_ws/install/local_setup.bash
if [ "$MYCOBOT_ROS_2_COMMANDS" != "" ]; then
echo "$MYCOBOT_ROS_2_COMMANDS"
eval "$MYCOBOT_ROS_2_COMMANDS"
exit
fi
fi
}
コメントを残す