ROS命令行工具的使用
命令行工具都是以ros开头的
常用命令
- rostopic
- rosservice
- rosnode
- rosparam
- rosmsg
- rossrV
以安装时作为验证的turtlesim小海龟仿真器为例
turtlesim是一个功能包名
那三步操作分别对应着
启动ROS Master ——>启动小海龟仿真器——>启动海龟控制节点
roscore是用来启动ROS Master的
ROS Master是ROS中所有节点的管理器,也是运行ROS系统当中必须要首先运行起来的
使用rosrun命令来运行一个节点。rosrun是用来运行我们在某个功能包里面某个节点的指令,后面要跟两个参数,一个是功能包名,一个是功能包里面的要运行的节点名
turtle_teleop_key是键盘控制节点
在turtle_teleop_key的页面下按方向键海龟才会动
rqt_graph 用来显示系统计算图
通过计算图可以看到系统全貌
turtlesim仿真器节点
teleop_turtle键盘控制节点
两个节点之间有一个话题 turtle1/cmd_vel做通讯
rosnode 显示系统当中所有节点相关信息
rosnode list 把系统中所有节点都列出来
/rosout是默认出现的,用于提交日志信息
rosnode info + 节点 查看某一个节点的具体信息
正在发布哪些话题、正在订阅哪些话题
rostopic 话题相关的命令
用指令发布数据让海龟移动
rostopic list 打印出当前系统所有的话题列表
我们的键盘控制节点和海龟仿真器节点之间是通过话题 /turtle1/cmd_vel 做通信的
我们同样也可以 通过指令给话题发布数据,让海龟运动
rostopic pub 话题名 消息结构 数据
rostopic pub 话题名 后按两次tab键就可以补全了
线速度,角速度 每个速度都有一个xyz的分量
单位是米/秒和弧度/秒
如果我们修改为这样,海龟将会按照1.0米/秒的速度向前运动
动了这一段又停下来了
是因为pub指令只会发布一次,海龟不会一直在动
想让海龟一直在动我们可以给它一个循环
rostopic pub -r 10
-r是频率,-r 10 就是10HZ的频率,1s中发布10次
可以看到海龟将一直运动知道撞墙
此时按ctrl+c 即可结束
还可以修改角速度
rosservice 服务相关命令
rosservice list 列出所有服务
服务的服务端都是仿真器,终端都是作为客户端去请求某个服务的
spawn 这个服务是用来产生一个新的海龟
rosservice call /spawn
按两下tab也是可以自己补全
x和y是坐标,以左下角为零点
theta是角度
两行name,第二行是给的反馈信息
再用rostopic list查看可以看到turtle2的topic
话题记录rosbag
记录当前系统中的所有话题数据,保存下来,下次用的时候再复现出来
这一般用在例如有一个无人机,想做调试,但是不可能每一次都让飞机飞起来做调试,这非常不方便。
一般会做一次飞行,飞行时把所有数据都保存下来,回到实验室再把数据复现出来,再做实验
rosbag record -a -O cmd_record
-a就是-all,把所有数据都保存下来
-O 是把数据保存成一个压缩包
cmd_record就是压缩包的名称
数据就保存在当前用户目录下
下面来复现一下
把之前的所有内容都先关掉(关掉就是ctrl+c就可了)
重新启动一下
roscore和仿真器节点
不启动键盘控制节点
下面通过数据包来复现已经录好的指令
rosbag play cmd_record.bag