Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Industrial Internet of Things >> Интернет вещей

ROS2 + DDS:сыграйте снова

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

Подумайте о дорожных испытаниях (полу) автономного транспортного средства с GPS, камерами, LiDAR, RADAR, акселерометрами, гироскопами, компасом, спидометром, контрольными сигналами, а также картографией и окружающей средой. данные. Это * много * данных ... и их очень дорого получить. Разве не было бы хорошо, если бы все эти данные могли быть записаны для воспроизведения по запросу, как если бы проводился настоящий тест? Что, если бы вы могли создать цифровую библиотеку каждого сеанса тестирования и иметь возможность изменять ее при воспроизведении, тем самым создавая еще более повторяемые сценарии тестирования?

Знаете ли вы, что запись и воспроизведение с высокой пропускной способностью и большой емкостью уже много лет доступны пользователям DDS с помощью службы записи RTI? Примером использования службы записи RTI может быть непрерывная (24/7) запись всех данных системы во время расширенного полевого развертывания, такого как испытания корабля ВМФ в море. Пропускная способность и емкость записи практически неограничены из-за распределенной природы DDS - можно запустить несколько экземпляров службы записи, чтобы не отставать от потока данных.

В экосистеме ROS есть собственная служба записи под названием Rosbag, но на момент написания этой статьи Rosbag только недавно был выпущен для ROS2. К счастью, ROS2 использует DDS в качестве базовой инфраструктуры подключения, поэтому использование проверенной на практике службы записи RTI для записи данных с высокой пропускной способностью из ROS2 для воспроизведения в любое время должно быть простым.

Давайте сделаем это ...

Конфигурация записывающего устройства

Служба записи RTI может быть настроена с помощью файла XML для записи всех или выбранных тем с любыми необходимыми настройками QoS. В этом примере я настрою запись темы с умеренной пропускной способностью (данные ROS2 LiDAR), а затем воспроизведу ее обратно в ROS2 - и все это с помощью чистого набора инструментов DDS.

Служба записи RTI обычно десериализует данные для записи в столбцы обычной базы данных. Данные ROS2 LiDAR содержат большое количество точек на выборку, поэтому в этом случае я проинструктирую регистратор не десериализовать данные и записать их как отдельный столбец в базе данных. Остальная часть XML-файла сообщает записывающему устройству, какую тему и тип данных записывать и где хранить данные.

Он содержится в созданном мною XML-файле с именем ros2_record.xml:

  xsi:noNamespaceSchemaLocation ="http://community.rti.com/schema/5.3.1/rti_record.xsd"> 

<рекордер name ="simple_example">
DataReader и один DataWriter в домене, указанном тегом . ->
<удаленный_доступ>
true
0



<база_данных_записи>
ros2_replay_example.dat
истина




0
5к элементов в теме) ->
RTIDDS_DESERIALIZEMODE_NEVER




rt / velodyne_points
*





domain0


ros-rt




<группа_доменов>
<элемент>

domain0



<группа_файлов>
<элемент>
<имя_файла>
PointCloud2.xml

<тип>
<элемент>
ложь
sensor_msgs ::msg ::dds _ ::PointCloud2_
<имя_ зарегистрированного_типа>
<элемент> sensor_msgs ::msg ::dds _ ::PointCloud2_

<темы>
rt / velodyne_points



2147483647


<путь>
.







Чтобы запустить службу записи RTI с использованием указанного выше XML-файла, я использую следующую команду (выполняемую из того же каталога, что и указанный выше XML-файл):

rtirecord -cfgFile ros2_record.xml -cfgName simple_example

Это запускает службу записи, которая подписывается на данные LiDAR и непрерывно записывает их, пока я не закрою программу. Конечным результатом является файл базы данных SQLite с именем «ros2_replay_example.dat_0_0»

К имени файла добавляются числа, чтобы различать сеансы записи (первое число) и какой файл базы данных находится в последовательности (файлы автоматически ограничиваются выбранным пользователем размер; как только они становятся слишком большими, они закрываются и открывается другой файл для хранения следующего периода данных. Это предотвращает слишком большие файлы базы данных).

Конфигурация проигрывателя

Теперь, когда я записал данные LiDAR ROS2, давайте посмотрим, можно ли их воспроизвести в ROS2.

Как упоминалось в предыдущих статьях блога (Полевое руководство по взаимодействию и при слиянии экосистем), ROS2 требует нескольких настроек для обеспечения совместимости. В этом примере отправка информации о коде типа во время обнаружения была подавлена ​​для обеспечения совместимости с конфигурацией по умолчанию версии ROS2 «Bouncy Bolson», но эту настройку также можно выполнить в ROS2 при запуске rmw_connext_cpp как слой RMW.

Эти настройки - вместе с информацией о теме, домене и файле - помещаются в другой XML-файл:

  
xsi:noNamespaceSchemaLocation ="http://community.rti.com/schema/5.3.1/rti_replay.xsd">






аннотация>
Пример службы воспроизведения

<контроль_времени>
1
АВТО
5




ros2_replay_example.dat_0_0
false


<участник>
0


0
0







<группа_файлов>
<элемент>
<имя_файла>
PointCloud2.xml

<тип>
<элемент>
ложь
sensor_msgs ::msg ::dds _ ::PointCloud2_
<имя_ зарегистрированного_типа>
<элемент> sensor_msgs ::msg ::dds _ ::PointCloud2_

rt / velodyne_points


2147483647


.




* ->

<ввод>
*

[1] [2] 下一页

Интернет вещей

  1. Open DDS против программного обеспечения RTI DDS
  2. MQTT и DDS:межмашинное взаимодействие в IoT
  3. Connext DDS и промышленный Интернет вещей:5 главных вещей, которые нужно знать
  4. Четвертая промышленная революция
  5. Сохранение совместимости данных в IoT
  6. Что мне делать с данными ?!
  7. Демократизация Интернета вещей
  8. 5 Тенденции в области связи
  9. 10 лучших платформ IIoT
  10. Будущее центров обработки данных