目录
- 前言
- 1 配置环境
-
- ① 背景
- ② 前提
- ③ 任务
-
- Ⅰsource setup 文件
- Ⅱ 在shell启动文件中加命令
- Ⅲ 检测环境变量
- Ⅳ `ROS_DOMAIN_ID` 变量
- ④ 总结
- 2 介绍turtlesim和rqt
-
- ① 背景
- ② 前提
- ③ 任务
-
- Ⅰ turtlesim
-
- 安装turtlesim
- 启动turtlesim
- 通过键盘控制小乌龟
- Ⅱ rqt
-
- 安装rqt
- 使用rqt
- 设置/spawm
- 修改路径画笔的颜色
- 重定向
- ④ 总结
- 3 了解ROS 2节点(node)
-
- ① 背景
- ② 前提
- ③ 任务
-
- Ⅰros2 run
- Ⅱ ros2 node list
- Ⅲ ros2 node info
- Ⅳ 重新映射节点
- ④ 总结
- 4 了解ROS 2主题(topics)
-
- ① 背景
- ② 前提
- ③ 任务
-
- Ⅰ 准备
- Ⅱ rqt_graph
- Ⅲ ros2 topic 命令
-
- ros2 topic list
- ros2 topic echo
- ros2 topic info
- ros2 msg show (eloquent版本 ros2 interface show)
-
- dashing 版本
- eloquent 版本
- 两个版本都可以
- ros2 topic pub
- ros2 topic hz
- ④ 总结
- 5 了解ROS 2服务 (service)
-
- ① 背景
- ② 前提
- ③ 任务
-
- Ⅰ准备
- Ⅱ ros2 service 命令
-
- ros2 service list
- ros2 srv show (eloquent版本是 ros2 service type)
-
- eloquent 版本
- ros2 service find (dashing 不支持 )
- ros2 interface show (dashing 不支持)
- ros2 service call
- ④ 总结
- 6 了解ROS 2参数 (parameters)
-
- ① 背景
- ② 前提
- ③ 任务
-
- Ⅰ准备
- Ⅱ ros2 param 命令
-
- ros2 param list
- ros2 param get
- ros2 param set
-
- dashing 版本
- eloquent 版本
- ros2 param dump (dashing 没有这个命令)
- 加载配置文件 (目前在dashing版本没成功过。。。)
- ④ 总结
- 7 了解ROS 2动作(action)
-
- ① 背景
- ② 前提
- ③ 任务
-
- Ⅰ准备
- Ⅱ 使用actions
- actions 命令
-
- ros2 action list
- ros2 action info
- ros action show(ros2 interface show–eloquent 这个版本有)
-
- dashing 版本
- eloquent 版本
- ros2 action send_goal
- ④ 总结
- 8 使用rqt_console
-
- ① 背景
- ② 前提
- ③ 任务
-
- Ⅰ准备
- Ⅱ 日志等级
-
- 设置默认的logger 等级
- ④ 总结
- 9 创建启动文件(launch)
-
- ① 背景
- ② 前提
- ③ 任务
-
- Ⅰ 准备
- Ⅱ 写py文件
- Ⅲ 启动
- rqt_graph 看系统
- ④ 总结
- 10 记录和播放数据
-
- ① 背景
- ② 前提
- ③ 任务
-
- Ⅰ准备
- Ⅱ 选择一个topic
- Ⅲ ros2 bag 记录
- Ⅳ ros2 bag info
- Ⅴ ros2 bag play
- ④ 总结
- 11 专栏地址
前言
学习ros2 和ros1 很像,从入门教程开始,包括命令行工具和客户端库,本篇先讲命令行工具,下一篇客户端库 参考官方文档https://index.ros.org/doc/ros2/Tutorials/ 这篇文章很长,可以通过专栏查看 https://blog.csdn.net/weixin_36628778/category_9849744.html 或者通过下面的传送门过去
- 配置环境
- 介绍turtlesim和rqt
- 了解ROS 2节点(node)
- 了解ROS 2主题(topics)
- 了解ROS 2服务 (service)
- 了解ROS 2参数 (parameters)
- 了解ROS 2动作(action)
- 使用rqt_console
- 创建启动文件(launch)
- 记录和播放数据
1 配置环境
① 背景
ROS 2依赖于使用shell环境组合工作空间的概念。“工作区”是一个ROS术语,表示您在系统中使用ROS 2开发的位置。核心ROS 2工作区称为底层。后续的本地工作区称为覆盖。在使用ROS 2开发时,通常会同时激活多个工作区。 工作去通过setup.bash 进行设置和切换,跟ros1 一样的操作 只是自己的工作空间路径变了,不是devel变成install了
② 前提
确保已经安装了ros2,如果没有参考我的博客:https://blog.csdn.net/weixin_36628778/article/details/105170234
③ 任务
Ⅰsource setup 文件
可以每次使用的时候source setup.bash
source /opt/ros/<distro>/setup.bash
比如现在用的ROS2 是dashing
<code class="prism language-bash has-numbering"><span class="token function">source</span> /opt/ros/dashing/setup.bash </code>
Ⅱ 在shell启动文件中加命令
如果嫌上面每次开一个终端,都要输入命令比较麻烦的话,可以吧上面的命令加到启动脚本里,shell 的是.bashrc
,zsh 是.zshrc
<code class="prism language-bash has-numbering"><span class="token keyword">echo</span> <span class="token string">"source /opt/ros/<distro>/setup.bash"</span> <span class="token operator">>></span> ~/.bashrc </code>
我们需要设置
- bash
<code class="prism language-bash has-numbering"><span class="token keyword">echo</span> <span class="token string">"source /opt/ros/dashing/setup.bash"</span> <span class="token operator">>></span> ~/.bashrc </code>
- zsh
<code class="prism language-bash has-numbering"><span class="token keyword">echo</span> <span class="token string">"source /opt/ros/dashing/setup.zsh"</span> <span class="token operator">>></span> ~/.zshrc </code>
Ⅲ 检测环境变量
跟ROS1 的操作一样的
<code class="prism language-bash has-numbering"><span class="token function">printenv</span> <span class="token operator">|</span> <span class="token function">grep</span> ROS </code>
这个样子
Ⅳ ROS_DOMAIN_ID
变量
这个是多机通讯的变量,相当于交换机的vlanid ,当你局域网想区分出多个ROS集群的时候,每个ROS2集群之间不想相互干扰,需要设置这个ID 选择一个整数 对于eProsima Fast RTPS上的默认RMW,从ROS 2 Eloquent开始,此整数必须介于0-232之间,才能成功启动ROS 2守护守护进程。 如果通讯不了的话,可以通过这个网站来排查:https://index.ros.org/doc/ros2/Troubleshooting/ 命令:
export ROS_DOMAIN_ID=<your_domain_id>
或者添加到启动脚本
<code class="prism language-bash has-numbering"><span class="token keyword">echo</span> <span class="token string">"export ROS_DOMAIN_ID=<your_domain_id>"</span> <span class="token operator">>></span> ~/.bashrc </code>
④ 总结
使用之前必须要配置使用的环境,两种方式,一是每次打开shell,搞一次,二是把命令写道启动文件中.bashrc
中,墙裂推荐第二种
2 介绍turtlesim和rqt
① 背景
Turtlesim (小乌龟是第一步)就像是 hello world
一样 rqt 是命令行的GUI工具,可以点点点的
② 前提
- 安装了ROS2
- 配置好了环境
- dshing 之后的版本才有小乌龟
③ 任务
Ⅰ turtlesim
安装turtlesim
命令:
<code class="prism language-bash has-numbering"><span class="token function">sudo</span> apt update <span class="token function">sudo</span> apt <span class="token function">install</span> ros-dashing-turtlesim </code>
检查下
<code class="prism language-bash has-numbering">ros2 pkg executables turtlesim </code>
这样就对了
启动turtlesim
命令:
ros2 run turtlesim turtlesim_node
启动了节点==/turtlesim==
通过键盘控制小乌龟
重新开个终端,启动键盘控制节点:
<code class="prism language-bash has-numbering">ros2 run turtlesim turtle_teleop_key </code>
控制
这个小乌龟有心跳监测,你释放键盘一会之后就会停
Ⅱ rqt
安装rqt
<code class="prism language-bash has-numbering"><span class="token function">sudo</span> apt update <span class="token function">sudo</span> apt <span class="token function">install</span> ros-dashing-rqt-* </code>
使用rqt
命令:
<code class="prism language-bash has-numbering">rqt </code>
这个空白的
点击 Plugins > Services > Service Caller
设置/spawm
可以增加乌龟通过rqt,添加重复的会报错
修改路径画笔的颜色
通过server /turtle1/set_pen
重定向
可以把topic 重定向到另一个topic上去 命令:
<code class="prism language-bash has-numbering">ros2 run turtlesim turtle_teleop_key turtle1/cmd_vel:<span class="token operator">=</span>turtle2/cmd_vel </code>
④ 总结
小乌龟和rqt是必须要了解的
3 了解ROS 2节点(node)
① 背景
- ROS graph是由ROS 2元素同时处理数据的网络。 如果要全部映射可执行文件并将其可视化,则它包含所有可执行文件及其之间的连接。,后面会有可视化的图帮助理解
- ROS中的每个节点都应负责单个模块,(例如,一个节点用于控制轮式电机,一个节点用于控制激光测距仪等)。 每个节点都可以通过主题,服务,操作或参数向其他节点发送和接收数据。 完整的机器人系统由许多协同工作的节点组成。 在ROS 2中,单个可执行文件(C ++程序,Python程序等)可以包含一个或多个节点。
② 前提
- 装ros2
- 配置环境
- 装小乌龟
③ 任务
Ⅰros2 run
ros2 run
可以启动一个已知环境的包里的可执行文件 命令:
<code class="prism language-bash has-numbering">ros2 run <span class="token operator"><</span>package_name<span class="token operator">></span> <span class="token operator"><</span>executable_name<span class="token operator">></span> </code>
例如: 启动小乌龟
ros2 run turtlesim turtlesim_node
如果你知道文件在哪,也可以这么操作,一般不推荐
Ⅱ ros2 node list
展示当前所有的node
Ⅲ ros2 node info
显示这个node 的详细信息
Ⅳ 重新映射节点
通过重新映射,您可以将默认的节点属性(例如节点名称,主题名称,服务名称等)重新分配给自定义值。在上一个教程中,您使用了重新映射turtle_teleop_key来更改要控制的默认乌龟。 命令:
<code class="prism language-bash has-numbering">ros2 run turtlesim turtlesim_node --ros-args --remap __node:<span class="token operator">=</span>my_turtle </code>
他们只是node 不一样,但是订阅的topic 是一样的,我们可以同时控制他们
节点之间的可是化关系
④ 总结
通过小乌龟,学习节点真开心
4 了解ROS 2主题(topics)
① 背景
ROS 2将复杂的系统分解为许多模块化 节点(node)。 主题(topic)是ROS图的重要元素,它充当节点(node)交换消息的总线。 节点(node)可以将数据发布到任意数量的主题(topic),并同时具有对任意数量的主题(topic)的订阅。 主题(topic)是数据在节点(node)之间以及因此在系统的不同部分之间移动的重要方式之一。 说面了就是通过topic来通讯,通过node 来发现互相
② 前提
- 装ros2
- 配置环境
- 装小乌龟
③ 任务
Ⅰ 准备
启动小乌龟 命令:
ros2 run turtlesim turtlesim_node
ros2 run turtlesim turtle_teleop_key
Ⅱ rqt_graph
这个是个可是化的工具,命令:
<code class="prism language-bash has-numbering">rqt_graph </code>
不像ros1 还要rosrun
这个是个自检工具
Ⅲ ros2 topic 命令
ros2 topic list
ros2 topic list
列出所有topic ros2 topic list -t
列出topic 顺便带上了消息类型,这个好 下面是帮助文档,
usage: ros2 topic list [-h] [--spin-time SPIN_TIME] [-t] [-c]
[--include-hidden-topics]
Output a list of available topics
optional arguments:
-h, --help show this help message and exit
--spin-time SPIN_TIME
Spin time in seconds to wait for discovery (only
applies when not using an already running daemon)
-t, --show-types Additionally show the topic type
-c, --count-topics Only display the number of topics discovered
--include-hidden-topics
Consider hidden topics as well
发现两个隐藏的,rqt_graph 去掉hide的勾选也能看到
ros2 topic echo
可以查看对应topic上 publish 的数据 命令:
<code class="prism language-bash has-numbering">ros2 topic <span class="token keyword">echo</span> <span class="token operator"><</span>topic_name<span class="token operator">></span> </code>
小乌龟的例子:
<code class="prism language-bash has-numbering">ros2 topic <span class="token keyword">echo</span> /turtle1/cmd_vel </code>
这样会直观点
ros2 topic info
看topic的详细信息,命令:ros2 topic info /turtle1/cmd_vel
ros2 msg show (eloquent版本 ros2 interface show)
用 ros2 topic list -t
看到了cmd_vel
的消息类型 是 geometry_msgs/msg/Twis
t这个
dashing 版本
- 我们可以用
ros2 msg show geometry_msgs/msg/Twist
eloquent 版本
- 我们可以用
ros2 interface show geometry_msgs/msg/Twist.msg
两个版本都可以
- 也可以通过
ros2 topic echo /tu
rtle1/cmd_vel
来看
- 可以通过rqt来看
- ide 配置好之后可以跳到头文件去看也行
- 去msg文件看也行 方法有点多
ros2 topic pub
可以通过命令行去发送消息
ros2 topic pub <topic_name> <msg_type> '<args>'
我们通过命令下发去控制小乌龟
ros2 topic pub --rate 1 /turtle1/cmd_vel geometry_msgs/msg/Twist '{linear: {x: 2.0, y: 0.0, z: 0.0}, angular: {x: 0.0, y: 0.0, z: 1.8}}'
选项 --rate 1
或者不加 是以1HZ的速度publish,--once
是只发一次
ros2 topic hz
实时统计topic的消息频率
<code class="prism language-bash has-numbering">ros2 topic hz topic_name </code>
④ 总结
这个和ros1 区别不大
5 了解ROS 2服务 (service)
① 背景
service
也是通讯的一种方式,req/respone
的方式,是触发式的,topic
是订阅式的
② 前提
- 装ros2
- 配置环境
- 装小乌龟
③ 任务
Ⅰ准备
启动小乌龟 命令:
<code class="prism language-bash has-numbering">ros2 run turtlesim turtlesim_node ros2 run turtlesim turtle_teleop_key </code>
Ⅱ ros2 service 命令
ros2 service list
列出服务 命令提示
usage: ros2 service list [-h] [--spin-time SPIN_TIME] [-t] [-c]
Output a list of available services
optional arguments:
-h, --help show this help message and exit
--spin-time SPIN_TIME
Spin time in seconds to wait for discovery (only
applies when not using an already running daemon)
-t, --show-types Additionally show the service type
-c, --count-services Only display the number of services discovered
可以通过命令和rqt去看
ros2 srv show (eloquent版本是 ros2 service type)
就是看看srv的消息的几种方法 ,
- 执行命令行
ros2 srv show turtlesim/srv/SetPen
rqt 查看
- 文件查看
eloquent 版本
ros2 service find (dashing 不支持 )
根据类型找服务,使用eloquent版本
<code class="prism language-bash has-numbering">ros2 <span class="token function">service</span> <span class="token function">find</span> <span class="token operator"><</span>type_name<span class="token operator">></span> </code>
例如
<code class="prism language-bash has-numbering">ros2 <span class="token function">service</span> <span class="token function">find</span> std_srvs/srv/Empty </code>
ros2 interface show (dashing 不支持)
查看service的消息信息,用的eloquent版本 命令:ros2 interface show <type_name>.srv
例子:ros2 interface show turtlesim/srv/Spawn.srv
ros2 service call
调用服务,命令行模式
ros2 service call <service_name> <service_type> <arguments>
我们调用/clear 和 /spawn
ros2 service call /clear std_srvs/srv/Empty
ros2 service call /spawn turtlesim/srv/Spawn "{x: 2, y: 2, theta: 0.2, name: 'bigggg'}"
④ 总结
如果是不是连续的通讯,可以使用service
和action
更好一点
6 了解ROS 2参数 (parameters)
① 背景
参数 (parameters) 就是每个节点的配置值,配置文件格式是yaml,可以是integers, floats, booleans, strings and lists
,每个节点(node)都维护自己的参数(parameters)。所有参数(parameters)都是可动态重新配置的,并且是基于ROS 2服务(services)构建的。
② 前提
- 装ros2
- 配置环境
- 装小乌龟
③ 任务
Ⅰ准备
启动小乌龟 命令:
<code class="prism language-bash has-numbering">ros2 run turtlesim turtlesim_node ros2 run turtlesim turtle_teleop_key </code>
Ⅱ ros2 param 命令
ros2 param list
显示参数列表
usage: ros2 param list [-h] [--spin-time SPIN_TIME] [--include-hidden-nodes]
[--param-prefixes PARAM_PREFIXES [PARAM_PREFIXES ...]]
[node_name]
Output a list of available parameters
positional arguments:
node_name Name of the ROS node
optional arguments:
-h, --help show this help message and exit
--spin-time SPIN_TIME
Spin time in seconds to wait for discovery (only
applies when not using an already running daemon)
--include-hidden-nodes
Consider hidden nodes as well
--param-prefixes PARAM_PREFIXES [PARAM_PREFIXES ...]
Only list parameters with the provided prefixes
命令
<code class="prism language-bash has-numbering">ros2 param list </code>
ros2 param get
获取指定参数的值 命令:ros2 param get <node_name> <parameter_name>
例子:ros2 param get /turtlesim background_g
ros2 param set
设置指定参数的值 命令:ros2 param set <node_name> <parameter_name> <value>
例子:ros2 param set /turtlesim background_r 150
dashing版本目前不行 ,设置颜色没变,值是变了的 eloquent版本是可以改变颜色的
dashing 版本
eloquent 版本
ros2 param dump (dashing 没有这个命令)
使用eloquent 版本 命令
<code class="prism language-bash has-numbering">ros2 param dump <span class="token operator"><</span>node_name<span class="token operator">></span> </code>
保存当前/turtlesim 的配置,命令:
<code class="prism language-bash has-numbering">ros2 param dump /turtlesim </code>
加载配置文件 (目前在dashing版本没成功过。。。)
使用eloquent 版本 命令:
ros2 run <package_name> <executable_name> --ros-args --params-file <file_name>
例子:
ros2 run turtlesim turtlesim_node --ros-args --params-file ./turtlesim.yaml
④ 总结
节点的参数可以get 和set ,其他的命令我换个版本再试试
7 了解ROS 2动作(action)
① 背景
动作是ROS 2中用于长时间运行任务的通信类型之一。它们由三部分组成:目标,结果和反馈。 动作基于主题和服务。它们的功能与服务相似,但动作是可抢占的(您可以在执行时将其取消)。与返回单个响应的服务相反,它们还提供稳定的反馈。 操作使用类似于发布者-订阅者模型(在主题教程中进行描述)的客户端-服务器模型。“动作客户端”节点将目标发送到“动作服务器”节点,该节点确认目标并返回反馈和结果流。 意思就是topic是没有反馈的,action是有反馈的长连接
② 前提
- 装ros2
- 配置环境
- 装小乌龟
③ 任务
Ⅰ准备
启动小乌龟 命令:
<code class="prism language-bash has-numbering">ros2 run turtlesim turtlesim_node ros2 run turtlesim turtle_teleop_key</code><code class="prism language-bash has-numbering"></code>
Ⅱ 使用actions
键盘控制节点这个地方就是action,使用f键周围的来控制小乌龟到指定方向,F键取消作用
演示:
是通过这个action 发送的
actions 命令
ros2 action list
列出 action
ros2 action info
看详细信息
ros action show(ros2 interface show–eloquent 这个版本有)
详细信息
dashing 版本
<code class="prism language-bash has-numbering">ros2 action show turtlesim/action/RotateAbsolute </code>
eloquent 版本
<code class="prism language-bash has-numbering">ros2 interface show turtlesim/action/RotateAbsolute.action </code>
ros2 action send_goal
命令行发送action ros2 action send_goal <action_name> <action_type> <values>
例子:
- 没有feedback
ros2 action send_goal /turtle1/rotate_absolute turtlesim/action/RotateAbsolute {'theta: 1.57'}
- 有 feedbaxk
ros2 action send_goal /turtle1/rotate_absolute turtlesim/action/RotateAbsolute {'theta: -1.57'} --feedback
④ 总结
动作就像服务,可让您执行长时间运行的任务,提供定期反馈并可以取消。 机器人系统可能会使用动作进行导航。一个行动目标可以告诉机器人去某个位置。当机器人导航到该位置时,它可以沿途发送更新(即反馈),一旦到达目的地,便发送最终结果消息。 Turtlesim有一个动作服务器,动作客户端可以将目标发送给旋转的乌龟。在本教程中,您对动作进行了自省/turtle1/rotate_absolute,以更好地了解什么是动作以及它们如何工作。
8 使用rqt_console
① 背景
rqt_console是用于检查ROS 2中的日志消息的GUI工具。通常,日志消息显示在终端中。使用rqt_console,您可以随着时间的推移收集这些消息,以更有条理的方式仔细查看它们,过滤它们,保存它们,甚至重新加载保存的文件以在不同的时间进行自我检查。 节点使用日志以各种方式输出有关事件和状态的消息。为了用户的利益,它们的内容通常是信息性的。日志消息的意图由节点的作者定义,尽管内容可以在运行时编写。
② 前提
- 装ros2
- 配置环境
- 装小乌龟
③ 任务
Ⅰ准备
启动 rqt_console
<code class="prism language-bash has-numbering">ros2 run rqt_console rqt_console </code>
看看操作
Ⅱ 日志等级
主要有下面几种
<code class="prism language-bash has-numbering">Fatal Error Warn Info Debug </code>
大概这么分把
- Fatal 消息指示系统将终止以尝试保护自身不受损害。
- Error 消息表示重大问题,不一定会损坏系统,但会阻止其正常运行。
- Warn 消息表示意外的活动或不理想的结果可能代表着更深层次的问题,但不会直接损害功能。
- Info 消息指示事件和状态更新,可作为视觉验证系统是否按预期运行。
- Debug 消息详细说明了系统执行的整个分步过程。
设置默认的logger 等级
<code class="prism language-bash has-numbering">ros2 run turtlesim turtlesim_node --ros-args --log-level WARN </code>
④ 总结
rqt_console 一个看日志的gui工具
9 创建启动文件(launch)
① 背景
这个launch 是.py 文件,和ros1 差别很大 到目前为止,在教程中,您一直在为运行的每个新节点打开新终端。当您创建越来越多的节点同时运行的更复杂的系统时,打开终端并重新输入配置详细信息将变得乏味。 启动文件允许您同时启动和配置许多包含ROS 2节点的可执行文件。 使用ros2 launch
命令运行一个启动文件将立即启动整个系统-所有节点及其配置。
② 前提
- rqt_graph 和turtlesim 包
- 文本编辑器
- 环境
③ 任务
Ⅰ 准备
创建 文件夹
<code class="prism language-bash has-numbering"><span class="token function">mkdir</span> launch</code><code class="prism language-bash has-numbering"></code>
创建 urtlesim_mimic_launch.py
启动文件
<code class="prism language-bash has-numbering"><span class="token function">touch</span> launch/turtlesim_mimic_launch.py </code>
Ⅱ 写py文件
from launch import LaunchDescription
from launch_ros.actions import Node
def generate_launch_description():
return LaunchDescription([
Node(
package='turtlesim',
node_namespace='turtlesim1',
node_executable='turtlesim_node',
node_name='sim'
),
Node(
package='turtlesim',
node_namespace='turtlesim2',
node_executable='turtlesim_node',
node_name='sim'
),
Node(
package='turtlesim',
node_executable='mimic',
node_name='mimic',
remappings=[
('/input/pose', '/turtlesim1/turtle1/pose'),
('/output/cmd_vel', '/turtlesim2/turtle1/cmd_vel'),
]
)
])
mimic的/input/pose主题已重新映射到/turtlesim1/turtle1/pose,主题也已映射/output/cmd_vel到/turtlesim2/turtle1/cmd_vel。这意味着mimic将订阅/turtlesim1/sim的姿势主题,并将其重新发布以供/turtlesim2/sim速度指令主题订阅。换句话说,turtlesim2将模仿turtlesim1的动作。
代码以后在讲
Ⅲ 启动
正常来说 通过找包里的 文件来启动,
<code class="prism language-bash has-numbering">ros2 launch <span class="token operator"><</span>package_name<span class="token operator">></span> <span class="token operator"><</span>launch_file_name<span class="token operator">></span> </code>
我们也可以通过绝对路径启动
<code class="prism language-bash has-numbering"><span class="token function">cd</span> launch ros2 launch turtlesim_mimic_launch.py </code>
rqt_graph 看系统
和之前多终端启动的差别
④ 总结
启动文件简化了具有许多节点和特定配置详细信息的复杂系统的运行。您可以使用Python创建启动文件,然后使用命令运行它们。ros2 launch
10 记录和播放数据
① 背景
ros2 bag是用于记录系统中有关主题发布的数据的命令行工具。它累积在任何数量的主题上传递的数据,并将其保存在数据库中。然后,您可以重播数据以重现测试和实验的结果。录制主题也是共享您的作品并允许其他人重新创建作品的一种好方法。
② 前提
- 安装ros2 bag
sudo apt-get install ros-<distro>-ros2bag ros-<distro>-rosbag2*
- 环境
- 小乌龟
③ 任务
Ⅰ准备
运行 小乌龟
<code class="prism language-bash has-numbering">ros2 run turtlesim turtlesim_node ros2 run turtlesim turtle_teleop_key </code>
创建路径
<code class="prism language-bash has-numbering"><span class="token function">mkdir</span> bag_files </code>
Ⅱ 选择一个topic
我们选择/turtle1/cmd_vel
Ⅲ ros2 bag 记录
命令:
ros2 bag record <topic_name>
多个主题
<code class="prism language-bash has-numbering">ros2 bag record -o subset /turtle1/cmd_vel /turtle1/pose </code>
例子
cd cd bag_files
ros2 bag record /turtle1/cmd_vel
Ⅳ ros2 bag info
ros2 bag info <bag_file_name>
Ⅴ ros2 bag play
命令
<code class="prism language-bash has-numbering">ros2 bag play rosbag2_2020_04_02-19_19_47 </code>
④ 总结
bag 重要的很
11 专栏地址
有点长,可以去专栏 看分开的 https://blog.csdn.net/weixin_36628778/category_9849744.html