Seberapa kuat kemampuan papan Arduino Uno?

8

Apa yang bisa dilakukan oleh dewan Arduino seperti Uno? Tentu saja hal-hal sederhana seperti mengendalikan pasangan servos sangat mudah untuk itu. Namun, saya tidak berpikir papan Uno akan dapat membentuk sebelumnya 3D SLAM real-time dari data cloud point yang dikumpulkan dari sensor Kinect pada robot seluler, bukan? Jika robot memiliki kecepatan sama sekali, Arduino tidak akan bisa mengikutinya, benar? Mungkinkah melakukan SLAM 2D sambil bergerak dan dapat mengikuti? Bagaimana dengan mengambil 1/10 poin dari sensor Kinect dan hanya memprosesnya?

Pada dasarnya, apa saja contoh keterbatasan sumber daya dari dewan Arduino seperti itu?

golmschenk
sumber

Jawaban:

6

Itu tergantung - pada jumlah tengara di peta fitur, dan berapa banyak waktu yang Anda ingin investasikan untuk menyetel algoritme untuk kecepatan, dan sejumlah parameter lain yang mungkin dapat atau tidak bisa Anda kendalikan untuk aplikasi yang diberikan.

Sunting: Sebagai percobaan pemikiran , saya pikir secara teoritis akan cukup kuat untuk melakukan SLAM dekat-waktu-nyata yang sangat sederhana dalam lingkungan yang sangat dibuat-buat, seperti pusat lantai olahraga dengan beberapa kerucut yang ditata. Ini dapat mengambil satu garis pindai dari Kinect dan memperbarui peta internal 2D beresolusi rendah, memperbarui secara berkala (misalnya setiap 10 detik).

2K RAM Uno mungkin akan menjadi pemecah kesepakatan, tetapi Mega mungkin sudah cukup (8K) dan ada peretasan untuk memutakhirkannya menjadi 520K.

Dalam praktiknya, melakukan perhitungan matriks titik mengambang pada prosesor 8-bit bukanlah ide yang baik.

Paul Williams
sumber
Ok, jadi Anda mengatakan bahwa bahkan mencoba 2D SLAM dengan Arduino akan menjadi agak sulit. Terima kasih.
golmschenk
6

Arduino selalu sangat lemah.

Anda bisa mendapatkan setumpuk penemuan stm atau papan dev berbasis ARM lainnya dengan harga arduino tunggal, dan masing-masing papan tersebut akan menjadi perintah yang besarnya lebih kuat daripada arduino.

Di mana-mana arduino juga telah menghambat banyak proyek yang seharusnya lebih dikenal. Stabilisasi quadrotor dan gaya g-code Reprap dieksekusi adalah dua area utama di mana Arduino telah dipaksa jauh melampaui kemampuannya dan itu menunjukkan. (Proyek ardrupilot membutuhkan tiga arduinos.)

Semoga hal belly / karena / leaflab akan membantu membuat pengembangan ARM lebih ramah. Banyak proyek yang lebih baru / lebih baik seperti smoothie, openpilot dll juga telah membuat lompatan.

pengguna65
sumber
1
Setuju, tanpa keraguan! Saya membeli lengan robot sederhana di toko elektronik tua, vintage 1980. Pengontrolnya memiliki 19MHz, dibandingkan dengan Arduino 16, dan 3X RAM! Dari 1980! Yang menyedihkan adalah, orang merespons daya pikat papan biru kecil. Arduino banyak seperti Jawa - keren untuk apa itu, tetapi kurang bertenaga dan terlalu banyak digunakan tanpa alasan.
Chris
@ Chris, Dalam semua keadilan, saya ragu lengan robot hanya berharga $ 24 pada tahun 1980 (sulit bahkan hari ini untuk menemukan yang murah yang tidak sepenuhnya sampah). Saya juga ragu itu memiliki pengguna komunitas besar dan perpustakaan besar perangkat lunak gratis yang tersedia untuk itu. Nilai hardware lebih dari sekadar kecepatan dan memori jam. Banyak produk yang gagal karena harganya terlalu mahal saat kurang dimanfaatkan, walaupun secara teknis mereka lebih unggul.
Cerin
4

The spesifikasi mentah pada mikrokontroler Arduino ini kecepatan daftar jam setinggi 16 atau 20 MHz - sekitar kecepatan sebuah pertengahan 1990-an Intel 386 komputer.

