首页 > 其他分享 >Beginner:Client libraries-2 创建工作空间

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

时间:2023-06-02 10:46:21浏览次数:48  
标签:Beginner overlay setup libraries source Client turtlesim underlay ros2

目标:创建一个工作空间,学习如何设置开发和测试覆盖层(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。

 

标签:Beginner,overlay,setup,libraries,source,Client,turtlesim,underlay,ros2
From: https://www.cnblogs.com/gary-guo/p/17451093.html

相关文章

  • Beginner:Client libraries-1 使用colcon编译包
    目标:用colcon编译一个ROS2工作空间。这是一个关于如何使用colcon创建和构建ROS2工作区的简短教程。背景colcon是ROS编译工具catkin_make, catkin_make_isolated, catkin_tools and ament_tools的替代。安装colconsudoaptinstallpython3-colcon-common-extensions基......
  • ROS2-Beginner:9-启动节点
    目标:使用命令行工具来启动多个节点背景在大多数入门教程中,您一直在为运行的每个新节点打开新的终端。当您创建越来越多节点同时运行的更复杂的系统时,打开终端和重新输入配置细节会变得乏味。launch文件允许您同时启动和配置包含ROS2节点的许多可执行文件。使用ros2-launch命......
  • ROS2-Beginner:10-记录和播放数据
    目标:记录发布到话题上的数据,可以任何时候回放和检查。背景ros2-bag是一个命令行工具,用于记录系统中主题发布的数据。它累积在任意数量的主题上传递的数据,并将其保存在数据库中。然后,您可以回放数据以重现测试和实验的结果。录制主题也是分享你的作品并允许他人重新创作的好方法......
  • ROS2-Beginner:8-使用rqt_console来浏览日志
    目标:了解rqt_console,用于查看日志消息的工具。背景rqt_console是一个图形化工具用于查看ROS2中的日志消息。通常,日志消息在你个终端显示。用rqt_console,可以统一浏览这些日志,过滤、保存以及从文件中加载。任务1、启动rqt_consoleros2runrqt_consolerqt_console启动turt......
  • AtCoder Beginner Contest 214 G Three Permutations
    洛谷传送门AtCoder传送门比较平凡的一个容斥。考虑把问题转化成,求\(\foralli\in[1,n],r_i\nei\landr_i\nep_i\)的\(r\)方案数。考虑到不弱于错排,所以容斥。设钦定\(i\)个\(r_i\)取了\(i,p_i\)中的一个的方案数为\(f_i\),其余任意,那么:\[ans=\sum\limi......
  • ROS2-Beginner:7-理解行为
    背景行为ROS2中的一种通信类型,用于长时间的运行任务。由三个部分组成:目标,反馈以及结果。行为建立在话题和服务之上的。他们的功能类似于服务,但可以取消操作。他们还提供了稳定的反馈,而不是返回单一的响应的服务。行为使用了一个客户端-服务器模型,类似于发布者和订阅者。一个行......
  • ROS2-Beginner:5-理解服务
    背景服务是rosgraph中另一种通信方法。服务是基于调用和响应相比话题是发布者和订阅者模式。话题允许节点来订阅数据流并获得连续的更新。服务只当被具体客户端调用时才提供数据。任务1、打开turtlesim仿真器ros2runturtlesimturtlesim_noderos2runturtlesimturtle......
  • ROS2-Beginner:3-理解节点
    目标:学习ROS2中节点的功能,以及与他们交互的工具背景1、ROS2graphROS图是ROS2元素同时一起处理数据的网络。它包含了所有可执行文件以及它们之间的连接,如果您要将它们全部映射出来并可视化的话。2、在ROS2中的节点在ROS中的每一个节点都应该负责单一的模块化目的,例如控制车轮......
  • AtCoder Beginner Contest 247 Ex Rearranging Problem
    洛谷传送门AtCoder传送门考虑我们如何判定一个排列是否能成为最终答案。连边\(i\top_i\),设环数为\(k\),那么最少交换次数为\(n-k\)。那么充要条件是,每个环所有点的\(c_i\)相同,并且\(n-k\leK\)且\(2\mid(K-(n-k))\)。\(K\)和\(n-k\)奇偶性相同是因为,......
  • AtCoder Beginner Contest 213 H Stroll
    洛谷传送门AtCoder传送门考虑一个朴素dp,\(f_{t,u}\)表示\(t\)时刻走到\(u\)点的方案数。有转移:\[f_{t,u}=\sum\limits_{(u,v)=E_i}\sum\limits_{k=0}^{t-1}f_{k,v}\timesp_{i,t-k}\]直接做时间复杂度\(O(mT^2)\),无法接受。发现转移是加法卷积形式......