?

Log in

No account? Create an account
Какие из данных платформ подходят для лаборатории робототехники и интеллектуальных систем? - Юрий Панчул [entries|archive|friends|userinfo]
Money can buy bandwidth. Latency requires bribing God.

[ website | My Website ]
[ userinfo | livejournal userinfo ]
[ archive | journal archive ]

Какие из данных платформ подходят для лаборатории робототехники и интеллектуальных систем? [Jun. 17th, 2016|01:06 am]
Yuri Panchul
Господа! У меня уже две различные организации спрашивали совета про оборудование лаборатории роботики. Причем не для младших детей, а для старших школьников + младших студентов, с возможностью расширения до старших студентов и исследовательских проектов. То есть ожидается, что в лаборатории будут использоваться профессиональные средства разработки, а не упрощенные, наподобие Лего и недостаточно гибкого Ардуино. Кроме этого, ожидается, что роботы будут делать что-нибудь умное, с распознаванием образов и ситуаций, чтобы можно было бы назвать "лаборатория робототехники и интеллектуальных систем".

По этому поводу у меня два вопроса:

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, и плата с этим процессором есть у меня на руках, но эта плата пока недостаточно массовая, чтобы использовать ее в качестве роботехнической платформы в большом количестве вузов.


Какие платформы выбрать для лаборатории робототехники и интеллектуальных систем?

Onion Omega
1(7.7%)
VoCore
1(7.7%)
Unwired One
1(7.7%)
MIPS Creator ci20
1(7.7%)
Digilent chipKIT Wi-FIRE
2(15.4%)
Olimex PIC32-EMZ64
1(7.7%)
MIPS Creator ci40
2(15.4%)
Baikal-T
3(23.1%)
Из-за бугра плюете?
1(7.7%)
LinkReply

Comments:
[User Picture]From: craftwr
2016-06-17 08:09 am (UTC)

Вариантов намного больше.

(Reply) (Thread)
[User Picture]From: panchul
2016-06-17 08:21 am (UTC)
Я знаю, я спрашиваю про устройства, которые лежат у меня на столе и которые я хочу проверить на соответствие цели (пригодность для лаборатории роботики).
(Reply) (Parent) (Thread)
[User Picture]From: craftwr
2016-06-17 08:42 am (UTC)

1, 3.

(Reply) (Parent) (Thread)
[User Picture]From: b00ter
2016-06-17 08:26 am (UTC)
Вышеперечисленное отличные устройства, но незаконно забыт LinkIt Smart 7688, а он того стоит.

Набор деталек и икарнация Duo стоит 60 баксов в сумме.
http://www.seeedstudio.com/item_detail.html?p_id=2574
http://www.seeedstudio.com/item_detail.html?p_id=2551

Истово рекомендую.
(Reply) (Thread)
[User Picture]From: panchul
2016-06-17 08:44 am (UTC)
О, спасибо
(Reply) (Parent) (Thread)
[User Picture]From: ramlamyammambam
2016-06-17 03:23 pm (UTC)
+1
(Reply) (Parent) (Thread)
[User Picture]From: suvorow_
2016-06-17 10:24 am (UTC)
Не активаторами, а актюаторами!!! Стыдно, Юра!
А для роботики лучше всего подходит Галилео.
(Reply) (Thread)
[User Picture]From: sergegers1
2016-06-17 11:21 am (UTC)
Юрий, а что такое поддержка многопоточности процессором? Я думал - это ОС делает.
(Reply) (Thread)
[User Picture]From: panchul
2016-06-17 03:54 pm (UTC)
ОС поддерживает soft threads, переключая между ними контекст во время обработки прерывания от таймера. Обработчик прерывания сохраняет регистры одной soft thread в памяти, восстанавливает регистры другой soft thread, и передает на нее управление (восстанавливая program counter).

С hard thread прерываний не нужно. Процессор MIPS interAptiv сам хранит несколько копий регистров и несколько копий program counter в каждом из процессорных ядер, и ядро все время принимает решение, из какого thread ему прочитать, декодировать и выполнить инструкцию. Когда в одном hard thread затык (наприпер ждет десятки тактов данные из памяти во время промаха двухуровневого кэша), другая thread может работать.
(Reply) (Parent) (Thread)
[User Picture]From: sergegers1
2016-06-17 03:59 pm (UTC)
круто
(Reply) (Parent) (Thread)
[User Picture]From: nicka_startcev
2016-06-17 05:40 pm (UTC)
>С hard thread

