Beginner:Client libraries-2 创建工作空间

目标:创建一个工作空间,学习如何设置开发和测试覆盖层(overlay)。

背景

工作空间是一个包含了ROS2的包的路径,在使用ros2之前首先需要source相应的ROS2工作空间来使用对应的包。

overlay是一个可以添加新的包而不影响现有ROS2工作区,即underlay的工作空间;

underlay中包含着overlay的依赖包;overlay中的包会覆盖underlay中的包;

也可以存在多层的overlay和underlay,其中每个overlay会使用其父underlay的包。

任务

1、source ROS2环境

你的主ros2安装会是本课程中的underlay。(注意一个underlay不一定是ros2的主安装);

source /opt/ros/humble/setup.bash

2、创建一个新的目录

mkdir -p ~/ros2_ws/src
cd ~/ros2_ws/src

3、克隆一个样本包进来

git clone https://github.com/ros/ros_tutorials.git -b humble

4、解析依赖

# cd if you're still in the ``src`` directory with the ``ros_tutorials`` clone
cd ..
rosdep install -i --from-path src --rosdistro humble -y

如果有了所有依赖,则会出现

在package.xml文件中声明了他们的依赖。

5、使用colcon来编译工作空间

colcon build
返回
Starting >>> turtlesim
Finished <<< turtlesim [5.49s]

Summary: 1 package finished [5.58s]

colcon build其他有用的参数

--packages-up-to 构建所需的包及其所有依赖项,但不是整个工作区(节省时间)
--symlink-install 避免每次调整python脚本时都需要重新构建
--event-handlers console_direct+ 显示生成时的控制台输出(否则可以在日志目录中找到)

编译完成,工作空间下,有如下的目录

build  install  log  src

install里面存放了你工作空间的安装文件,

6、source overlay

在source overlay之前,打开一个新的终端,与构建工作区的终端分开,这一点非常重要。在与编译相同的终端中source一个overlay,或者同样,编译在一个overlay的地方source,可能会产生复杂的问题。

在新的终端,source你主要的ros2环境作为underlay,因此你可以在underlay上构建overlay。

source /opt/ros/humble/setup.bash

然后再source 

source install/local_setup.bash

注意:

source overlay的local_setup只会将overlay中可用的包添加到你的环境。source overlay里面的setup,允许你使用两个工作空间。

先source主目录的setup,再source具体工作空间的local_setup,跟直接source具体工作空间的setup是一样的。

在具体的工作空间中运行如下:

ros2 run turtlesim turtlesim_node

但是怎么知道这是overlay中运行的turtlesim还是underlay中的turtlesim呢?

更改overlay中的turtlesim,可以看到效果:

你可以更改和重新编译overlay中的包与underlay分开;

overlay的优先级高于underlay;

7、更改overlay

可以通过编辑turtlesim窗口中的标题bar来更改overlay中的turtlesim;编辑文件~/ros2_ws/src/ros_tutorials/turtlesim/src/turtle_frame.cpp

在52行,可以看到函数setWindowTitle("TurtleSim");将Turtlesim更改为MyTurtlesim,然后保存文件

重新编译,运行

colcon build
ros2 run turtlesim turtlesim_node

总结

本教程,你source了你主要的ros2作为你的underlay,然后在一个新的工作空间中创建一个overlay。overlay被预先设置到path,优先级由于underlay。

 

posted on 2023-06-02 10:36  gary_123  阅读(15)  评论(0编辑  收藏  举报

导航