Не получает роботы / события сканирования [ROS] - PullRequest
0 голосов
/ 20 марта 2019

Я пытаюсь получить уведомление о событиях робота / сканирования.Это работает для меня:

// 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 вообще не существует.

Как я могу решить это?Заранее спасибо.

1 Ответ

0 голосов
/ 21 марта 2019

Исходя из того, что вы сказали, что никто не публикуется в теме, неудивительно, что вы не получаете никаких сообщений. Если вы хотите получать сообщения, вам сначала нужно опубликовать сообщение.

Проблема, с которой вы столкнулись, заключается в том, что /scan - это тема в глобальном пространстве имен (префикс /). Чтобы опубликовать его в желаемом пространстве имен, вы можете изменить его в издателе:

  • опубликовать в нужном пространстве имен ros::Publisher publisher = n.advertise<topic>("my_robot_name/scan", 1);

  • использовать группу в файле запуска

Если вы не имеете никакого влияния на издателя, вы можете использовать remap и переназначить его на нужную тему:

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

таким образом my_robot_name/scan тема будет доступна для вашего обратного вызова в узле.

...