я правильно понимаю, что это становится выгодным почти только если у памяти высокая латентность и доступ к ней занимает дофига тактов, а если бы доступ был почти как к регистрам, то этот цирк был бы неинтересен?
(Reply) (Parent) (Thread)
[User Picture]From: panchul
2016-06-18 01:40 am (UTC)
(Reply) (Parent) (Thread)
[User Picture]From: oppad1
2016-06-17 12:11 pm (UTC)
кто же МИПС посоветует. нужно брать АРМы - для школьников Cortex-M4 самое то, в каком-нибудь STM32F.
полно дешевых плат discovery, в удобном для моделек форм-факторе, все есть, среды разработки разные и хорошие :).
но вопрос же с подвохом - нужно МИПС - тогда какой-нибудь элвисовский чип - школьники получат суровый урок и будут заниматься чем-то более целесообразным в российских реалиях
(Reply) (Thread)
[User Picture]From: andrey_yurin
2016-06-17 02:45 pm (UTC)
А можно ламерский вопрос?
Вот пишу я программу для MCU на каком-нибудь Си. Переменные, массивы, циклы, условия. Ну библиотеки внешние или ещё что подобное. Вопрос - а какая разница ARM это будет или что другое? Не. Я так-то понимаю, что код можно писать по разному. И можно его пробовать подстроить под быстродействие на заданной архитектуре. Но это уже больше касается ассемблера, всётаки. А если программа не шибко сложная, а скорости в процессоре вполне хватает. То какая разница с точки зрения того же Си что за архитектуру использовать?
(Reply) (Parent) (Thread)
[User Picture]From: oppad1
2016-06-17 02:57 pm (UTC)
подразумевается, что есть некая близость к железу - управление какими-то двигателями, опрос каких-то сенсоров, причем это предполагается обучение - то есть не взял готовую либу (да и нету таких платформонезависимых либ), а разобраться, понять соответствие картинки на осциллографе с кодом. ассемблер тут никак не поможет, но всяческое взаимодействие с периферией внутри чипа ADC, PWM, I2C, SPI и т.д. требуется понимать. а тут чем ближе к реальности и дальше от виртуальности (OpenWRT, Lego mindstorm|NXT - кстати автор зря недооценивает) - тем проще и полезнее.
(Reply) (Parent) (Thread)
[User Picture]From: andrey_yurin
2016-06-17 04:04 pm (UTC)
>но всяческое взаимодействие с периферией внутри чипа ADC, PWM, I2C, SPI и т.д. требуется понимать
Ну тут вопрос уже больше не про систему команд процессора, а про SoC-систему. Я всётаки чуть другое имел ввиду. Вот, например, есть микроконтроллер х51 архитектуры. Есть ARM. И есть x86. Вот я пишу на Си что-то подобное, что к SoC вообще никак не привязано (на синтаксисе я навру, но смысл понятен):

int a,b,c,d;
a=5;
b=7;
for(c=0,d=0;c<a;c++){ d=d+b; } Ну умножение a на b. Какая мне разница как программисту на какой архитектуре будет исполняться эта конструкция?
(Reply) (Parent) (Thread)
[User Picture]From: nicka_startcev
2016-06-17 05:49 pm (UTC)
для такой - без разницы.

а вот как только начнете программировать конкретные делители/умножители частоты и прочие питалки периферии, то упрётесь в кучу мелких гитик.

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

>Какая мне разница как программисту на какой архитектуре будет исполняться эта конструкция?

если у вас большой запас и памяти и производительности - то никакой. а если у вас, например, пять таймеров но семь сервомашинок, то тут будет нужно хитро подумать
(Reply) (Parent) (Thread)
[User Picture]From: andrey_yurin
2016-06-17 07:19 pm (UTC)
Не. Одно дело разница между SoC и количеством фарша на кристалле. Тут всё понятно. Так же понятно и с теми же DSP-шниками. Которые (грубо говоря) отлично выполняют MAC-операцию A=B*C+D. На ней весь ЦОС стоит. К видео-процессорам вопросов нет, которые имеют матричный перемножитель в своём составе. А вот чем принципиально отличаются между собой процессоры общего назначения (и да простят мне такую вольную формулировку) - вот тут я не совсем понимаю. Ну тоесть как понять, что вот в этой вот задаче RISC-архитектура лучше чем CISC, но хуже для вот этой вот задачи.
(Reply) (Parent) (Thread)
[User Picture]From: nicka_startcev
2016-06-17 07:37 pm (UTC)
>А вот чем принципиально отличаются между собой процессоры общего назначения

