ROS 2机器人操作系统与Gazebo机器人仿真(微课视频版)课件 第2章-ROS 2机器人操作系统 3节_第1页
ROS 2机器人操作系统与Gazebo机器人仿真(微课视频版)课件 第2章-ROS 2机器人操作系统 3节_第2页
ROS 2机器人操作系统与Gazebo机器人仿真(微课视频版)课件 第2章-ROS 2机器人操作系统 3节_第3页
ROS 2机器人操作系统与Gazebo机器人仿真(微课视频版)课件 第2章-ROS 2机器人操作系统 3节_第4页
ROS 2机器人操作系统与Gazebo机器人仿真(微课视频版)课件 第2章-ROS 2机器人操作系统 3节_第5页
已阅读5页,还剩79页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

ROS2机器人操作系统与Gazebo机器人仿真

第2章ROS2机器人操作系统

2025年版本ROS2机器人操作系统与Gazebo机器人仿真

第2章ROS2机器人操作系统提纲2.1ROS2基本原理2.1.1ROS2和ROS1的比较2.1.2ROS2的架构 2.1.3ROS2的核心概念2.2ROS2的安装 2.2.1VirtualBox安装 2.2.2Ubuntu24.04安装与配置2.2.3ROS2Jazzy安装2.2.4ROS2第三方功能包2.3ROS2命令行工具 2.3.1节点管理 2.3.2话题操作2.3.3服务操作2.3.4参数操作2.3.5参数操作 2.3.6记录与重播操作2.3.7包管理2.4rqt工具2.4.1rqt简介2.4.2rqt的使用2.4.3案例:绘制奥运五环旗2.5Rviz简介2.6本章小结2.3ROS2命令行工具2.3ROS2命令行工具2.3.1节点管理ROS2提供了许多命令行工具,用于管理、调试和操作ROS2中的节点、话题、服务等。ROS2命令行工具以ros2为起始,命令格式如下:ros2<command>[options]其中,<command>为要执行的具体命令,可以是action,multicast,bag,node,component,paramm,daemon,pkg,doctor,run,extension_points,security,extensions,service,interface,topic,launch,lifecycle,wtf等,[options]是命令的可选项,根据具体的命令,为命令提供的特定参数或标志。2.3ROS2命令行工具2.3.1节点管理下表列出了一些常用的ROS2命令行工具及其作用。命令格式功能ros2run<package_name><executable_name>用于运行ROS2指定功能包中的指定名称的节点程序ros2nodelist列出当前运行的所有ROS2节点ros2nodeinfo<node_name>获取指定ROS2节点的详细信息ros2

topic

list列出当前所有的ROS2话题ros2topicinfo<topic_name>获取指定ROS2话题的详细信息ros2topicecho<topic_name>订阅并打印指定话题的消息ros2topicpub<topic_name><msg_type>'<args>'发布指定类型消息到指定话题ros2topichz<topic_name>计算并显示指定话题的发布频率ros2

service

