ROS: команда / управление (служба) и вывод данных (сообщения) с одного и того же последовательного порта? - PullRequest
0 голосов
/ 05 октября 2019

У меня есть датчик, который связывается через последовательный порт. Этот датчик обменивается данными через один последовательный порт как для команды и управления , так и для вывода данных . Когда этот датчик выводит данные, он непрерывно выводит их. Если вам необходимо связаться с датчиком, вы отправляете ему специальную последовательность, которая останавливает его потоковую передачу и возвращает его в командный режим, после чего он работает в стандартном режиме командного ответа.

Я оченьновичок в ROS;Я пробежался по учебникам и хорошо понимаю, как все это работает. Но теперь у меня возникли проблемы с поиском наиболее правильного способа интеграции этого датчика на основе последовательного порта в систему ROS:

  • Часть командования и управления выглядит такдолжна быть служба ROS. Фактически я написал службу ROS, выполняющую примитивную команду / контроль над этим последовательным портом, и она работает, как и ожидалось.
  • Часть data output кажется, что она должна быть выведена черезиздатель (т. е. поток сообщений по теме ROS).

Есть ли какой-либо разумный способ выполнить как команду , так и управление , а также вывод потоковых данных в пределах одного узла ROS? Все примеры последовательных портов, которые я нашел до сих пор, решают одну или другую проблему, но не обе вместе. Кажется, мне нужно было бы объединить сервис и издателя в одном узле, но я даже не уверен, возможно ли это. Поскольку эти типы вещей обрабатываются с помощью асинхронных обратных вызовов, как я могу убедиться, что нет конкуренции за доступ к последовательному порту?

...