鱼香ROS社区
    • 版块
    • 最新
    • 未解决
    • 已解决
    • 群组
    • 注册
    • 登录
    紧急通知:禁止一切关于政治&VPN翻墙等话题,发现相关帖子会立马删除封号
    提问前必看的发帖注意事项: 社区问答规则(小鱼个人)更新 | 高质量帖子发布指南

    ros1 source 与export ROS_PACKAGE_PATH区别

    已定时 已固定 已锁定 已移动
    移动平台分享
    ros1 noetic
    2
    3
    622
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • 毛哥成山轮胎机油保养毛
      毛哥成山轮胎机油保养 活跃VIP
      最后由 毛哥成山轮胎机油保养 编辑

      ORB_SLAM3只有ros1的版本,为了学习,ros1又重新跑了一遍,记个笔记,以后查起来方便,也给后来者留个脚印,少走点弯路。
      环境:ubuntu20.4,noetic
      每次运行程序需要source devel/setup.bash,也可以写入.bashrc
      还可以设置包路径:
      export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:/home/m/m_ros1_ws
      这2种添加环境变量的方式是有区别的。
      2023-02-27 11-34-39屏幕截图.png
      mkdir -p m_ros1_ws/src //创建工作空间
      cd m_ros1_ws/src
      catkin_create_pkg hello roscpp rospy std_msgs //创建功能包
      2023-02-27 11-57-55屏幕截图.png
      cd hello/src //进入包内
      touch hello.cpp //创建cpp文件

      #include<ros/ros.h>
      int main(int argc,char**argv)
      {
          printf("hello world");
          return 0;
      }
      

      hello文件夹内CMakeLists.txt末尾加:
      add_executable(hello src/hello.cpp)

      cd m_ros1_ws //进入工作空间
      catkin_make //编译
      在 devel/lib/hello/ 生成hello可执行文件
      source devel/setup.bash
      rosrun hello hello //运行输出 hello world
      但是我们也可以把生成的可执行文件hello复制到 hello文件夹下
      2023-02-27 12-11-05屏幕截图.png
      编辑 .bashrc 末尾加上
      export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:/home/m/m_ros1_ws
      重新打开终端 不输入source 语句 rosrun hello hello
      此时也可以输出结果 hello world,但是这次运行的是hello是我们复制进的可执行文件而不是devel/lib/hello内的可执行文件。
      我们可以通过删除hello可执行文件进行测试。
      还有一点,包名并不一定是文件夹的名字,而是package.xml 文件设定的名字。2023-02-27 12-45-34屏幕截图.png
      我们知道了这些就可以骗过工作空间,把从别的地方cmake编译好的可执行程序放入我们的包,通过 rosrun 包名 程序名去执行,就像这样运行:
      rosrun hello hello

      醉后不知天在水醉 1 条回复 最后回复 回复 引用 1
      • 醉后不知天在水醉
        醉后不知天在水 活跃VIP @毛哥成山轮胎机油保养
        最后由 编辑

        @毛哥成山轮胎机油保养 source只适用于当前活动shell范围内,而ROS_PACKAGE_PATH可以系统全局使用

        毛哥成山轮胎机油保养毛 1 条回复 最后回复 回复 引用 1
        • 毛哥成山轮胎机油保养毛
          毛哥成山轮胎机油保养 活跃VIP @醉后不知天在水
          最后由 毛哥成山轮胎机油保养 编辑

          @醉后不知天在水 我这么测试的原因是我要把从别的地方用cmake编译的可执行文件放到我的ros包内,好多开源程序在ros标准空间内编译还是很麻烦的,我可以编译好了假装它就在工作空间内

          1 条回复 最后回复 回复 引用 1
          • 第一个帖子
            最后一个帖子
          皖ICP备16016415号-7
          Powered by NodeBB | 鱼香ROS