0
点赞
收藏
分享

微信扫一扫

聊一聊关于ROS开发常用的调试工具(rostopic,rosnode等等)

ROS常用的调试工具有rosnode,rostopic

1 . rosnode

参数用法作用
listrosnode list查看当前运行了哪些节点
inforosnode info node_name查看该节点发布/接受哪些话题以及服务
killrosnode 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

参数用法作用
listrostopic list 罗列出当前所有的话题
echorostopic echo topic_name打印指定话题topic_name的发布/接收的内容
inforostopic info topic_name查看指定话题topic_name的的具体信息
typerostopic type topic_name查看话题发布的消息的类型msg_type
pubrostopic 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功能的可视化,可以清晰的看出每个节点之间的通讯。

结语:这部分就先聊到这里,后面会陆续更新该文章,学无止境!

 

举报

相关推荐

0 条评论