ROS多个工作空间存在同名包的BUG

0. 写在最前面

本文持续更新地址:https://haoqchen.site/2019/03/28/ros-same-ws-bug/

为了测试方便,我有多个工作空间。不同工作空间会存在一些同名的包。按照官网教程的说法,只要source了setup就可以将当前工作空间设置为ROS顶层。一天在测试的时候发现,并不能通过修改.bashrc来修改当前活跃的工作空间。之前source的工作空间仍然存在,一直调用的是之前的工作空间的包。
在这里插入图片描述
如果觉得写得还不错,可以找我其他文章来看看哦~~~可以的话帮我github点个赞呗。
你的Star是作者坚持下去的最大动力哦~~~

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

版权声明:本文为白夜行的狼原创文章,未经允许不得以任何形式转载

  • 10
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值