[ROS]二、命令与工具的使用

[ROS]一、ROS的基本概念


前言

今天来讲讲ros中常用的命令与工具。


一、常用的ROS命令

rosrun   #运行节点的命令,rosrun [功能包名称] [节点名称]
rostopic
rosservice
rosnode		#显示系统中所有的node相关信息的指令
rosparam
rosmsg
rossrv

二、例子讲解工具的使用

1.让海龟动起来

通过一个例子来讲解,我们动手操作使得小乌龟动起来,通过实际的操作才能使得我们印象更加的深刻,我们需要打开三个终端(ctl+alt+t)分别运行下面的三个命令。对于第一个指令是运行ros系统中的节点管理器,不管做什么ROS Master是必须首先要运行的。注意:按住TAB键可以自动补全命令,可以有效的避免输入错误

roscore		#打开一个终端(ctl+alt+t),启动ROS Master
rosrun turtlesim turtlesim_node		#打开第二个终端(可以使用:ctl+shift+t),启动小海龟仿真器
rosrun turtlesim turtle_teleop_key		#启动海龟的控制节点,按键盘的上下左右就可以控制小乌龟的运动(ง •̀_•́)ง。光标必须在此终端中才能控制小乌龟

效果如图所示,看到小乌龟动起来了是不是很开心呢,你的乌龟的颜色可能与我的不一样,这不打紧,这是随机生成的。其实,这个小乌龟例子中包含了ros背后核心机制
在这里插入图片描述

2.工具的使用

2.1工具的使用

再打开一个新的终端,输入命令

rqt_graph		#用于显示计算图的工具

在ros中有许多以rqt开头的qt工具,可以有助于我们可视化调试我们的代码。执行后会弹出如下的窗口,图中每一个椭圆代表一个节点,里面是节点的名称,箭头旁边的文字代表的是话题的名称(/turtlel/cmd_vel这个话题就是海龟的速度话题,通过键盘发送消息给这个话题从而驱动海龟的运动),箭头的方向代表数据的流向。

在这里插入图片描述
可以通过最左上角的选择框选择“node/Topic(all)",查看更详细的信息。在图中

  • 方框代表话题如:/rosout,这个是采集日志信息的话题,默认的话题,不许管
  • 在大方框/turtle1里面还有小方框,可以看到三个小方框的话题都是以/turtle1开头的,说明这个三个话题”/turtle1/pose、/turtle1/color_sensor、/turtle1/cmd_vel"都是属于/turtle1的.
    在这里插入图片描述

2.2 rosnode命令

打开终端输入命令,可以查看启动的节点。(如果不知道这个命令怎么用,可以直接输入rosnode按回车,终端上就会显示这个命令的用法了)
注意:快捷键ctrl+c可以结束终端命令

rosnode list  #显示系统中的所有的节点

效果如图所示,ctrl+c结束上个命令
在这里插入图片描述查看某个节点的信息,如下命令

rosnode info /turtlesim

从图中可以看到这个节点发布了哪些话题

  • /rosout [rosgraph_msgs/Log]
  • /turtle1/color_sensor [turtlesim/Color]
  • /turtle1/pose [turtlesim/Pose]
    可以看到这个节点订阅了哪些话题
  • /turtle1/cmd_vel [geometry_msgs/Twist]

键盘向 /turtle1/cmd_vel话题发送控制数据,然后小乌龟订阅此话题接收相关的数据,从而实现小乌龟的运动。

还有相关的服务Services:

  • /clear
  • /kill
  • /reset
  • /spawn
  • /turtle1/set_pen
  • /turtle1/teleport_absolute
  • /turtle1/teleport_relative
  • /turtlesim/get_loggers
  • /turtlesim/set_logger_level

在这里插入图片描述
关于rosnode的其他命令,以下的[节点名称]用节点名称替换。

rosnode ping    [节点名称]	#测试到节点的连接
rosnode machine	[节点名称]	#列出在特定计算机上运行的节点或列出计算机
rosnode kill	[节点名称]	#杀死某个节点
rosnode cleanup	[节点名称]	#清除不可访问节点的注册信息

2.3 rostopic命令

同理,如果不知道这个命令的用法可以在终端中输入rostopic,将会显示相关的提示信息。
在这里插入图片描述

rostopic bw		#显示话题使用的带宽
rostopic delay	#从标题中的时间戳显示话题的延迟
rostopic echo	#打印话题消息到屏幕上
rostopic find	#按类型查找主题
rostopic hz		#显示话题发布率 
rostopic info	#打印有关话题的信息
rostopic list	#列出所有的话题
rostopic pub	#将数据发布到主题
rostopic type	#打印话题或字段类型 

