0. 寫在最前面
爲了測試方便,我有多個工作空間。不同工作空間會存在一些同名的包。按照官網教程的說法,只要source了setup就可以將當前工作空間設置爲ROS頂層。一天在測試的時候發現,並不能通過修改.bashrc
來修改當前活躍的工作空間。之前source的工作空間仍然存在,一直調用的是之前的工作空間的包。
1. 問題描述
查看你當前的ROS包路徑:
echo $ROS_PACKAGE_PATH
輸出:
/home/night_fury/robot_ws/src:/home/night_fury/catkin_ws/src:/home/night_fury/JDD_ws/src/cartographer_ros/cartographer_rviz:/home/night_fury/JDD_ws/src/cartographer_ros/cartographer_ros:/home/night_fury/JDD_ws/src/cartographer_ros/cartographer_ros_msgs:/opt/ros/indigo/share:/opt/ros/indigo/stacks
會輸出你所有的ROS工作空間路徑,如果有同名的包,則調用順序爲echo $ROS_PACKAGE_PATH
顯示的順序。
像我這裏,一直調用的是robot_ws空間的包,無法調用catkin_ws的包,哪怕我已經按照前面那樣子吧robot_ws註釋掉了。
甚至我刪掉ROS_PACKAGE_PATH
變量再重新source仍然無效,ROS_PACKAGE_PATH
仍然會重新變爲所有的工作空間。應該是catkin_ws中的setup.bash文件被污染了,導致了明明只source catkin_ws
工作空間,但實際source
所有的工作空間。這應該是一個bug。
2. 解決辦法
- 刪掉
build
和devel
文件夾 - 刪掉
ROS_PACKAGE_PATH
環境變量:unset ROS_PACKAGE_PATH
- 重新編譯你的包
- 註釋掉
~/.bashrc
中無關的包的bash,只保留想要的工作空間,如圖一。 source ~/.bashrc
完成以上五步就可以實現多個工作空間的分離,調用同名的包了。
參考
http://wiki.ros.org/cn/ROS/Tutorials/InstallingandConfiguringROSEnvironment
https://blog.csdn.net/moondog123/article/details/88432341
喜歡我的文章的話Star一下唄Star
版權聲明:本文爲白夜行的狼原創文章,未經允許不得以任何形式轉載