Software do robô

Software robótico é o conjunto de comandos codificados ou instruções que informam um dispositivo mecânico e um sistema eletrônico, conhecidos em conjunto como um robô, que tarefas executar. O software do robô é usado para executar tarefas autônomas. Muitos sistemas de software e frameworks foram propostos para tornar os robôs de programação mais fáceis.

Alguns softwares de robôs têm como objetivo o desenvolvimento de dispositivos mecânicos inteligentes. Tarefas comuns incluem loops de feedback, controle, localização de caminho, filtragem de dados, localização e compartilhamento de dados.

Introdução
Embora seja um tipo específico de software, ainda é bastante diversificado. Cada fabricante tem seu próprio software robótico. Enquanto a grande maioria dos softwares é sobre manipulação de dados e ver o resultado na tela, o software robótico é para a manipulação de objetos ou ferramentas no mundo real.

Software para robôs industriais
O software para robôs industriais consiste em objetos de dados e listas de instruções, conhecidas como fluxo de programas (lista de instruções). Por exemplo,

Ir para Jig1

é uma instrução para o robô ir para dados posicionais chamados Jig1. Claro que os programas também podem conter dados implícitos, por exemplo

Diga ao eixo 1 para mover 30 graus.

Dados e programas geralmente residem em seções separadas da memória do controlador do robô. Pode-se mudar os dados sem alterar o programa e vice-versa. Por exemplo, pode-se escrever um programa diferente usando o mesmo Jig1 ou pode-se ajustar a posição do Jig1 sem alterar os programas que o utilizam.

Exemplos de linguagens de programação para robôs industriais
Devido à natureza altamente proprietária do software robótico, a maioria dos fabricantes de hardware robótico também fornece seu próprio software. Embora isso não seja incomum em outros sistemas de controle automatizados, a falta de padronização dos métodos de programação para robôs apresenta certos desafios. Por exemplo, existem mais de 30 fabricantes diferentes de robôs industriais, portanto, também são necessárias 30 linguagens de programação de robôs diferentes. Existem semelhanças suficientes entre os diferentes robôs que é possível obter uma compreensão ampla da programação do robô sem ter que aprender a linguagem proprietária de cada fabricante.

Um método para controlar robôs de vários fabricantes é usar um software de pós-processamento e programação off-line (robótica). Com esse método, é possível manipular linguagem de programação de robô específica de marca a partir de uma linguagem de programação universal, como Python (linguagem de programação). no entanto, a compilação e o upload de código off-line fixo para um controlador de robô não permitem que o sistema robótico seja informado do estado, por isso não pode adaptar seu movimento e recuperar conforme o ambiente muda. O controle adaptativo unificado em tempo real para qualquer robô é atualmente possível somente com o Actin.

Alguns exemplos de linguagens de programação de robôs publicados são mostrados abaixo.

Tarefa em Inglês simples:
Mover para P1 (uma posição segura geral)
Mover para P2 (uma abordagem para P3)
Mover para P3 (uma posição para escolher o objeto)
Fechar pinça
Mover para P4 (uma abordagem para P5)
Mover para P5 (uma posição para colocar o objeto)
Pinça aberta
Mova para P1 e termine
VAL foi uma das primeiras ‘linguagens’ do robô e foi usada em robôs Unimate. Variantes do VAL foram usadas por outros fabricantes, incluindo a Adept Technology. Stäubli atualmente usa VAL3.
Exemplo de programa:
PICKPLACE DO PROGRAMA
1. MOVE P1
2. MOVE P2
3. MOVE P3
4. CLOSEI 0,00
5. MOVE P4
6. MOVE P5
7. OPENI 0,00
8. MOVIMENTO P1
.FIM
Exemplo do programa Stäubli VAL3:
início
movej (p1, tGripper, mNomSpeed)
movej (appro (p3, trAppro), tGripper, mNomSpeed)
movel (p3, tGripper, mNomSpeed)
fechar (tGripper)
movej (appro (p5, trAppro), tGripper, mNomSpeed)
movel (p5, tGripper, mNomSpeed)
aberto (tGripper)
movej (p1, tGripper, mNomSpeed)
fim
O trAppro é uma variável de transformação cartesiana. Se usarmos o comando appro, não precisamos ensinar o ponto P2 e P4, mas transformamos dinamicamente uma abordagem de posição de escolha e local para a geração de trajetória.
Epson RC + (exemplo para uma coleta a vácuo)
Função PickPlace
Saltar P1
Ir P2
Saltar P3
No vácuo
Espere.
Saltar P4
Saltar P5
Fora de vácuo
Espere.
Saltar P1
Defender
ROBOFORTH (uma linguagem baseada em FORTH).
: PICKPLACE
P1
P3 RETIRO
P5 UNGRIP RETIRADA
P1
;
(Com Roboforth você pode especificar posições de aproximação para lugares, assim você não precisa de P2 e P4.)

