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

news2025/1/11 17:54:33

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

      • 理解参数(parameter)
        • ros2 param list
        • ros2 param get
        • ros2 param set
        • ros2 param dump
        • ros2 param load
        • 在节点启动时加载参数文件
      • 理解动作(action)
        • ros2 node info
        • ros2 action list
        • ros2 action list -t
        • ros2 action info
        • ros2 interface show
        • ros2 actiong send_goal
      • 使用rqt_console查看日志
        • 设置默认日志级别
      • 启动节点
      • 记录和回放数据
        • 记录多个话题
        • ros2 bag info
        • ros2 bag play

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

理解参数(parameter)

参数是一个节点的配置值,可以把参数看成是节点的配置。节点可以存储整型,浮点型,布尔型,字符串型,列表型的参数。每个节点维护自己的参数。

ros2 param list

此命令用于显示所有节点的参数。
在这里插入图片描述
每个节点都有use_sim_time

ros2 param get

此命令用于显示一个参数的类型和当前值。

ros2 param get <node_name> <parameter_name>
ros2 param set

此命令在运行时改变参数的值。

ros2 param set <node_name> <parameter_name> <value>
ros2 param dump

此命令查看所有节点的参数值。

ros2 param dump <node_name>

默认打印到标准输出,可以将参数值打印到文件中,比如:

ros2 param dump /turtlesim > turtlesim.yaml
ros2 param load

此命令可以把保存在文件中的参数加载到正在运行的节点中。

ros2 param load <node_name> <parameter_file>

注意:只读参数只能在启动时修改,所以执行此命令时只读参数会打印失败信息。

在节点启动时加载参数文件
ros2 run <package_name> <executable_name> --ros-args --params-file <file_name>

注意:在启动时加载参数文件所有参数包括只读参数都将被更新。

理解动作(action)

动作是ROS 2一种通信类型,用于长时间运行的任务。它包含三部分:一个目标,反馈,一个结果。动作是基于话题和服务构建的。动作的功能除了可以取消外,和服务很类似。与服务返回一个单一的回应不同,动作也提供持续的反馈。动作使用客户端-服务器模式,一个“动作客户”节点发送一个目标给一个“动作服务”节点,“动作服务”确认这个目标并且返回一个反馈流和一个结果。
在这里插入图片描述

ros2 node info

此命令用来查看一个节点提供的动作列表。
在这里插入图片描述
注意:/turtlesim节点的/turtle1/rotate_absolute动作是在Action Servers下面的,这意味着/turtlesim为/turtle1/rotate_absolute动作,响应和提供反馈。
在这里插入图片描述
注意:/teleop_turtle节点的/turtle1/rotate_absolute动作是在Action Clients下面的,这意味着他将为这个动作发送目标。

ros2 action list

此命令发现ROS图中所有的动作。

ros2 action list -t

此命令可以将类型也显示出来。如下:
在这里插入图片描述

ros2 action info

此命令可以获取动作的相关信息。
在这里插入图片描述

ros2 interface show

在发送或者执行动作目标之前,你需要的另一个信息是动作类型的具体结构。参数为ros2 action list -t输出的类型。
在这里插入图片描述
第一个—上面是目标的结构(数据类型和名字),第二个—上面是结果的结构,最后是反馈的结构。

ros2 actiong send_goal

此命令可以发送一个动作目标。

ros2 action send_goal <action_name> <action_type> <values>

<values>需要使用YAML格式。
在这里插入图片描述
所有的目标都有一个唯一的ID,会在返回的消息里显示。也会显示出结果。可以在后面加上--feedback参数查看反馈信息。
在这里插入图片描述
你将会持续接收到反馈,指导目标完成。

一个机器人系统可能使用动作用于导航。动作目标可以告诉机器人前往位置。当机器人导航到该位置时,它可以沿途发送更新(即反馈),然后一旦到达目的地,就可以发送最终结果消息。

使用rqt_console查看日志

rqt_console是ROS 2中用于自查日志消息的可视化工具。通常日志消息在终端打印。使用rqt_console,您可以随着时间的推移收集这些消息,以更有条理的方式查看它们,过滤,保存它们,甚至将保存的文件重新加载到不同的时间内。
节点以各种方式输出日志关于事件和状态的消息。对用户而言,通常是蕴含信息的。
ROS 2日志级别按严重程度顺序排列如下:

Fatal
Error
Warn
Info
Debug

