zoukankan      html  css  js  c++  java
  • 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

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

  • 相关阅读:
    Docker 私有仓库搭建
    事务提交与不同数据库的自增方式
    多环境切换&&注解方式&&增删改返回值问题
    查询缓存&&逆向工程
    Mybatis整合Log4j、延迟加载
    关联查询
    MyBatis实现动态SQL
    输出参数resultType
    MyBatis调用存储过程执行CRUD
    两种取值符号的异同
  • 原文地址:https://www.cnblogs.com/HaoQChen/p/11048579.html
Copyright © 2011-2022 走看看