ROS常用的调试工具有rosnode,rostopic
1 . rosnode
参数 | 用法 | 作用 |
list | rosnode list | 查看当前运行了哪些节点 |
info | rosnode info node_name | 查看该节点发布/接受哪些话题以及服务 |
kill | rosnode kill node_name/-a | 关闭某个节点或着关闭当前所有节点(使用参数-a) |
举例:
(1). rosnode list
可以看到,当前运行了两个节点一个是joy_node手柄遥控,另外一个是rosmaster节点
(2). rosnode info
可以看到,/joy_ node 这个节点发布的相关内容,举一例来说吧,就比如说发送了/joy这个话题内容,数据类型是sensor_msgs/Joy,然后后面也标识出是把/joy话题的内容发到/transbot_joy这个节点。
(3). rosnode kill
可以看到,通过rosnode kill /joy_node 就把/joy_node这个节点给关闭了
输入rosnode kill -a把当前所有的节点都关闭了,可以输入rosnode lis验证下是否关闭成功
这里还存在有/rosout是因为我们没有手动,在开启roscore的那个窗口按下ctrl+c关闭,所以还是会一直运行的。
总结用法:
当运行roslaunch时候,发现有些数据没有发布,就可以用rosnode list来确认下发布该数据的节点是否有运行;需要查看某个节点具体的运行内容的时候,就可以通过rosnode info node_name来查看。
2 . rostopic
参数 | 用法 | 作用 |
list | rostopic list | 罗列出当前所有的话题 |
echo | rostopic echo topic_name | 打印指定话题topic_name的发布/接收的内容 |
info | rostopic info topic_name | 查看指定话题topic_name的的具体信息 |
type | rostopic type topic_name | 查看话题发布的消息的类型msg_type |
pub | rostopic pub topic_name msg_type msg | 发布指定话题topic_name的指定内容msg_type msg |
举例:
(1). rostopic list
可以看到,在开启roscroe以后,输入rostopic list,列出了两个话题,/rosout和/rosout_agg
(2). rostopic echo
在输入rostopic echo /rosout 后没有数据显示,这是因为该话题还没有接收到任何内容
(3). rostopic info
在输入rostopic info /rosout以后,会得到打印出内容,这里显示内容说明/rosout的数据类型是rosgrah/Log,订阅的话题/是rosout,没有发布内容。
(4). rostopic type
在输入rostopic type /rosout后,会显示出一段内容,该内容说明了/rosout这个话题订阅的消息类型是rosgraph_msgs/Log。
(5). rostopic pub
在输入 rostopic pub /rosout rosgraph_msgs/Log后,连续按下tab键两下,会自动补全出需要发布的数据内容,然后,我们只需要把需要发布的内容填写上去即可。
总结用法:
rostopic常常用来调试话题间的内容是否有发送/接收,需要测试发送数据时,就使用pub这个参数,测试接收数据时,就使用echo来查看是否有接收到相对于的数据。
3 . rqt_tf_tree
查看当前ros系统中的所有的tf变换,这个在导航和机械臂中经常用到
举例
终端输入rosrun rqt_tf_tree rqt_tf_tree
如果当前系统内没有任何tf数据时,就会显示这个,我们看下有数据的是怎么样子的
以一个cartographer建图框架为例子,map->odom的tf变换由cartographer_node提供,以此类推出其他的变换,需要注意的是,这些变换只能有一个起点(又或者可以理解成只有一个根节点),例子当中,map就是唯一的起点,如果存在其他的起点,程序可能会给出黄色的警告。
4 . rqt_graph
可视化当前ros系统中,所有节点之间的通讯。
举例
终端输入rosrun rqt_graph rqt_graph
这是没有任何节点通讯的样子,我们来看看建图功能部分节点通讯是怎么样子的
箭头指向表示是传输数据还是接收数据,圆圈里边的是节点的名称,可以看出,最后是把内容全部发送到/map这里,形成地图文件。这个工具实际上就是rosnode功能的可视化,可以清晰的看出每个节点之间的通讯。
结语:这部分就先聊到这里,后面会陆续更新该文章,学无止境!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)