list列出当前所有的ROS2服务ros2servicetype<service_name>显示指定服务的消息类型ros2serviceinfo<service_name>获取指定ROS2服务的详细信息ros2servicefind<type_name>查询指定消息类型的服务ros2servicecall<service_name><service_type><arguments>调用服务2.3ROS2命令行工具2.3.1节点管理接上表。命令格式功能ros2serviceecho<service_name|service_type><arguments>订阅并打印指定服务的消息ros2interfacelist列出ROS2中所有的消息类型ros2interfacepackages显示含有消息类型的包名ros2interfacepackage<package_name>显示指定ROS2包中的消息类型ros2interfaceshow<type_name>查询指定类型的数据结构ros2paramlist列出所有的ROS2参数ros2paramget<node_name><parameter_name>获取指定节点的参数值ros2paramset<node_name><parameter_name><value>设置指定节点的参数值ros2paramdump<node_name>获取节点所有参数的数据ros2paramload<node_name><parameter_file>为节点配置参数文件中的参数数据ros2actionlist列出当前所有的ROS2动作ros2actiontype<action_name>显示指定动作的消息类型ros2actioninfo<action_name>获取指定ROS2动作的详细信息2.3ROS2命令行工具2.3.1节点管理接上表。命令格式功能ros2actionsend_goal<action_name><action_type><values>向指定动作发布信息ros2bagrecord<topic_name>记录单个话题的数据信息ros2bagrecord-o<bag_file_name><topic_name1><topic_name2>…在一个文件中记录多个话题数据信息ros2baginfo<bag_file_name>查看记录的数据详细信息ros2bagplay<bag_file_name>重播记录包内容ros2bagrecord--service<service_names>记录单个服务的数据信息ros2bagplay--publish-service-requests<bag_file_name>重播服务的记录包内容ros2pkglist列出所有已安装的ROS2包ros2pkgexecutables<pkg_name>查询指定ROS2包中的所有可执行程序ros2pkgprefix<pkg_name>查询指定ROS2包的路径前缀ROS2自带了一个简单的小海龟二维仿真环境,可用于进行ROS的学习和简易机器人仿真。下面以ROS2自带的小海龟仿真环境为例介绍上述ROS2常用命令行工具的使用方法。2.3ROS2命令行工具2.3.1节点管理节点是ROS2中最小的独立可执行程序,ROS2命令行工具提供了节点的创建,查询,销毁等功能。(1)ros2run命令用于启动节点。启动ROS2小海龟仿真环境节点的命令如下:ros2runturtlesimturtlesim_node其中,turtlesim为小海龟仿真环境所在包的包名称,turtlesim_node是一个节点,功能是创建和运行一个小海龟二维仿真环境。命令运行后会启动一个名为TurtleSim的窗体,窗体内包含一个小海龟(机器人)和一个可供小海龟运动的区域,如图所示。2.3ROS2命令行工具2.3.1节点管理2.3ROS2命令行工具2.3.1节点管理为了控制小海龟的运动,需要启动turtlesim包中的另一个节点turtle_teleop_key,在不关闭上一个终端的情况下,新建一个终端,执行命令:ros2runturtlesimturtle_teleop_key在上述命令中,执行了turtlesim包中的另一个节点turtle_teleop_key。在运行上述命令后,会启动一个控制小海龟运动的节点,在保持运行该命令的窗体处于激活状态的同时,按下键盘的方向键就可以控制小海龟的运动,效果如图所示。2.3ROS2命令行工具2.3.1节点管理(2)ros2nodelist命令用于查看节点列表。此时查看ROS2中的节点列表,执行命令:ros2nodelist上述命令的运行效果如图所示,显示了ROS2当前运行了两个节点,/turtlesim节点是小海龟仿真环境,/teleop_turtle节点是小海龟的控制程序。2.3ROS2命令行工具2.3.1节点管理使用重新映射允许将节点名称、主题名称、服务名称等默认节点属性重新指定为自定义值,从而可有效区分同一程序多个运行实例在名称上的冲突。例如新建一个终端再次启动一个小海龟仿真窗口程序turtlesim,将原本的节点名称turtlesim改为my_turtle,执行命令:ros2runturtlesimturtlesim_node--ros-args--remap__node:=my_turtleros2nodelist上述命令中参数--ros-args是一个标志,表明命令行后续的参数是ROS节点的参数,由运行的ROS节点负责解析,--remap__node:=my_turtle用于节点名称的重映射。上述命令运行后在节点列表中看到有三个节点,新建的小海龟仿真窗口所对应的节点名称为/my_turtle,命令运行效果如下图所示。2.3ROS2命令行工具2.3.1节点管理

