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:Um guia de campo para interoperabilidade


Embora o ROS 2 seja projetado para usar DDS como sua estrutura de conectividade (consulte minha postagem anterior no blog - ROS 2 + DDS:When Ecosystems Merge para obter mais informações), o processo de integração tem algumas peculiaridades que devem ser acomodadas para um sistema DDS puro para interoperar perfeitamente com um sistema ROS 2. Este blog serve como um guia prático de campo para interoperabilidade e cobre alguns dos problemas conhecidos a partir do lançamento do "Bouncy Bolson" (julho de 2018) do ROS 2 e como mitigá-los.

Atualizações com ROS 2


ROS 2 é um projeto em evolução. Pode haver mudanças em versões futuras do ROS 2 que afetem ainda mais a interoperabilidade. Dito isso, lembre-se sempre de que ao usar o rmw_connext_cpp camada sob ROS 2 - ainda é Connext DDS. O poder e a flexibilidade inerentes às bibliotecas Connext ainda estão disponíveis, usando os mesmos métodos de uma implementação não-ROS. Você tem controle sobre seu sistema.

Aqui está um resumo das configurações que podem afetar a interoperabilidade entre os sistemas DDS e ROS 2 puros (ROS 2 "Bouncy Bolson", a menos que especificado de outra forma):

Nomes de tópicos e partições


O ROS 2 identifica o namespace dos dados do tópico codificando-o no nome ou partição DDS do tópico. Os tópicos de dados do usuário estarão no namespace “rt” (ROS Topic), codificado em DDS como:


Tipos de dados do tópico


Ao usar a camada Connext RMW em ROS2, você deve ter notado que todos os tópicos ROS2 “rt / *” são relatados durante a descoberta como tendo o mesmo tipo de dados:



Esse tipo de definição é inserido pela camada rmw_connext_cpp do ROS2 para representar uma serialização dos dados do tópico, mesmo que os dados do tópico permaneçam inalterados. Quando uma conexão é tentada com um tópico DDS usando o tipo de dados original - uma incompatibilidade de QoS ocorrerá, impedindo uma conexão.

A solução mais fácil é suprimir esse anúncio de código de tipo dos participantes do ROS2. Isso pode ser feito adicionando um arquivo USER_QOS_PROFILES.xml ao diretório usado para iniciar os participantes ROS2. Este arquivo contém configurações de QoS para suprimir o código de tipo e o compartilhamento de objeto de tipo, como:



Observe que este arquivo também define a confiabilidade como “Melhor Esforço” - este é apenas um exemplo de ponto de partida.

Observe também que este arquivo QoS afeta apenas os participantes ROS2 que foram iniciados para o mesmo diretório que o arquivo QoS. Se necessário, cada participante do ROS2 pode ter seu próprio arquivo QoS personalizado em um diretório separado.

Seleção de transporte


Conectar um sistema DDS a um sistema ROS2 pode resultar em avisos sobre localizadores / transportes não endereçáveis ​​não instalados. Este é o resultado dos participantes terem diferentes listas de transportes disponíveis, como o participante A (udpv4) descobrindo o participante B (udpv4, udpv6); Um aviso seria emitido de que o participante A não será capaz de se conectar usando udpv6.

A seleção de transporte com Connext RMW sob ROS2 usa os mesmos métodos que em um sistema somente Connext:
  1. Defina os transportes permitidos no arquivo USER_QOS_PROFILES.xml adicionando à seção , como em:

    UDPV4 | SHMEM

  2. Defina os pares iniciais (e habilite / desabilite o multicast) adicionando um arquivo “NDDS_DISCOVERY_PEERS” ao diretório usado para iniciar o aplicativo. O arquivo de texto simples deve conter uma lista separada por vírgulas dos pares desejados para descoberta, como: localhost, 192.168.1.12, shmem:// (este exemplo desativa a descoberta de multicast)

Seleção RMW em ROS2


Certifique-se de definir a variável de ambiente para selecionar Connext como a camada RMW em ROS2:

RMW_IMPLEMENTATION =rmw_connext_cpp

Isso também pode ser passado na linha de comando ao iniciar aplicativos ROS2, como em:

RMW_IMPLEMENTATION =rmw_connext_cpp ros2 execute demo_nodes_cpp talker

Suporte ilimitado


Alguns tópicos do ROS2 usam sequências e strings ilimitadas. Os aplicativos DDS que buscam interoperar usando esses tópicos precisarão habilitar o ‘Suporte ilimitado’ no gerador de código DDS.




Antecipando com RTI


Fique ligado no próximo artigo desta série, que cobre uma lacuna crucial (embora temporária) na programação do ROS2:registro e reprodução de dados do tópico.

Se você está pronto para começar com a equipe da RTI e melhorar seus sistemas de comunicação, entre em contato conosco hoje. Nossos especialistas estão prontos para ajudá-lo.

Tecnologia da Internet das Coisas

  1. Guia para marcação a laser
  2. Software DDS aberto vs. RTI DDS
  3. ROS2 + DDS:Reproduza novamente
  4. Integração ROS2 + DDS:Quando os ecossistemas se fundem | RTI
  5. Robô ROS
  6. Guia para Fabricação Rápida
  7. Na estrada com IoT
  8. Guia do comprador da plataforma IoT industrial
  9. Guia para endurecedores de PCB
  10. Seu guia para manutenção e reparo de máquinas pesadas em campo