【ROS2笔记一】ROS2的基本组件

1.ROS2的基本组件

与ROS1类似的,ROS2也具有nodetopicserviceaction之类的组件,并且也具有rqt等工具。

可以像使用ROS1的命令行的方式(参这里【ROS学习笔记7】ROS中的常用命令行),来查看ROS2中的这些组件,例如:

ros2 node list
ros2 topic list
ros2 service list
ros2 action list

与ROS1一致,ROS2中程序也是以节点node为单位,通过topic或者service的方式来进行通信的,在ROS2中,单个可执行文件(Cpp可执行文件和Python程序)可以包含一个或者多个节点。在ROS2中取消了RosMaster的结构设计,节点之间的通信方式如下图所示:

Image

在ROS2中,nodetopicservice的概念和ROS1中一致,这里不再详细赘述了,我们只在这里详细介绍一下action

action动作,是ROS2中的通信类型之一,适用于长时间运行的任务。action通常由三部分构成:目标、反馈和结果。action是建立在主题和服务的基础之上的,它们的功能与服务类似,只是可以进行取消的操作,在服务响应完毕后还提供返回,而并不是单一的响应服务。action使用client-service的模型,“动作客户端“节点将目标发送到”动作服务器“节点后,”动作服务器“节点确认该目标并返回反馈流和结果。

据个例子:

使用turtlesim中进行控制的示例

ros2 run turtlesim turtlesim_node
ros2 run turtlesim turtle_teleop_key

可以看到命令行中有这么一行

Use G|B|V|C|D|E|R|T keys to rotate to absolute orientations. 'F' to cancel a rotation.

我们可以通过键盘上的G|B|V|C|D|E|R|T来制定海龟的旋转方向,并且可以使用F来终止旋转,这一实现其实就是使用action通信的。

我们可以查看当前节点的完整信息

ros2 node info /turtlesim

结果如下:

/turtlesimSubscribers:/parameter_events: rcl_interfaces/msg/ParameterEvent/turtle1/cmd_vel: geometry_msgs/msg/TwistPublishers:/parameter_events: rcl_interfaces/msg/ParameterEvent/rosout: rcl_interfaces/msg/Log/turtle1/color_sensor: turtlesim/msg/Color/turtle1/pose: turtlesim/msg/PoseService Servers:/clear: std_srvs/srv/Empty/kill: turtlesim/srv/Kill/reset: std_srvs/srv/Empty/spawn: turtlesim/srv/Spawn/turtle1/set_pen: turtlesim/srv/SetPen/turtle1/teleport_absolute: turtlesim/srv/TeleportAbsolute/turtle1/teleport_relative: turtlesim/srv/TeleportRelative/turtlesim/describe_parameters: rcl_interfaces/srv/DescribeParameters/turtlesim/get_parameter_types: rcl_interfaces/srv/GetParameterTypes/turtlesim/get_parameters: rcl_interfaces/srv/GetParameters/turtlesim/list_parameters: rcl_interfaces/srv/ListParameters/turtlesim/set_parameters: rcl_interfaces/srv/SetParameters/turtlesim/set_parameters_atomically: rcl_interfaces/srv/SetParametersAtomicallyService Clients:Action Servers:/turtle1/rotate_absolute: turtlesim/action/RotateAbsoluteAction Clients:

这里有Action Servers来提供响应操作并且提供反馈输出。

然后查看控制节点的信息

ros2 node info /teleop_turtle

结果如下:

/teleop_turtleSubscribers:/parameter_events: rcl_interfaces/msg/ParameterEventPublishers:/parameter_events: rcl_interfaces/msg/ParameterEvent/rosout: rcl_interfaces/msg/Log/turtle1/cmd_vel: geometry_msgs/msg/TwistService Servers:/teleop_turtle/describe_parameters: rcl_interfaces/srv/DescribeParameters/teleop_turtle/get_parameter_types: rcl_interfaces/srv/GetParameterTypes/teleop_turtle/get_parameters: rcl_interfaces/srv/GetParameters/teleop_turtle/list_parameters: rcl_interfaces/srv/ListParameters/teleop_turtle/set_parameters: rcl_interfaces/srv/SetParameters/teleop_turtle/set_parameters_atomically: rcl_interfaces/srv/SetParametersAtomicallyService Clients:Action Servers:Action Clients:/turtle1/rotate_absolute: turtlesim/action/RotateAbsolute

这里实现了Action Clients来调用服务。