2.3ROS2命令行工具2.3.1节点管理(3)ros2nodeinfo命令提供了查询节点支持的相关话题、服务和动作,以及在话题、服务和动作上传输的消息类型等功能,提供了节点对外的所有功能和接口,为节点的使用提供便利。例如查询/my_turtle节点的信息,命令如下:ros2nodeinfo/my_turtle上述命令运行效果如图所示,终端输出的结果如下:2.3ROS2命令行工具2.3.1节点管理上述输出结果显示了在/my_turtle节点上提供的话题(2个订阅者和4个发布者),服务(14个服务器和0个客户端)和动作(1个动作服务器和0个动作客户端)等功能的名称和消息类型。(4)关闭节点。使用按键Ctrl+C,即可结束在终端中正在运行的节点,关闭ROS2程序。2.3ROS2命令行工具2.3.2话题操作话题是ROS2中最常用的通信方式,ros2topic命令提供了话题的查询,发布,订阅等功能。(1)ros2topiclist命令用于显示当前ROS2中所存在的话题列表。在终端中执行命令:ros2topiclist上述命令在添加参数-t后不但可以看到现存的话题列表,还可以看到每个话题上传输消息的类型。ros2topiclist-t2.3ROS2命令行工具2.3.2话题操作上述两条命令的运行效果如图所示。2.3ROS2命令行工具2.3.2话题操作(2)ros2topicecho命令可以监听并显示在特定话题上实时传输的消息。在小海龟的仿真环境中,话题/turtle1/cmd_vel用于传输控制小海龟速度的指令。当通过turtle_teleop_key来控制小海龟运动时,利用话题的echo命令查看在话题/turtle1/cmd_vel上传输的消息,显示小海龟的线速度与角速度数值。监听话题小海龟速度的控制指令,执行命令:ros2topicecho/turtle1/cmd_vel2.3ROS2命令行工具2.3.2话题操作命令的执行效果如图所示,通过turtle_teleop_key控制小海龟运动时,会在终端中显示turtle_teleop_key发出的速度消息。2.3ROS2命令行工具2.3.2话题操作(3)ros2topicinfo命令会显示所指定话题名称的信息类型、发布者数量和订阅者数量。例如,显示控制小海龟速度的/turtle1/cmd_vel话题上的信息,执行命令:ros2topicinfo/turtle1/cmd_vel