да ничем почти. код инициализации и периферия отличаются и в пределах одного подсемейства.

риск/циск - тоже ничем. если писать не на ассемблере, а хотя бы на си - то и не заметишь, что у риска регистров больше, а команды тупее, или что у атмег шины опкодов и данных раздельны.

а "для вот этой вот задачи" обычно актуальнее смотреть, какой именно фарш и сколько запихали в конкретный SoC, можно ли эту сок купить в ближайшем ларьке, стоит она рупь за пучок или кучу денег. ну и иногда энергопотребление интересно.

тем более сейчас, тем более мипс/арм, под оба два уже есть куча ширпотреба, а гцц и прочий линух более-менее вылизан от совсем диких глюков. а с конкретными акселлераторами или индусскими либами везде можно нарваться. или еще на какую кривую дрянь в драйверах или в юзерлевеле
(Reply) (Parent) (Thread)
[User Picture]From: oppad1
2016-06-17 06:47 pm (UTC)
ну так зачем тогда такие-то платы - исполняйте на ПК. и С даром не нужен - есть Питон.
(Reply) (Parent) (Thread)
[User Picture]From: andrey_yurin
2016-06-17 06:52 pm (UTC)
:) Ну я специально до крайности довёл. Так-то мне под DSP-шники кодить приходилось на ассемблере. И там система команд была переплетена с реализуемой арифметикой в Q1.15 единым целым. А вопрос задал исключительно с целью поинтересоваться как зубры IT подходят к выбору кристаллов для своих нужд и почему выбирают именно то, что выбирают :)
(Reply) (Parent) (Thread)
[User Picture]From: oppad1
2016-06-17 06:59 pm (UTC)
обычно стоимость кристалла важна :)
ну и куча побочных факторов - опыт работы, готовые куски схем/плат и т.д.
а уж архитектура - дело второе.

но тут АРМ как бы из-за массовости рулит. с тем же 51-ым хороший пример - по здравому смыслу уже должен давно умереть, а нет: в каких нибудь-хитрых новых RF ASIC-ах или сенсорах постоянно попадается.
(Reply) (Parent) (Thread)
[User Picture]From: panchul
2016-06-17 04:13 pm (UTC)
*** о всяческое взаимодействие с периферией внутри чипа ADC, PWM, I2C, SPI и т.д. требуется понимать. а тут чем ближе к реальности и дальше от виртуальности ***

В платах Digilent chipKIT Wi-FIRE и Olimex PIC32-EMZ64 это все есть.

При этом я согласен с вашим тезисом про "чем ближе к реальности и дальше от виртуальности - тем проще и полезнее." в контексте изучения программирования микроконтроллеров.

Но я не в курсе того, что принято в специализированных робототехнических лабораториях - микроконтроллерные плат или встроенные компьютеры с Linux, или смесь?
(Reply) (Parent) (Thread)
[User Picture]From: oppad1
2016-06-17 06:53 pm (UTC)
я думаю от задачи зависит. от таргета.
я с аматерами что-то обсуждал - на ардуине делают, на малине (raspberry pi). но там никто не программирует по "серьезному". берут из готовых проектов. по крайней мере я так понял.

(Reply) (Parent) (Thread)
[User Picture]From: panchul
2016-06-17 04:09 pm (UTC)
Я в курсе, что на любой моей презентации всегда есть товарищ с блеском ревности в глазах, который говорит "зачем MIPS? ARM, ARM давай, мы любим ARM!" Один даже начал раздавать платы с STM32 на моих семинарах.

Но у вас аналог курса Connected MCU для discovery? С обсуждением архитектуры, RTOS-ов и т.д. ?

Вообще я не пытаюсь составить каталог всех возможных устройств для роботики. У меня есть платформы, с которыми я умею работать (в создании некоторых из них я принимал участие), и я пытаюсь понять, какие из этих платформ пригодны для того, что у меня спросили (обучение роботике), а какие — нет. Я ожидаю комменты типа «платформа XYZ для роботики непригодна, так как ее производительность/память не позволит выполнять такой-то алгоритм распознавания, а среди периферии нет интерфейса к такому-то классу активаторов».
(Reply) (Parent) (Thread)
[User Picture]From: oppad1
2016-06-17 05:31 pm (UTC)
я одобряю продвижение МИПСов, если что :)
и очень одобряю просветительскую деятельность, сам когда-то занимался со студентами, но сейчас нет возможности

