ROS 2官方文档(基于humble版本)学习笔记(二)

ROS 2官方文档(基于humble版本)学习笔记(二)

      • 理解节点(node)
        • ros2 run
        • ros2 node list
        • 重映射(remap)
        • ros2 node info
      • 理解话题(topic)
        • rqt_graph
        • ros2 topic list
        • ros2 topic echo
        • ros2 topic info
        • ros2 interface show
        • ros2 topic pub
        • ros2 topic hz
        • Clean up
      • 理解服务(service)
        • ros2 service list
        • ros2 service type
        • ros2 service list -t
        • ros2 service find
        • ros2 interface show
        • ros2 service call

今天继续总结CLI 工具章的学习

理解节点(node)

ROS 2图是一个ROS 2元件同时处理数据的网络,如果将它们全部映射并可视化它们,则包括所有可执行文件以及它们之间的连接。
Alt
ROS中的每个节点(node)都应该只为了单个的、模块化的目的而设计的,例如控制车轮电动机或从激光测距仪发布传感器数据。每个节点都可以通过主题(topic),服务(service),动作(action)或参数(parameters)从其他节点发送和接收数据。在ROS 2中,一个可执行程序(c++或python程序)可以包含一个或多个节点(node)。

ros2 run

此命令启动一个包中的可执行程序:

ros2 run <package_name> <executable_name>

ros2 node list

此命令展示所有运行中的节点的名字。常用来查找你想要交互或跟踪的节点。

ros2 node list

重映射(remap)

此参数用来重新定义默认的节点属性(比如节点名,话题名,服务名)为用户指定的值。

ros2 node info

此命令用于获取节点更多信息。通常包括订阅消息者们(subscriber),发布消息者(publiser),服务(service)和动作(action)。

ros2 node info <node_name>

/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:

/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

理解话题(topic)

话题是ROS图的一个至关重要的元素,扮演着节点间用于交换信息的总线的角色。
Alt

rqt_graph

在一个终端执行rqt_graph或者执行rqt后选择菜单Plugins > Introspection > Node Graph
Alt
上图描述了/turtlesim节点和/teleop_turtle节点如何在一个话题上通信的。/teleop_turtle节点发布数据到/turtle1/cmd_vel话题,/turtlesim节点订阅这个话题来接收数据。

ros2 topic list

此命令用于显示当前活动的所有话题。加上-t参数会在[]中显示话题的类型。

hugo@vm-ubuntu1:~$ ros2 topic list -t
/parameter_events [rcl_interfaces/msg/ParameterEvent]
/rosout [rcl_interfaces/msg/Log]
/turtle1/cmd_vel [geometry_msgs/msg/Twist]
/turtle1/color_sensor [turtlesim/msg/Color]
/turtle1/pose [turtlesim/msg/Pose]

ros2 topic echo

此命令用来查看正在被发布的话题数据。
如下图所示,刚开始没有输出任何数据,他在等待/teleop_turtle发布信息。在运行turtle_teleop_key的终端按键控制乌龟运动,这时echo的终端就会输出信息了。

ros2 topic echo <topic_name>

Alt
在rqt_graph界面去掉工具栏中Hide:Debug前面的勾,就可以看到以/_ros2cli_开头的一个节点就是刚才执行的echo命令。
Alt

ros2 topic info

此命令也可以显示话题的类型、订阅者数量和发布者数量。

hugo@vm-ubuntu1:~$ ros2 topic info /turtle1/cmd_vel
Type: geometry_msgs/msg/Twist
Publisher count: 1
Subscription count: 2

ros2 interface show

此命令用于查看消息类型的具体定义。

hugo@vm-ubuntu1:~$ ros2 interface show geometry_msgs/msg/Twist
# This expresses velocity in free space broken into its linear and angular parts.Vector3  linearfloat64 xfloat64 yfloat64 z
Vector3  angularfloat64 xfloat64 yfloat64 z

ros2 topic pub

此命令用于直接发布一个话题消息。
–once 是可选参数,意思是”发布一个消息然后退出“。

ros2 topic pub <topic_name> <msg_type> '<args>'

Alt
–rate 1参数表示以1Hz的稳定频率发布命令。效果如下图:
Alt
可以使用如下命令查看乌龟的位置信息,可以看出是由turtlesim发布,echo命令订阅的。

ros2 topic echo /turtle1/pose

Alt

ros2 topic hz

此命令用来查看正在发布数据的频率。

ros2 topic hz /turtle1/pose

Alt
可以在一个终端执行刚才的发布/turtle1/cmd_vel,在另一个终端打印发布频率。
Alt

Clean up

在每个命令行窗口执行Ctrl+C终结他们。

理解服务(service)

服务是在ROS图中另一种节点之间通讯的方法。与发布-订阅模式的话题相对,服务是基于请求-应答模式的。虽然话题允许节点订阅数据流并获取连续更新,服务仅在客户端专门调用时才能提供数据。
Alt

ros2 service list

启动turtlesim_node和turtle_teleop_key后,执行ros2 service list后如下图显示:

