Если вас беспокоит скорость, есть несколько вещей.
Драйверы Velodyne имеют возможность получать пакеты и объединяться в облако точек с доступом без копирования, используя нодлеты. Узлы ROS похожи на узлы, но с меньшим количеством копий, более эффективными для больших данных. Ex velodyne_driver и Ex velodyne_pointcloud . Вы можете вызвать это все через файл запуска VLP16_points.launch
, который демонстрирует, как комбинировать подобные нодлеты. Код довольно удобочитаем, поэтому вы можете пройтись по их настройке для справки. Если вы еще не пробовали этот метод, а затем подключились к Unity, это ваш минимальный базовый уровень. Тогда узкое место находится на стороне единства. Лучше всего, если вам не нужно ничего писать самостоятельно. Пакет pcl_ros
имеет несколько нодлетов преобразования; если бы их сочетание могло удовлетворить ваши потребности, это было бы наиболее эффективным и легким способом. В противном случае вы все равно можете использовать заголовок <pcl_ros/pointcloud.h>
в своем узле c ++, а pcl::PointCloud<T>
будет интерпретироваться ros как сообщение sensor_msgs/PointCloud2
как для подписчика, так и для издателя. Если вам нужны дополнительные преобразования, в пакете pcl_conversion
есть несколько удобных.
(Это немного тангентально. Если шея bottle за ним - это интерфейс websocket-y Ros # использует для связи с rosbridge_server, rosbridge_server поддерживает протокол UDP, который, если он находится на той же машине, должен быть довольно быстрым, но Ros # в настоящее время не поддерживает это и не имеет этого в своей дорожной карте, поскольку большинство их использования - дело не в том, что он запущен на той же машине.)