Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Manufacturing Technology >> Processo de manufatura

Nox - A House Wandering Robot (ROS)

Nox é um Robô bacana (e demorado) que usa SLAM (ROS) com Kinect para navegar em seu ambiente. O NOX é um robô diferencial construído usando ROS, Raspberry Pi e Arduino. Comecei o projeto como uma base de robô com navegação básica que poderia usar para outras coisas, como um aspirador de pó.



No entanto, rapidamente decidi torná-lo um robô autônomo com um design adequado, uma vez que muitas vezes falta em robôs DIY. Em seu estado atual, o robô pode usar SLAM (gmapping) para criar um mapa de seus arredores (usando a percepção de profundidade do Kinect para detectar paredes e obstáculos) e se localizar dentro do mapa. Ele pode planejar um caminho para um determinado objetivo e dirigir até ele evitando obstáculos.

O Nox é alimentado por uma bateria de íon-lítio 11.1v e acionado por dois motores. O painel frontal pode ser removido para trocar a bateria. Um orifício ranhurado e um parafuso fixam-no e permitem colocar baterias de diferentes comprimentos. Coloquei um alarme de bateria com uma tela para monitorar o nível.



Os motores são dois motores de 12 V DC (107 rpm) da Banggood. Eles são legais, mas eu realmente não preciso do robô para ir tão rápido e eu estaria bem em trocar um pouco da velocidade por codificadores mais precisos.
Sobre o design, a principal restrição era ter algo que se integrasse bem com o Kinect, já que estava construindo o robô em torno dele. Fui inspirado pelo visual triangular de muitos objetos de estilo moderno (e muito por Deus Ex, tenho que admitir). Eu realmente queria ter um robô legal e com aparência profissional, pois é algo que muitas vezes falta em robôs DIY (mas não se preocupe, a fiação está tão bagunçada quanto deveria ser). Foi necessário passar algumas semanas no modelo CAD para ajustar tudo.

As luzes laterais são recicladas de um bastão brilhante de véspera de Ano Novo que ganhei de graça e servem para indicar os estados do robô. Quando o Arduino não está conectado ao mestre ROS (indicando que o programa do robô ainda não foi iniciado), as luzes piscam três vezes consecutivas muito rapidamente. Ao dirigir, as luzes piscam mais para “respirar” e a velocidade de piscar depende da velocidade do robô.


Não conectar piscando


Piscando ocioso

Estrutura

Como afirmado acima, o robô é um acionador diferencial, então o motor é colocado no mesmo eixo. A base é feita de madeira com duas rodinhas de apoio. Inicialmente, planejei usar uma roda de rodízio para evitar a coisa hiperestática, mas não consegui encontrar uma de bom tamanho. O resto da estrutura é feito principalmente de suportes de madeira e metal, fáceis de encontrar em qualquer loja de bricolagem. Na parte traseira das placas do robô podem ser empilhadas para colocar as placas eletrônicas.



O cárter é feito de placa de plástico preto, cortado e colado à mão (com certeza usará impressão 3D na próxima vez).

Hardware

No interior do controlador principal está um Raspberry Pi 3B rodando Ubuntu e ROS. O Raspberry pode ser acessado de um computador externo por meio de WiFi e ssh para dar ordens ao robô. O programa ROS realiza cálculos de odometria, planejamento de navegação e mapeamento usando o Kinect. O Raspberry Pi envia o comando de velocidade para um Arduino que controla os dois motores com um PID através de um Escudo de Motor Adafruit. Ele lê o valor do codificador, calcula a velocidade de cada motor e envia o valor de volta ao Framboesa para cálculo da odometria. Arduino e Raspberry Pi são conectados por USB e o programa Arduino atua como um nó ROS (procure rosserial para obter mais informações).

Usei diferentes tipos de Arduino antes de escolher o bom. No início, usei o Arduino Uno básico, mas não tinha pinos de interrupção suficientes para ler os valores do codificador (o melhor método para fazer isso com o Arduino). A velocidade e a precisão foram limitadas porque tive que recorrer a outros truques de programação para fazer funcionar. Tentei usar um Arduino Leonardo, mas o fator limitante era a memória e tive que finalmente mudar para um Arduino Mega 2560. Uma bênção no disfarce, pois tenho bastante memória e pinos para adicionar novas funções agora.

Kinect 360 fez parte do projeto desde o início, já que eu queria fazer SLAM (Simultaneous Localization And Mapping), mas sem gastar muito dinheiro em um lidar. Um kinect é basicamente uma câmera 3D de 25 € (claro que não espere a mesma precisão de um Hokuyo) e, além da varredura de profundidade necessária para SLAM, também pode ser usada para visão computacional, tem um acelerômetro e um microfone variedade. Tudo isso sendo útil para as etapas seguintes do projeto.

Dois conversores CC são usados ​​para converter a tensão. O motor está funcionando diretamente com a tensão da bateria (mais ou menos 11,1 V). A parte de comando (incluindo Raspberry Pi, Arduino e codificadores) está funcionando em 5V convertido da bateria. O Kinect precisa de uma voltagem estabilizada de 12v e um conversor também fornece isso da bateria.

Software

Na parte do software, usei ROS Kinetic. O único nó que realmente escrevi é o “nox_controller” que, como seu nome realmente não implica, é usado para calcular a odometria dos dados do Arduino (velocidade do motor). O modelo usado para os cálculos pode ser encontrado no artigo “On Differential Drive Robot Odometry com Aplicação ao Planejamento de Percursos” (na verdade fiz minhas próprias fórmulas, mas são as mesmas, de qualquer forma, vale a pena ler o artigo). Matrizes de covariância são fornecidas na odometria, mas não são usadas atualmente (no entanto, será útil se eu estiver integrando uma IMU à odometria).

No Arduino o controle do motor é feito através do PWM. Supõe-se que um PID gerencie a velocidade de cada motor, mas como a relação PWM / velocidade do motor é muito linear, obtive bons resultados com um comando direto da velocidade e desativei o PID por enquanto. Não se preocupe, embora a implementação e calibração corretas do PID estejam a caminho.



Leia mais detalhes:Nox - A House Wandering Robot (ROS)

Processo de manufatura

  1. Como fazer uma plataforma de robô Arduino + Raspberry Pi
  2. Robô usando Raspberry Pi e Bridge Shield
  3. Robô da caixa de CD do Raspberry Pi
  4. ANDY:Um robô “humanóide” multifuncional
  5. Robô de alarme rotativo
  6. Crie um Minecraft Creeper Robot
  7. Robô autônomo quadrúpede JQR
  8. Arquimedes:A coruja robô AI
  9. EMAR Mini - Robô de Assistência de Emergência
  10. Robô controlado por Wi-Fi usando Raspberry Pi