Публикация данных датчиков картографу

Я работаю с картографом Google, и у меня есть камера 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;

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

2
0
150
1

Ответы 1

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

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

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

ros::Subscriber sub = nh.subscribe("/ifm3d/camera/cloud", 1000, callback);

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

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

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

pub_pointCloud.publish(cloud);

Другие вопросы по теме