Насколько вычислительно мощна плата Arduino Uno?

8

Что может сделать доска Arduino, такая как Uno? Конечно, простые вещи, такие как управление парой сервоприводов, для него очень просты. Тем не менее, я не думаю, что плата Uno сможет предварительно формировать 3D SLAM в реальном времени из данных облака точек, собранных с датчика Kinect на мобильном роботе, верно? Если бы у робота была какая-то скорость, Arduino не смог бы не отставать, верно? Может ли он делать 2D SLAM во время движения и быть в курсе? Как насчет получения 1/10 точек от датчика Kinect и обработки только тех?

В основном, каковы некоторые примеры ресурсных ограничений такой платы Arduino?

golmschenk
источник

Ответы:

6

Это зависит от количества ориентиров на карте объектов и от того, сколько времени вы готовы потратить на настройку алгоритма на скорость, а также от ряда других параметров, которые вы можете или не сможете контролировать для данного приложения.

Редактировать: как мысленный эксперимент , я думаю, что теоретически он был бы достаточно мощным, чтобы сделать чрезвычайно простой SLAM почти в реальном времени в очень искусственной среде, такой как центр спортивного зала с несколькими установленными конусами. Это может занять одну строку сканирования из Kinect и обновить внутреннюю 2D-карту низкого разрешения с периодическим обновлением (скажем, каждые 10 секунд).

Оперативная память Uno на 2 Кбайт, вероятно, станет решающим фактором, но Mega может хватить (8 Кб), и есть возможность взломать ее до 520 Кб.

На практике выполнение вычислений матрицы с плавающей запятой на 8-битном процессоре не является хорошей идеей.

Пол Уильямс
источник
Итак, вы говорите, что даже попытка 2D SLAM с Arduino будет немного сложнее. Спасибо.
golmschenk
6

Arduino всегда был в подавленном состоянии.

Вы можете получить стек stm discovery или другую плату разработчика на основе ARM по цене одного Arduino, и каждая из этих плат будет на несколько порядков мощнее, чем Arduino.

Повсеместность Arduino также помешал многим проектам, которые должны были знать лучше. Стабилизация Quadrotor и выполнение g-кода в стиле Reprap - это две основные области, в которых arduino вышел далеко за пределы своих возможностей, и это видно. (Проекту ardrupilot нужны три ардуино.)

Надеюсь, что материал для подростков / due / leaflabs поможет сделать разработку ARM более дружественной. Многие из новых / лучших проектов, таких как смузи, openpilot и т. Д., Также совершили прыжок.

user65
источник
1
Договорились, без сомнения! Я купил простой роботизированный манипулятор в старом электронном магазине, винтаж 1980 года. Контроллер имеет частоту 19 МГц, по сравнению с 16 Arduino, и в 3 раза больше оперативной памяти! С 1980 года! Печально то, что люди реагируют на очарование крошечной синей доски. Arduino во многом похож на Java - круто, но оно недостаточно мощное и чрезмерное использование по любой причине.
Крис
@Chris, Честно говоря, я сомневаюсь, что роботизированная рука стоила всего $ 24 в 1980 году (даже сегодня трудно найти такую ​​дешевую, которая не является полным мусором). Я также сомневаюсь, что у него было огромное сообщество пользователей и огромная библиотека свободного программного обеспечения для него. В стоимости оборудования есть нечто большее, чем просто тактовая частота и память. Многие продукты потерпели неудачу, потому что они были переоценены при недостаточном использовании, даже если они были технически лучше.
Cerin
4

В сырье спецификации на микроконтроллеры в Arduino в скоростях список часы, достигающей 16 или 20 МГц - около скорости на 386 компьютере в середине 1990 - х годов Intel.

Это звучит многообещающе, пока вы не учтете тот факт, что он изначально не поддерживает математику с плавающей запятой - измерение « FLOPS », с помощью которого сравнивается большинство процессоров. Я видел несколько демоверсий Arduino, которые вычисляют скорость Arduino примерно при 60 кФЛОПС, тогда как Intel 386 на 20 МГц делает что-то вроде 170 кФЛОПС (согласно этой странице ).

Кроме того, следует отметить, что Arduino выполняет 8-битную математику, а 386 выполняет 16-битную и 32-битную математику. Плата DSP может быть более подходящей для такого рода сбора данных, но я не в состоянии посоветовать там.

Заставить этот код работать в такой ограниченной среде, как Arduino, возможно, но потребуется много оптимизации. Вы бы лучше обслужили, используя более мощный процессор для реализации этих алгоритмов; убедитесь, что они работают на мощном процессоре, а затем попытайтесь оптимизировать его для слабого процессора.

Ян
источник
Но вы должны помнить, что у Apple II было 6502 (8-бит, 1 МГц) и 16K RAM. AppleSoft BASIC был с плавающей запятой, а его «убийственным приложением» была ссылка VisiCalc . Вы можете многое сделать с ограниченным оборудованием, когда это все, что у вас есть. (и вся индустрия стоит за этим)
Пол Уильямс
1
Вы сравниваете микроконтроллер с микропроцессором. 386 не имеет шестиканального аппаратного генератора ШИМ, АЦП, аналогового компаратора, его два устройства предназначены для двух разных работ. Также, если кому-то нужна высокая пропускная способность с плавающей точкой, он, вероятно, будет использовать модуль с FPU, но я сделал много проектов, которые не нуждались в плавающей точке, и в некоторых случаях это вопрос оптимизации. ATMega работает со скоростью 20 Мбит / с на 20 МГц, а 386 - 9,9 Мбит / с на 33 МГц.
Диего С Насименто
1
Этот вопрос касается SLAM, поэтому FLOPS является единственной релевантной метрикой, используемой при сравнении этих двух блоков обработки.
Ян
2

По цене Arduino Uno или менее, недавняя альтернатива - TI Stellaris Launchpad за 12,99 $ (включая всемирную FedEx): Arm Cortex M4 с отличным встроенным набором библиотек под названием StellarisWare, который находится на ПЗУ - так что ваш Flash и ОЗУ остаются свободными для использования приложения.

Значительно большая вычислительная мощность, чем у Arduino Uno, но пока без повсеместного участия сообщества, которое Arduino собрал.

Аниндо Гош
источник
1

Это правда, что Arduino начинает выглядеть недостаточно сильным сейчас, когда люди от Raspberry Pis, но я думаю, что это зависит больше от приложения. Мне нравится arduino, потому что код действительно легко написать, действительно легко прошить новый код и действительно легко подключить новые датчики. Я бы не стал использовать его для таких приложений, как Kinect или веб-камера, но он может сделать гораздо больше, чем просто разговаривать с сервоприводами. Хорошим примером будет приложение типа Segway; Arduino идеально подходит для разговоров с датчиками акселерометра, выполнения трехмерной пространственной математики, а затем общения с сервоприводами для поддержания баланса.

LoveMeSomeCode
источник
Я думаю, что здесь важно сравнить яблоки с яблоками здесь и сравнить чип ATMega Uno с другими микроконтроллерами. 700 МГц ARM в Raspberry Pi - это апельсин. При этом чипы ARM Cortex-M3 в Arduino Due / LeafLabs Maple и чипы PIC32 в платах Digilent chipKIT и т. Д. Полностью выдувают Uno из воды в вычислительном отношении в одной и той же среде программирования.
Джо Бейкер