写在最前:此系列为 古月居 课程笔记,非原创,具体视频内容请移步至某字母视频网站。
常用命令
rostopic rosservice rosnode rosparam rosmsg rossrv
在海龟中首先运行,启动ROS
roscore
开启一个新的终端,然后打开海龟模拟器
rosrun turtlesim turtlesim_node
其中turtlesim是安装的功能包的名字,再运行里面的节点
开启一个新的终端,然后运行下一个节点
rosrun turtlesim turtle_teleop_key
将最后一个终端置于顶端,就可以使用键盘的上下左右控制乌龟
1.rqt_graph
打开一个新的终端,运行第一个工具,rqt_graph是一个显示计算图的工具,通过计算图可以知道整个系统的全貌
rqt_graph
其中/turtlesim是仿真器节点,/teleop——turtle是键盘控制节点
两个节点之间的通讯,/turtle1/cmd_vel是话题,话题里面的具体内容是速度指令内容
2.rosnode
rosnode是用来显示系统所有节点相关信息的指令
rosnode list是列出所有节点的指令
rosnode list
rosnode info可以查看具体节点信息
rosnode info
rosnode info /turtlesim
可以看到节点正在发布哪些话题、订阅了哪些话题、提供的服务、主机号、pid号等等
3.rostopic
rostopic是与话题相关的命令行工具,rostopic list可以打印出当先系统的全部话题列表
rostopic list
既然rostopic是对于话题的命令工具,那么我们也可以使用该工具使海龟运动
使用rostopic pub
z015@z015-System-Product-Name:~$ rostopic pub /turtle1/cmd_vel geometry_msgs/Twist "linear:
x: 0.0
y: 0.0
z: 0.0
angular:
x: 0.0
y: 0.0
z: 0.0"
/turtle1/cmd_vel是话题名,话题名输入完成之后双击tab就可补全后面的内容
其中Twist是数据结构,具体为双引号里面的内容,可以看到数据被分为两部分,一个是线速度,一个是角速度,在终端里可以对这两个数据进行更改,这里把x轴上线速度的分量改为1
回车之后发现海龟只动了一小段后停下了,这是因为pub指令只会发布一次
为了让海龟一直运动,需要给pub加上一个循环
在pub后面加上-r,再加上循环次数
z015@z015-System-Product-Name:~$ rostopic pub -r 10 /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"
海龟开始持续运动,撞墙之后终端会发出提示
在pub的终端中ctrl+C中止pub指令
4.rosmsg
rosmsg是与消息相关的命令工具
rosmsg show可以查看消息的数据结构,rosmsg show geometry_msgs/Twist可以查看Twist的数据结构
rosmsg show geometry_msgs/Twist
5.rosservice
rosservice是与服务相关的命令工具
rosservice list可以查看仿真器提供的所有的服务内容
rosservice list
其中/spawn是用来产生一个新的海龟,可以使用该指令生成新乌龟
输入rosservice call /spawn,双击tab进行补全
z015@z015-System-Product-Name:~$ rosservice call /spawn "x: 0.0
y: 0.0
theta: 0.0
name: ''"
x,y代表产生新海龟的坐标,theta是角度,这两种数据都可以进行修改
name后面的单引号中要输入内容为新海龟命名
因为是service,所以发出请求之后会返回一个respon
第一个name: 'turtle2'" 是我们输入的内容
第二个name: "turtle2"是返回的respon
这个时候输入
rostopic list
发现多了turtle2的相关内容
6.rosbag
rosbag是在ros中一个非常重要的话题记录工具,这个工具可以记录当前的全部话题数据并进行保存,在后续还可以将这些数据复现出来
运行指令
rosbag record -a -O cmd_record
其中-a是all的缩写,指的是保存全部数据,-O指的是将数据保存为一个压缩包并命名,回车之后开始记录
停止记录数据可以直接ctrl+C,数据就会保存在终端默认的保存路径下
随后只保留roscore终端,再重新启动仿真器节点
rosrun turtlesim turtlesim_node
然后输入指令
rosbag play cmd_record.bag
就可以复现之前记录的所有数据进行运动