ROS2学习笔记二:开发准备

本文介绍了DDS数据分发服务在ROS2中的应用,包括其发布/订阅模型的优势、工程中的工作空间和功能包管理、构建工具colcon的使用,以及如何启动ROS2节点。还讨论了DDS的优缺点和API复杂性。
摘要由CSDN通过智能技术生成

目录

1 DDS介绍

2. 工程介绍

4 构建工具colcon

5 启动一个节点


1 DDS介绍

DDS,全称 Data Distribution Service (数据分发服务)。是由对象管理组 (OMG) 于 2003 年发布并于 2007 年修订的开分布式系统标准。通过类似于ROS中的话题发布和订阅形式来进行通信,同时提供了丰富的服务质量管理来保证可靠性、持久性、传输设置等。DDS实现层其实就是对不同常见的DDS接口进行再次的封装,让其保持统一性,为DDS抽象层提供统一的API。

优势:

  • 发布/订阅模型:简单解耦,可以轻松实现系统解耦
  • 性能:在发布/订阅模式中,与请求/回复模式相比,延迟更低,吞吐量更高。
  • 远程参与者的自动发现:此机制是 DDS 的主要功能之一。通信是匿名的、解耦的,开发者不必担心远程参与者的本地化。
  • 丰富的 Qos 参数集,允许调整通信的各个方面:可靠性、持久性、冗余、寿命、传输设置、资源......
  • 实时发布订阅协议 ( RTPS ):该协议几乎可以通过任何传输实现,允许在 UDP、TCP、共享内存和用户传输中使用 DDS,并实现不同 DDS 实现之间的真正互操作性。

劣势:

  • API复杂,DDS 的灵活性是以复杂性为代价的。
  • 系统开销相对较大
  • 社区支持问题

支持的通信:

  • 非零拷贝通信
    • 话题
    • 服务
    • 参数
    • 行为
  • 零拷贝通信

2. 工程介绍

和其他代码开发一样,首先建立一个工作空间,一个工作空间下可以有多个功能包,一个功能包可以有多个节点存在(或者一个功能包只有一个节点)

ROS2中功能包根据编译方式的不同分为三种类型:

cmake: 适用于C++。

ament_python: 适用于python程序。

ament_cmake: 适用于C++程序,是cmake的增强版。

功能包获取

直接安装:sudo apt install ros-<version>-package_name

手动编译获取

 功能包创建指令ros pkg:

linux@linux:~$ ros2 pkg
usage: ros2 pkg [-h] Call `ros2 pkg <command> -h` for more detailed usage. ...

Various package related sub-commands

options:
  -h, --help            show this help message and exit

Commands:
  create       Create a new ROS 2 package
  executables  Output a list of package specific executables
  list         Output a list of available packages
  prefix       Output the prefix path of a package
  xml          Output the XML of the package manifest or a specific tag

  Call `ros2 pkg <command> -h` for more detailed usage.

ros2 pkg create <package-name>  --build-type  {cmake,ament_cmake,ament_python}  --dependencies <依赖名字>

4 构建工具colcon

ROS2中使用colcon进行代码的构建编译

colcon官方文档:Installation — colcon documentation

安装colcon:

sudo apt-get install python3-colcon-common-extensions

编译:

cd 工作空间

colcon build

基本命令, 编译的结果在install文件夹中是以 package 为单位存放的
colcon build

将编译的结果进行合并安装,如头文件都放在 install/include 目录下, 库文件都放在 install/lib 文件夹下等。
colcon build --merge-install

将编译的结果以软链接的方式进行安装
colcon build --symlink-install

指定编译的 ros package,
colcon build --packages-select [PKG_NAME ...]

忽略编译指定的 ros package
colcon build --packages-ignore [PKG_NAME ...]

在编译的时候指定特定的 cmake 变量的值
colcon build --cmake-args  [* ...]

指定同时编译的最大线程数,默认为 8
colcon build --parallel-workers

5 启动一个节点

ROS2中每一个节点负责一个具体的功能,节点之间通信底层为DDS支持,支持的通信方式参阅第一节DDS介绍

启动节点:

source install/setup.bash
ros2 run <package_name> <executable_name>
查看节点列表
ros2 node list
查看节点信息
ros2 node info <node_name>

无论你是初学者还是有经验的开发者,希望我的博客能对你的学习之路有所帮助。如果你觉得这篇文章有用,不妨点击点赞、收藏,或者留下你的评论分享你的见解和经验,也欢迎你对我博客的内容提出建议和问题。每一次的点赞、评论、分享和关注都是对我的最大支持,也是对我持续分享和创作的动力。

阅读我的CSDN主页,解锁更多精彩内容:Tech Embedded-CSDN博客

 

  • 25
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Tech Embedded

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值