【ROS】 回灌调试代码时常用的命令 (不断更新)

update

20240320

  • ros2 相关链接

1. 修改完代码后

  • catkin_make -DCATKIN_WHITELIST_PACKAGE= bagname # 只编译修改的文件

2. 启节点

  • rosrun packagename nodename

3. 放包

  • rosbag play – start=500 bagname #从500s 开始

4. 其他常用消息指令

  • rosbag info bagname 查看一整个bag包的信息
  • rospack list
  • rosnode list
  • rosmsg list | grep name # 看特定msg是否存在
  • rosmsg info #查看特定msg的内容
  • rostopic echo topicname | tee test.txt 重定向到文档

5. rostopic:

rostopic bw: 这个命令用于测量ROS主题(topic)的带宽(bandwidth)使用情况。它会显示主题在某段时间内的数据传输速率和使用的带宽。用法示例:rostopic bw /topic_name

rostopic find: 这个命令用于查找与给定名称匹配的ROS主题。如果你知道主题的名称的一部分,你可以使用该命令来获取完整的主题名称。用法示例:rostopic find keyword

rostopic info: 这个命令用于获取ROS主题的详细信息,包括主题的数据类型、发布者(publisher)、订阅者(subscriber)等。它会显示有关主题的所有可用信息。用法示例:rostopic info /topic_name

rostopic pub: 这个命令用于向ROS主题发布数据。你可以使用该命令来手动发布特定类型的消息(message)到指定的主题中。用法示例:rostopic pub /topic_name message_type "message_data"

rostopic echo: 这个命令用于实时显示ROS主题发布的消息。它会将主题发布的消息打印到终端,以便你可以查看消息内容。用法示例:rostopic echo /topic_name

rostopic hz: 这个命令用于测量ROS主题的发布频率。它会显示给定主题的每秒发布次数(以赫兹为单位)。用法示例:rostopic hz /topic_name

rostopic list: 这个命令用于列出当前可用的ROS主题。它会显示所有正在运行的ROS主题的名称。用法示例:rostopic list

rostopic type: 这个命令用于获取指定主题的消息类型。它会显示给定主题所使用的消息类型。用法示例:rostopic type /topic_name

6. rosmsg

rosmsg list: 这个命令用于列出当前ROS系统中可用的消息类型(message types)。它会显示所有已经定义的ROS消息类型的名称。用法示例:rosmsg list

rosmsg package: 这个命令用于查找特定ROS消息类型所属的ROS包。你可以提供消息类型的名称,然后该命令会告诉你这个消息类型是属于哪个ROS包的。用法示例:rosmsg package message_type

rosmsg show: 这个命令用于显示特定ROS消息类型的详细信息,包括该消息类型的字段(fields)和数据类型。它会输出消息类型的定义。用法示例:rosmsg show message_type

rosmsg md5: 这个命令用于获取特定ROS消息类型的MD5校验和(checksum)。MD5校验和是一种唯一标识ROS消息类型的方式,可用于在ROS系统中确保消息类型的一致性。用法示例:rosmsg md5 message_type

rosmsg packages: 这个命令用于列出当前ROS系统中可用的ROS包,这些包包含有ROS消息类型的定义。它会显示所有包含ROS消息定义的ROS包的名称。用法示例:rosmsg packages

7. rosnode

rosnode cleanup: 这个命令用于清理已经终止的ROS节点。它会清除ROS节点在ROS主节点(master)中的残留信息,以便这些已经终止的节点不再显示在节点列表中。用法示例:rosnode cleanup

rosnode kill: 这个命令用于终止指定的ROS节点。你可以提供节点的名称,然后该命令会向节点发送终止信号,导致节点停止运行。用法示例:rosnode kill node_name

rosnode machine: 这个命令用于获取与ROS节点所在的机器相关的信息。它会显示指定节点所在的机器名称和ROS主节点的URI(统一资源标识符)。用法示例:rosnode machine node_name

rosnode info: 这个命令用于获取特定ROS节点的详细信息,包括节点的名称、命名空间(namespace)、主题(topics)、服务(services)等。它会输出节点的详细信息以帮助你了解节点的运行情况。用法示例:rosnode info node_name

rosnode list: 这个命令用于列出当前运行的ROS节点。它会显示所有正在运行的ROS节点的名称。用法示例:rosnode list

rosnode ping: 这个命令用于检查指定的ROS节点是否正在运行。你可以使用该命令来测试节点的可用性,并确定节点是否在运行状态。用法示例:rosnode ping node_name

8. 重定向topic中信息

8.1 只想打印一个topic的特定值该怎么做:

比如 rostopic echo /udp2ros/ESAInfo |tee data.txt ,怎么只看ESAInfo中的a变量的信息

  • 方法1:
 rostopic echo /udp2ros/NOHCtrlInfo/nohCtrlOutput/targetStrAngle  |tee data2.txt 可以打印NOHCtrlInfo/nohCtrlOutput/targetStrAngle信息同时输出在文本中
  • 更多方法: 以下是GPT的回答:
 要只查看 /udp2ros/ESAInfo 主题中的 a 变量信息,你可以使用一些其他工具来进行过滤和提取。rostopic echo 命令本身不支持过滤输出选项,但可以与其他命令结合使用。 一种常见的方法是使用 grep 命令来过滤输出。下面是一个示例命令: rostopic echo /udp2ros/ESAInfo | grep "a:"

这将将 /udp2ros/ESAInfo 主题的所有消息输出流传递给 grep 命令进行过滤。grep 命令使用正则表达式来匹配包含 "a:" 的行,从而只打印出包含特定变量的行。 如果你想将过滤后的结果保存到文件中,可以使用重定向操作符 >,例如: rostopic echo /udp2ros/ESAInfo | grep "a:" > data.txt


这样,过滤后的结果将被写入到名为 data.txt 的文件中,并且在终端不会显示出来。如果希望同时在终端和文件中查看结果,可以使用 tee 命令,例如: rostopic echo /udp2ros/ESAInfo | grep "a:" | tee data.txt

这会同时将过滤后的结果输出到终端并写入到 data.txt 文件中。 请注意,以上命令是针对 Linux / Unix 系统的,如果你在使用不同的操作系统,可能需要使用相应的替代命令来实现相同的效果。

- 同时:

    tee 用于将命令输出同时显示在终端和写入文件,不影响文件的内容。
    “>” 用于将命令输出写入文件,覆盖文件内容。
    ”>>“ 用于将命令输出追加到文件的末尾,而不覆盖文件内容。

8.2 怎么打印ros topic到csv中

  • 单topic:
rostopic echo -b xxx.bag -p /xxx/yyy > test.csv
  • 多topic:
(rostopic echo -b xxx.bag -p /xxx/yyy & rostopic echo -b xxx222bag -p /xxx222/yyy222) | paste -d',' - - > test.csv

Ros2

ROS2的使用

ROS2和1快速对比

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值