Quanto è computazionalmente potente una scheda Arduino Uno?


8

Cosa può realmente fare una scheda Arduino come Uno? Ovviamente cose semplici come controllare un paio di servi è molto facile. Tuttavia, non penso che una scheda Uno sarebbe in grado di preformare SLAM 3D in tempo reale dai dati della nuvola di punti raccolti da un sensore Kinect su un robot mobile, giusto? Se il robot avesse una certa velocità, l'Arduino non sarebbe in grado di tenere il passo, giusto? Potrebbe fare SLAM 2D durante lo spostamento ed essere in grado di tenere il passo? Che ne dici di prendere 1/10 dei punti dal sensore Kinect ed elaborare solo quelli?

Fondamentalmente, quali sono alcuni esempi delle limitazioni delle risorse di una tale scheda Arduino?

Risposte:


6

Dipende dal numero di punti di riferimento nella mappa delle caratteristiche e da quanto tempo sei disposto a investire per ottimizzare la velocità dell'algoritmo e da un numero di altri parametri che potresti essere o meno in grado di controllare per una determinata applicazione.

Modifica: come esperimento mentale , penso che teoricamente sarebbe abbastanza potente per eseguire SLAM quasi in tempo reale estremamente semplice in un ambiente molto artificioso, come il centro di una palestra con alcuni coni definiti. Potrebbe richiedere un'unica linea di scansione da Kinect e aggiornare una mappa interna 2D a bassa risoluzione, aggiornandola periodicamente (diciamo ogni 10 secondi).

La RAM 2K di Uno sarebbe probabilmente un rompicapo, ma la Mega potrebbe avere abbastanza (8K) e c'è un hack per aggiornarlo a 520K.

In pratica, fare calcoli con matrici in virgola mobile su un processore a 8 bit non è una buona idea.


Ok, quindi stai dicendo che anche provare 2D SLAM con Arduino sarà un po 'difficile. Grazie.
Golmschenk,

6

L'Arduino è sempre stato terribilmente sottodimensionato.

È possibile ottenere una pila di stm discovery o altre schede di sviluppo basate su ARM al prezzo di un singolo arduino, e ognuna di quelle schede avrà ordini di grandezza più potenti dell'arduino.

L'ubiquità dell'arduino ha anche ostacolato molti progetti che avrebbero dovuto conoscere meglio. La stabilizzazione del quadrotore e l'esecuzione del codice g in stile Reprap sono due aree principali in cui l'arduino è stato forzato ben oltre le sue capacità e lo dimostra. (Il progetto ardrupilot ha bisogno di tre arduinos.)

Speriamo che le cose da ragazzi / due / leaflabs aiuteranno a rendere lo sviluppo ARM più amichevole. Molti dei progetti più recenti / migliori come smoothie, openpilot ecc hanno anche fatto il salto.


1
D'accordo, senza dubbio! Ho comprato un semplice braccio robotico in un vecchio negozio di elettronica, vintage 1980. Il controller ha 19MHz, rispetto ai 16 di Arduino e 3 volte la RAM! Dal 1980! La cosa triste è che le persone rispondono al fascino della piccola lavagna blu. Arduino è molto simile a Java: è fantastico per quello che è, ma sottodimensionato e abusato oltre ogni motivo.
Chris,

@Chris, In tutta onestà, dubito che il braccio robotico sia costato solo $ 24 nel 1980 (è difficile persino oggi trovarne uno così economico che non sia spazzatura completa). Dubito anche che disponesse di un enorme numero di utenti della community e di un'enorme libreria di software gratuito. C'è di più nel valore dell'hardware oltre alla velocità di clock e alla memoria. Molti prodotti hanno fallito perché erano troppo cari mentre erano sottoutilizzati, anche se tecnicamente superiori.
Cerin,

4

Le specifiche non elaborate sui microcontrollori di Arduino elencano velocità di clock fino a 16 o 20 MHz - intorno alla velocità di un computer Intel 386 della metà degli anni '90.

