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