Fazendo um pequeno robô usando um cérebro remoto

8

Eu gostaria de construir um robô o menor possível e com o mínimo possível de partes "delicadas" (os bots se basearão um no outro).

Fiquei imaginando se era possível usar um pequeno chip que pudesse receber comandos bluetooth / IR / wifi para mover os motores e, por sua vez, enviar feedback com base em sensores como um acelerômetro (para detectar impacto).

Provavelmente posso conseguir algo assim com o PiCy

picante

no entanto, isso é um pouco maior do que eu gostaria (devido ao tamanho do Pi) e não sei quanto tempo o Pi duraria, tendo impactos contínuos.

Portanto, eu gostaria de tentar deslocar o cérebro (o Pi) para o lado da arena e usar apenas um pequeno chip para receber comandos de movimentação e enviar dados do acelerômetro.

Você tem alguma recomendação para esse chip? Wifi seria minha escolha, mas se isso afetar o tamanho, eu poderia tentar o BT

Edit: Depois de mais pesquisas, parece que um nano do Arduino com um escudo WiFi RedBack pode fazer o trabalho junto com algo assim para os motores: http://www.gravitech.us/2mwfecoadfor.html

Titã
fonte

Respostas:

2

Você pode achar que as placas rPI são mais duráveis ​​do que o esperado. Não há muita massa para eles, portanto, uma pequena quantidade de preenchimento de borracha ou espuma (para reduzir o ruído) deve ser suficiente para protegê-los - desde que seus robôs não estejam batendo com força suficiente para quebrar a caixa de plástico eles.

Transferir o processamento para um sistema remoto (e provavelmente mais poderoso) fornecerá algumas vantagens, como as que você notou - menos peso, menos quebras, menos bateria necessária para mover a coisa.

As desvantagens serão as limitações de largura de banda e a latência. Depois de introduzir o atraso das transmissões sem fio, você passa de um loop baseado em hardware que pode suportar milhares de iterações por segundo para um loop baseado em rede que pode lidar apenas com dezenas de iterações por segundo.

Para obter melhores resultados, seu design deve fazer o máximo possível de controle de processamento no hardware local e usar a conexão remota para decisões de planejamento de nível superior que só precisam ser recebidas algumas vezes por segundo.

Ian
fonte
Seu controle seria feito através da webcam pela Internet, de modo que seria esperado um pequeno atraso.
Titan
0

Existem duas abordagens para construir os robôs que você descreve.

O primeiro, como você sugere, é desacoplar o poder de processamento do resto do robô que contém os sensores e atuadores. Para fazer isso, você precisa de alguma comunicação entre a unidade de processamento (PC / RPi / Outro microcontrolador) e seu robô. Uma solução de baixo custo para isso é usar módulos Bluetooth baratos (pesquise no eBay por 'Módulo Bluetooth Serial', eles não devem custar mais de US $ 5). No lado do robô, você precisará de um microcontrolador, já que precisa receber os dados do Bluetooth, processá-los e convertê-los para controlar os sinais dos motores. Além disso, o mesmo microcontrolador será responsável pela leitura dos sensores e transmissão dos dados de volta à unidade de processamento remoto.

A segunda abordagem é ter uma única unidade de processamento localizada no robô. O mesmo controlador lê os sensores, fornece a inteligência e controla os motores. Como o robô que você descreve é ​​simples, esse controlador pode ser implementado em um microcontrolador simples. Você pode criar seu próprio controlador (usando PIC / AVR / ARM) ou pode usar uma solução pronta como um Arduino, BasicStamp etc. Opcionalmente, você pode ter uma conexão Bluetooth com um PC para telemetria (observando os valores dos sensores e / ou controlando manualmente o robô).

Para o seu projeto, a segunda abordagem parece mais atraente. Custará muito menos e os robôs reagirão mais rapidamente, pois o processamento é feito diretamente no robô. Além disso, como a primeira abordagem exige uma unidade de processamento no robô, parece um exagero usar uma segunda unidade para processamento. Por outro lado, a primeira abordagem permite que você desenvolva seu controlador de robô em um sistema de nível superior (PC / RPi) que, dependendo da sua experiência, pode ser um ambiente mais confortável.

Demetris
fonte
Sua principal razão para não colocar um grande controlador no robô foi evitar danos após impactos. Se eu seguisse a abordagem do controle remoto, precisaria apenas de um único controlador principal para vários robôs (identificar comandos / feedback com um ID exclusivo para cada um). Talvez consiga obter a solução "brain on the bot" com um Adriuno nano que pareça pequeno o suficiente com um escudo Wifi (para enviar e receber comunicações socketio para controle e feedback com o servidor remoto).
Titan
O que você está sugerindo exatamente? Para ter um arduino nano com WiFi no robô e uma unidade de processamento remoto adicional? Qual unidade fará os cálculos de controle?
precisa
Bem, eu ainda estou inseguro haha. O nano poderia fazer tudo o que eu acho!
Titan
Sim, para a finalidade do seu projeto, a única unidade de processamento a bordo parece ser a melhor escolha! Como mencionei na resposta, se você precisar ter alguma comunicação com o robô, poderá fazê-lo através de módulos Bluetooth baratos. Como alternativa, você pode usar (ainda mais barato!) Módulos nrf24l01 + se precisar estabelecer uma rede, pois possui vários robôs.
precisa
0

Acho que encontrei o controlador perfeito para este projeto:

http://www.robotshop.com/en/dagu-micro-magician-robot-controller.html

O Micro Magician permitirá que eu controle 2 motores CC simples, detecte impactos e trava com o acelerômetro E receba comandos de movimento do receptor de IR! Muito impressionante para o tamanho.

A única peça que resta no quebra-cabeça é enviar os dados de volta ao controle remoto (dados do acelerômetro). Não tenho certeza se eu poderia conectar um transmissor IR ou talvez BT / Wifi?

Edit: parece que isso poderia fazer o trabalho! http://www.dawnrobotics.co.uk/dagu-arduino-bluetooth-module/

Agora, para encontrar pequenos motores ...

Titã
fonte
11
Synapse RF266PC1 são dispositivos interessantes. Eles são pequenos, fáceis de programar e baseados em python. Os ADCs neles não são tão bons, mas em combinação com um ATmega328 (chip usado no Arduino UNO), você pode obter energia de processamento suficiente para enviar e receber dados. Eu também usei o Wixels, mas a distância rx / tx deixa muito a desejar. Esses RF266PC1 podem fazer redes de malha prontas para uso, os Wixels não podem fazer isso.
Daniel F