命令执行效果如图所示,显示话题/turtle1/cmd_vel上的消息类型是geometry_msgs/msg/Twist,当前该话题的发布者的数量为0,订阅者数量为1。2.3ROS2命令行工具2.3.2话题操作2.3ROS2命令行工具2.3.2话题操作(4)ros2topicpub命令用于发布话题。发布话题前需要根据话题的消息类型明确消息的详细结构,跟据消息的详细结构使用YAML格式构造出符合消息类型的数据。完成话题消息的生成后即可使用话题发布命令发布话题。ROS2提供了查看消息详细结构的方法。ros2interfaceshow命令用于查看不同消息类型的数据格式。例如在小海龟速度控制话题/turtle1/cmd_vel上传输的消息类型是geometry_msgs/msg/Twist,查看该消息类型的数据格式,执行命令:ros2interfaceshowgeometry_msgs/msg/Twist2.3ROS2命令行工具2.3.2话题操作下图展示了Twist消息的详细格式由linear(线性)和angle(角度)两个矢量构成,每个矢量由x,y,z三个浮点数组成。不难发现,与通过echo命令获取的发布者发布的Twist消息的结构是相同的。2.3ROS2命令行工具2.3.2话题操作有了Twist消息的结构后,就可以使用YAML格式将消息封装为字符串,从命令行向话题/turtle1/cmd_vel发布数据,控制小海龟的运动速度,命令如下:ros2topicpub--once/turtle1/cmd_velgeometry_msgs/msg/Twist"{linear:{x:2.0,y:0.0,z:0.0},angular:{x:0.0,y:0.0,z:1.8}}"在上述命令中,构建了一个线速度为2.0,角速度为1.8的Twist消息,并通过--once可选参数,向仿真环境中的小乌龟发布了一次速度控制消息。小海龟在接收到消息后会运动一段距离后停止,命令运行效果如图所示。2.3ROS2命令行工具2.3.2话题操作注意:在控制小海龟的Twist消息只有线速度中的x和角度速度中z具有意义,因为小海龟仿真环境为二维平面,在小海龟自身的局部坐标系中x轴是小海龟头的朝向,也是小海龟运动的方向,z轴是垂直于仿真平面向外,也就是小海龟转动的轴。2.3ROS2命令行工具2.3.2话题操作小海龟(以及它要模仿的真实机器人)需要源源不断的指令才能持续运行。去掉话题发布命令里的--once选项,增加--rate1选项,表示以1Hz的频率稳定地发布命令,执行命令:ros2topicpub--rate1/turtle1/cmd_velgeometry_msgs/msg/Twist"{linear:{x:2.0,y:0.0,z:0.0},angular:{x:0.0,y:0.0,z:1.8}}"命令的运行效果如图所示,通过连续地发布Twist消息,小海龟就能够以恒定的线速度和恒定的角速度连续运动,其运动轨迹为一个圆圈。2.3ROS2命令行工具2.3.2话题操作2.3ROS2命令行工具2.3.2话题操作(5)ros2topichz命令用于查看话题的发布频率。在小海龟仿真环境中,小海龟除了接收控制速度的话题外,其也对外发布小海龟的位置话题/turtle1/pose,查看该话题的发布频率,执行命令:ros2topichz/turtle1/pose命令的运行效果如图所示,发布小海龟位置的话题约60hz频率。2.3ROS2命令行工具2.3.2话题操作(6)ros2topicbw用于测量指定话题的带宽使用情况,即在该话题上数据的通信速率。查看小海龟位置话题的发布带宽,执行命令:ros2topicbw/turtle1/pose命令的运行效果如图所示,小海龟位置话题所占用的带宽是约是1.4KB。2.3ROS2命令行工具2.3.2话题操作(7)ros2topictype命令用于查看指定话题的消息类型。以/turtle1/pose话题为例,查看该话题上消息的类型,执行命令:ros2topictype/turtle1/pose代码的运行效果如图所示,在话题/turtle1/pose上的消息类型为turtlesim/msg/Pose。2.3ROS2命令行工具2.3.2话题操作(8)ros2topicfind命令用于查找指定消息类型的所有话题。查找发布消息类型turtlesim/msg/Pose的话题,执行命令:ros2topicfindturtlesim/msg/Pose代码的运行效果如图所示,查找到消息类型为/turtlesim/msg/Pose的话题有一个,是/turtle1/pose。2.3ROS2命令行工具2.3.3服务操作ros2service命令提供了查询和客户端等与服务相关的功能。(1)ros2servicelist命令用于查询当前系统中活动的所有服务的列表。ros2servicelist上述命令的运行效果如图所示,可以看出在启动小海龟仿真环境后,系统中出现了数个相关服务。2.3ROS2命令行工具2.3.3服务操作与topic的相关命令一致,可以在后面加上参数-t来获取每一个在服务上传输的消息类型。ros2servicelist-t以上命令的运行效果如图所示,在输出结果里不仅显示了当前的服务,而且显示了在该服务上传输的消息类型。2.3ROS2命令行工具2.3.3服务操作(2)ros2servicetype用于获取在指定服务上传输消息的类型。如查询/clear服务的消息类型,执行命令:ros2servicetype/clear命令的运行效果如图所示,在/clear服务上传输的消息类型是std_srvs/srv/Empty。2.3ROS2命令行工具2.3.3服务操作(3)ros2serviceinfo命令用于查询指定服务的消息类型以及该服务上的客户端和服务器的数量。例如,查询服务/clear的客户端和服务器的数量和消息类型,执行命令:ros2serviceinfo/clear命令执行效果如图所示,在服务/clear上传输的消息类型为std_srvs/srv/Empty,客户端数量为0,服务器数量为1。2.3ROS2命令行工具2.3.3服务操作(4)ros2servicefind用于查找指定消息类型的所有服务。例如,查找消息类型为std_srvs/srv/Empty的所有服务,执行命令:ros2servicefindstd_srvs/srv/Empty上述命令的运行效果如图所示,消息类型是std_srvs/srv/Empty的服务有/clear和/reset两个。2.3ROS2命令行工具2.3.3服务操作(5)ros2servicecall可生成一个客户端,进行服务调用。客户端在发起服务调用时,需要根据服务消息类型的详细结构,构造出服务请求的消息,然后使用ros2servicecall命令向服务发送消息进行服务调用。下面以小海龟仿真环境中的创建小海龟的/spawn服务和重置仿真环境的/reset服务为例说明服务调用的方法和过程。查询服务消息类型的详细结构是服务调用的第一步,可以通过ros2interfaceshow命令完成,命令如下:ros2interfaceshowstd_srvs/srv/Emptyros2interfaceshowturtlesim/srv/Spawn2.3ROS2命令行工具2.3.3服务操作命令的执行效果如图所示,/rest服务的消息类型std_srvs/srv/Empty在请求和响应时参数均为空,不需要设置,/spawn服务的消息类型turtlesim/srv/Spawn的输出结果中位于“---”行上方的信息为调用/spawn所需的参数,x、y和theta决定了生成海龟的二维位置和姿态,而name则是可选的参数,用于设置生成海龟的名称,当不设置时仿真环境会生成一个名称,并返回给客户端。2.3ROS2命令行工具2.3.3服务操作在获得消息类型的详细结构后,就可使用YAML语法构造请求消息,通过调用/spawn服务在仿真环境中生成一只新海龟。例如在仿真环境的位置(2,2)处创建一个头朝0.2弧度的小海龟,执行命令:ros2servicecall/spawnturtlesim/srv/Spawn"{x:2,y:2,theta:0.2,name:‘’}“命令的运行效果如图所示,仿真环境在接收到请求后,就会在指定位置创建一只新的海龟。2.3ROS2命令行工具2.3.3服务操作当需要重置小海龟仿真环境时,通过调用/reset服务即可,执行命令:ros2servicecall/resetstd_srvs/srv/Empty"{}"上述命令在执行后,就会重新初始化小海龟仿真环境,会去除当前仿真环境中的两个小海龟的同时生成一个新的小海龟。2.3ROS2命令行工具2.3.4参数操作

