Господа! У меня уже две различные организации спрашивали совета про оборудование лаборатории роботики. Причем не для младших детей, а для старших школьников + младших студентов, с возможностью расширения до старших студентов и исследовательских проектов. То есть ожидается, что в лаборатории будут использоваться профессиональные средства разработки, а не упрощенные, наподобие Лего и недостаточно гибкого Ардуино. Кроме этого, ожидается, что роботы будут делать что-нибудь умное, с распознаванием образов и ситуаций, чтобы можно было бы назвать «лаборатория робототехники и интеллектуальных систем».
По этому поводу я хочу устроить обсуждение:
1. Ниже я перечислю несколько платформ, которые я собираюсь привезти в августе в Казахстан и в октябре-ноябре в Россию и Украину. Я знаю, что на большинстве из этих платформ кто-нибудь да построил робота. Но каких из этих платформ подходят для роботики с вашей точки зрения?
2. У меня не очень много опыта с моторчиками и другими активаторами. Где и что бы вы купили для преподавания робототехники (как специализации программирования встроенных систем)?
Восемь платформ у меня на руках:
1. Onion Omega на основе ядра MIPS 24K, которое балансирует приемлемую производительность при низком энергопотреблении, и при этом на нем может работать Linux (в MIPS 24K 8 стадий in-order, конвейера, есть TLB MMU, кэши, предсказатель переходов):
2. VoCore — еще более миниатюрный линуксный компьютер с WiFi на MIPS 24K:
3. Unwired One — спроектированный в России линуксный компьютер на MIPS 24K
4. MIPS Creator ci20 — более высокопроизводительный (но и более энергопотребляющий) компьютер с MIPS32 Ingenic CPU и PowerVR GPU:
5. Digilent chipKIT Wi-FIRE, микроконтроллерная плата с Microchip PIC32MZ EF на основе ядра MIPS M5150. В том же классе, что и ARM Cortex M4, но мощнее — с кэшами, TLB MMU, FPU и виртуализацией для секьюрити:
6. Olimex PIC32-EMZ64, более дешевая плата с Microchip PIC32MZ EF. Без WiFi, но зато с экранчиком и звуковым выходом:
7. Новинка сезона — встроенный компьютер MIPS Creator ci40 с ядром MIPS interAptiv c хардверной поддержкой многопоточности на каждом из ядер. Хотя процессорных ядер два, но многоядерный Линукс воспринимает их как четыре, так как каждое из двух ядер внутри обрабатывает два потока команд — hardware-supported multithreading. Пока один tread ждет во время промаха кэша, другой может работать — этим достигается бОльшая загрузка процессора. В конечном итоге, такая структура приводит к экономии энергопотребления по сравнению с системами с бОльшим количеством однопоточных ядер:
Также замечу что можно построить робота на российском микропроцессоре Baikal-T с мощным двухядерным out-of-order кластером процессорных ядер MIPS P5600, и плата с этим процессором есть у меня на руках, но эта плата пока недостаточно массовая, чтобы использовать ее в качестве роботехнической платформы в большом количестве вузов:
Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.
Комментарии (36)
syslinux
17.06.2016 11:12+3А почему не рассматриваете Raspberry Pi? Соотношение цена/качество/возможности на мой взгляд очень даже.
YuriPanchul
17.06.2016 11:28У меня несколько другая задача. Я не пытаюсь составить каталог всех возможных устройств для роботики. У меня есть платформы, с которыми я умею работать (в создании некоторых из них я принимал участие), и я пытаюсь понять, какие из этих платформ пригодны для того, что у меня спросили (обучение роботике), а какие — нет. Я ожидаю комменты типа «платформа XYZ для роботики непригодна, так как ее производительность/память не позволит выполнять такой-то алгоритм распознавания, а среди периферии нет интерфейса к такому-то классу активаторов».
mmMike
17.06.2016 12:29+3Может я ошибаюсь, но мне показалось что у Вас в статье как то нечетко сформулированы требования.
Распознавание образов и общее управление — это одна задача решаемая одним классом "платформ".
Управление (сервоприводами например) и сбор информации с датчиков (зачастую не слишком "умных") — это совершенно другая задача решаемая другим классом "платформ" (Контроллеры).
Все Вами перечисленные платформы — это смесь того и другого (ну типа как Cortex Ax и Cortex Mx вместе смешать и сравнивать).
Мне кажется нужно как то разделить задачи. И под каждую свою платформу выбирать.
А с распознаванием образов с использованием OpenCV в реальном времени, по моему, разве что MIPS Creator ci20 справится… (возможно… но не уверен).
YuriPanchul
17.06.2016 19:02Интересное соображение. А что сейчас вкладывается в словосочетание «интеллектуальная система»?
mmMike
20.06.2016 06:55несколько поздновато отвечаю (не смотрел почту на выходных)…
Мне кажется (лично мне), что гораздо практичнее делать распределенную систему. Первичной обработкой данных и управлением железом занимаются контроллеры, а задачей принятия решения и сложной обработкой занимается другой модуль.
По крайней мере, именно по такому принципу я делал (чисто поиграться) робота (колесное шасси + манипулятор + куча датчиков).
Плата гироскопа и акселерометра — свой контроллер (ATMega8). Сканер (шаговый двигатель + ультразвуковой дальномер) + управление ШИМ сервомашинок манипулятора + ШИМ 4-х двигателей колес + шаговые двигателе обзорной видеокамеры — STM32F103.
А общее управление через отдельный протокол (радиоканал) — программа на Linux с расчетом, что бы можно было Малину прямо на борт поставить… Управление отдельными (физически отдельными) модулями со своими контроллерами по относительно высокоуровневому API.
Ну так просто проще. Все же управлять в режиме реального времени кучей периферии на низком уровне под Linux — не реально (как минимум сложнее чем на голом контроллере). A написать специализированное ПО в виде "черного ящика" с заданным API и функционалом под конкретный контроллер просто. Контроллеры для этого и предназначены.
А под Linux удобно делать/отлаживать общее управление и сложные задачи с использованием готовых библиотек типа OpenCV.
А что сейчас вкладывается в словосочетание «интеллектуальная система»?
У меня такое ощущение, что все подразумевают что то, чуть чуть да свое.
Предпочитаю не теоретизировать, а решать конкретные задачи.
Costic
17.06.2016 21:32+2Почти все платы не подходят для робототехники, Linux не обеспечит real-time. Делать упор на производительность процессора и память — это не то что нужно. Нужны SPI, I2C, UART, USB HS, RF, GPIO и толерантность к 3/5 В. Выводы должны держать ток хотя бы 15мА. DMA контроллеры для периферии. Желательно параллельная шина 8-32 бит (для камеры, памяти, экран). Ну, и всегда помнить про силовую нагрузку двигателями + датчики (обратная связь).
Вот Intel в свои последние микропроцессоры для DIY встраивает гироскоп/аккс/компас + термометр.
Digilent chipKIT Wi-FIRE, микроконтроллерная плата с Microchip PIC32MZ EF кажется лучшим кандидатом.YuriPanchul
17.06.2016 23:10-1Спасибо. Ну как контроллер с RTOS и SPI, I2C и DMA плата Digilent chipKIT Wi-FIRE лучше всего в списке. Но есть в робототехнике всякие не-real-time задачи сложного семантического распознавания образов, которые можно было бы решать на более высокопроизводительном встроенном компьютере типа MIPS Creator ci20? Типа чтобы сделать связку из Digilent chipKIT Wi-FIRE и MIPS Creator ci20?
Costic
18.06.2016 15:09+1Я понимаю, что вы продвигаете MIPS, и мне как программисту не очень важно, что внутри микропроцессора и какой набор инструкций — MIPS, 8051, ARM. Всё равно на С (С++) пишется всё. Вопрос упирается в среду разработки, библиотеки и сообщество, как тут верно заметили. И в этом плане Atmel, RPi и STM32 лидируют.
Насколько мне известно, в учебный процесс у нас в стране пошёл Milandr 1986. Это достойный чип, который избавился от «детских болезней». Я с ним работал, хорошее впечатление, периферия, толерантность, ADC/DAC, и платы сейчас в Зеленограде доступны по 4-5 тыс.р. Но для «самоделкиных» STM32 за 200р. вне конкуренции. Смогут ваши платы в 1000р. уложиться?
Насчёт идеи раздельной обработки данных. Сейчас вроде только такой подход и есть. Но вот я знаю, Toshiba сделала на Cortex-M платы с распознаванием образов и, естественно, с периферией и софтом. Т.е. то что другие на ПЛИС делают, Toshiba реализовала на Cortex-M. Я думаю, если Cortex-M7 (или ваш MIPS 32) подешевеет и получит больше памяти и пойдёт в народ, то мы увидим много новых проектов. Хотя мне больше 8051 по душе.microspace
18.06.2016 17:38Можно ссылку на платы с распознаванием образов от Toshiba? Это случаем не проект OpenMV?
Costic
18.06.2016 18:55Не могу утверждать что там за проекты. Год назад пытался войти с ними в контакт, не вышло. Вижу отдельно их линейку процессоров, обратите внимание на вторую часть, там где Cortex-R. Capricorn-Bt1, но плату на нём не вижу. Возможно, я напутал с распознаванием образов, прошу прощения, вижу у Toshiba отдельный процессор этим занят.
http://toshiba.semicon-storage.com/eu/product/automotive/display-controller/lineup.html
http://toshiba.semicon-storage.com/eu/product/automotive/micro.html
YuriPanchul
18.06.2016 18:32Платы с STM32 безусловно очень дешевы и для рынка «самоделкиных» против них идти трудно. Но рынок образовательных программ для университетов — это не то же самое, что и рынка «самоделкиных». Например, покажите мне аналог курса Connected MCU, не на на основе Microchip PIC32MZ EF, а на основе STM32. Курс Connected MCU (см. https://habrahabr.ru/post/282001/ ) создан для обучения программированию микроконтроллеров и содержит не только традиционное мигание лампочками и соединения с простой периферией, но и материалы про RTOS, элементы микроархитектуры встроенного процессора и лабы по наблюдению поведения кэшей.
lingvo
17.06.2016 23:10I/O надо делать на EtherCAT — там очень неплохие характеристики по задержкам и пропускной способности.
А платформу надо брать ту, для которой есть хороший рантайм для Matlab/Simulink. Так получите наилучшую среду для разработки и тестирования алгоритмов управления роботами.YuriPanchul
17.06.2016 23:11Это очень интересно. А можете показать пример использования Matlab/Simulink для роботов?
lingvo
18.06.2016 00:26Да пожалуйста. Можете начать отсюда: http://uk.mathworks.com/discovery/robot-programming.html
Следует отметить, что робот, это всего лишь частный процесс, для которого требуется интеллектуальная система управления. И для создания таких и более сложных систем Матлаб применяется уже достаточно давно.
microspace
18.06.2016 09:31Не могли бы вы привести пару примеров плат с хорошим райнатаймом для Matlab/Simulink?
donvictorio
18.06.2016 18:24+2EtherCAT стоит хороших денег ввиду лицензирования технологии. На этой ниве, если уж брать во внимание промышленные протоколы, то вполне себе можно CanOpen освоить. Он, конечно, не для трансляций FullHD контента, но свою роль выполняет практически идеально.
Соглашусь с матлабом и добавлю LabView.
SinsI
18.06.2016 04:40Если оно для обучения — то надо быть готовым к тому, что *каждый* ученик сломает пару-тройку в ходе экспериментов. Так что подходит или нет — определяется, в первую очередь, бюджетом.
TimID
18.06.2016 09:53+1И всё же для «обучения», то есть научения ребят, главнейший критерий — сформированное Сообщество. У Raspberry Pi — оно очень большое. А это значит, что ребята смогут находить примеры, просить совета и пояснений в Сети.
Сколько раз я видел роботов, у которых «зрение» работает на «большом компьютере», а логика самого робота (принятие решений по движению) — на Arduino. Поскольку примеры ребята нашли именно под «старый» восьмибитный контроллер…
В общем — начинайте выбирать с Сообщества — где больше, тот контроллер лучше для Вашей задачи.
Roboserv
18.06.2016 18:24А ROS на все эти платы можно установить? Ибо платформа без ROS для серьезной робототехники бесполезна.
donvictorio
19.06.2016 00:15а RTOS редко используют напрямую для быстродействующих вещей. В основном используется прослойка в виде FPGA, на котором генерируются сигналы высокой точности, также он же и предварительно обрабатывает поступающие извне сигналы, это сильно снижает требования к системе, на которой находятся основные, высокоуровневые алгоритмы обработки данных и принятия решений на их основе.
Вкратце, дешманская малинка и какой-то Спартан вполне могут управлять парой робоманипуляторов-рук и при этом показывать очень приличные показатели точности и контроля позиции. И при этом не вываливаться за пределы бюджета в пару сотен долларов в железе. Использование аналогичной железки, которая поддерживает RTOS выльется далеко за пределы этого бюджета.microspace
19.06.2016 00:45+1Тут имеется ввиду ROS (Robot Operating System) — Операционная система для роботов
donvictorio
19.06.2016 01:01+1Понял.
Тогда понятие «серьёзной робототехники» и ROS не особо совместимы. Серьёзные роботы (промышленные, медицинские, от Диаконт для атомной промышленности) не работают под ROS. И никогда не будут. А эксперименты типа пылесосов и прочих мобильных платформ, заточенных под «свободу действий» это пока не особо серьёзно. Было бы интересно, если бы ROS была менее требовательна к железу, но и тут пичаль.
ИМХО тупиковое направление. Я бы не стал на этой основе строить учебный процесс.Roboserv
19.06.2016 07:19Во-первых есть ROS Industrial. Во-вторых все серьезные автономные роботы работают под РОС. Не индустриальное, но всякие охранные, автономные, сервисные и тп.
«ИМХО тупиковое направление. Я бы не стал на этой основе строить учебный процесс.»
После такого заявления можно сделать вывод, что вы либо слабо понимаете что такое РОС, либо слабо понимаете современную робототехнику. Сейчас никто не пишет SLAM или другие серьезные вещи с нуля на коленке. Под этим я и понимал «серьезную» робототехнику.microspace
19.06.2016 11:08ROS официально поддерживается в Matlab, а также в Labview.
Вот тут дан хороший ответ по поводу ROS и Matlab.
http://answers.ros.org/question/56721/ros-vs-matlabwhich-is-best/?answer=56859#post-id-56859
«I see MATLAB (Octave or Scilab) as a great tool for the prototyping phase…
After this phase there is the system development phase (design and implementation).
In this phase you design and implement the code you have prototype in MATLAB and other functionalities that are necessary to make your system work.
ROS provides this functionality out-of-the-box, and a lot of extra components ready to use.»
donvictorio
19.06.2016 12:56а ещё через несколько ответов окажется, что существует ROS-Industrial-Professional-Enterprise-Mega, которая вообще ИИ и работает на монетке в 10 копеек.
И не надо передёргивать, я не говорил о написании чего-то «с нуля», и понятие «серьёзности» это далеко не использование готовых фреймворков, а стоимость техпроцесса, в котором участвует робот. Если для вас серьёзность заключается в том, что на пылесосе стоит РОС и пылесос распознаёт кота, то у нас разные понятия о серьёзности.microspace
19.06.2016 14:20А вы как видите процесс разработки робототехнических систем? Я совсем новичок в области и хотелось бы знать о каких роботах идет речь?
donvictorio
19.06.2016 20:05а кто на что способен. нива эта настолько обширна в плане разнообразности решений, что тут есть исключительно ИМХО, и кто будет утверждать обратное — дилетант. Поэтому я и выразил лично своё мнение.
Те роботы, с которыми мне приходилось сталкиваться работали на ПЛК производителя, программировались на примитивных языках типа LD/FBD/etc, изредка приходилось поднимать из могил старинные манипуляторы, оснащать их новыми сервоприводами и рулить логику работы на NI SbRIO через LabView. ничего экстраординарного типа «найти выход из безвыходной ситуации с помощью нейросети» не было, просто траектория + иногда машинное зрение (определить позицию и наличие перемещаемого компонента). но все эти операции требовали максимальной точности, повторяемости и бесперебойной работы. ибо косяк в работе системы чреват потерей иногда жирного бабла. В таких случаях ессно никто не будет использовать ни рос, ни какие-то иные решения, которые имеют массу непонятно как работающего кода. то как с LinuxCNC — система крутая, гибкая и всё такое, но почему-то EMG ставят на свои станки FANUC.
lingvo
19.06.2016 21:50+1В принципе процесс разработки робототехнических систем не отличается от процесса разработки любых других систем управления реального времени. Будь то система управления самолетом, лифтом или промышленным конвейером. Чаще всего это встраиваемые системы, но может быть и другая реализация.
В общем случае выбор средств, платформы, и методов разработки зависит от требований к самой системе, начиная от функциональных требований, требований к надежности и заканчивая ценой конечного изделия и стоимости разработки/времени, потраченного на проект. Поэтому даже для робототехнических проектов, из-за последних требований, реализация может быть разной — от ардуины и до промышленных контроллеров за 10 тыс баксов.
Лично для лаборатории робототехники или платформы для обучения я считаю важным, чтобы средства охватывали максимально возможный спектр приложений. Чтобы студенты учились на чем-та таком, что применяется в реальных системах и в конце концов получали знания, которые потом могли бы применить в будущем в работе и карьеры.
С этой точки зрения, как уже указали, промышленные ПЛК уже сами по себе являются неплохим желехом для лаборатории — даже если робота не получится создать, общие принципы создания хард-реал-тайм систем привьются конкретно. Но если стеснены в средствах, то подойдет и распберри.
Саму софтверную платформу — операционки, драйвера, интерфейсы связи я даже не рассматриваю — тут такой разнобой, что принуждать студентов изучать все это не имеет смысла — потеряете время и суть, а робота не сделаете.
Поэтому следует сконцентрироваться только на средствах разработки, программирования и тестирования управляющих алгоритмов. Лично для меня в этом деле Матлаб/Симулинк вне конкуренции. Вы моделируете свой алгоритм у себя на компьютере, а потом загружаете сгенерированный код в железо, где он исполняется в реальном времени и делает то же самое, что и в модели — вот и есть краткая суть процесса разработки в данном случае.
Данный подход (называется Model Based Design) применяется в промышленности, автомобильной электронике, самолетах, роботах и т.д уже вот уже как десятилетие и позволяет достичь значительного сокращения времени разработки управляющего софта при меньшей квалификации программиста. Точнее программист становится не нужен. Все делает сам разработчик алгоритма.
Ну и еще одно преимущество — вы можете начать делать свои алгоритмы для роботов с ардуино и распберри, а закончить сверхнадежной системой управления для HVDC — и все с одной средой.microspace
20.06.2016 19:32lingvo, donvictorio спасибо за развернутые ответы, многие вещи прояснились.
Со студентами вроде все понятно. А как быть со школьниками? Что им давать когда из лего уже выросли, а матлаб рано? Может есть некий «Matlab or kids»? Хотя признаю, это наивноlingvo
20.06.2016 21:18Lego Mindstorms. Программируется матлабом легко. Начать, конечно, можно с родной среды, но мне она совсем не нравится, так как пропагандирует идею Labview — то есть чисто графическое программирование без моделирования происходящих процессов. Она не развивает модельно — ориентированный подход.
olartamonov
Добавляйте:
1) https://www.seeedstudio.com/item_detail.html?p_id=2573. Очень дёшево (ну да, это маркетинговый проект MediaTek, подозреваю, что продают они его в ноль, но что ж с того), по ресурсам богаче нашего Unwired One и Onion Omega. Минус — не уверен, что это можно как-то в России официально купить.
2) Intel Edison (ну да, я понимаю, что тут про MIPS, но читатель таки имеет право знать). Недёшево, зато там много мегабайт и мегагерц. Его немного трудно купить в розницу, но это вопрос, который при небольшом желании можно решить. Ну и у нас в Unwired Kit планируется плата-адаптер под Edison, которая позволит с ним использовать как разные платы расширения, так и наши беспроводные сети.
Но в принципе для какого-то машинного зрения и т.п. задач этого всего мало, там более другие мощности по-хорошему нужны. А более другие мощности — это или Raspberry Pi, или более другие цены.
P.S. VoCore — сразу в хлам, там медленный и горячий Ralink стоит. Они сейчас делают вторую версию на медиатеке.
YuriPanchul
Спасибо