естественно я не знаю, есть ли курсы для STM32 (наверняка есть) и какое у них качество (скорее на английском, то есть не годится для российских школьников)

-----------------

если серьезно, то практически маловероятно, что школьники в состоянии разобраться с распознаванием (звука, изображения и т.д.) потому что тут требуется все-таки достаточно взрослое знание "математики" и программирования. какие-то самые базовые вещи типа БПФ или фильтрации для выделения границ, скорее всего, уже за гранью. а беря в руки достаточно сложный блэкбокс в виде либы и подставляя к нему какие-то костыли - вряд ли будет польза от такого обучения...

опять же распознавание какой области если 64х64 (типа оптической мыши) - любое железо справится, а если взять уже какое-нибудь VGA - то сомневаюсь. там нужно что-то типа TI-шных DaVinchi-ей или даже проще на ПК (х86) считать

поэтому казалось, что для школьников это какие-то манипуляторы, машинки, моторчики и т.п. - то есть собственно говоря lego nxt рулит, только не убогий комплект, который доступен в РФ (я такой своему ребенку покупал), а американские обучающие наборы
там весьма качественно все сделано - есть и среды разработки на С-подобных языках и вообще это открытый проект

ну а discovery - если отвлечься от противостояния тупоконечников с остроконечниками ARM vs MIPS - там есть всякие компасы, гироскопы, акселерометры. с плат торчат 0.01" штырьки для не особо умеющих паять и т.д.
и это все по демпинговым ценам
я же не говорю про всякие малины/бигльборды, которые весьма похожи на показанные платки с МИПСами


Edited at 2016-06-17 05:31 pm (UTC)
(Reply) (Parent) (Thread)
[User Picture]From: freedom_of_sea
2016-06-17 02:02 pm (UTC)
нужна нейросеть в такой лабе, но х з из чего её сделать
(Reply) (Thread)
[User Picture]From: panchul
2016-06-17 04:15 pm (UTC)
Может FPGA сбоку прикрутить?

А если делать нейросеть в софтвере на процессоре, то какая производительность процессора ныне считаются пригодной для нейронных сетей?
(Reply) (Parent) (Thread)
[User Picture]From: nicka_startcev
2016-06-17 05:32 pm (UTC)
64мб рам, 16мб флеш - это выглядит как роутер 10-летней давности, которому красная цена долларов 20.
а если сравнивать с разбери пи - то совсем грустно смотрится.

пошевелить сервомашинками - это еще нормально (да и то, скорее всего, придется вешать буфера-переходники с 3.3 на 5в), а как начнешь хоть минимальную обработку видео пихать, так сразу резко упрешься в ограничения по памяти, скорости. и почти наверняка в закрытость спеков на акселераторы/сопроцессоры.

то есть, для разработки 2006 года это неплохо, но в 2016 оно выглядит очень-очень странно.

то есть, навскидку, "мозги для робота" я вижу примерно так
1. если уж делать, то делать нормально. на недорогой, но современной электронике
2.если целиться в замену восьмибиток, то тут оно смотрится неплохо, но, блин, выводы платы должны быть стойкими и к 5в и к 3в
3. если делать именно центральный мозг для робота, а не мелкий нервный узел, то тут надо порядка гигабайта рам и флеш и порядка гигабайта диска. это недорого на общем фоне но сильно уменьшает геморройность отладки
4. а как у них с проводной низколатентной связью (в пределах тушки робота)? если их пихать пачку в одного робота, то нужно что-то типа мадбаса/уарта, чтоб этак мегабит и латентность заметно лучше миллисекунды.
(Reply) (Thread)
From: abanamatov
2016-06-17 07:46 pm (UTC)
Согласен, STM32 намного лучше подходит для обучения. Посмотрите mbed, там есть много вариантов железа. Начинать можно с mbed, а потом плавно переходить к профессиональной среде разработки. Железо остается тем же, а у Cortex до фига всего на борту есть.

Edited at 2016-06-17 07:47 pm (UTC)
(Reply) (Thread)
[User Picture]From: panchul
2016-06-18 01:51 am (UTC)
Что за дурацкое "согласен" в начале предложения? Попытаться сделать вид для случайного читателя, что я якобы написал то, что вы написали ?

Далее, c чего вы решили, что якобы "STM32 намного лучше подходит для обучения"?