ros2param命令提供了查看、设置节点中参数功能。在进行以下操作前需要先启动小海龟仿真节点/turtlesim和小海龟控制节点/teleop_turtle。(1)ros2paramlist命令用于查看当前ROS2中所有活动节点的参数。在终端中,执行命令:ros2paramlist命令的运行效果如图所示,分别显示了节点/teleop_turtle和节点/turtlesim中的参数名。特别的,在节点/turtlesim的参数中background_b,backgroud_g和backgroud_r三个参数使用RGB颜色值来决定turtlesim窗口的背景颜色。2.3ROS2命令行工具2.3.4参数操作

2.3ROS2命令行工具2.3.4参数操作(2)ros2paramget命令用于获取指定节点参数的类型和值。例如,获取节点/turtlesim里参数background_g的类型和当前值,执行命令:ros2paramget/turtlesimbackground_g上述命令的运行效果如图所示,显示了参数backgroud_g的类型是整数类型,并且当前的值为86,表示背景颜色中绿色通道的分量。2.3ROS2命令行工具2.3.4参数操作(3)ros2paramset命令用于修改指定节点上参数的值。例如,设置节点/turtlesim里参数backgroud_r的值为150,命令如下:ros2paramset/turtlesimbackground_r150上述命令的运行效果如图所示,在成功的设置参数backgroud_r的值为150后,小海龟仿真窗体的颜色发生了改变。2.3ROS2命令行工具2.3.4参数操作(4)ros2paramdump命令用于查看指定节点上的所有参数值。默认情况下,该命令会将所有参数值在终端里显示,也可以将参数值重定向到文件中保存起来,以便日后使用。例如,将节点/turtlesim的参数保存到文件turtlesim.yaml,执行以下命令:ros2paramdump/turtlesim>turtlesim.yaml在上述命令中的执行效果如图所示,通过标准输出重定向操作>,将查询结果存储在turtlesim.yaml文件。2.3ROS2命令行工具2.3.4参数操作

2.3ROS2命令行工具2.3.4参数操作上述命令在执行完成后,在主目录下(因为命令在终端执行时在主目录下)创建了一个turtlesim.yaml文件,该文件的内容是turtlesim目前所有的参数配置,如图所示。2.3ROS2命令行工具2.3.4参数操作(5)ros2paramload命令可将参数从文件加载到当前运行的节点。例如,先关闭当前小海龟仿真环境,然后重新打开一个小海龟仿真环境,向仿真环境加载上面所保存的turtlesim.yaml文件里的参数,执行命令:ros2paramload/turtlesimturtlesim.yaml上述命令的运行效果如图所示,小海龟仿真环境中的参数被修改为参数文件内的值,在参数修改完成后小海龟仿真环境的背景就会发生改变。2.3ROS2命令行工具2.3.4参数操作注意:只读参数只能在启动时修改,不能在启动后修改,这就是上述命令的输出中"qos_overrides"参数会出现一些警告的原因。2.3ROS2命令行工具2.3.4参数操作除了在节点启动后从参数文件加载参数,也可以在启动节点时通过设置--params-file参数,在节点启动时直接加载参数文件中的配置。例如,在启动/turtlesim节点时通过设置参数,在节点启动时就直接加载参数文件turtlesim.yaml中的配置,执行命令:ros2runturtlesimturtlesim_node--ros-args--params-fileturtlesim.yaml上述命令的运行效果如图所示,在节点启动时就会加载参数,小海龟仿真环境在启动时背景就已经发生了变化。

