Realizzare un piccolo robot usando un cervello remoto


8

Vorrei costruire un robot il più piccolo possibile e con il minor numero possibile di parti "delicate" (i robot si batteranno l'uno contro l'altro).

Mi chiedevo se fosse possibile utilizzare un piccolo chip in grado di ricevere comandi bluetooth / IR / wifi per spostare i motori e, a sua volta, inviare un feedback basato su sensori come un accelerometro (per rilevare l'impatto).

Probabilmente riesco a ottenere qualcosa del genere con il PiCy

picy

tuttavia questo è leggermente più grande di quanto mi piacerebbe (a causa delle dimensioni del Pi) e non sono sicuro di quanto tempo il Pi durerebbe a subire impatti continui.

Vorrei quindi provare a compensare il cervello (il Pi) sul lato dell'arena e usare solo un piccolo chip per ricevere i comandi di spostamento e inviare indietro i dati dall'accelerometro.

Hai qualche consiglio per un simile chip? La connessione Wifi sarebbe la mia scelta, ma se influisce sulle dimensioni potrei provare BT

Modifica: dopo ulteriori ricerche sembra che un Arduino nano con uno schermo WiFi RedBack potrebbe fare il lavoro insieme a qualcosa del genere per i motori: http://www.gravitech.us/2mwfecoadfor.html

Risposte:


2

È possibile che le schede rPI siano più resistenti del previsto. Non c'è molta massa per loro, quindi una piccola quantità di imbottitura in gomma o schiuma (per ridurre il frastuono) dovrebbe essere sufficiente per proteggerli, a condizione che i tuoi robot non si scontrino con abbastanza forza per rompere l'involucro di plastica intorno loro.

Scaricare l'elaborazione su un sistema remoto (e probabilmente più potente) ti darà alcuni vantaggi, come quelli che hai notato: meno peso, meno da rompere, meno batteria necessaria per spostare la cosa.

Gli svantaggi saranno i limiti di larghezza di banda e la latenza. Una volta introdotto il ritardo delle trasmissioni wireless, si passa da un loop basato su hardware in grado di gestire il ballpark di migliaia di iterazioni al secondo a un loop basato su rete in grado di gestire solo dozzine di iterazioni al secondo.

Per risultati ottimali, il progetto dovrebbe eseguire il maggior controllo possibile sull'hardware locale e utilizzare la connessione remota per decisioni di pianificazione di livello superiore che dovranno essere ricevute solo poche volte al secondo.


Il tuo controllo avverrebbe tramite webcam su Internet, indipendentemente dal fatto che ci si aspetta comunque un leggero ritardo.
Titano,

0

Esistono due approcci per costruire i robot che descrivi.

Il primo, come suggerisci, è quello di disaccoppiare la potenza di elaborazione dal resto del robot che contiene i sensori e gli attuatori. Per fare ciò è necessario un po 'di comunicazione tra l'unità di elaborazione (PC / RPi / Altro microcontrollore) e il robot. Una soluzione a basso costo per questo è quella di utilizzare moduli Bluetooth economici (cerca ebay per "Modulo Bluetooth seriale", non dovrebbero costare più di $ 5). Sul lato robot è necessario anche un microcontrollore poiché è necessario ricevere i dati dal Bluetooth, elaborarli e convertirli in segnali di controllo per i motori. Inoltre, lo stesso microcontrollore sarà responsabile della lettura dei sensori e della trasmissione dei dati all'unità di elaborazione remota.

Il secondo approccio consiste nell'avere una singola unità di elaborazione che si trova sul robot. Lo stesso controller leggerà i sensori, fornirà l'intelligenza e controllerà i motori. Poiché il robot lo descrivi semplice, questo controller potrebbe essere implementato su un semplice microcontrollore. Puoi creare il tuo controller (usando PIC / AVR / ARM) oppure puoi usare una soluzione pronta come Arduino, BasicStamp ecc. Opzionalmente puoi avere una connessione Bluetooth con un PC per la telemetria (osservando i valori dei sensori e / o controllando manualmente il robot).

Per il tuo progetto, il secondo approccio sembra più attraente. Costerà molto meno e i robot reagiranno più velocemente poiché l'elaborazione viene eseguita direttamente sul robot. Anche dal momento che il primo approccio richiede un'unità di elaborazione anche sul robot, sembra eccessivo utilizzare una seconda unità per l'elaborazione. D'altra parte, il primo approccio consente di sviluppare il controller del robot in un sistema di livello superiore (PC / RPi) che, a seconda della tua esperienza, potrebbe essere un ambiente più confortevole.


Il tuo motivo principale per non mettere un controller di grandi dimensioni sul robot era evitare danni dopo impatti. Se avessi optato per l'approccio del telecomando, avrei bisogno di un solo controller principale per più robot (identificare comandi / feedback con un ID univoco per ciascuno). Potrei riuscire ad ottenere la soluzione "brain on the bot" con un Adriuno nano che sembra abbastanza piccolo con uno scudo Wifi (per inviare e ricevere comunicazioni socketio per il controllo e il feedback con il server remoto).
Titano il

Cosa stai suggerendo esattamente? Avere un arduino nano con WiFi sul robot e un'unità di elaborazione remota aggiuntiva? Quale unità eseguirà i calcoli di controllo?
Demetris,

Beh, non sono ancora sicuro ahah. Il nano potrebbe fare tutto ciò che immagino!
Titano,

Sì, ai fini del tuo progetto, la singola unità di elaborazione integrata sembra la scelta migliore! Come ho detto nella risposta, se hai bisogno di avere qualche comunicazione con il robot, puoi farlo attraverso moduli Bluetooth economici. In alternativa è possibile utilizzare (anche più economico!) I moduli nrf24l01 + se è necessario stabilire una rete, poiché si dispone di più robot.
Demetris,

0

Penso di aver trovato il controller perfetto per questo progetto:

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

Il Micro Magician mi consentirà di controllare 2 semplici motori DC, rilevare impatti e crash con l'accelerometro E ricevere comandi di spostamento dal ricevitore IR! Abbastanza fantastico per le dimensioni.

L'unico pezzo rimasto nel puzzle è rispedire i dati al telecomando (dati dell'accelerometro). Non sono sicuro di poter collegare un trasmettitore IR o forse BT / Wifi?

Modifica: sembra che questo potrebbe fare il lavoro! http://www.dawnrobotics.co.uk/dagu-arduino-bluetooth-module/

Ora per trovare piccoli motori ...


1
Synapse RF266PC1 sono dispositivi interessanti. Sono piccoli, facili da programmare e basati su Python. Gli ADC su di essi non sono così buoni, ma in combinazione con un ATmega328 (chip utilizzato in Arduino UNO) potresti ottenere una potenza di elaborazione sufficiente per inviare i dati avanti e indietro. Ho anche usato Wixels, ma la loro distanza rx / tx lascia molto a desiderare. Questi RF266PC1 sono in grado di creare reti mesh predefinite, Wixels non può farlo affatto.
Daniel F,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.