【问题标题】:Doesn't get robots /scan events [ROS]没有得到机器人/扫描事件 [ROS]
【发布时间】:2019-03-20 19:33:32
【问题描述】:

我正在尝试获取机器人/扫描事件通知。 它对我有用:

// Subscribe to the simulated robot's laser scan topic
laserSub = nh.subscribe("/scan", 1, &MyObject::scanCallback, this);

但是当我将主题更改为 my_robot_name/scan 时,它不起作用:我的回调没有收到任何机器人扫描通知。

// Subscribe to the simulated robot's laser scan topic
laserSub = nh.subscribe(my_robot_name + "/scan", 1, &MyObject::scanCallback, this);

我运行“rostopic info my_robot_name/scan”,看起来根本没有 my_robot_name/scan 的发布者。

我该如何解决这个问题? 提前致谢。

【问题讨论】:

    标签: c++ ros robotics robot


    【解决方案1】:

    基于您说没有人发布该主题,难怪您没有收到任何消息。如果你想得到你需要的消息,你首先要发布消息。

    您遇到的问题是 /scan全局命名空间 中的主题(前缀 /)。要将其发布到所需的命名空间,您可以在发布者中更改它:

    • 发布到所需的命名空间ros::Publisher publisher = n.advertise<topic>("my_robot_name/scan", 1);

    • 在启动文件中使用group

    如果您对发布者没有任何影响,您可以使用remap 并将其重新映射到所需的主题:

    <node ...start your node...>
        <remap from="/scan" to="my_robot_name/scan" />
    </node>
    

    这样my_robot_name/scan 主题将可用于您在节点中的回调。

    【讨论】:

    • 谢谢您,我尝试按照您的建议使用“重新映射”,但它仍然不起作用。我仍然没有“my_robot_name/scan”的发布者,但只有“/scan”。订户我在这两种情况下都有。这是我更新的启动文件和我的定义:pastebin.com/JQzGVAAs。你知道问题是什么吗?谢谢@maetulj
    • @Ofir 我想我在那里犯了一个错误。尝试交换 fromto 主题。我总是忘记哪个是哪个:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-08
    • 2020-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-09
    相关资源
    最近更新 更多