有时可能大家在source后发现ROS_PACKAGE_PATH和自己想象中不一样
【提出问题】在执行下面的命令后
source devel/setup.bash
ROS_PACKAGE_PATH丢失之前的部分路径
【场景举例】
当前我们执行
echo ROS_PACKAGE_PATH
输出结果为
/opt/ros/indigo/share:/opt/ros/indigo/stacks
我们现在有两个在根目录下经常使用的ROS工程:catkin_ws和catkin_ws2
为了避免每回打开终端都要source,我们执行下面的命令
echo "source /catkin_ws/devel/setup.bash" >> ~/.bashrc
echo "source /catkin_ws2/devel/setup.bash" >> ~/.bashrc
现在我们关掉终端再次打开echo下路径希望看到的本应该是
/catkin_ws2/src:/catkin_ws/src:/opt/ros/indigo/share:/opt/ros/indigo/stacks
但事实上不出意外显示的应该是
/catkin_ws2/src:/opt/ros/indigo/share:/opt/ros/indigo/stacks
【解决】
这个原因是因为在创建devel文件时,即你执行
catkin_make
setup.bash文件将当前终端下的ROS_PACKAGE_PATH包含进去
如果你希望实现上例所说的希望看到的结果就要按以下步骤执行
rm -rvf /catkin_ws/devel /catkin_ws/build /catkin_ws2/devel /catkin_ws2/build
cd /catkin_ws
catkin_make
echo "source /catkin_ws/devel/setup.bash" >> ~/.bashrc
exit
重新Ctrl+Alt+T执行
cd /catkin_ws2
catkin_make
echo "source /catkin_ws2/devel/setup.bash" >> ~/.bashrc
exit
这时你再打开终端查看ROS_PACKAGE_PATH即为
/catkin_ws2/src:/catkin_ws/src:/opt/ros/indigo/share:/opt/ros/indigo/stacks