Приведите пример аналога курса Embedded MCU ( https://habrahabr.ru/post/282001/ ), но не для PIC32MZ , а для STM32. Чтобы было введение не только в лампочками помигать, но и в RTOS-ы, основы архитектуры встроенного процессора, фунциональность кэшей и т.д.

Этот mbed это что - упрощенная development system для хоббистов? А зачем это в вузе, в вузе нужно сразу давать курс с профессиональными тулами для разработчиков.

*** Cortex до фига всего на борту есть. ***

Вы путаете микропроцессорное ядро и микроконтроллер. Cortex - это ядро, у него "на борту" ничего быть не может кроме конвейера, регистров, и арифметических блоков и блока отладки. Периферия - это функция микроконтроллера.

Процессорное ядро MIPS microAptiv UP в микроконтроллере Microchip PIC32MZ EF - превосходит соотвествующее ему процессорное ядро ARM Cortex M4 в микроконтроллерах STM32 F4 (по производительности и features), а периферия что там, что там достаточно богатая.


Edited at 2016-06-18 02:06 am (UTC)
(Reply) (Parent) (Thread)
[User Picture]From: h2010
2016-06-19 12:34 am (UTC)
Я имел дело с Digilent chipKIT Wi-FIRE, который заказал после прочтения статьи в этом блоге, сделал домашний проект робота-кэтситтера с доступом через интернет. Достаточно легко прямо на плате удалось реализовать сервер для управления моторчиками и выдачей всякой диагностики. Я открывал TCP-сокет и через роутер с NAT и dyndns имел доступ извне без сервера-посредника.

А вот видео систему для робота мне пришлось сделать отдельно при помощи ip-камеры. Возможностей для интерактивной обработки видео на этой плате вроде как недостаточно. Как же вы тогда будете распознавать образы?

Прочие недостатки, на мой взгляд:
Очень много нюансов по питанию; ограниченная совместимость 3.3/5v. Многие просто спаливают плату. Еще я так и не смог разобраться с режимом сна (он вообще есть? инструкция не дает ясного ответа), с режимом низкого потребления; я также не смог программно выключить плату, а ведь для литий-ионных батарей это критически важно. Хочется также еще и включать ее извне, например, по сигналу таймера или wifi - вроде интернет вещей это должен предусматривать. И комьюнити у Chip Kit небольшое - у кого спрашивать? Понятно, что я очень начинающий в этой области, но с этими проблемами придется столкнуться и студентам.

Если кто-нибудь решал эти вопросы, буду рад советам и рекомендациям.

Edited at 2016-06-19 12:50 am (UTC)
(Reply) (Thread)
[User Picture]From: adilbek
2016-06-19 03:58 pm (UTC)
Почему в Казахстан едете? А куда именно в Казахстан?
(Reply) (Thread)
[User Picture]From: alexey_zharikov
2016-06-20 01:19 am (UTC)

Гигробот

Мы с тобой в детстве в кинотеатрах Киева явно одни и те же мультфильмы смотрели!

А "антиреклама" Кока Колы в этом мультфильме всё равно лучше!
(Reply) (Thread)
[User Picture]From: nervfish
2016-06-25 10:11 pm (UTC)
ваш пост произвел некоторый "импакт" среди тех, кому он предназначен ) то есть, людей поставляющих хард и софт для лабораторий робототехники. Приведу пример комментариев вашего поста (человек сам комментировать не захотел), возможно, вам пригодится:

"а тратить 90% времени лабы на сборку opencv на мипс - дело неблагодарное"

" ну вот и собирай всё это говно сам на странную платфому, а я лучше apt-get
а так же переписывай все учебные методички
школы и кружки не покупают сами в магазинах отдельные платы
они покупают полный ящик железок, методичек и разрешений от местных образовательных органов
т.е инженерно идея то у панчула неплохая, но робокружки на 90% состоят не из этого"

"если он хочет устраивать лабы про "абстрактный RTOS в ваккуме", то тоже сойдёт, но не надо произносить тогда слово "робототехника", так как общего столько же, как между "соединения кальция" и "квартирный ремонт"

"на деле разница актуальна только когда важны "особенности" плат, типа встроеный в ST32 USB или CAN, или аппаратный счётчик квадратурного энкодера
или, как в юникоре, хитрый DSP для быстрого перемножения (для прекрасной реализации свёрток)
а в остальное время я бы предпочёл тулсет-поддержку-комьюнити, при прочих равных"

(Reply) (Thread)
[User Picture]From: panchul
2016-06-25 10:29 pm (UTC)
Спасибо за input!
(Reply) (Parent) (Thread)