Fatal消息表示系统将要终止以保护自己不受伤害。
Error消息表示不是必然会损害系统的重大错误,但会组织系统正常运行。
Warn消息表示意外的活动或非理想结果,可能代表更深层次的问题,但不会彻底损坏功能。
Info消息表示事件或状态更新,可以看到系统正在稳定运行。
Debug消息详细说明系统执行的整个逐步过程。
默认日志级别是Info,您只会看到默认严重程度级别和更高级别级别的消息。

设置默认日志级别

通过–ros-args --log-level参数设置执行的日志级别。

ros2 run turtlesim turtlesim_node --ros-args --log-level WARN

启动节点

使用命令行工具一次启动多个节点。
启动文件允许你同时启动和配置多个包含ROS 2节点的可执行程序。

ros2 launch 

在这里插入图片描述

记录和回放数据

ros2 bag 是一个命令行工具,用于记录系统中发布的话题数据。它累积了通过的任何数量的话题数据,并将其保存在数据库中。然后,您可以重播数据以重现测试和实验的结果。录制话题也是分享您的作品并允许其他人重新创建它的好方法。

ros2 bag record <topic_name>

此命令会在运行命令的当前目录下创建 rosbag文件。
在这里插入图片描述

记录多个话题
ros2 bag record -o subset /turtle1/cmd_vel /turtle1/pose

-o选项用来定义一个独特名字的bag文件,然后在后面以空格隔开每一个话题。
-a选项用来记录系统里的所有话题。

ros2 bag info

此命令用于查看记录文件的详情。
在这里插入图片描述

ros2 bag play

此命令用来播放记录文件。

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

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

相关文章

【python零基础入门学习】python进阶篇之时间表示方法和异常处理以及linux系统的os模块执行shell命令以及记账程序编写教学(一)

本站以分享各种运维经验和运维所需要的技能为主 《python零基础入门》&#xff1a;python零基础入门学习 《python运维脚本》&#xff1a; python运维脚本实践 《shell》&#xff1a;shell学习 《terraform》持续更新中&#xff1a;terraform_Aws学习零基础入门到最佳实战 《k8…

第1篇 目标检测概述 —(1)目标检测基础知识

前言&#xff1a;Hello大家好&#xff0c;我是小哥谈。目标检测是计算机视觉领域中的一项任务&#xff0c;旨在自动识别和定位图像或视频中的特定目标&#xff0c;目标可以是人、车辆、动物、物体等。目标检测的目标是从输入图像中确定目标的位置&#xff0c;并使用边界框将其标…

Docker 自动化部署(保姆级教程)

Docker 自动化部署 1. jenkins 介绍1.1 参考链接&#xff1a;1.2 jenkins 概述1.3 jenkins部署项目的流程 2. jenkins 安装2.1 基于docker 镜像2.2 启动 jenkins 后端服务2.3 登录 jenkins 服务后端 3. jenkins自动化部署开始3.1 下载需要的插件3.2 创建任务3.2.1 描述3.2.2 配…

Vue3+element-plus切换标签页时数据保留问题

记录一次切换标签页缓存失效问题&#xff0c;注册路由时name不一致可能会导致缓存失效

Visio——绘制倾斜线段

一、形状 -> 图表和数学图形 -> 多行 二、放置多行线&#xff0c;可以发现存在两个折点 三、选择多行线&#xff0c;右键选择删除点&#xff0c;即可得到倾斜线段

【python爬虫】爬虫所需要的爬虫代理ip是什么?

目录 前言 一、什么是爬虫代理 IP 二、代理 IP 的分类 1.透明代理 2.匿名代理 3.高匿代理 三、如何获取代理 IP 1.免费代理网站 2.付费代理服务 四、如何使用代理 IP 1.使用 requests 库 2.使用 scrapy 库 五、代理 IP 的注意事项 1.代理 IP 可能存在不稳定性 2…

Linux指令(ls、pwd、cd、touch、mkdir、rm)

whoami who pwd ls ls -l clearls指令 ls ls -l ls -a :显示当前目录下的隐藏文件&#xff08;隐藏文件以.开头&#xff09;ls -a -l 和 ls -l -a 和 ls -la 和 ls -al &#xff08;等价于ll&#xff09; pwd命令 显示用户当前所在的目录 cd指令 mkdir code &#xff08;创建…

《Python趣味工具》——ppt的操作(1)

前面我们学习了如何利用turtle模块制作emoji&#xff0c;今天来看看PPT的相关操作&#xff1a; 文章目录 一、PPT的基础结构&#xff1a;二、PPT的相关操作&#xff1a;1. 导入pptx模块2. ppt的基本操作&#xff1a; 三、总结&#xff1a;四、 完整源码&#xff1a; 小L想要把 …