可以直接使用

ros2 action list -t

来查看当前启动的各项action通信方式,如下:

/turtle1/rotate_absolute [turtlesim/action/RotateAbsolute]

查看当前接口的详细信息

ros2 interface show turtlesim/action/RotateAbsolute

结果显示如下:

# The desired heading in radians
float32 theta
---
# The angular displacement in radians to the starting position
float32 delta
---
# The remaining rotation in radians
float32 remaining

1.1.ROS2中的launch文件

在ROS2中可以使用多种方式编写,比如PythonXMLYMAL这三种方式,具体可以参考Using Python, XML, and YAML for ROS 2 Launch Files

一个使用Python编写的launch文件的示例:

ros2 launch turtlesim multisim.launch.py

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

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

相关文章

Mysql内存表及使用场景(12/16)

内存表(Memory引擎) InnoDB引擎使用B树作为主键索引,数据按照索引顺序存储,称为索引组织表(Index Organized Table)。 Memory引擎的数据和索引分开存储,数据以数组形式存放,主键索…

【保姆级讲解Nginx】

🌈个人主页: 程序员不想敲代码啊 🏆CSDN优质创作者,CSDN实力新星,CSDN博客专家 👍点赞⭐评论⭐收藏 🤝希望本文对您有所裨益,如有不足之处,欢迎在评论区提出指正,让我们共…

拿到迅雷网盘推广授权,离财富自由更进一步

为了提高平台知名度、增加平台用户数量,迅雷网盘推出了网盘推广的新项目。网盘推广的奖励很丰厚,只要有人点击、下载你分享的资料,你就能获得佣金。听到这里,是不是已经有人心动了?心动的人一定要看完下面的网盘推广&a…

【开发篇】十七、基准测试框架JMH

文章目录 1、JMH2、运行方式二3、死代码与黑洞变量4、可视化分析5、案例:日期格式化方法性能测试6、总结7、整合到SpringBoot 判断一个方法的耗时 ⇒ endTime-startTime ⇒ 不准确,首先部分对象懒加载,第一次请求会慢一些,其次&am…

YOLOv8改进 | 检测头篇 | 自研超分辨率检测头HATHead助力超分辨率检测(混合注意力变换器检测头)

一、本文介绍 本文给大家带来的改进机制是由由我本人利用HAT注意力机制(超分辨率注意力机制)结合V8检测头去掉其中的部分内容形成一种全新的超分辨率检测头。混合注意力变换器(HAT)的设计理念是通过融合通道注意力和自注意力机制来提升单图像超分辨率重建的性能。通道注意…

多无人机集群协同避障

matlab2020a正常运行 场景1规划结果 场景2规划结果 场景3规划结果 代码地址: 多无人机集群协同避障效果(5架)资源-CSDN文库

【D3.js Tidy tree绘制树形图,单棵树,左右树,平移,拖拽,树形中的天花板实现,源码实现】

这里写自定义目录标题 D3.js Tidy tree绘制树形图,单棵树,左右树,平移,拖拽,树形中的天花板实现,源码实现D3 简介D3 官网有很多例子,这里说的是Tidy tree[树形图表svg][左侧关系->中间对象<-右侧关系 ] 树形实现 D3.js Tidy tree绘制树形图,单棵树,左右树,平移,拖拽,树形…

BM25和语言模型的改进研究

原文链接&#xff1a; BM25和语言模型的改进研究 摘要&#xff1a; 近期关于搜索引擎排名函数的研究报告指出&#xff0c;BM25和带Dirichlet平滑的语言模型有所改进。本研究通过在INEX 2009维基百科语料库上训练&#xff0c;然后在INEX 2010和9个TREC语料库上测试&#xff0…

ES6 全详解 let 、 const 、解构赋值、剩余运算符、函数默认参数、扩展运算符、箭头函数、新增方法,promise、Set、class等等

目录 ES6概念ECMAScript6简介ECMAScript 和 JavaScript 的关系ES6 与 ECMAScript 2015 的关系 1、let 、 const 、var 区别2、变量解构赋值1、数组解构赋值2、对象解构赋值3、字符串的解构赋值 3、展开剩余运算符1、**展开运算符(...)**2、**剩余运算符(...)** 4、函数的拓展函…

前端用 HTML5 + CSS3 + JavaScript,后端连接什么数据库更简单?

