ROS2学习笔记二:开发准备

目录

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博客

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/612077.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

100V耐压 LED恒流驱动芯片 SL2516D兼容替换LN2516车灯照明芯片

SL2516D LED恒流驱动芯片是一款专为LED照明设计的高效、高精度恒流驱动芯片。与LN2516车灯照明芯片兼容&#xff0c;可直接替换LN2516芯片&#xff0c;为LED车灯照明提供稳定、可靠的电源解决方案。 一、SL2516D LED恒流驱动芯片的特点 1. 高效率&#xff1a;SL2516D采用先进的…

HarmonyOS4.0系统性深入开发17进程模型概述

进程模型概述 HarmonyOS的进程模型&#xff1a; 应用中&#xff08;同一包名&#xff09;的所有UIAbility运行在同一个独立进程中。WebView拥有独立的渲染进程。 基于HarmonyOS的进程模型&#xff0c;系统提供了公共事件机制用于一对多的通信场景&#xff0c;公共事件发布者…

深度解析-Java语言的未来

深度解析-Java语言的未来&#xff0c;文末有我耗时一个月&#xff0c;问遍了身边的大佬&#xff0c;零基础自学Java的路线&#xff0c;适用程序员入门&进阶&#xff0c;Java学习路线&#xff0c;2024新版最新版。 文章目录 Q1 - 能否自我介绍下&#xff1f; Q2 - Java语…

Python常用配置文件读取方法

