Domanda:
Arduino è adatto per essere un controller Robot umanoide?
alvinsj
2010-08-26 18:52:43 UTC
view on stackexchange narkive permalink

Non sono uno sviluppatore Arduino qui. Tuttavia, vorrei chiedere se qualche sviluppatore là fuori che ha esperienza sulle capacità di Arduino, Arduino è adatto per sviluppare un robot umanoide? Il robot umanoide è composto da telecamera visiva, sensori e servi, ricetrasmettitore wireless, bussola, accelerometro e così via.

Correggimi se ho menzionato qualcosa di sbagliato.

Sei risposte:
Leon Heller
2010-08-26 19:13:16 UTC
view on stackexchange narkive permalink

Arduino Duemilanove ha solo 14 I / O digitali e sei ingressi analogici e 2k SRAM massimo. Non sembra che sia in grado di gestire tutte quelle periferiche senza l'espansione della porta e non ha abbastanza memoria per l'elaborazione delle immagini.

tuttavia, forse esiste uno scudo per l'elaborazione delle immagini, o potrebbe essere sviluppato, in modo che Arduino svolga semplicemente il compito di leggere le informazioni dagli scudi e comandare l'invocazione di determinate azioni da altri scudi
ttt
2010-09-07 13:46:30 UTC
view on stackexchange narkive permalink

Un Arduino da solo ha troppo poco I / O e troppo poca potenza della CPU e memoria. Potresti usare più Arduino (come suggerito da vicatu) o usare qualcosa di più potente come mbed (come suggerito da Joby Taffey). Suggerirei un ibrido di entrambe le idee. Utilizza un potente processore per fornire AI e controllo generale e utilizza microcontrollori più semplici come gestori di I / O. In effetti, suggerirei una gerarchia completa con tutti i livelli necessari con processori più potenti man mano che sali nella gerarchia.

Per esempio ho usato il Gameboy Advance come il "cervello" di un robot mentre l'I / O è stato gestito da microcontrollori PIC16F84. Penso che una disposizione ideale sarebbe qualcosa di potente come un PC (forse una mini scheda ITX) o qualcosa come una scheda Beagle come il cervello, uno strato intermedio con più MBED o Zilog Z8 come gestori di sottosistema (controllo del movimento, gestione dei sensori , alcuni sensori di pre-elaborazione, ecc.). e molti microcontrollori piccoli / economici (Atmel / PIC / TI MSP430 ecc.) per gestire il lavoro delle gambe. Lo strato superiore può usare Ethernet o USB, i livelli inferiori possono usare RS232, I2C ecc.

Un vantaggio di tutto questo approccio è che puoi modulare il tuo sviluppo (ottimo per gruppi di amici o studenti). I singoli moduli possono avere obiettivi meglio definiti (e più facili da raggiungere) ed essere progetti completi in se stessi. A livelli più alti puoi concentrarti sull'intelligenza artificiale e sul controllo generale del robot senza doversi preoccupare dei dettagli di basso livello (ad esempio, se puoi emettere un comando per ruotare il robot di 45 gradi, hai diviso efficacemente il tuo problema a metà. Il livello più alto può concentrarsi sulle decisioni su come girare (processo decisionale) mentre un controllore di livello inferiore deve solo soddisfare i comandi motori semplici e ben definiti dall'alto. In un certo senso questo è modellare il nostro robot sul modo in cui funziona il nostro cervello (non a livello neurologico). Quando decidiamo di allungare la mano e prendere una tazza non dobbiamo pensare coscientemente ai meccanismi di ciò che stiamo facendo. Potremmo vedere questa azione come avvenuta a tre livelli:

  1) Alto livello: la decisione di prendere la tazza.2) Livello medio: coordina le azioni motorie e l'analisi di base degli input senori.3) Livello basso: esegue l'azione motoria, raccoglie i dati dei sensori.  

Spero che questo sia utile.

Il tuo software dovrebbe avere un design modulare, separando l'IA di alto livello dal controllo del movimento di basso livello, indipendentemente dal fatto che quei componenti software vengano eseguiti su micro separati o un singolo micro. Suppongo che l'uso di microfoni separati imporrebbe quel buon principio di progettazione ai deboli di mente. ;)
Nel contesto della domanda la separazione è valida. Non ha senso provare a scrivere codice AI di alto livello su semplici controller a 8 bit, ma sono perfetti come interfacce per sensori e aggregatori di dati per sensori. Se il tuo robot funziona su un singolo processore (e ne ho costruiti alcuni basati su ARM7 / 9), allora ha comunque senso avere un design modulare, ma non sto cercando di "costringere" le persone a progettare le cose in un un modo particolare.
Toby Jaffey
2010-08-26 20:28:37 UTC
view on stackexchange narkive permalink

Potresti stare meglio con qualcosa di più robusto di Arduino. Forse un mbed (basato su ARM Cortex-M3).

Anche se, anche se potrebbe non avere abbastanza linee per controllare tutte quelle periferiche.

littlecharva
2011-01-12 17:39:18 UTC
view on stackexchange narkive permalink

Come suggerito da Tim Ring, combinare un Arduino con un dispositivo più potente sarebbe la soluzione migliore. Utilizzando un netbook economico come cervello ti darebbe quella potenza aggiuntiva, potresti persino usare la webcam integrata come fotocamera ed eseguire tutte le tue elaborazioni di immagini sul netbook.

Arduino si collegherebbe a un Porta USB sul netbook e potrebbe facilmente inviare e ricevere comandi su una porta seriale - in questo modo potresti programmare tutto il tuo codice IO in Arduino e scrivere il tuo codice "cervello" di livello superiore da eseguire sul netbook. Ad esempio, il Netbook potrebbe quindi inviare comandi come "Drive Forward For 2 Seconds" ad Arduino e Arduino potrebbe controllare i motori per eseguire l'operazione. Potresti chiederlo per la lettura dalla bussola o dal GPS e Arduino potrebbe restituire il valore.

Potresti anche avere il tuo codice "cervello" che monitora la porta seriale per qualsiasi dato che Arduino volesse inviare, ad esempio, se stava guidando in avanti e un sensore del paraurti rileva una collisione, potrebbe inviare un comando "Collision" al cervello e il cervello potrebbe decidere cosa fare al riguardo.

L'enorme vantaggio dell'utilizzo un netbook sarebbe la capacità di visualizzare informazioni diagnostiche e di debug sul suo LCD. Provenendo da un background di programmazione del PC, trovo che il debug di un Arduino senza feedback visivo sia davvero molto complicato.

Anche Arduino otterrebbe la sua potenza dal Netbook, il che significa che devi solo fornire una fonte di alimentazione separata per i motori / servi.

vicatcu
2010-08-26 22:22:01 UTC
view on stackexchange narkive permalink

Forse un Arduino più un intero gruppo di Shield, o più Arduino e più Shield che comunicano tra loro (in modalità wireless o in altro modo ...). Tutto è possibile :)

finnw
2011-01-13 08:29:34 UTC
view on stackexchange narkive permalink

Considera un modulo ESMini in combinazione con un Arduino. A 95x55 mm non dovresti avere problemi a inserirlo nel busto o forse anche nella testa di un piccolo robot umanoide, e ha la potenza di elaborazione di un netbook di fascia bassa.



Questa domanda e risposta è stata tradotta automaticamente dalla lingua inglese. Il contenuto originale è disponibile su stackexchange, che ringraziamo per la licenza cc by-sa 2.0 con cui è distribuito.
Loading...