用catkin工作空间覆盖(overlaying)

描述了如何使用catkin工作空间覆盖系统中存在的包,用来测试和开发。
覆盖意思是在系统现存的相同的包上,从源码编译和使用一个ROS包。用这种方式,新的或者改动版的包“overlay”安装的包。

一、前提条件

需要最新版本的wstool。

1 . 首先安装ros-tutorials包通过apt-get:

$ sudo apt-get install ros-groovy-ros-tutorials

接下来覆盖这个ros包用同样的包但是是在工作空间内的源码。

二、用一个catkin工作空间覆盖

下面配置一个工作空间为了编译和source被覆盖包的源码。

1 . 创建一个catkin工作空间

为了管理不同source的多个源码包,推荐使用wstool。
创建一个文件夹保存新的工作空间:

$ mkdir -p ~/overlay_ws
$ cd ~/overlay_ws

2 . 添加包到catkin工作空间

使用wstool装配src文件夹:

$ mkdir -p ~/overlay_ws/src
$ cd ~/overlay_ws/src
$ wstool init

第三条指令创建一个初始化“.rosinstall”文件在src文件夹里面,包括所下载的源码的资源定位符合版本。现在从源码添加ros包到src文件夹:

$ wstool set ros_tutorials --git git://github.com/ros/ros_tutorials.git
$ wstool update

第一条指令使用git配置登记了“ros_tutorials”在“.rosintall”中,并且第二条指令下载文件。

Note:这里不一定适用wstool,可以使用git下载是一样的效果:

$ git clone git://github.com/ros/ros_tutorials.git

3 . 编译工作空间

在编译之前,确认环境配置正确:

$ source /opt/ros/indigo/setup.bash

编译工作空间:

$ cd ~/overlay_ws/
$ catkin_make

一旦编译完成,source了devel空间,工作空间内的包便覆盖了之前系统安装的包。

$ source ~/overlay_ws/devel/setup.bash

4 . 测试覆盖的包

$ roscd rospy_tutorials
$ pwd
~/overlay_ws/src/ros_tutorials/rospy_tutorials

三、链接catkin工作空间

有可能同时使用几个catkin工作空间,从而将一群catkin包的编译过程和另一群catkin包分开。

创建第二个工作空间:

$ mkdir -p ~/overlay_ws_overlay/src
$ cd ~/overlay_ws_overlay/src
$ catkin_init_workspace
$ cd ~/overlay_ws_overlay
$ source ~/overlay_ws/devel/setup.bash
$ catkin_make

注意输出如何告知覆盖链:

...
-- This workspace overlays: /home/<user>/overlay_ws/devel;/opt/ros/groovy
...

覆盖需要想要依赖的工作空间当配置的时候是激活的。所以如果删除build文件夹和配置,必须再一次source各自的setup.sh用来创建工作空间链。

为了测试覆盖,打开新终端,source新的setup.sh在overlay_ws_overlay中:

$ source ~/overlay_ws_overlay/devel/setup.bash
$ roscd rospy_tutorials
$ pwd
/home/<user>/overlay_ws/src/ros_tutorials/rospy_tutorials

也能创建另一个rospy_tutorials的副本在第二个覆盖工作空间内:

$ cd ~/overlay_ws_overlay/src
$ wstool init

从源码添加ros包到src文件夹内:

$ wstool set ros_tutorials --git git://github.com/ros/ros_tutorials.git
$ wstool update

用roscd检查是否覆盖起作用:

$ roscd rospy_tutorials
$ pwd
/home/<user>/overlay_ws/src/ros_tutorials/rospy_tutorials

此时不工作。为了让ros工具找到一个新的包,需要配置它至少一次。roscd起作用在需要更新的位置缓存基础上。

$ cd ~/overlay_ws_overlay
$ catkin_make
# this updates the cache for roscd
$ rospack profile
$ roscd rospy_tutorials
$ pwd
/home/<user>/overlay_ws_overlay/src/ros_tutorials/rospy_tutorials

做一个简要的重述:

$ roscd rospy_tutorials
roscd: command not found

$ source /opt/ros/groovy/setup.bash 
$ roscd rospy_tutorials
$ pwd
/opt/ros/groovy/share/rospy_tutorials

$ source ~/overlay_ws/devel/setup.bash
$ roscd rospy_tutorials
$ pwd
/home/<user>/overlay_ws/src/ros_tutorials/rospy_tutorials

$ source ~/overlay_ws_overlay/devel/setup.bash 
$ roscd rospy_tutorials
$ pwd
/home/<user>/overlay_ws_overlay/src/ros_tutorials/rospy_tutorials$ 

此文只做普及,尽量不要如此使用。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值