目录

 
  • 前言
  • 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 或者通过下面的传送门过去  
  1. 配置环境
  2. 介绍turtlesim和rqt
  3. 了解ROS 2节点(node)
  4. 了解ROS 2主题(topics)
  5. 了解ROS 2服务 (service)
  6. 了解ROS 2参数 (parameters)
  7. 了解ROS 2动作(action)
  8. 使用rqt_console
  9. 创建启动文件(launch)
  10. 记录和播放数据
   

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  
source /opt/ros/dashing/setup.bash
 

Ⅱ 在shell启动文件中加命令

  如果嫌上面每次开一个终端,都要输入命令比较麻烦的话,可以吧上面的命令加到启动脚本里,shell 的是.bashrc,zsh 是.zshrc  
echo "source /opt/ros/<distro>/setup.bash" >> ~/.bashrc
  我们需要设置  
  • bash
 
echo "source /opt/ros/dashing/setup.bash" >> ~/.bashrc
 
  • zsh
 
echo "source /opt/ros/dashing/setup.zsh" >> ~/.zshrc
   

Ⅲ 检测环境变量

  跟ROS1 的操作一样的  
printenv | grep  ROS
  这个样子   在这里插入图片描述    

Ⅳ 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>
  或者添加到启动脚本  
echo "export ROS_DOMAIN_ID=<your_domain_id>" >> ~/.bashrc
 

④ 总结

  使用之前必须要配置使用的环境,两种方式,一是每次打开shell,搞一次,二是把命令写道启动文件中.bashrc 中,墙裂推荐第二种  

2 介绍turtlesim和rqt

 

① 背景

  Turtlesim (小乌龟是第一步)就像是 hello world 一样 rqt 是命令行的GUI工具,可以点点点的  

② 前提

 
  • 安装了ROS2
  • 配置好了环境
  • dshing 之后的版本才有小乌龟
 

③ 任务

 

Ⅰ turtlesim

 

安装turtlesim

  命令:  
sudo apt update
sudo apt install ros-dashing-turtlesim
  检查下  
ros2 pkg executables turtlesim
  这样就对了   在这里插入图片描述  

启动turtlesim

  命令:  
ros2 run turtlesim turtlesim_node
  在这里插入图片描述   启动了节点==/turtlesim==  

通过键盘控制小乌龟

  重新开个终端,启动键盘控制节点:  
ros2 run turtlesim turtle_teleop_key
  控制   在这里插入图片描述   这个小乌龟有心跳监测,你释放键盘一会之后就会停  

Ⅱ rqt

 

安装rqt

 
sudo apt update
sudo apt install ros-dashing-rqt-*
  在这里插入图片描述    

使用rqt

  命令:  
rqt
  这个空白的   在这里插入图片描述   点击 Plugins > Services > Service Caller   在这里插入图片描述  

设置/spawm

  可以增加乌龟通过rqt,添加重复的会报错   在这里插入图片描述  

修改路径画笔的颜色

  通过server /turtle1/set_pen   在这里插入图片描述  

重定向

  可以把topic 重定向到另一个topic上去   命令:  
ros2 run turtlesim turtle_teleop_key turtle1/cmd_vel:=turtle2/cmd_vel
  在这里插入图片描述  

④ 总结

  小乌龟和rqt是必须要了解的  

3 了解ROS 2节点(node)

 

① 背景

 
  • ROS graph是由ROS 2元素同时处理数据的网络。 如果要全部映射可执行文件并将其可视化,则它包含所有可执行文件及其之间的连接。,后面会有可视化的图帮助理解
 
  • ROS中的每个节点都应负责单个模块,(例如,一个节点用于控制轮式电机,一个节点用于控制激光测距仪等)。 每个节点都可以通过主题,服务,操作或参数向其他节点发送和接收数据。 完整的机器人系统由许多协同工作的节点组成。 在ROS 2中,单个可执行文件(C ++程序,Python程序等)可以包含一个或多个节点。
 

② 前提

 
  • 装ros2
  • 配置环境
  • 装小乌龟
 

③ 任务

 

Ⅰros2 run

  ros2 run 可以启动一个已知环境的包里的可执行文件 命令:  
ros2 run <package_name> <executable_name>
  例如:   启动小乌龟  
ros2 run turtlesim turtlesim_node
  如果你知道文件在哪,也可以这么操作,一般不推荐   在这里插入图片描述  

Ⅱ ros2 node list

  展示当前所有的node   在这里插入图片描述  

Ⅲ ros2 node info

  显示这个node 的详细信息   在这里插入图片描述  

Ⅳ 重新映射节点

  通过重新映射,您可以将默认的节点属性(例如节点名称,主题名称,服务名称等)重新分配给自定义值。在上一个教程中,您使用了重新映射turtle_teleop_key来更改要控制的默认乌龟。   命令:  
ros2 run turtlesim turtlesim_node --ros-args --remap __node:=my_turtle
  在这里插入图片描述   他们只是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

  这个是个可是化的工具,命令:  
rqt_graph
  不像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 的数据 命令:  
ros2 topic echo <topic_name>
  小乌龟的例子:  
ros2 topic echo /turtle1/cmd_vel
  这样会直观点   在这里插入图片描述  

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/Twist这个  
dashing 版本
 
  • 我们可以用 ros2 msg show geometry_msgs/msg/Twist
  在这里插入图片描述  
eloquent 版本
 
  • 我们可以用 ros2 interface show geometry_msgs/msg/Twist.msg
  在这里插入图片描述  
两个版本都可以
 
  • 也可以通过 ros2 topic echo /turtle1/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的消息频率  
