ROS多個工作空間存在同名包的BUG

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. 解決辦法

  1. 刪掉builddevel文件夾
  2. 刪掉ROS_PACKAGE_PATH環境變量:unset ROS_PACKAGE_PATH
  3. 重新編譯你的包
  4. 註釋掉~/.bashrc中無關的包的bash,只保留想要的工作空間,如圖一。
  5. source ~/.bashrc

完成以上五步就可以實現多個工作空間的分離,調用同名的包了。

參考

http://wiki.ros.org/cn/ROS/Tutorials/InstallingandConfiguringROSEnvironment
https://blog.csdn.net/moondog123/article/details/88432341


喜歡我的文章的話Star一下唄Star

版權聲明:本文爲白夜行的狼原創文章,未經允許不得以任何形式轉載

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章