Claramente, o robô não deve continuar o próximo movimento até que a pinça esteja completamente fechada. A confirmação ou o tempo permitido estão implícitos nos exemplos acima de CLOSEI e GRIP, enquanto o comando On vacuum requer um tempo de atraso para garantir uma sucção satisfatória.

Outras linguagens de programação de robôs

Linguagem de programação visual
A linguagem de programação LEGO Mindstorms EV3 é uma linguagem simples para os usuários interagirem. É uma interface gráfica do usuário (GUI) escrita com o LabVIEW. A abordagem é começar com o programa e não com os dados. O programa é construído arrastando ícones para a área do programa e adicionando ou inserindo na sequência. Para cada ícone, você especifica os parâmetros (dados). Por exemplo, para o ícone do inversor de frequência, você especifica quais motores e por quanto eles se movem. Quando o programa é escrito, ele é baixado no ‘brick’ (microcontrolador) do Lego NXT para teste.

Linguagens de script
Uma linguagem de script é uma linguagem de programação de alto nível que é usada para controlar o aplicativo de software e é interpretada em tempo real ou “traduzida na hora”, em vez de ser compilada antecipadamente. Uma linguagem de script pode ser uma linguagem de programação de propósito geral ou pode ser limitada a funções específicas usadas para aumentar a execução de um aplicativo ou programa do sistema. Algumas linguagens de script, como RoboLogix, possuem objetos de dados residentes em registradores, e o fluxo do programa representa a lista de instruções, ou conjunto de instruções, usado para programar o robô.

Linguagens de programação em robótica industrial
Marca do robô Nome da linguagem
ABB RAPID
Comau PDL2
Fanuc Karel
Kawasaki AS
Kuka KRL
Stäubli VAL3
Yaskawa Inform
As linguagens de programação são geralmente projetadas para construir estruturas de dados e algoritmos desde o início, enquanto as linguagens de script são mais adequadas para conectar, ou “colar”, componentes e instruções juntos. Consequentemente, o conjunto de instruções da linguagem de script geralmente é uma lista simplificada de comandos de programa que são usados ​​para simplificar o processo de programação e fornecer rápido desenvolvimento de aplicativos.

Linguagens paralelas
Outra abordagem interessante é digna de menção. Todas as aplicações robóticas precisam de paralelismo e programação baseada em eventos. O paralelismo é onde o robô faz duas ou mais coisas ao mesmo tempo. Isso requer hardware e software apropriados. A maioria das linguagens de programação utiliza threads ou classes de abstração complexas para lidar com o paralelismo e a complexidade que o acompanha, como o acesso simultâneo a recursos compartilhados. A URBI fornece um nível mais alto de abstração integrando paralelismo e eventos no núcleo da semântica da linguagem.

sempre (face.visible)
{
headPan.val + = camera.xfov * face.x
& amp;
headTilt.val + = camera.yfov * face.y
}

O código acima irá mover os motores headPan e headTilt paralelamente para fazer a cabeça do robô seguir o rosto humano visível no vídeo capturado pela câmera sempre que uma face for vista pelo robô.

Software de aplicação de robô
Independentemente da linguagem usada, o resultado final do software do robô é criar aplicativos robóticos que ajudem ou entretenham as pessoas. As aplicações incluem software de comando e controle e tasking. O software de comando e controle inclui GUIs de controle de robô para robôs teleoperados, software de comando point-n-click para robôs autônomos e software de programação para robôs móveis em fábricas. O software de tarefas inclui interfaces simples de arrastar e soltar para configurar rotas de entrega, patrulhas de segurança e visitas a visitantes; Ele também inclui programas personalizados escritos para implantar aplicativos específicos. O software de aplicação robótica para fins gerais é implantado em plataformas robóticas amplamente distribuídas.

Considerações de segurança
Erros de programação representam uma séria consideração de segurança, particularmente em grandes robôs industriais. O poder e o tamanho dos robôs industriais significam que eles são capazes de causar ferimentos graves se forem programados incorretamente ou usados ​​de maneira insegura. Devido à massa e às altas velocidades dos robôs industriais, é sempre perigoso para um humano permanecer na área de trabalho do robô durante a operação automática. O sistema pode iniciar o movimento em momentos inesperados e um humano não conseguirá reagir com rapidez suficiente em muitas situações, mesmo se estiver preparado para isso. Assim, mesmo que o software esteja livre de erros de programação, deve-se tomar muito cuidado para tornar um robô industrial seguro para os trabalhadores humanos ou para a interação humana, como carregar ou descarregar peças, limpar uma peça ou executar a manutenção. O padrão ANSI / RIA R15.06-1999 da Norma Nacional Americana para Robôs Industriais e Sistemas Robô – Requisitos de Segurança (revisão do ANSI / RIA R15.06-1992) da Robotic Industries Association é o padrão aceito na segurança de robôs. Isso inclui diretrizes para o design de robôs industriais e a implementação ou integração e uso de robôs industriais no chão de fábrica. Numerosos conceitos de segurança, como controladores de segurança, velocidade máxima durante um modo de ensino e uso de barreiras físicas são cobertos.