ros2 topic hz topic_name
  在这里插入图片描述  

④ 总结

  这个和ros1 区别不大  

5 了解ROS 2服务 (service)

 

① 背景

  service 也是通讯的一种方式,req/respone 的方式,是触发式的,topic 是订阅式的  

② 前提

 
  • 装ros2
  • 配置环境
  • 装小乌龟
 

③ 任务

 

Ⅰ准备

  启动小乌龟 命令:  
ros2 run turtlesim turtlesim_node
ros2 run turtlesim turtle_teleop_key
   

Ⅱ 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版本  
ros2 service find <type_name>
  例如  
ros2 service find std_srvs/srv/Empty
  在这里插入图片描述  

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
  • 配置环境
  • 装小乌龟
 

③ 任务

 

Ⅰ准备

  启动小乌龟 命令:  
ros2 run turtlesim turtlesim_node
ros2 run turtlesim turtle_teleop_key
 

Ⅱ 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
  命令
ros2 param list
  在这里插入图片描述  

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 版本 命令    
ros2 param dump <node_name>
  保存当前/turtlesim 的配置,命令:  
ros2 param dump /turtlesim
  在这里插入图片描述  

加载配置文件 (目前在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
  • 配置环境
  • 装小乌龟
 

③ 任务

 

Ⅰ准备

  启动小乌龟 命令:  
ros2 run turtlesim turtlesim_node
ros2 run turtlesim turtle_teleop_key
 

Ⅱ 使用actions

  键盘控制节点这个地方就是action,使用f键周围的来控制小乌龟到指定方向,F键取消作用   在这里插入图片描述   演示:   在这里插入图片描述   是通过这个action 发送的   在这里插入图片描述    

actions 命令

 

ros2 action list

  列出 action   在这里插入图片描述  

ros2 action info

  看详细信息   在这里插入图片描述  

ros action show(ros2 interface show–eloquent 这个版本有)

  详细信息  
dashing 版本
 
ros2 action show turtlesim/action/RotateAbsolute
  在这里插入图片描述  
eloquent 版本
 
ros2 interface show turtlesim/action/RotateAbsolute.action
    在这里插入图片描述  

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  
ros2 run rqt_console rqt_console
  在这里插入图片描述   看看操作   在这里插入图片描述  

Ⅱ 日志等级

  主要有下面几种  
Fatal
Error
Warn
Info
Debug
  大概这么分把  
  • Fatal 消息指示系统将终止以尝试保护自身不受损害。
  • Error 消息表示重大问题,不一定会损坏系统,但会阻止其正常运行。
  • Warn 消息表示意外的活动或不理想的结果可能代表着更深层次的问题,但不会直接损害功能。
  • Info 消息指示事件和状态更新,可作为视觉验证系统是否按预期运行。
  • Debug 消息详细说明了系统执行的整个分步过程。
 

设置默认的logger 等级

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

④ 总结

  rqt_console 一个看日志的gui工具  

9 创建启动文件(launch)

 

① 背景

  这个launch 是.py 文件,和ros1 差别很大 到目前为止,在教程中,您一直在为运行的每个新节点打开新终端。当您创建越来越多的节点同时运行的更复杂的系统时,打开终端并重新输入配置详细信息将变得乏味。   启动文件允许您同时启动和配置许多包含ROS 2节点的可执行文件。   使用ros2 launch命令运行一个启动文件将立即启动整个系统-所有节点及其配置。  

② 前提

 
  • rqt_graph 和turtlesim 包
  • 文本编辑器
  • 环境
 

③ 任务

 

Ⅰ 准备

  创建 文件夹  
mkdir launch
  创建 urtlesim_mimic_launch.py 启动文件  
touch launch/turtlesim_mimic_launch.py
 

Ⅱ 写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的动作。
  代码以后在讲  

Ⅲ 启动

  正常来说 通过找包里的 文件来启动,  
ros2 launch <package_name> <launch_file_name>
  我们也可以通过绝对路径启动  
cd launch
ros2 launch turtlesim_mimic_launch.py
  在这里插入图片描述  

rqt_graph 看系统

  和之前多终端启动的差别   在这里插入图片描述  

④ 总结

  启动文件简化了具有许多节点和特定配置详细信息的复杂系统的运行。您可以使用Python创建启动文件,然后使用命令运行它们。ros2 launch  

10 记录和播放数据

 

① 背景

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

② 前提

 
  • 安装ros2 bag sudo apt-get install ros-<distro>-ros2bag ros-<distro>-rosbag2*
  • 环境
  • 小乌龟
 

③ 任务

 

Ⅰ准备

  运行 小乌龟  
ros2 run turtlesim turtlesim_node
ros2 run turtlesim turtle_teleop_key
    创建路径  
mkdir bag_files
 

Ⅱ 选择一个topic

  我们选择/turtle1/cmd_vel  

Ⅲ ros2 bag 记录

  命令:  
ros2 bag record <topic_name>
  多个主题  
ros2 bag record -o subset /turtle1/cmd_vel /turtle1/pose
  例子  
cd cd bag_files
ros2 bag record /turtle1/cmd_vel
  在这里插入图片描述  

Ⅳ ros2 bag info

 
ros2 bag info <bag_file_name>
  在这里插入图片描述  

Ⅴ ros2 bag play

  命令  
ros2 bag play rosbag2_2020_04_02-19_19_47
  在这里插入图片描述  

④ 总结

  bag 重要的很  

11 专栏地址

  有点长,可以去专栏 看分开的 https://blog.csdn.net/weixin_36628778/category_9849744.html