2.3ROS2命令行工具2.3.4参数操作2.3ROS2命令行工具2.3.5动作操作ros2action命令提供了ROS2中与动作相关的功能。在小海仿真环境中控制小海龟朝向就使用了动作。在启动仿真环境和控制节点后,在控制节点上使用G|B|V|C|D|E|R|T按键对海龟朝向进行控制时,就会以action的方式执行转动,并在打开的turtlesim_node节点的终端上输出action提示的消息,如图所示。2.3ROS2命令行工具2.3.5动作操作(1)ros2actionlist命令用于查看系统中所有活动的动作。执行命令:ros2actionlist动作也有消息类型,与话题和服务类似。要查看系统中动作及其消息类型,可以在命令后加上-t参数,执行命令:ros2actionlist-t以上两条命令的运行效果如图所示。显示了当前系统中运行了一个名为/turtle1/rotate_absolute的作动,并且在该个动作上传输的消息类型为turtlesim/action/RotateAbsolute。当需要通过该动作让小海龟旋转时,就需要用到构造该类型的消息。2.3ROS2命令行工具2.3.5动作操作2.3ROS2命令行工具2.3.5动作操作(2)ros2actiontype命令用于查询指定动作的消息类型。例如,查询小海龟仿真环境中动作/turtle1/rotate_absolute的消息类型,执行命令:ros2actiontype/turtle1/rotate_absolute上述命令的运行效果如图所示,结果显示了动作/turtle1/rotate_absolute的消息类型为turtlesim/action/RotateAbsolute。2.3ROS2命令行工具2.3.5动作操作(3)ros2actioninfo命令用于查看指定动作的详细信息,包括动作服务器和动作客户端的数量,以及消息类型。例如,查询小海龟仿真环境中动作/turtle1/rotate_absolute的详细信息,执行命令:ros2actioninfo/turtle1/rotate_absolute上述命令的运行效果如图所示,显示了在动作/turtle1/rotate_absolute上有一个来自/teleop_turtle的动作客户端,一个来自/turtlesim节点的动作服务器。2.3ROS2命令行工具2.3.5动作操作2.3ROS2命令行工具2.3.5动作操作(4)ros2actionset_goal命令用于启动一个动作客户端向动作服务器发起请求并获得执行结果。在发送或执行操作目标之前,需要了解消息类型的详细结构。在运行ros2actionlist-t命令时,确定了/turtle1/rotate_absolute的类型。查询消息类型的详细结构,在终端中执行命令:ros2interfaceshowturtlesim/action/RotateAbsolute上述命令的运行效果如图所示,动作消息类型由“---”分为三部分,第一部分是目标请求的结构(数据类型和名称),中间部分是结果的结构,最后一部分是反馈结构。三个部分都是表示角度的浮点数,单位是弧度,第一部分为目标角度,第二部分为目标位置与起始位置的偏转角度,第三部分为当前状态距离目标的角度。2.3ROS2命令行工具2.3.5动作操作2.3ROS2命令行工具2.3.5动作操作

根据上述查询结果,可以构造一个动作的目标请求消息,控制小海龟的转动,执行命令:ros2actionsend_goal/turtle1/rotate_absoluteturtlesim/action/RotateAbsolute"{theta:1.57}"在上述命令执行时,小海龟会发生转动,并在终端里显示相关的信息,如图所示。显示的信息有目标都有一个唯一的ID,显示在返回信息中。在转动结束后会有一个结果,包含一个delta的字段,表示当前位置与起始位置的位移角度。2.3ROS2命令行工具2.3.5动作操作2.3ROS2命令行工具2.3.5动作操作

