Apresentando RTI Labs e Conector para Connext DDS com Python
Muita coisa aconteceu desde que isso foi post publicado originalmente. Você sabia que agora pode acessar o DDS usando Python ou Javascript? Você pode agradecer aos testadores beta de nosso programa RTI Labs por impulsionar sua demanda como RTI Connector for Connext
®
O DDS agora está disponível como parte do pacote de produtos Connext.
Esta semana, temos o prazer de anunciar o RTI Labs, um programa gratuito que fornece aos nossos clientes acesso antecipado às novas tecnologias que estamos desenvolvendo para a IoT Industrial. Estamos chamando-os de projetos experimentais. Os clientes que aproveitam as vantagens do RTI Labs têm a oportunidade de alavancar a tecnologia de última geração e influenciar nosso roteiro de produtos, fornecendo feedback sobre os recursos experimentais. É uma situação em que todos ganham!
Estamos lançando o programa com três novos projetos experimentais, o primeiro sendo RTI (R) Connector para Connext DDS. Se você já baixou o RTI Connext 5.3.0 e iniciou o RTI Launcher, verá alguns novos ícones na guia ‘Lab’. Um desses ícones é para o Conector.
Clicar no ícone do Conector o levará para a página do Conector RTI no Portal da Comunidade. O conector foi desenvolvido pela equipe de pesquisa da RTI para ajudar na criação de demonstrações e testes rápidos. O Connector começou com a interface Lua para RTI Prototyper, e então nos empolgamos e adicionamos suporte para linguagens de script, como Python e JavaScript / node.js.
Mas o que é RTI Connector?
O RTI Connector para Connext DDS é uma maneira rápida e fácil de acessar o poder e a funcionalidade do RTI Connext DDS a partir de uma variedade de linguagens de script diferentes, incluindo JavaScript, Python e Lua. Ele se baseia em vários recursos poderosos do Connext DDS, incluindo XML App Creation e Dynamic Data.
Esta postagem do blog se concentra na interface python do RTI Connector, mas a maioria dos conceitos se aplica facilmente a JavaScript / node.js e lua / prototyper.
Casos de uso
Existem muitos casos de uso para o Conector RTI. Alguns dos casos de uso dos primeiros usuários incluem:
- Teste : muitas vezes, quando você está desenvolvendo um sistema distribuído complexo, alguns dos componentes podem não estar prontos; Nesse caso, o Conector é usado para emular o comportamento de um componente DDS que será concluído posteriormente ou por outro grupo. Isso permite que você teste componentes isoladamente - o que é valioso quando você está trabalhando em uma equipe distribuída ou quando não quer esperar até que cada componente seja construído antes de testar.
- Prototipagem: No desenvolvimento de software, muitas vezes é necessário validar uma ideia antes que todos os detalhes estejam disponíveis. Usando uma linguagem de script como python e uma API DDS simplificada, torne muito simples e rápido desenvolver uma demonstração ou uma prova de conceito - usando um código de ordem de magnitude menor!
- Interfaces do usuário: desenvolver interfaces de usuário simples (visualizar ou enviar dados DDS usando botões e gatilhos simples) torna-se muito fácil quando o conector RTI é emparelhado com a tecnologia de IU disponível para python, como python QT.
- Integração: Python e outras linguagens de script vêm com um ecossistema enorme. Na época em que este blog foi escrito, o PyPl tinha 112.439 pacotes. Se você está tentando integrar algo, há uma boa chance de que haja um pacote python que o ajudará e agora você pode usar o Conector para falar DDS!
- Seu caso de uso aqui: deixe-nos saber se você está usando o RTI Connector de uma maneira diferente em nosso fórum!
Primeiros passos com RTI
Nesta postagem do blog, presumimos que você tenha alguma familiaridade com python. O conector RTI funciona com python 3 e <3. É compatível com todos os principais sistemas corporativos e também em placas como o Raspberry Pi. Você pode ver a lista de plataformas disponíveis aqui. Se precisar de suporte para outra coisa, não hesite em perguntar no fórum. Para instalar o RTI Connector for Connext DDS em python, você pode usar o pacote disponível no PyPI:
pip install rticonnextdds_connector
Outra maneira é apenas clonar o repositório:
clone git https://github.com/rticommunity/rticonnextdds-connector.git
No repositório, você também encontrará alguns exemplos para começar:
- simple / writer.js:mostra como criar um escritor, definir uma instância e publicar amostras.
- simple / reader.js:demonstra como obter um leitor, obter amostras e acessar o conteúdo delas.
- simple / read_and_write.py:mostra como escrever uma amostra para cada um recebido após a inversão de dois campos.
- mixed /:esses exemplos são atualizados periodicamente e contêm diferentes exemplos sobre como acessar o comprimento de uma sequência, como usar wait () e muito mais.
Visão geral da API
Vamos ver como é a API. Se você quiser informações mais detalhadas, pode ver o README em nosso repositório GitHub.
A primeira coisa a fazer é importar a biblioteca do RTI Connector:
import rticonnextdds_connector as rti
Depois de ter uma referência ao Conector RTI, você pode chamar a API para criar um novo Conector:
conector =rti.Connector ("MyParticipantLibrary ::Zero", "./ ShapeExample.xml");
A primeira string é o nome da configuração que você deseja usar, enquanto a segunda string é o arquivo XML que contém a configuração XML-Base App Creation. Você pode ver um exemplo desse arquivo aqui.
Depois que o conector é criado, você pode acessar todos os gravadores de dados usando a API getOutput:
output =connector.getOutput ("MyPublisher ::MySquareWriter")
ou você pode acessar os leitores de dados da mesma maneira:
input =connector.getInput ("MySubscriber ::MySquareReader");
Ambas as APIs obtêm uma string como parâmetro que representa o nome da entidade conforme definido no arquivo XML.
Depois de ter uma referência ao gravador de dados (saída em nosso exemplo), você pode definir os campos da instância associada. Você pode fazer isso passando um dicionário:
output.instance.setDictionary (amostra);
ou definindo cada campo individualmente:
output.instance.setNumber ("y", 2);
No lado do leitor de dados (entrada neste exemplo), você pode chamar read ou take:
input.read ();
ou
input.take ();
Em seguida, você pode iterar pelas amostras recebidas:
numOfSamples =input.samples.getLength ();
para j no intervalo (1, numOfSamples + 1):
se input.infos.isValid (j):
x =input.samples.getNumber (j, "x");
y =input.samples.getNumber (j, "y");
....
Uma amostra pode ser acessada de duas maneiras. Como um dicionário:
sample =input.samples.getDictionary (j);
ou campo por campo:
y =input.samples.getNumber (j, "y");
size =input.samples.getNumber (j, "shapesize");
Lembre-se de proteger o acesso ao seu Conector se você usar bibliotecas multithreading. Você pode encontrar um exemplo de como fazer isso aqui.
Todo esse poder vem com limites
O conector RTI é ótimo e pode resolver muitos desafios! Mas, como tudo, não é perfeito para tudo. Ele tem um conjunto limitado de APIs:algumas coisas que você pode fazer com o Connext DDS Pro não podem ser feitas com o RTI Connector. Funciona apenas com Dados Dinâmicos e não com tipos compilados. Para simplificar o uso e a portabilidade, fizemos algumas suposições tendo casos de uso específicos em mente, pode não resolver seu caso de uso específico ou pode não ser a maneira mais eficiente de resolvê-lo, mas provavelmente temos outra ferramenta ou serviço para seu problema específico:pergunte-nos!
Quanto?
Você deve estar se perguntando quanto custará essa tecnologia ... é grátis !! Você pode simplesmente pegá-lo e experimentar. Tudo o que pedimos é que você nos dê seus comentários e sugestões. Este feedback será considerado enquanto priorizamos atualizações e recursos a serem incluídos em nossos futuros lançamentos de produtos - para que você possa ajudar a influenciar n
Tecnologia da Internet das Coisas
- Software DDS aberto vs. RTI DDS
- Plugin Telegraf para Connext DDS:Construa um Sistema de Monitoramento de Série Temporal com DDS e InfluxDB
- Connext 6:Agora disponível!
- Connext DDS e a IoT industrial:as 5 principais coisas a saber
- Anunciando o último RTI Perftest para Connext DDS
- Aqui, por que todos estão usando o RTI Connext DDS para veículos autônomos
- Nossos 7 principais recursos de 2017 para desenvolvedores de IIoT
- Como projetar sistemas industriais de IoT com DDS e LabVIEW 2017
- Construindo robôs com Raspberry Pi e Python
- type() e isinstance() em Python com exemplos