Это касается оборудования, которое мало весит, потому что ходовой робот (размером с толстую кошку, 6 ног с 3 степенями свободы) должен носить его с собой. Из-за этого хождения потребуется много тригонометрии (я использую матричную математику или нет, я еще не уверен), и вот откуда этот вопрос.
PIC, Arduino или дешевый AVR не достаточно быстр, чтобы рассчитать все 100 в секунду и помнить такие вещи, как инерция и избегание препятствий, или даже грубые пути / походки.
План А - нести мозг роботу. Будь то микропроцессор, микро-ITX, неттоп или другие; Что такое эффективное оборудование для быстрой тригонометрии / математики?
Я искал в Интернете и ожидал узнать о микроконтроллерах AVR, x86 или ARM, специализирующихся на этом, но не повезло.
План B состоит в том, чтобы подключить машину x86 через WiFi для выполнения тяжелой работы. Также отлично подходит для создания прототипов, но я бы хотел, чтобы это в конечном итоге было перенесено на план А, когда аппаратное обеспечение уменьшилось. Но даже тогда, какой процессор настольного компьютера может сделать тригонометрию быстрее всего?
План C состоит в том, чтобы распределить нагрузку и иметь по одному энергоэффективному микроконтроллеру / ядру для каждой ветви, хотя это не лучшее решение по многим причинам, мне нравится его расширяемость.
Я еще не определился с используемым языком и / или библиотекой, но предпочитаю Pascal и C ++.
(предложения для более подходящих тегов приветствуются, я новичок здесь)
источник
Ответы:
Не похоже, что ваше приложение действительно требует значительных вычислительных ресурсов. Например, dsPIC может выполнить инструкцию 400 k для каждой из ваших итераций. Это много. Однако будет полезно иметь хорошие возможности ввода / вывода низкого уровня, генераторы ШИМ, таймеры и тому подобное.
Синус и косинус на самом деле не так сложно сделать в целочисленной машине, такой как dsPIC. Я сделал это несколько раз сам. Хитрость заключается в том, чтобы выбрать правильное представление для углов. Радианы могут быть хороши с теоретической точки зрения, но неудобны в вычислительном отношении. Спад искусственный и просто глупый. Используйте весь диапазон значений целого размера вашего компьютера, чтобы представить один полный оборот. Например, на dsPIC, который является 16-разрядным процессором, один полный оборот составляет 65536 отсчетов, что намного больше точности и разрешения, чем нужно для управления роботом или которое вы можете измерить в любом случае.
Одним из преимуществ этого представления является то, что все переносы происходят автоматически только из-за того, как целые числа без знака складываются и вычитаются. Другое существенное преимущество состоит в том, что это представление особенно хорошо подходит для использования таблиц поиска синусов и косинусов. Вам нужно только хранить 1/4 цикла. Два верхних бита угла указывают, в каком квадранте вы находитесь, где указывается, нужно ли индексировать таблицу вперед или назад, а также отрицать результат или нет. Следующие N младших битов используются для индексации в таблице, при этом таблица имеет 2 N сегментов (2 N +1 баллов). Обратите внимание, что индексирование в таблицу в обратном направлении просто дополняет биты индекса таблицы.
Вы можете дать столу достаточно очков, чтобы выбрать наиболее подходящий ответ. Например, если таблица имеет 1024 сегмента, то синус и косинус будут вычислены с точностью до 1/4096 круга. Этого будет достаточно для управления роботом. Если вы хотите большей точности, вы можете либо увеличить таблицу, либо использовать оставшиеся младшие биты угла для линейной интерполяции между соседними записями таблицы.
В любом случае, суть в том, что ваши требования к этому процессору не соответствуют заявленной проблеме. Я бы, вероятно, использовал dsPIC33F. Это, безусловно, небольшой, легкий вес и гораздо более энергоэффективный, чем полноценный вычислительный процесс общего назначения, такой как x86 на одноплатном компьютере.
источник
Вы собираетесь иметь дело с большим количеством входных сигналов. Вам не обязательно нужен процессор с высокой пропускной способностью; много сигналов могут обрабатываться параллельно. Это типичная территория DSP. Конечно, вам нужна общая функциональность процессора. Это не проблема. Есть много процессоров со встроенными DSP.
Типичный дизайн чипа для таких приложений - Cortex-M4. Это идет с интегрированным DSP, и версии -M4F также имеют FPU. В этом может не быть необходимости, тригонометрия может быть легко выполнена в математике с фиксированной точкой.
источник
Несколько замечаний:
Вам не нужно обрабатывать тригонометрические операции на том же процессоре, который выполняет обход препятствий. Вы можете разделить задачи между двумя микроконтроллерами и использовать протокол связи, чтобы заставить их говорить.
Для эксперимента я реализовал алгоритм AHRS с фильтром Калмана в микроконтроллере ARM Cortex M0 (это был STM32, точно не помню остальных, но я думаю, что это было 32 МГц), и используя математику с фиксированной точкой, я мог выполнить это около 40 образцов / секунду. С более быстрым контроллером вы сможете легко его переносить, и, конечно, вы можете попробовать FPGA или DSP.
Я бы сказал, что управление ногами не требует интенсивной работы процессора, и вы можете управлять всеми ногами вместе, может быть, отдельно от операций тригонометрии и обхода препятствий (см. 1)
источник
Тригонометрия хитрая, но есть ярлыки. Если вам не хватает вычислительной мощности, рассмотрите алгоритм CORDIC.
Это в основном таблица значений для [например] синуса. Углы могут быть в градусах, радианах, как угодно. Дело в том, что SINE этих значений составляет 1/2 (0,5), 1/4 (0,25), 1/8, 1/16 ..... до любой доли градуса, которую может использовать ваш робот.
Введите свой угол, вычтите первое значение таблицы, установите свой результат на первый результат (0,5). Если, вычитая, ваш угол стал отрицательным, тогда ДОБАВЬТЕ следующее значение (и вычтите 0,25). В противном случае продолжайте вычитать углы и складывать результаты.
Когда вы доберетесь до конца стола, все, что вы сделали, это сложили и вычли, но вы очень близко. Есть последний «фактор скрипки», на который нужно умножиться.
Точность [и скорость] результата зависит от размера [и разрешения] таблицы соответствия.
источник
Вы можете рассмотреть возможность использования платы Raspberry Pi, которая работает под управлением универсальной системы GNU / Linux. Raspberry Pi имеет несколько контактов GPIO, которые можно использовать для подключения сервоприводов роботов или плат расширения.
http://www.youtube.com/watch?v=RuYLTudcOaM
Модель A Raspberry Pi может выполнять до 24 вычислений GFLOP общего назначения с плавающей запятой с использованием своего графического процессора с использованием OpenGL ES 2, сохраняя при этом энергопотребление 2,5 Вт.
http://elinux.org/RPi_Hardware
Пример: установка робота с питанием от батареи, реализованная с использованием Raspberry Pi.
http://www.homofaciens.de/technics-robots-R3-construction_en_navion.htm
Пример 2: робот на 6 ногах, управляемый малиновым пи:
http://www.youtube.com/watch?v=Yhv43H5Omfc
Пример 3: самобалансирующийся робот с двумя колесами и перевернутым маятником, управляемый малиновым пи:
http://www.youtube.com/watch?v=n-noFwc23y0
источник
Для робота на ножках вы можете создать несколько заранее определенных последовательностей движений ног и «сыграть их». Устранение препятствий в режиме реального времени может быть сделано с помощью легкой
fuzzy logic
реализации, где все снова в формате таблицы, и все, что вам нужно сделать, это выбрать из него правильное значение и использовать его дляdefuzzyfication
процесса.Все может быть сделано в C на более быстром процессоре, как
ARM7
. Я попробовалAVR
и потерпел неудачу, потратив много времени на преобразование всего вfixed point arithmetics
.источник
Платформа Texas Instruments Stellaris по умолчанию имеет блок с плавающей запятой. Не уверен, достаточно ли быстродействующего контроллера ARM с тактовой частотой 80 МГц для вашего приложения, но плата разработки LaunchPad довольно дешева: http://www.ti.com/ww/en/launchpad/stellaris_head.html
Он программируется через USB, бесплатные наборы инструментов доступны как минимум для Windows и Linux, имеют размеры около 4 × 6 см и имеют более 30 контактов GPIO (если я правильно посчитал).
источник
Вы можете встроить плату процессора x86 power pc в ваше роботизированное приложение с помощью AVR, чтобы управлять приводами робота как интерфейсной карты. Самое быстрое и дешевое решение вашей проблемы. Но да, вам придется много путаться в архитектуре x86, но, к счастью, вы можете понять много кода из кодов ОС с открытым исходным кодом. (Если ваша механическая конструкция может выдержать этот вес)
источник