阿克曼-幻宇机器人系列教程2- 机器人交互实践(Topic)

发布于:2025-05-14 ⋅ 阅读:(11) ⋅ 点赞:(0)

在上一篇文章中,我们介绍了两种登录机器人的方式,接下来我们介绍登录机器人之后,我们如何通过topic操作命令实现与机器人的交互。

1. 启动 & 获取topic

  • 在一个终端登录树莓派后,执行下列命令运行机器人
roslaunch huanyu_robot_start Huanyu_robot_start.launch
  • 因为终端具有独占性,所以在另一个终端登录树莓派,获取topic
ssh huike@192.168.12.1     #登录树莓派
rostopic list              #获取topic

我的机器人返回 topic(topic依赖原厂代码,如果原厂代码一样,那topic列表也是一样的。)

/cmd_vel
/joint_states
/mobile_base/sensors/imu_data
/mobile_base/sensors/imu_data_raw
/nodelet_manager/bond
/odom
/odom_combined
/robot/PowerValtage
/robot_cmd_vel
/robot_pose_ekf/odom_combined
/rosout
/rosout_agg
/scan
/smoother_cmd_vel
/tf
/tf_static
/velocity_smoother/parameter_descriptions
/velocity_smoother/parameter_updates

 2. topic操作命令详解

2.1 执行下列命令获取topic操作命令

rostopic --help

2.2 topic 操作命令及其详细作用

执行上述命令后,会返回总计8个操作命令,各个命令名称和作用如下:

  • rostopic bw    

display bandwidth used by topic  表示获取带宽,具有测试性

主要用于分析数据量、频率和网络传输负载,帮助评估系统的通信效率,尤其是在传输激光雷达、图像或点云等大量数据时非常实用。

  • rostopic delay

display delay of topic from timestamp in header  表示获取延时

是 ROS(Robot Operating System)中的一个调试工具,用于检测指定话题的消息发布延迟情况,帮助分析系统中是否存在通信延迟、发布卡顿等问题。

  • rostopic echo

print messages to screen              获取messages

用于在终端中打印话题的消息内容,便于开发者查看、调试和验证话题的数据是否正常发布和格式是否正确。

  • rostopic find 

find topics by type                           获取同一类型的topics

用于查找当前系统中正在发布的、指定类型的所有话题。

  • rostopic hz

display publishing rate of topic        获取发布频率

用于显示指定话题的发布频率的命令,可以帮助你监控话题的实时数据流速度。它对于检查某个话题(比如传感器数据)是否按预期的频率发布非常有用。

  • rostopic info

print information about active topic    

用于查看特定话题的详细信息,例如消息类型、发布者、订阅者以及服务等。这对于了解话题的来源、数据类型和系统连接状态非常有用。

  • rostopic list

list active topics

用于列出当前系统中所有正在发布的 ROS 话题。它是调试和检查系统中数据流的一个重要工具,特别是在你想了解系统中有哪些话题在运行时。

  • rostopic pub

 publish data to topic       向 ROS topic 主动发布(publish)数据

用于发布消息到指定话题的命令。它允许你通过命令行发布消息到一个话题,用于调试、测试或者模拟传感器数据、控制指令等。这对于调试机器人系统和验证消息交换非常有用,尤其是在没有实际硬件时。

  • rostopic type

print topic or field type      打印指定 topic 的消息类型

3. 举例说明如何使用topic操作命令

3.1 命令行格式

需要将topic操作命令同topic结合使用,命令行格式可以总结为:操作命令 + topic

3.2 举例说明

以 topic:/scan(雷达)为例,介绍下几个常用命令的作用

执行以下命令以及对应的作用说明如下

rostopic delay /scan

此命令会显示 /scan 话题消息从发布到接收的延迟。你可以用它来评估激光雷达数据在网络中传播的时间,特别是在高负载或网络延迟较大的情况下。

rostopic bw /scan

此命令会显示 /scan 话题的带宽(单位:字节/秒)。它帮助你了解激光雷达数据流所消耗的带宽,特别是在需要优化网络带宽时。对于高频率发布的 /scan 话题,带宽可能会比较大。

rostopic echo /scan

此命令会实时显示 /scan 话题的消息内容,也就是激光雷达的数据。你可以查看 LaserScan 消息中的字段,如 ranges(激光测量的距离数组),angle_min(最小角度),angle_max(最大角度)等,帮助你分析传感器数据。


网站公告

今日签到

点亮在社区的每一天
去签到