执行rostopic list查看系统中的所有的话题
在这里插入图片描述
我们利用命令的方式向话题/turtle1/cmd_vel发送消息控制海龟的运动,这个命令有些长,可以灵活用TAB键进行补全。

rostopic pub /turtle1/cmd_vel geometry_msgs/Twist	#输入到这可以双击TAB键
#命令解析:/turtle1/cmd_vel是话题名;geometry_msgs/Twist是发布速度指令的数据内容,即数居结构;命令补全后发现Twist里面包含了两个数据,分别为:linear和angular,即线速度和角速度,每一个数度分为x y z上的分量。linear的单位是m/s,angular的单位是:弧度/s,在ros中跟频率相关单位是:米,跟角度相关的单位就是:弧度

双击后将会显示如下的信息,可以按住键盘上的方向键移动光标
在这里插入图片描述我现在给乌龟线速度x上的分量是1 m/s,如图
在这里插入图片描述

按下回车键,小乌龟向前方走了一小段的距离。
在这里插入图片描述我们来改一下命令,在命令pub后面添加-r 10,这个的含义是命令的发布频率,即每秒以10Hz的频率向话题发布数据
在这里插入图片描述按下回车键,此时小乌龟将会一直向前走,直至撞墙
在这里插入图片描述
大家可以自己更改命令来试一下会有什么样的结果。如改下角速度的z轴上的分量,z轴的方向是垂直屏幕向外的,即小乌龟将会绕着z轴旋转,如图

在这里插入图片描述
如果想要知道Twist消息的数据结构,可以用命令rosmsg,可以看出来这个命令是与消息相关的。

rosmsg show geometry_msgs/Twist

在这里插入图片描述

2.3 rosservice命令

在终端中输入rosservice
在这里插入图片描述

rosservice args	#打印服务参数
rosservice call		#使用提供的参数调用服务
rosservice find	#按服务类型查找服务 
rosservice info	#打印有关服务的信息 
rosservice list		#列出所有的服务
rosservice type	#打印服务的类型
rosservice uri		#打印服务的ROSRPC 源

列出所有的服务,/spawn这个话题就是生成海龟的服务。所有的服务端是海龟仿真器,客户端是终端。
在这里插入图片描述生成第二只海龟,命令中call代表发布请求/spawn这个服务

rosservice call /spawn  #双击tab键,自动补全

在这里插入图片描述x y theta代表的是产生海龟的初始坐标,角度我们不需要关心,点(0,0)在最左下角,“name”代表的是第二只海龟的名称。改好之后按下回车,效果如图所示。当海龟成功产生时将会反馈信息给客户端(服务的特征)“name: “turtle2””,即最后一行。

在这里插入图片描述使用rostopic list命令查看话题,发现增加了turtle2的相关话题
在这里插入图片描述

2.3 rosbag命令

rosbag将数据打包,便于数居的复现。比如无人机,可以将无人在室外飞行时的数据打包,然后回到实验室将其复习,这样就可以避免每次查看数据都要到室外飞一遍。

rosbag record -a -o cmd_record	#-a代表把所有的数据都保存,-O(大写字母O)代表保存压缩包,cmd_record为压缩包的名字
rosbag play cmd_record.bag		#

输入命令按下回车,记录数据
在这里插入图片描述之后,将光标移动到键盘的节点的启动终端,控制海龟运动,这些控制的数居将会被记录下来。记录结束时可以切换到运行指令rosbag record -a -o cmd_record的终端按下快捷键ctrl+c。文件将会保存在当前终端的目录下面,可以用命令查看当前的路径:pwd
在这里插入图片描述可以在home目录下看到同名的文件,这个就记录数据的保存文件。
在这里插入图片描述
采用快捷键的方式关闭所用的命令,只启动roscore和海龟器仿真节点,按上下方向键可以切换到之前运行过的命令,再按下回车
在这里插入图片描述
接下来复现刚才的数居,注意play后面是刚才生成的文件名,我这里生成的时候后面自动补上了生成的信息。
在这里插入图片描述
结果如图,不出错的话你的终端上的轨迹应该是和之前你采用键盘控制的是一样的,我这里因为是重新记录了数据,所以两次的结果不一样。
在这里插入图片描述


总结

通过小海龟的例子了解了其背后的核心机制,也懂得了ros中的一些工具方便我们调试机器人,每天进步一点,积少成多,终会变成我们那个优秀的自己。

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值