ROS机器人程序设计(原书第2版)2.4.6 如何使用主题与节点交互

    xiaoxiao2024-04-17  6

    2.4.6 如何使用主题与节点交互

    要进行交互并获取主题的信息,可以使用rostopic工具。此工具接受以下参数:

    rostopic bw TOPIC 显示主题所使用的带宽。

    rostopic echo TOPIC 将消息输出到屏幕。

    rostopic find TOPIC 按照类型查找主题。

    rostopic hz TOPIC 显示主题的发布频率。

    rostopic info TOPIC 输出活动主题的信息。

    rostopic list TOPIC 列出活动主题。

    rostopic pubs TOPIC 将数据发布到主题。

    rostopic type TOPIC 输出主题的类型。

    如果想要查看有关这些参数的详细信息,请使用-h,如下所示:

     

    通过使用pub参数,可以发布任何节点都可以订阅的主题。我们只需要用正确的名称将主题发布出去。我们将会在以后做这个测试,现在要使用一个节点,并让节点做如下工作:

     

    通过节点订阅的主题,我们可以使用箭头键移动海龟,如右图所示:

    为什么turtle_teleop_key执行时,小海龟会移动呢?

    如果你想要看到/teleop_turtle和/turtlesim节点的信息,可以看到在下面的代码中,在第一个节点的发布者(Publications)部分有一个主题叫/turtle1/cmd_vel

    [geometry_msgs/Twist];在第二个节点的订阅者(Subscriptions)部分有/turtle1/cmd_vel [geometry_ msgs/Twist]:

     

     

    这意味着前面的节点发布了一个主题,而后面的节点可以订阅。你可以使用以下命令查看主题清单:

     

    输出如下:

     

    通过使用echo参数,可以查看节点发出的信息。运行以下命令行并使用箭头键查看消息产生时发送了哪些数据:

     

    你会看到类似下面的显示:

     

    你可以使用以下命令行查看由主题发送的消息类型:

     

    你会看到类似如下的显示:

     

    如果你想要看到消息字段,可以使用以下命令:

     

    你会看到类似如下的显示:

     

    这些工具非常有用,因为我们可以通过这些工具使用rostopic pub [topic] [msg_type] [args]命令直接发布主题:

     

    你会看到小海龟做曲线运动,如右图所示。

    相关资源:ros机器人程序设计
    最新回复(0)