当前端使用 HTML5、CSS3 和 JavaScript 进行开发时&#xff0c;后端连接何种数据库是一个非常重要的问题&#xff0c;因为数据库的选择直接影响着后端代码的编写、数据存储与查询的效率以及系统的可维护性。 1. 关系型数据库&#xff08;SQL 数据库&#xff09;&#xff1a; …

两两交换链表中的节点 - LeetCode 热题 30

大家好&#xff01;我是曾续缘&#x1f916; 今天是《LeetCode 热题 100》系列 发车第 30 天 链表第 9 题 ❤️点赞 &#x1f44d; 收藏 ⭐再看&#xff0c;养成习惯 两两交换链表中的节点 给你一个链表&#xff0c;两两交换其中相邻的节点&#xff0c;并返回交换后链表的头节点…

CV界,卷积神经网络真的干不过Transformer了吗?

一、 CNN及其优势和局限性 其他答主回答的角度和内容非常全面&#xff0c;答主也从自己的角度谈谈这个问题。我们不妨先看一下CNN的结构。CNN依靠卷积拥有感受野&#xff0c;具有了时移不变性。 1.1 CNN的局限性 可以看到随着卷积层的增加&#xff0c;feature maps上的一个…

3.00 版本来了!DolphinDB V2.00.12 V3.00.0 正式发布!

一文带你了解 DolphinDB 全新版本升级&#xff01; 本次更新后&#xff0c;3.00.0版本将成为 DolphinDB 的最新版&#xff0c;2.00.12版本变更为稳定版&#xff0c;此前发布的1.30.23版本将成为1.30系列的最后一个版本。接下来&#xff0c;带大家一起看看 DolphinDB V2.00.12 …

【Linux系统编程】第一弹---背景介绍

✨个人主页&#xff1a; 熬夜学编程的小林 &#x1f497;系列专栏&#xff1a; 【C语言详解】 【数据结构详解】【C详解】【Linux系统编程】 目录 1、Linux 背景介绍 1.1、发展史 1.1.1、UNIX发展的历史 1.1.2、Linux发展历史 2、开源精神 3、Linux内核官网 4、企业应用…

windows下安装yolov8环境(详细图文教程)

目录 一&#xff1a;前言 二&#xff1a;安装yolov8 一&#xff1a;前言 最近看了 YOLO 的发展史&#xff0c;发现在机器视觉领域的应用非常广泛&#xff0c;f刚好最近一直在做机器视觉的工作&#xff0c;特此记录下搭建yolov的环境。我们使用的版本是yolov8的就用这个作为演…

带计步跑步功能,余额宝、早起打卡与积分商城金融众筹一体化平台

检测自动增加步数 Bug问题: 无 测试环境: PHP5.6Mysql5.6 源码简介: 袋鼠投资理财&#xff0c;本程序有技步跑步功能&#xff0c;余额宝功能&#xff0c;早起打卡&#xff0c;积分商城&#xff0c;抽奖功能等各方面为一体的综合理财项目。 功能列表: 袋鼠投资理财&#xf…

实体抽取全解析:技术与实战

目录 一、前言二、实体抽取技术概览基于规则的实体抽取基于统计的实体抽取基于深度学习的实体抽取 三、实体抽取的发展历程早期的实体抽取方法基于规则和词典的方法基于特征的机器学习方法 深度学习时代的实体抽取从传统模型到神经网络序列标注模型的兴起预训练语言模型的革命 …

C#互联网区域医学检验中心云LIS系统源码

云LIS联通四级&#xff08;市、县、乡、村&#xff09;检验服务网构建互联网检验服务新体系落地检验资源区域共享建设。云LIS系统是一种基于云计算技术的区域实验室信息管理系统&#xff0c;它的主要功能是管理实验室中的各种信息数据&#xff0c;包括样品数据、检测结果、仪器…

Linux使用命令发送get或post请求

在linux服务器直接发送get或者post请求可以使用curl命令和wget命令。 curl命令&#xff1a; curl http://localhost:8080/应用/接口号 输入此命令之后会直接将响应结果展示到服务器上&#xff0c;如&#xff1a; 输入命令&#xff1a;curl -i curl -i http://localhost:…

RabbitMQ消息模型之Fanout消息模型

Fanout消息模型 * 广播模型&#xff1a;* 一个交换机绑定多个队列* 每个队列都有一个消费者* 每个消费者消费自己队列中的消息&#xff0c;每个队列的信息是一样的生产者 package com.example.demo02.mq.fanout;import com.example.demo02.mq.util.ConnectionUtils; impor…