常见的应用配置方式有环境变量和配置文件,对于微服务应用,还会从配置中心加载配置,比如nacos、etcd等,有的应用还会把部分配置写在数据库中。此处主要记录从环境变量、.env文件、.ini文件、.yaml文件、.toml文件、.json文件读取配置。 ini文件 ini文件格式一般如下: [m…

GBASE南大通用CreateParameter 方法

创建一个GBASE南大通用Parameter 对象的实例。  语法 [Visual Basic] Public Function CreateParameter As GBaseParameter [C#] public GBaseParameter CreateParameter()  返回值 创建的 GBaseParameter 对象。 执行一个 SQL 语句并返回影响的行数。  语法 […

设计模式——抽象工厂模式(Abstract Factory Pattern)

概述 抽象工厂模式的基本思想是将一些相关的产品组成一个“产品族”&#xff0c;由同一个工厂统一生产。在工厂方法模式中具体工厂负责生产具体的产品&#xff0c;每一个具体工厂对应一种具体产品&#xff0c;工厂方法具有唯一性&#xff0c;一般情况下&#xff0c;一个具体工厂…

数据结构与算法之美学习笔记:46 | 概率统计:如何利用朴素贝叶斯算法过滤垃圾短信?

目录 前言算法解析总结引申 前言 本节课程思维导图&#xff1a; 上一节我们讲到&#xff0c;如何用位图、布隆过滤器&#xff0c;来过滤重复的数据。今天&#xff0c;我们再讲一个跟过滤相关的问题&#xff0c;如何过滤垃圾短信&#xff1f; 垃圾短信和骚扰电话&#xff0c;我…

基于长短期神经网络LSTM的路径追踪

目录 背影 摘要 代码和数据下载:基于长短期神经网络LSTM的路径追踪(代码完整,数据齐全)资源-CSDN文库 https://download.csdn.net/download/abc991835105/88714816 LSTM的基本定义 LSTM实现的步骤 基于长短期神经网络LSTM的路径追踪 结果分析 展望 参考论文 背影 路径坐标…

【MySQL】巧用 DATE_SUB 函数判断时间是否连续

力扣题 1、题目地址 1454. 活跃用户 2、模拟表 表 Accounts&#xff1a; Column NameTypeidintnamevarchar id 是该表主键&#xff08;具有唯一值的列&#xff09;该表包含账户 id 和账户的用户名. 表 Logins&#xff1a; Column NameTypeidintlogin_datedate 该表可能…

docker安装nodejs,并更改为淘宝源

拉取官方 Node.js 镜像 docker pull node:latest创建 Dockerfile&#xff0c;并更改 NPM 下载源为淘宝源&#xff0c;设置为全局持久化 # 使用最新版本的Node.js作为基础镜像 FROM node:latest# 设置工作目录为/app WORKDIR /app # 更改 NPM 下载源为淘宝源&#xff0c;并设置…

c++学习笔记-STL案例-机房预约系统1-需求分析

1 机房预约系统需求 1.1 简单介绍 学校有几个规格不同的机房&#xff0c;由于使用经常出现“撞车”现象&#xff0c;现在开发一套预约系统&#xff0c;解决这一问题。 1.2 身份介绍 分别有三种身份使用该系统 学生代表&#xff1a;申请使用机房教师&#xff1a;审核学生的…

从单细胞数据分析的最佳实践看R与Python两个阵营的博弈

R与Python&#xff0c;在生物信息学领域的博弈异常激烈。许多生信分析&#xff0c;两个阵营都发展出了自己的方法&#xff0c;比如单细胞数据分析&#xff0c;R有Seurat&#xff0c;Python就有Scanpy。这些层出不穷的方法不断地吸引着吃瓜群众的眼球&#xff0c;同时也让人患上…

Qt 6之六:Qt Designer介绍

Qt 6之六&#xff1a;Qt Designer介绍 Qt Designer是一个可视化的用户界面设计工具&#xff0c;用于创建Qt应用程序的用户界面&#xff0c;允许开发人员通过拖放和布局来设计和创建GUI界面。 Qt 6之一&#xff1a;简介、安装与简单使用 https://blog.csdn.net/cnds123/articl…

Windows系统Copilot使用方案

在Windows环境中启用和使用Copilot的一般步骤和方案概述&#xff1a; 启用Windows Copilot 确保系统更新&#xff1a; 首先&#xff0c;您的设备需要运行最新的Windows 11版本&#xff0c;因为Copilot可能作为系统更新的一部分推出。 安装与激活&#xff1a; 如果Copilot是通过…

Linux 文件(夹)权限查看

命令 : ls -al ls -al 是一个用于列出指定目录下所有文件和子目录的命令,包括隐藏文件和详细信息。其中,-a 选项表示显示所有文件,包括以 . 开头的隐藏文件,-l 选项表示以列表的形式显示文件的详细信息。 本例中:drwxrwxr-x 为权限细节。 权限细节(Permission detail…

【UML】第18篇 组件图

目录 一、组件图的定义 二、组件图的作用 三、应用场景 四、构成 五、语法 一、组件图的定义 组件图&#xff08;Component Diagram&#xff09;是一种UML结构图&#xff0c;它展示了系统中组件、接口以及它们之间的关系。组件是代码的物理模块&#xff0c;如文件、库、可…

Vue3-47-Pinia-修改全局状态变量值的方式

说明 修改全局状态变量的值&#xff0c;是一个比较常规而且常见的操作。 本文就介绍四种常见的操作。 由于Option Store 和Setup Store 在修改的时候略有不同&#xff0c;所以本文也会将不同点体现一下。 全局状态变量的定义 包含了 Option Store 和Setup Store 两种定义方式&a…

设备树常用的其他 OF操作函数

一. 简介 前面几篇学习了设备树常用的 OF操作函数&#xff0c;文章地址如下&#xff1a; 设备树常用 OF 操作函数说明一-CSDN博客 设备树常用 OF 操作函数说明二-CSDN博客 本文继续学习设备树 常用的一些其他的 OF操作函数。 二. 设备树常用的其他 OF操作函数 下面学习设…

DePIN:重塑物理资源网络的未来

点击查看TechubNews更多相关推荐 一、DePIN&#xff1a;物理资源的新整合方式 Depin赛道的项目如雨后春笋般涌现&#xff0c;为市场注入了新的活力。作为先行者&#xff0c;Coinmanlabs已经深入布局Depin赛道&#xff0c;其中最引人注目的项目当属Grass。 什么是DePIN DePIN…

uniapp在web端怎么使用svg图标呢

在图标库中添加好项目用到的图标&#xff0c;点击symbol点击生成在线链接 点击生成的在线链接&#xff0c;此时会跳转到一个新窗口&#xff0c;是一个js文件 复制这个js文件的内容 然后在uniapp中新建svg.js文件&#xff0c;把从上面复制的代码粘贴到这个svg.js中 在main.js中引…