Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Industrial Internet of Things >> Tecnologia da Internet das Coisas

ROS2 + DDS:Reproduza novamente

Testes no mundo real são necessários - e frequentemente caro - parte da criação de sistemas distribuídos e autônomos. Os testes são projetados para colocar o sistema em vários cenários diferentes e a coleta de dados em tempo real pode criar valor duradouro a partir desses testes.

Pense em testar na estrada um veículo (semi-) autônomo que inclui GPS, câmeras, LiDAR, RADAR, acelerômetros, giroscópios, bússola, velocímetro, sinais de controle, além de mapeamento e ambiente dados. Isso é um * monte * de dados ... e muito caro de se obter. Não seria bom se todos esses dados pudessem ser registrados para reprodução sob demanda, como se um teste real estivesse em execução? E se você pudesse construir uma biblioteca digital de cada sessão de teste e ser capaz de modificá-la na reprodução - criando assim cenários de teste ainda mais repetíveis?

Você sabia que a gravação e reprodução de alta largura de banda / alta capacidade estão disponíveis para usuários de DDS por muitos anos com o RTI Recording Service? Um exemplo de caso de uso para o RTI Recording Service seria o registro contínuo (24/7) de todos os dados do sistema durante uma implantação de campo estendida, como um teste no mar de um navio da Marinha. A largura de banda e a capacidade de gravação são quase ilimitadas devido à natureza distribuída do DDS - várias instâncias do serviço de gravação podem ser iniciadas para acompanhar o fluxo de dados.

O ecossistema ROS tem seu próprio serviço de gravação chamado Rosbag, mas até o momento em que este livro foi escrito, Rosbag havia sido lançado recentemente para ROS2. Felizmente, o ROS2 usa o DDS como sua estrutura de conectividade subjacente, portanto, deve ser simples usar o serviço de gravação RTI comprovado em campo para registrar dados de alta largura de banda do ROS2 para reprodução a qualquer momento.

Vamos fazer isso acontecer ...

Configuração do gravador

O RTI Recording Service pode ser configurado por um arquivo XML para registrar todos os tópicos ou os selecionados, com quaisquer configurações de QoS necessárias. Neste exemplo, vou configurar para registrar um tópico de largura de banda moderada (dados ROS2 LiDAR) e, em seguida, reproduzi-lo de volta no ROS2 - tudo a partir de um conjunto de ferramentas DDS puro.

O RTI Recording Service normalmente desserializa os dados para gravação nas colunas de um banco de dados convencional. Os dados ROS2 LiDAR têm um grande número de pontos por amostra, portanto, neste caso, instruirei o gravador a não desserializar os dados e registrá-los como uma única coluna no banco de dados. O restante do arquivo XML informa ao gravador qual tópico e tipo de dados registrar e onde armazenar os dados.

Isso está contido em um arquivo XML que criei, chamado “ros2_record.xml”:

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


DataReader e um DataWriter no domínio especificado com a tag . ->

true
0




ros2_replay_example.dat
true




0
5k elementos no tópico) ->
RTIDDS_DESERIALIZEMODE_NEVER




rt / velodyne_points
*





domain0


ros-rt







domain0






PointCloud2.xml



false
sensor_msgs ::msg ::dds _ ::PointCloud2_

sensor_msgs ::msg ::dds _ ::PointCloud2_


rt / velodyne_points



2147483647



.







Para iniciar o RTI Recording Service usando o arquivo XML acima, uso o seguinte comando (executado no mesmo diretório do arquivo XML acima):

rtirecord -cfgFile ros2_record.xml -cfgName simple_example

Isso inicia o serviço de gravação que assinará os dados LiDAR e os gravará continuamente até que eu feche o programa. O resultado final é um arquivo de banco de dados SQLite denominado “ros2_replay_example.dat_0_0”

Os números são anexados ao nome do arquivo para diferenciar entre as sessões de gravação (o primeiro número) e qual arquivo de banco de dados está em uma sequência (os arquivos são automaticamente limitados a um selecionável pelo usuário tamanho; quando eles ficam muito grandes, eles são fechados e outro arquivo é aberto para conter o próximo período de dados. Isso evita que os arquivos do banco de dados fiquem muito grandes).

Configuração do Replayer

Agora que gravei os dados ROS2 LiDAR, vamos ver se eles podem ser reproduzidos no ROS2.

Conforme mencionado em artigos de blog anteriores (Um guia de campo para interoperabilidade e quando os ecossistemas se fundem), o ROS2 requer algumas configurações para garantir a compatibilidade. Neste exemplo, o envio das informações do código de tipo durante a descoberta foi suprimido para ser compatível com a configuração padrão da versão ROS2 “Bouncy Bolson”, mas esse ajuste também poderia ser feito no ROS2 se executando rmw_connext_cpp como a camada RMW.

Essas configurações - junto com o tópico, domínio e informações do arquivo - são colocadas em outro arquivo XML:

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






anotação>
Exemplo de serviço de reprodução


1
AUTO
5




ros2_replay_example.dat_0_0
false



0


0
0










PointCloud2.xml



false
sensor_msgs ::msg ::dds _ ::PointCloud2_

sensor_msgs ::msg ::dds _ ::PointCloud2_

rt / velodyne_points


2147483647


.



[1] [2] 下一页

Tecnologia da Internet das Coisas

  1. Software DDS aberto vs. RTI DDS
  2. MQTT e DDS:Comunicação de máquina para máquina em IoT
  3. Connext DDS e a IoT industrial:as 5 principais coisas a saber
  4. A Quarta Revolução Industrial
  5. Manter os dados em conformidade com a IoT
  6. O que eu faço com os dados ?!
  7. Democratizando a IoT
  8. 5 Tendências em conectividade
  9. As 10 principais plataformas IIoT
  10. O futuro dos data centers