hugo@vm-ubuntu1:~$ ros2 service list
/clear
/kill
/reset
/spawn
/teleop_turtle/describe_parameters
/teleop_turtle/get_parameter_types
/teleop_turtle/get_parameters
/teleop_turtle/list_parameters
/teleop_turtle/set_parameters
/teleop_turtle/set_parameters_atomically
/turtle1/set_pen
/turtle1/teleport_absolute
/turtle1/teleport_relative
/turtlesim/describe_parameters
/turtlesim/get_parameter_types
/turtlesim/get_parameters
/turtlesim/list_parameters
/turtlesim/set_parameters
/turtlesim/set_parameters_atomically

可以看到两个节点的服务里都包含6个”parameter“的服务,ROS 2 中几乎每个节点都有这些基础设施服务,参数是基于这些服务构建的。

ros2 service type

此命令可以查看一个服务的请求和响应的数据的结构定义。服务类型定义与话题类型相似,只是由请求消息和响应消息两部分定义。

ros2 service type <service_name>

ros2 service list -t

此命令可以用来显示所有活动状态的服务及其类型定义。其中-t是–show-types的缩写。

hugo@vm-ubuntu1:~$ ros2 service list -t
/clear [std_srvs/srv/Empty]
/kill [turtlesim/srv/Kill]
/reset [std_srvs/srv/Empty]
/spawn [turtlesim/srv/Spawn]
/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/SetParametersAtomically]
/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/SetParametersAtomically]

ros2 service find

此命令用来查找所有指定类型的服务。

hugo@vm-ubuntu1:~$ ros2 service find std_srvs/srv/Empty
/clear
/reset

ros2 interface show

此命令用来显示类型的结构定义。

hugo@vm-ubuntu1:~$ ros2 interface show turtlesim/srv/Spawn
float32 x
float32 y
float32 theta
string name # Optional.  A unique name will be created and returned if this is empty
---
string name

”—“用来分隔请求结构(上面)响应结构(下面)。

ros2 service call

此命令是调用服务也就是向服务发送请求。

ros2 service call <service_name> <service_type> <arguments>

在写参数时需要特别注意是遵循YAML语法,冒号后面需要加空格,否则会报错。
Alt

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

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

相关文章

数据库基础

目录 一、数据库是什么&#xff1f; 二、目前主流的数据库 三、数据库基本使用 1.连接服务器 2.服务器、数据库、表关系 3.使用案例 4、数据逻辑存储 四、MySQL基本知识 1、MySQL架构 2、SQL语句分类 3、存储引擎 总结 一、数据库是什么&#xff1f; 数据库是按照数据结构来组…

Spring源码解析-构造函数

1、构造函数概述 构造函数中&#xff0c;主要创建两个对象分别用来读取注解参数和classpath下的文件 AnnotatedBeanDefinitionReader 专门读取注解参数的Reader ClassPathBeanDefinitionScanner 专门读取classpath下的文件&#xff0c;例如yml、properties等。 AnnotationC…

Unity 切换场景后场景变暗

问题 Unity版本&#xff1a;2019.4.34f1c1 主场景只有UI&#xff0c;没有灯光&#xff0c;天空盒&#xff1b;其他场景有灯光和天空盒所有场景不烘焙主场景作为启动场景运行&#xff0c;切换到其他场景&#xff0c;场景变暗某一个场景作为启动场景运行&#xff0c;光影效果正…

第P3周:天气识别

