Опубликовать данные датчика для картографа - PullRequest
0 голосов
/ 10 сентября 2018

Я работаю с Google Cartographer и у меня есть камера RGB. У меня есть тема, в которой публикуются данные PointCloud2. Это / ifm3d / camera / cloud, и я сделал свой собственный узел для публикации этих данных картографу. У картографа есть тема, на которую указывает points2. Но моя проблема в том, что я не знаю, как написать код для публикации данных датчика для картографа. Это мой код:

...
ros::init(argc,argv,"point_cloud_publisher);
ros::NodeHandle nh;

ros::Publisher pub_pointCloud = nh.advertise<sensor_msgs::PointCloud>("/points2",1000); 
sensor_msgs::PointCloud2 cloud;

Итак, у меня есть камера, и она публикует свои данные в теме, и я не знаю, как опубликовать ее картографу.

1 Ответ

0 голосов
/ 21 сентября 2018

То, что вам не хватает, это подписчик. Чтобы опубликовать данные с камеры на картографе, ваш узел должен сначала подписаться на данные.

Сначала посмотрите Учебное пособие для издателей и подписчиков ROSCPP и попробуйте реализовать простой пример. Ваш код должен содержать:

1) подписчик , который подписывается на тему /ifm3d/camera/cloud

ros :: Subscriber sub = nh.subscribe ("/ ifm3d / camera / cloud", 1000, обратный вызов);

2) функция обратного вызова , которая делает что-то с данными, полученными абонентом

3) издатель , который публикует данные, полученные от подписчика (вы уже настроили это)

Похоже, вы намеревались использовать sensor_msgs::PointCloud2 cloud; в качестве облака, которое хотите опубликовать. Просто присвойте значения, полученные от подписчика, этой переменной внутри функции обратного вызова, а затем вызовите своего издателя с помощью:

pub_pointCloud.publish (облако); * +1028 *

...