要查看动作在执行时的反馈信息,在动作请求命令中添加--feedback参数。例如,在发起小海龟转动的动作时需要获得实时的反馈,执行命令:ros2actionsend_goal/turtle1/rotate_absoluteturtlesim/action/RotateAbsolute"{theta:-1.57}"--feedback上述命令的运行效果如图所示,在动作请求后,随着小海龟的旋转,终端里不断显示小海龟的实时角度。2.3ROS2命令行工具2.3.5动作操作2.3ROS2命令行工具2.3.6记录与重播操作ros2bag命令的功能是把话题和服务上的数据记录在数据库中,可用于复现实验和分享成果。在使用ros2bag系列的命令之前,需要创建一个用于存储数据库的文件夹。打开一个终端创建文件夹,并且进入到这个文件夹,执行命令:mkdirbag_filescdbag_files以上命令的运行效果如图所示,该文件夹作为数据库,后续记录的bag文件都会存放在这个文件夹中。2.3ROS2命令行工具2.3.6记录与重播操作2.3ROS2命令行工具2.3.6记录与重播操作

启动小海龟仿真环境和小海龟控制节点,执行命令:ros2runturtlesimturtlesim_noderos2runturtlesimturtle_teleop_key(1)ros2bagrecord命令用于记录数据。例如,记录小海龟的速度数据,执行命令:ros2bagrecord/turtle1/cmd_vel上述命令的运行效果如图所示。2.3ROS2命令行工具2.3.6记录与重播操作

2.3ROS2命令行工具2.3.6记录与重播操作

在执行命令后,使用turtle_teleop_key节点来控制小海龟,对于这些控制小海龟的速度信息将会记录在bag包中,在结束记录时切换到运行bag命令行的终端,使用按键Ctrl+C结束记录。记录的数据将写入到一个新的目录中,目录名称的格式为rosbag2_year_month_day-hour_minute_second。在这个目录里包含bag格式的数据,以及存储元数据的yaml文件,如图所示。2.3ROS2命令行工具2.3.6记录与重播操作

通过设置参数,以上命令还可以记录多个话题,以及更改记录数据的名称。例如,同时以指定的名称记录小海龟的位置和姿态,执行命令:ros2bagrecord-osubset/turtle1/cmd_vel/turtle1/pose在上述命令中,通过-o选项,可以为数据包文件指定存储的名称,subnet为设置的名称。将需要记录的多个话题,以空格隔开,添加到命令尾部。上述命令运行后,效果如图所示,在输出信息看到正在记录两个话题。使用turtle_teleop_key节点使海龟移动一段距离,最后使用Ctrl+C来结束记录。2.3ROS2命令行工具2.3.6记录与重播操作

2.3ROS2命令行工具2.3.6记录与重播操作(2)ros2baginfo命令用于查看记录数据的详细信息。例如,查看记录文件subset的详细信息,执行命令:ros2baginfosubset以上命令的运行效果如图所示,输出的信息中显示了记录数据的大小,名称,ROS2版本,记录起始和结束时间,记录的话题名称等信息。2.3ROS2命令行工具2.3.6记录与重播操作(3)ros2bagplay命令用于重放记录的数据。例如,重放记录的小海龟运动数据,使机器人按照记录的数据进行运动,执行命令:ros2bagplaysubset上述命令在运行时将会看到小海龟按照记录的运动速度进行复现,得到了与原始轨迹接近的效果,如图所示。2.3ROS2命令行工具2.3.6记录与重播操作相较于记录话题数据,记录服务(Service)的数据较为复杂。在需要记录数据的服务客户端和服务器上,必须在节点启动时开启ServiceIntrospection功能。下面以demo_nodes_cpp功能包中的服务器introspection_service和客户端introspection_client为例,介绍记录服务数据的方法。打开一个终端启动introspection_service:ros2rundemo_nodes_cppintrospection_service--ros-args-pservice_configure_introspection:=contents打开另一个终端启动introspection_client:ros2rundemo_nodes_cppintrospection_client--ros-args-pclient_configure_introspection:=contents2.3ROS2命令行工具2.3.6记录与重播操作上述两个命令启动demo_nodes

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论