一、前期准备 1、设置GPU import torch import torch.nn as nn import torchvision.transforms as transforms import torchvision from torchvision import transforms, datasetsimport os,PIL,pathlibdevice torch.device("cuda" if torch.cuda.is_available() …

【探索Linux】—— 强大的命令行工具 P.7(进程 · 进程的概念)

阅读导航 前言一、冯诺依曼体系结构二、操作系统&#xff08;OS&#xff09;1. 概念 三、进程1. 进程的概念2. PCB&#xff08;Process Control Block&#xff09;3. 查看进程 四、fork函数1. 函数简介2. 调用方式3. 返回值4. 使用示例 五、进程的几种状态1. 状态简介2. 进程状…

sql中的排序函数dense_rank(),RANK()和row_number()

dense_rank()&#xff0c;RANK()和row_number()是SQL中的排序函数。 为方便后面的函数差异比对清晰直观&#xff0c;准备数据表如下&#xff1a; 1.dense_rank() 函数语法&#xff1a;dense_rank() over( order by 列名 【desc/asc】) DENSE_RANK()是连续排序&#xff0c;比如…

Java8实战-总结18

Java8实战-总结18 使用流筛选和切片用谓词筛选筛选各异的元素截短流跳过元素 使用流 流让你从外部迭代转向内部迭代。这样&#xff0c;就用不着写下面这样的代码来显式地管理数据集合的迭代(外部迭代)了&#xff1a; List<Dish> vegetarianDishes new ArrayList<>…

9.2 消息对话框 画板 定时器

#include "widget.h"Widget::Widget(QWidget *parent): QWidget(parent) {//设置定时器timernew QTimer(this);timeidthis->startTimer(1000);connect(timer,&QTimer::timeout,this,&Widget::timeout_slot);speechernew QTextToSpeech(this);//边框this-&…

AP51656 LED车灯电源驱动IC 兼容替代PT4115 PT4205 PWM和线性调光

产品描述 AP51656是一款连续电感电流导通模式的降压恒流源 用于驱动一颗或多颗串联LED 输入电压范围从 5V 到 60V&#xff0c;输出电流 可达 1.5A 。根据不同的输入电压和 外部器件&#xff0c; 可以驱动高达数十瓦的 LED。 内置功率开关&#xff0c;采用高端电流采样设置 …

Qt中布局管理使用总结

目录 1. 五大布局 1.1 QVBoxLayout垂直布局 1.2 QHBoxLayout水平布局 1.3 QGridLayout网格布局 1.4 QFormLayout表单布局 1.5 QStackedLayout分组布局 1.6 五大布局综合应用 2. 分割窗口 3. 滚动区域 4. 停靠区域 1. 五大布局 1.1 QVBoxLayout垂直布局 #include <…

服装商城小程序制作:打造便捷购物体验和提升销售额的利器

随着移动互联网的发展&#xff0c;服装商城小程序成为各大服装品牌推广销售的重要工具。它不仅能够为用户提供便捷的购物体验&#xff0c;还能帮助服装商城实现更高效的销售和管理。下面给大家介绍下服装商城小程序的优点以及制作流程&#xff0c;让您了解并充分利用这一利器。…

Vue + Element UI 前端篇(一):搭建开发环境

Vue Element UI 实现权限管理系统 前端篇&#xff08;一&#xff09;&#xff1a;搭建开发环境 技术基础 开发之前&#xff0c;请先熟悉下面的4个文档 vue.js2.0中文, 优秀的JS框架vue-router, vue.js 配套路由vuex&#xff0c;vue.js 应用状态管理库Element&#xff0c;饿…

海域可视化监管:浅析海域动态远程视频智能监管平台的构建方案

一、方案背景 随着科技的不断进步&#xff0c;智慧海域管理平台已经成为海洋领域监管的一种重要工具。相比传统的视频监控方式&#xff0c;智慧海域管理平台通过建设近岸海域视频监控网、海洋环境监测网和海上目标探测网络等&#xff0c;可实现海洋管理的数字化转型。 传统的…

Springboot + Sqlite实战(离线部署成功)

最近有个需求&#xff0c;是手机软件离线使用&#xff0c; 用的springboot mybatis-plus mysql&#xff0c;无法实现&#xff0c;于是考虑使用内嵌式轻量级的数据库SQLlite 引入依赖 <dependency><groupId>org.xerial</groupId><artifactId>sqlite-…

车载域控制器DCU浪涌防护推荐TVS二极管

为了解决分布式EEA的这些问题&#xff0c;汽车工程师开始逐渐把很多功能相似、分离的ECU功能集成整合到一个比ECU性能更强的处理器硬件平台上&#xff0c;这就是汽车“域控制器&#xff08;Domain Controller Unit&#xff0c;DCU&#xff09;”。车载域控制器DCU大大优化整车的…

星辰天合 CEO 胥昕受邀参加人民网 2023 “小巨人”发展论坛

为进一步推动专精特新“小巨人”企业高质量发展&#xff0c;近日&#xff0c;由人民网主办&#xff0c;人民网财经研究院、828 企业服务平台共同承办的 2023“小巨人”发展论坛在人民日报社新媒体大厦举行&#xff0c;星辰天合 CEO 胥昕受邀参加。 2023 “小巨人”发展论坛现场…

如何将DHTMLX Suite集成到Scheduler Lightbox中?让项目管理更可控!

在构建JavaScript调度器时&#xff0c;通常需要为最终用户提供一个他们喜欢的方式来计划事件&#xff0c;这是Web开发人员喜欢认可DHTMLX Scheduler的重要原因&#xff0c;它在这方面提供了完全的操作自由&#xff0c;它带有lightbox弹出窗口&#xff0c;允许通过各种控件动态更…

linux信号量

通过学习linux的信号量&#xff0c;对linux的信号量进行了编程。

7英寸触摸显示屏企业网络电话

SV-X77英寸触摸显示屏企业网络电话 SV-X7网络电话是一款带有7英寸触摸显示屏的高端式企业级电话&#xff0c;以先进设计及强大的功能大幅度提高企业工作效率。 功能亮点 √ 虚拟可编程按键 — 可动态显示4个分页&#xff0c;每页可设置显示29个DSS键的状态&#xff0c;最多支持…

设计模式之适配器与装饰器

目录 适配器模式 简介 角色 使用 优缺点 使用场景 装饰器模式 简介 优缺点 模式结构 使用 使用场景 适配器模式 简介 允许将不兼容的对象包装成一个适配器类&#xff0c;使得其他类可以通过适配器类与原始对象进行交互&#xff0c;从而提高兼容性 角色 目标角色…