ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

【ROS学习笔记】4.玩转小海龟——ROS命令行工具

2022-01-12 22:33:37  阅读:303  来源: 互联网

标签:查看 topic 小海龟 玩转 turtlesim ROS 节点 rostopic


文章目录

1 回顾第一个小海龟程序

打开小海龟程序:
终端,启动ROS Master:

roscore

终端2,启动小海龟仿真器:
(输入rosrun turtlesim,敲两下Tab健可查看该命令下有哪些功能)

rosrun turtlesim turtlesim_node

终端3,启动海龟控制节点:

rosrun turtlesim turtle_teleop_key

在这里插入图片描述

2 查看系统中的计算图:rqt_graph

新建终端窗口:

rqt_graph

可展示系统中运行的计算图:
在这里插入图片描述可以清晰地了解系统的全貌。
teleop_turtle节点通过cmd_vel向turtlesim节点发出topic,使得小海龟移动。

3 rosnode

显示话题列表:rosnode list

在这里插入图片描述可以看到有3个节点。

查看节点信息:rosnode info

查看节点的具体信息:rosnode info /节点名
我们查看节点turtlesim节点的信息:
在这里插入图片描述

4 rostopic

显示topic列表:rostopic list

在这里插入图片描述

手动发布数据给topic

我们来手动发布数据给topic来控制海龟移动,使用rostopic pub
上图我们看到小海龟是通过cmd_vel进行发布话题而移动的,这次我们通过手动publish数据给这个topic来控制小海龟移动。
格式:rostopic pub (参数) 话题名 消息数据结构 “具体数据”
例,我们输入:(我们可以使用Tab键让我们自动填充数据,使用方向键←→移动到指定位置修改数据,比如我们把x的0.0改成了1.0)

rostopic pub /turtle1/cmd_vel geometry_msgs/Twist "linear:
  x: 1.0
  y: 0.0
  z: 0.0
angular:
  x: 0.0
  y: 0.0
  z: 0.0"

小海龟沿着正前方向移动了1单位,我们再使用参数-r 5移动5次,小海龟就撞上了南墙。
Ctrl+C就可以终止。
在这里插入图片描述

5 rosmsg

查看消息数据结构

上例我们使用了消息数据结构定义了一个消息传给topic,我们可以查看有哪些消息数据结构。
查看消息数据结构使用:rosmsg show …
在输入过程中,我们可以勤使用Tab键查看或填充内容。
在这里插入图片描述我们可以看到geometry_msgs/Twist数据结构的内容。

6 使用服务通信方式:rosservice

上例我们使用了传topic来控制节点,这次我们试试第二种通信方式service。

查看服务列表:rosservice list

在这里插入图片描述

手动通过服务来进行操作

这次我们通过人工产生服务(service)来诞生一只新海龟,使用rosservice call /spawn …
在服务列表中,有个spawn服务,可以产生一只新的海龟。
格式:rosservice call (参数) 服务名 “具体数据”
在这里插入图片描述
这时我们再输入rostopic list,可以看到turtle2以及在topic里了。

7 话题记录和复现:rosbag

试想我们尝试让海龟以我们指定的路径移动了一回,我们想要把它 记录下来,拷贝到自己的实验室再复现出来,我们就可以使用话题记录功能。
常用命令:rosbag record -a -O 文件名
比如我们使用之前打开的键盘操作器让海龟移动一圈并记录下来:
(1)先输入rosbag record -a -O cmd_record
这样就开始记录了:
在这里插入图片描述(2)移动一下:
在这里插入图片描述到记录界面按Ctrl+C停止:
在这里插入图片描述文件就记录在了这里:在这里插入图片描述
(3)接下去关闭所有打开的ros节点
重新开启roscore,开启海龟节点rosrun turtlesim turtlesim_node
这时我们输入 rosbag play cmd_record就可以复现之前的移动啦!
在这里插入图片描述

标签:查看,topic,小海龟,玩转,turtlesim,ROS,节点,rostopic
来源: https://blog.csdn.net/takedachia/article/details/122462163

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有