Sembra promettente, fino a quando non si considera il fatto che non supporta nativamente la matematica in virgola mobile: la misurazione " FLOPS " con cui vengono confrontate la maggior parte delle CPU. Ho visto alcune demo di Arduino che calcolano la velocità dell'Arduino a circa 60 kFLOPS, mentre l'Intel 386 a 20 MHz fa qualcosa come 170 kFLOPS (secondo questa pagina ).

Inoltre, va notato che Arduino esegue la matematica a 8 bit e il 386 sta eseguendo la matematica a 16 e 32 bit. Una scheda DSP potrebbe essere più adatta a quel tipo di acquisizione dei dati, ma non sono in grado di consigliarvi lì.

Far funzionare quel codice in un ambiente così limitato come Arduino potrebbe essere possibile, ma ci vorrà molta ottimizzazione. Saresti meglio servito usando una CPU più potente per implementare quegli algoritmi; assicurarsi che funzionino sulla potente CPU, quindi provare a ottimizzare per la CPU debole.


Ma devi ricordare che l'Apple II aveva una RAM 6502 (8 bit, 1 MHz) e 16 KB. AppleSoft BASIC era a virgola mobile e la sua "app killer" era il link VisiCalc . Puoi fare molto con hardware limitato, quando è tutto ciò che hai. (e l'intero settore è alle spalle)
Paul Williams,

1
Stai confrontando un microcontrollore con un microprocessore. 386 non ha un generatore hardware PWM a sei canali, un ADC, un comparatore analogico, i suoi due dispositivi destinati a due lavori diversi. Inoltre, se qualcuno ha bisogno di un elevato throughput in virgola mobile, utilizzerà probabilmente un'unità con FPU, ma ho realizzato molti progetti che non necessitano di virgola mobile, e in alcuni casi si tratta di una questione di ottimizzazione. L'ATMega passa quasi 20MIPS a 20Mhz mentre il 386 passa 9,9 MIPS a 33 MHz.
Diego C Nascimento,

1
Questa domanda riguarda SLAM, quindi FLOPS è l'unica metrica rilevante da utilizzare per confrontare queste 2 unità di elaborazione.
Ian

2

Al prezzo di un Arduino Uno o meno, un'alternativa recente è il Launchpad TI Stellaris a $ 12,99 (incluso FedEx in tutto il mondo): Arm Cortex M4 con un eccellente set di librerie integrato chiamato StellarisWare che risiede su ROM - quindi il tuo Flash e RAM rimangono liberi per l'uso dell'applicazione.

Potere computazionale enormemente maggiore dell'Arduino Uno, ma finora senza l'onnipresente partecipazione della comunità che Arduino ha raccolto.


1

È vero che Arduino ha iniziato a sembrare poco potente ora che le persone sono di Raspberry Pis, ma penso che dipenda più dall'applicazione. Mi piace l'Arduino perché il codice è davvero facile da scrivere, è davvero facile far lampeggiare un nuovo codice e davvero facile collegare nuovi sensori. Non lo userei per un'applicazione di visione come kinect o roba da webcam, ma può fare molto di più che parlare con i servi. Un buon esempio potrebbe essere un'applicazione di tipo segway; l'arduino è l'ideale per parlare con i sensori dell'accelerometro, fare un po 'di matematica spaziale 3D e quindi parlare con i servi per mantenere le cose in equilibrio.


Penso che sia importante qui confrontare le mele con le mele qui e confrontare il chip ATMega di Uno con altri microcontrollori. Il ARM da 700 MHz nel Raspberry Pi è un'arancia. Detto questo, i chip ARM Cortex-M3 nell'Arduino Due / LeafLabs Maple e i chip PIC32 nelle schede Digilent chipKIT ecc. Tutti fanno esplodere completamente Uno dall'acqua computazionalmente con lo stesso ambiente di programmazione.
Joe Baker,
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.