Projetos de software de robótica
A seguir, uma lista de software livre e de código aberto para projetos de robótica.

CLARAty – Arquitetura de Camada Acoplada para Autonomia Robótica. É um esforço colaborativo entre quatro instituições: Laboratório de Propulsão a Jato da NASA, Centro de Pesquisas Ames da NASA, Carnegie Mellon e a Universidade de Minnesota.
dLife – Biblioteca Java Grátis / Open Source para Robótica, IA e Visão. Suporta Pioneer, Khepera II & amp; II, Hemission, Aibo e Finch robôs, bem como simulações Player / Stage.
Experimental Robotics Framework – Um software para fazer experimentos com vários robôs em 3D, com suporte para as mais recentes tecnologias, que fica no topo do Player / Stage e Open / CV.
MARIE – Ambiente de Integração de Robótica Autônoma e Móvel – é um Software Livre que utiliza uma abordagem baseada em componentes para construir sistemas de software de robótica integrando componentes de software previamente existentes e novos.
Microsoft – Microsoft Robotics Developer Studio
OpenRDK – Uma estrutura de software de código aberto para robótica para desenvolvimento de módulos fracamente acoplados. Ele fornece gerenciamento de simultaneidade transparente, comunicação entre quadros (via sockets) e comunicação intra-processo (via memória compartilhada) baseada em lousa e uma técnica de vinculação que permite a criação de um sistema conceitual de portas de dados de entrada / saída. Módulos para conexão com simuladores e drivers de robôs genéricos são fornecidos.
OpenRTM-aist – uma plataforma de software desenvolvida com base no padrão RT middleware. É desenvolvido pelo Instituto Nacional de Ciência e Tecnologia Industrial Avançada no Japão.
OROCOS – o projeto Open Robot Control Software fornece um kit de ferramentas de Software Livre para controle de braço de máquina e máquina-ferramenta em tempo real.
OPRoS – Open Platform Robotic Services é um projeto de código aberto para desenvolvimento de robôs. Ele fornece uma solução que inclui plataforma de robô e ferramentas de desenvolvimento de GUI com o código-fonte dos componentes do dispositivo do robô.
RoboDK – Uma plataforma de kit de desenvolvimento de robôs para simular robôs industriais. O RoboDK permite que você programe qualquer robô usando o Python e lide com a sintaxe específica da marca, dependendo do seu controlador de robô.
Robotics Library é uma biblioteca C ++ de código aberto que abrange drivers de cinemática, planejamento, visualização e hardware para vários robôs.
Robotics Toolbox for MATLAB – Software Livre que oferece funcionalidade para representar pose (transformações homogêneas, ângulos Euler e RPY, quatérnios), robôs de braço (cinemática e dinâmica direta / inversa) e robôs móveis (controle, localização e planejamento)
Rossum Project, GW Lucas, projeto robótico de código aberto.
Player / Stage Project – Um sistema de simulação e interface de robô de software livre muito popular, usado para pesquisa e ensino de robótica em todo o mundo.
Pyro, Python Robotics – Robótica Popular Software Livre usado em universidades e faculdades.
RoboMind – Software educacional para aprender os conceitos básicos de robótica e programação.
Sistema Operacional Robô – O Sistema Operacional Robô é uma plataforma de código aberto para programação de robôs usando Python e C ++. Java, Lisp, Lua e Pharo são suportados, mas ainda em estágio experimental.
Kernel de Inteligência do Robô

Programação Off-line
Visual Components é um software de simulação de evento discreto comercial 3D que permite a simulação de fluxo de material e robótica em uma plataforma. A funcionalidade pode ser estendida com recursos de programação off-line e conectividade PLC.
“O Básico – Software Robot”. Sociedade de Robótica de Seattle.
“Software de Robô Autônomo Móvel (MARS)”. Georgia Tech Research Corporation.
“Banco de dados de tecnologia”. robot.spawar.navy.mil.
Adaptive Robotics Software no Idaho National Laboratory

Controle on-line
A Energid Technologies desenvolve e vende o Actin SDK, que é um kit de ferramentas de robótica, mecanismo de otimização e sistema de gerenciamento de restrições escrito em C ++ que usa a cinemática baseada em Jacobian para otimizar o desempenho em todos os tipos de robôs. Como o Actin é vendido como um SDK, ele pode ser rotulado em branco ou OEM em outros pacotes de software de controle do robô. Essa abordagem permite que os usuários desenvolvam o controle de um sistema conhecido em modo offline por meio de uma GUI e deixem o Actin manipular o controle on-line de alto nível para transmitir comandos em nível de junção constantemente atualizados ao robô / controlador em tempo real para evitar colisões ao adaptar a perceber mudanças ambientais.