目录

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–package_name

手动编译获取

功能包创建指令ros pkg:

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

Various package related sub-commands

options:
-h, –helpshow this help message and exit

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

Call `ros2 pkg -h` for more detailed usage.

ros2 pkg create --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
查看节点列表
ros2 node list
查看节点信息
ros2 node info

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

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