Kedengarannya menjanjikan, sampai Anda mempertimbangkan fakta bahwa itu tidak mendukung matematika floating point - pengukuran " FLOPS " di mana sebagian besar CPU dibandingkan. Saya telah melihat beberapa demo Arduino yang menghitung kecepatan Arduino sekitar 60 kFLOPS, sedangkan Intel 386 pada 20 MHz melakukan sesuatu seperti 170 kFLOPS (menurut halaman ini ).

Juga, harus dicatat bahwa Arduino melakukan matematika 8-bit dan 386 melakukan matematika 16-bit dan 32-bit. Papan DSP mungkin lebih cocok untuk akuisisi data semacam itu, tetapi saya tidak dapat memberi saran di sana.

Membuat kode itu berfungsi dalam lingkungan yang terbatas seperti Arduino mungkin saja terjadi, tetapi akan membutuhkan banyak optimasi. Anda akan lebih baik dilayani dengan menggunakan CPU yang lebih kuat untuk mengimplementasikan algoritma tersebut; pastikan mereka bekerja pada CPU yang kuat, kemudian coba optimalkan untuk CPU yang lemah.

Ian
sumber
Tetapi Anda harus ingat, Apple II memiliki 6502 (8-bit, 1MHz) dan 16K RAM. AppleSoft BASIC adalah floating point, dan "aplikasi pembunuh" -nya adalah tautan VisiCalc . Anda dapat melakukan banyak hal dengan perangkat keras terbatas, hanya itu yang Anda punya. (dan seluruh industri ada di belakangnya)
Paul Williams
1
Anda membandingkan mikrokontroler dengan mikroprosesor. 386 tidak memiliki generator perangkat keras PWM enam saluran, ADC, pembanding analog, dua perangkatnya dimaksudkan untuk dua karya yang berbeda. Juga jika seseorang membutuhkan throughput titik float tinggi, mereka akan menggunakan unit yang mungkin dengan FPU, tetapi saya membuat banyak proyek yang tidak membutuhkan titik float, dan dalam beberapa kasus ini adalah masalah optimasi. ATMega berjalan hampir 20MIPS pada 20Mhz sedangkan 386 berjalan 9,9 MIPS pada 33 MHz.
Diego C Nascimento
1
Pertanyaan ini adalah tentang SLAM, jadi FLOPS adalah satu-satunya metrik yang relevan untuk digunakan dalam membandingkan 2 unit pemrosesan ini.
Ian
2

Untuk harga Arduino Uno, atau kurang, alternatif terbaru adalah TI Stellaris Launchpad seharga $ 12,99 (termasuk FedEx di seluruh dunia): Arm Cortex M4 dengan perangkat perpustakaan built-in yang sangat baik yang disebut StellarisWare yang berada pada ROM - jadi Flash Anda dan RAM tetap gratis untuk penggunaan aplikasi.

Kekuatan komputasi jauh lebih tinggi daripada Arduino Uno, tetapi sejauh ini tanpa partisipasi masyarakat di mana-mana yang telah dikumpulkan Arduino.

Anindo Ghosh
sumber
1

Memang benar bahwa Arduino mulai terlihat kurang bertenaga sekarang karena orang oleh Raspberry Pis, tapi saya pikir itu lebih tergantung pada aplikasi. Saya suka Arduino karena kodenya sangat mudah untuk ditulis, sangat mudah untuk mem-flash kode baru, dan sangat mudah untuk menghubungkan sensor baru. Saya tidak akan menggunakannya untuk aplikasi penglihatan seperti kamera kinect atau webcam, tetapi dapat melakukan jauh lebih banyak daripada berbicara dengan servos. Contoh yang baik adalah aplikasi tipe segway; Arduino sangat ideal untuk berbicara dengan sensor accelerometer, melakukan beberapa matematika spasial 3D, dan kemudian berbicara dengan servos untuk menjaga semuanya seimbang.

LoveMeSomeCode
sumber
Saya pikir ini penting di sini untuk membandingkan apel dengan apel di sini dan membandingkan chip ATMega Uno dengan mikrokontroler lainnya. ARM 700MHz di Raspberry Pi berwarna oranye. Yang sedang berkata, chip ARM Cortex-M3 di Arduino Due / LeafLabs Maple dan chip PIC32 di papan Digilent chipKIT dll semua benar-benar mengeluarkan Uno dari air secara komputasi dengan lingkungan pemrograman yang sama.
Joe Baker