ROS运行和调试利器
  • rosed: 可以直接编辑某个package当中的文件,格式是rosed package file,还可以用tab补全名称,如果文件名在package里不是唯一的,那么会呈现出一个列表,让你选择编辑哪一个文件。

  • roswtf: 检查ROS各节点联系是否有错;检查环节变量等系统设置

rostopic

  • rostopic echo -b BAGFILE -a, 显示bag文件的所有消息。但是所有消息一次显示,没什么意义。

  • rostopic echo -n1, 只echo一段消息

  • rostopic echo -p --nostr --noarr /topic_name, 不显示话题中的string和array部分

  • rostopic echo /odom/pose/pose/position, 直接显示odom话题中的position部分

  • rostopic bw topic_name: 用于显示主题所使用的带宽。

  • rostopic delay topic_name : 显示ROS节点通信延迟

以下命令可以组合使用:

  • rostopic list -p, 只显示发布的话题

  • rostopic list -s, 只显示订阅的话题

  • rostopic list -v, 显示话题细节,有几个发布者和订阅者

  • rostopic list --host, 根据host名分组

有一次使用rostopic pub一个std_msgs/Int8的消息,结果报错 Inbound TCP/IP connection failed: field data must be an integer type 。 确实echo没有结果,另开一个终端,source 工作空间后成功。

rosmsg rosnode

  • rosmsg package [package_name], 显示所有在这个包里面的消息

  • rosmsg md5 [message], 显示某个消息的md5sum

  • rosnode cleanup, 清除僵尸节点, 也就是清除那些实际关闭但能用rosnode list查看到的节点

  • rosnode machine <hostname>: 用于列出指定计算机上运行的节点

  • rospack find turtlesim, 输出指定package的路径, 输出/opt/ros/kinetic/share/turtlesim

  • rospack depends turtlesim, 查看package的依赖项

roslaunch

  • --wait, 延迟launch直到检测到roscore

roslaunch启动的时候,会尝试获得已有的rosmaster的id,如果没有获得,将会创建一个自己的。假如同时也有一个roslaunch和roscore启动,可能会导致run_id冲突。比如roslaunch启动太快.png

可以使用roslaunch --wait rplidar_ros a2.launch,它会输出这样的信息:

1
2
roscore/master is not yet running, will wait for it to start
master has started, initiating launch

  • --screen, 输出所有节点的日志,用于debugging.

  • --dump-params, 以YAML格式输出launch文件中的所有参数

参考:roslaunch Commandline Tools