Blender 学习笔记(二)之坐标

文章目录 归零世界坐标系与局部坐标系物体的编辑模式万向坐标系视图坐标轴游标坐标轴原点变换轴心点 归零 alt G 键 世界坐标系与局部坐标系 在blender 中的物体&#xff0c;默认情况下是世界坐标系&#xff0c;也就是全局坐标系 当你按G 键&#xff0c;再按一次x 键时&…

周赛364(模拟+贪心,枚举,单调栈+前后缀分解,枚举+DFS)

文章目录 周赛364[8048. 最大二进制奇数](https://leetcode.cn/problems/maximum-odd-binary-number/)贪心 模拟 [100049. 美丽塔 I](https://leetcode.cn/problems/beautiful-towers-i/)枚举 [100048. 美丽塔 II](https://leetcode.cn/problems/beautiful-towers-ii/)单调栈 …

数据结构与算法——16.二叉树

这篇文章我们来讲一下二叉树 目录 1.概述 2.代码实现 1.概述 树&#xff1a;&#xff08;Tree&#xff09;是计算机数据存储的一种结构&#xff0c;因为存储类型和现实生活中的树类似所以被称为树。 树的源头被称为根&#xff0c;树其余分叉点被称为节点&#xff0c;而树这…

未知非参数需求和有限价格变动的动态定价

英文题目&#xff1a;Dynamic Pricing with Unknown Non-Parametric Demand and Limited Price Changes 中文题目&#xff1a;未知非参数需求和有限价格变动的动态定价 单位&#xff1a;麻省理工学院&#xff0c;剑桥 时间&#xff1a;2019 论文链接&#xff1a;https://do…

制作频谱灯

最近研究了下傅里叶变换&#xff0c;用它可以通过采集声音信号由时域转换到频域内&#xff0c;从而得到声音的频谱信息&#xff0c;可以做个频谱灯。 主要使用ESP32来实现了他&#xff0c;实现效果如下&#xff1a; 频谱灯 为了可以带出去露营&#xff0c;我把它做的很大&…

ubuntu20.04下源码编译colmap

由于稠密重建需要CUDA&#xff0c;因此先安装CUDA&#xff0c;我使用的是3050GPU&#xff0c;nvidia-smi显示最高支持CUDA11.4。 不要用sudo apt安装&#xff0c;版本较低&#xff0c;30系显卡建议安装CUDA11.0以上&#xff0c;这里安装了11.1版本。 下载&#xff1a; cuda_1…

C语言之内存函数篇(3)

目录 memcpy memcpy的使用 memcpy的模拟实现 NO1. NO2. memcpy可否实现重叠空间的拷贝 my_memcpy memcpy memmove memmove memmove 分析 代码 memset memset的使用 memcmp memcmp的使用 <0 0 >0 今天我们继续介绍几个重要的内存操作函数。&…

js中的数据结构:栈,队列,链表,字典哈希表,树

栈&#xff1a;先进后出 队列&#xff1a;先进先出 链表&#xff1a; 单链表&#xff1a; 双链表&#xff1a; 环形链表&#xff1a;最后一个数据的next指针不是指向null&#xff0c;指向的是任意之间的一个数据&#xff0c;形成一个环 数组和链表的区别&#xff1a; 字典和哈…

FPGA的汽车尾灯控制Verilog

名称&#xff1a;汽车尾灯控制Verilog 软件&#xff1a;Quartus 语言&#xff1a;Verilog 要求&#xff1a; 设计一个汽车尾灯控制器。假设汽车尾部各有2个指示灯&#xff08;LED&#xff09;&#xff0c;分别代表转弯、刹车&#xff0c;控制器功能包括&#xff1a; &…

微信收款码费率0.38太坑了

作为一个有多年运营经验的商家&#xff0c;我本人在申请收款功能时曾经走过了不少弯路。我找遍了市面上的知名的支付公司&#xff0c;但了解到的收款手续费率通常都在0.6左右&#xff0c;最低也只能降到0.38。这个过程吃过不少苦头。毕竟&#xff0c;收款功能是我们商家的命脉&…

有什么好用的设备管理软件?智慧巡检对后勤运维有什么帮助?

定期巡检在设备管理、后勤管理和运维管理中扮演着不可或缺的角色&#xff0c;以及及时发现异常并控制风险。然而&#xff0c;传统巡检工作存在弊端。为了解决这些问题&#xff0c;“的修”报修系统对巡检管理功能进行了突破性的设计和开发。   “的修”报修巡检管理功能包含了…

C++之内部类实现总结(二百三十五)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 人生格言&#xff1a; 人生…