image

Всем привет. В этой статье я попытаюсь поделиться своим небольшим опытом в построении бюджетного но технологически неплохого робота-паука.

Краткое предисловие:

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

Другой неприятной стороной было то что в качестве мозгов в основном использовались — если не ардуино, то STM32. Мне же хотелось занимтаься программированием. Научить робота бегать за мячиком, обходить препятсвия, передвигаться по открытомй пространству. То есть то, для чего надо больше чем ардуина. Упирались все желания в деньги, которых мало, и руки, которые кривые. Постараюсь поведать как оба этих препятствия я обошел.

Платформа:

В качестве платформы я открыл для себя готовые наборы на алиэкспрессе или ебее. Типа такого:

image

Это наборы делатей, вырезанные из аллюминия. Довольно легкие, чуть тяжелее пластика, но уже металл. Ищутся по запросу «6 legs hexapod robot kit», можно найти по цене до 100 долларов, и в комплекте будут не только большие детали, но и мелкие поворотные подшипники, болты, гайки, в общем всё необходимое.

Идут они без сервомоторов, которые рукомендую заказывать отдельно. Можно и с моторами заказать, но я бы рекомендовал не доверять в этом выборе китацам. Формфактор у них унифицирован, так что можно перебрать довольно много сервов, в зависимости от вкусов. Тут я допустил первую ошибку. Предварительно узнав, что сервомоторы отличаются тем что могут быть:

  • На разное усилие. например 3 кг на 1 см плеча, 5, или даже 10. Что соответственносказывается на том, нсколько тяжелый можеть быть робот;
  • С разными материалами шестерен. Железные или пластмассовые. Ну тут всё понятно. Железо должно быть крепче;
  • Цифровые или аналоговые. Внешне никак не отличаются, но цифровые двигаются быстрее, точнее, резче, выдерживают болшее усилие.

Я подумал — ну конечно же мне нужен робот на самых сильных (12 кг/см) железных шестернях с цифровым контроллером (в моем случае это были китайские TOWARD PRO 996M). И только когда робот смог встать на ноги только используя минимум 10 Амперный станионарный БП, а никаких батареек ему не хватало — он просто дергал лапами и провода начинали плавиться, я понял что надо было быть скромнее.

image

Мало того что я не мог обеспечить его питанием (почему-то идея многоэтажных аккумуляторов не привлекала), так вес 20 сервомоторов с железными шестернямид добавил пару килограммов. Следующей партией мне приехали с хоббикинга сервы аналоговые, пластиковые на 5 кг. Робот бодро встал на стационарном БП, но 5 никелевых аккумуляторов его не поднимали. Докинув еще 5, оказалось что этого вполне (и довольно надолго хватает).

image

Печально вздохнув о выкинутых на ветер 100 долларах не первые 20 сервомоторов, я начал думать, как бы теперь этим всем удобно управлять и какие мозги использовать. На первое время для проверки сервов я использовал собранную на коленке плату с воткнутой stm32f4 Discovery.

image

Но ни паять дальше, ни травить платы у меня уже желания не было. Нужно было что-то более… удобное.

Поскольку в целях было машинное зрение, я взял распберри пай A+, он отличается более мелкими размерами и низким потребляемым током. Вся цифровая часть робота потребляет около 150 мА. К слову, роутер TP-Link mr3020, имеющий такой же размер и очень популярный среди любителей мелких железяк со встроенным линуксом потребляет ровно столько же, имея всего 32 мб ОЗУ и 4 мб ПЗУ. Что не дает развернуться на нем как следует. Распберри же имеет 256 мб ОЗУ и сд карточку памяти.

image

Теперешняя цена его около 20 с копейками евро.

Дальше надо было чем-то управлять лапами, и были куплены 2 платы с контроллерами ШИМ, управляющиеся по I2C шине и имеюшие 16 выходов каждый. На Алиэкспрессе они продаются около 5 баксов штука.

image

Там же были куплены I2C модули часов, гироскопа, цифрового компаса, барометра/термометра. А так же 2 платы — одна заряжает от 5 вольт литиевую батарею, а вторая делает из 3 вольт литиевой батарейки 5 на выходе. Это было нужно чтоб использовать отделную литиевую батарейку( от старой мобилки) для питания цифровой части во избежание наводок от моторов.

В сумме по деньгам это вышло из рассчета 2-5 долларов за модуль.

Все модули (датчики и контроллеры сервов) висят на одной i2c шине, и пока что работают без особых проблем, требуя всего 4 провода от распберри.

image

Еще один фейл поджидал на этапе выбора камеры. За 20 баксов была заказана «Raspberry PI camera noIr» — камера, подключаемая в специальный разъем распберри. Радость от того что она видит в ИК диапазоне была тут же омрачена тем что цветопередача очень зависела от источника освещения. Ни о каком машинном зрении, когда тестовый мячик днем красный, а вечером белый, не могло быть и речи. За те же 20 баксов была приобретена простая камера, которая вполне неплохо справляется с задачами.

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

Таким образом примерно за 300 долларов можно собрать робота, имеющего 6 ног, линукс на борту, запитанного от батарей, обладающего датчиками и камерой. Пайка требуется только для шлейфа I2C и проводов питания. Конечно это не всё, в планах продолжить обвешивать его датчиками и, верочтно, манипуляторами, но дальше дело за фантазией конструкторов. Запас полезного веса присутсвует — в таком виде робот держит свой вес на 3 ногах.

Батареек, питающий мозги (4.5Ач) хватает на несколько часов работы, а никелевых аккумуляторов (5Ач) на то чтоб несколько раз пройти по офису туда-назад (пока за день посадить не удалось) Первая батарейка заряжается от USB адаптера, вторая — универсальной зарядкой для никелевых аккумуляторов, которую можно найти в магазинах, специализирующихся на радиомоделях.

Много моментов осветить не удалось, так как путешествие по граблям длилось больше года.

image

Надеюсь мой пост подтолкнет кого-нибудь к увеличению поголовья роботов.



P.S.: я специально не затрагиваю софтовые вопросы, так как рассматриваю этого робота как тренажер и вмеру универсальный исопльнительный механизм.

Комментарии (49)


  1. ittakir
    04.05.2016 13:50

    Почему именно хексапод?
    Он же очень энергозатратный, программируется тяжело (6 лап, каждая сама по себе).
    Можно было начать с 4х колесной машинки. Мало проходимости? Примитивный до безобразия RHex вытворяет такое, что даже и не поверишь (например, бегает на 2-х лапах-колесах вертикально).


    1. at91sam7a3
      04.05.2016 15:52
      +1

      Хексапод именно потому, что хотелось попробовать программирование инверсной кинематики. Чем он лучше машинки — может взбираться на ступеньки. Еще можно подойти к препятствию и оттолкнуть его передней лапой в сторону, или поднять туловище повыше и переступить.
      Но если говорить честно — я уже раз десять пожалел, что не выбрал гусеничную платформу. Когда не надо тратить энергию на просто стояние. Да и скорость, как видите по видео, у любого колесного шасси была бы быстрее.
      Но как показал опыт — при прекращении подачи управляющего шима на сервомоторы или просто выключении питания — робот не падает. Просто продолжает стоять в той же позе, как на последней картинке — она не особо затратна по усилию на редукторы.


      1. ProLimit
        04.05.2016 16:03

        Добавьте слабые пружины, чтобы компенсировать вес. Тогда стоять будет без затрат энергии, а бегать — смотря как запрограммируете. пружины в прнципе там тоже должны помочь, если проводить аналогии с животным миром и функцией связок.


        1. at91sam7a3
          04.05.2016 16:23

          пружины оказались не нужны, сами сервомоторы в состоянии покоя держат его на весу за счет редукторов — серв не так легко провернуть, и энергию можно подавать только когда надо двигаться. А по поводу скорости — конкретно эти сервомоторы «Turnigy™ TGY-S4505B Dual Bearing Analog Servo 4.8kg / 0.10sec / 40g» не успевают поднимать и опускать ноги намного быстрее из-за инерции. Можно попробовать заменить их на аналогичные цифровые, но 20 тяжелых цифровых сервомоторов у меня уже валяются, и каждый такой эксперимент выходит в 100долларов. Проще переставлять по 2-3 ноги одновременно, но я пока не продовал.


          1. ProLimit
            04.05.2016 20:16

            Скорее всего вы правы, редуктор «съест» всю энергию, запасенную пружиной при сгибании ноги. Если был бы прямой привод, с пружинами можно было бы двигаться очень быстро и экономично, преодолевая только сопротивление воздуха и немного трения в шарнирах. Собственно, так и сделали робота-«гепарда» (когда то была статья на хабре), который ставил рекорды скорости. Но прямой привод для хобби-робототехники пока что сильно сложная штука, думаю ещё пару лет надо подождать.


        1. anprs
          04.05.2016 20:00

          Мне кажется, экономия на пружинах поддерживающих тушку будет скомпенсирована повышенным током на преодоление их сопротивления при движении


  1. ffs
    04.05.2016 16:18

    «деньги, которых мало, и руки, которые кривые»
    Я увидел только обход второго препятствия =)


    1. at91sam7a3
      04.05.2016 16:28

      На написание статьи меня подтолкнули комментарии отсюда: https://geektimes.ru/company/intel/blog/275028/
      Где было мнение о том что для самодельного робота меьнше чем в 1000 долларов на детали уложиться не получится.
      Вы знаете как сделать еще дешевле? Я рассматривал так же вариант с HexyHexapod но он совсем мелкий, и в него просто сложно засунуть что-то кроме батареек


  1. at91sam7a3
    04.05.2016 16:56

    Я хотел бы в первую очередь извиниться за огромное количество опечаток в тексте, и добавить максимально полный прайс по деталям
    Сразу же уточняю, что многое из этих деталей заметно отличается по цене от того что я брал

    1) комплект железяк — 110.99$ (я выбрал тот где была робоклешня в комплекте, и пожалел, так как ее качество оставляет желать лучшего и лучше обойтись без нее), сейчас на алиэкспрессе нашлось за 65 долларов и беспатной доставкой
    2) сервы Turnigy™ TGY-S4505B Dual Bearing Analog Servo 4.8kg / 0.10sec / 40g — 18 штук 110 евро
    3) мелкие поворотные сервы для камеры — 5 штук за 10 баксов с али (шли одним комплектом)
    4)крепежи для батареек — около доллара
    5)контроллер заряда и повышатель напряжения в сумме 60 центов
    6) распберри — 22 евро
    7)камера около 20 евро, потерялся чек)
    8)Шим контроллеры — 5.22$ x2
    9)модуль gy87 — гироскоп, компас, акселерометр, барометр, термомет — 7 долларов, в последствии был заменен одним компасом за 2 доллара

    Аккумуляторы уже не припомню по чем брал, литиевая батарея от старой мобилки, а возможность попечатать на 3д принтере коллеги — бесценна. На нем были изготовлены корпус для распберри, сервоконтроллеров и поворотный механизм камеры, но тут при отсутствии 3д принтера можно выкрутиться — у кого на что хватит фантазии. Я сперва исрользовал оргстекло, но из-за кривизны рук оно постоянно трескалось и ломалось.


  1. Zolg
    04.05.2016 17:05

    > робот смог встать на ноги только используя минимум 10 Амперный станионарный БП, а никаких батареек ему не хватало
    Возможно имело смысл с хоббикинга вместо новой партии серв заказать LiPo батарею. Для модельного лития 10А — вообще не ток.


    1. at91sam7a3
      04.05.2016 17:19

      Согласен. Следующий намеченный аппаратный апгрейд это как раз литиевая батарея.


      1. Syzd
        05.05.2016 12:56

        Аккумулятор 18650 вам в помощь. Я на своем 4WD роботе быстро перешел с обычных аккумуляторов типа пальчиковых батарей на 2x 18650


        1. Zolg
          05.05.2016 18:40

          18650 штука хорошая, но для токов в 10A лучше все же взять модельный LiPo.


  1. CGen
    04.05.2016 17:14

    Добрый день! Очень любопытно.

    Увидел свой путь, но наоборот :-).
    Я немного боле года назад начал делать колёсного робота.
    Сначала казалось, что нужна многоядерная плата. Купил двухъядерную Banana Pi.
    Первым ударом был ультразвуковой датчик. Я не мог предположить, что Linux с PREEMPT RT вообще не подходит для таких вещей.
    Датчику нужно на одну ногу подать 10 микросекунд для запуска, а на второй ноге ждать пока сигнал станет ровен нулю. Эти вещи делать НЕЧЕМ!!! Конечно народ к Raspberry Pi подключает такие датчики и жалуется, что они не точные. Однако дело вовсе не в датчиках.
    Приобрёл STM32 Nucleo-64 и подключил 10 датчиков через MCP23S17. Аллилуйя! Всё идеально. Однако к тому времени поменял платформу. Теперь было нужно 4 ШИМ и 4 энкодера (моторы с датчиком Холла). 64-х ног Nucleo-64 категорически не хватало. И тут появились STM32 Nucleo-144. Я сразу себе приобрёл с новеньким Cortex-M7. А он по USB подключен к Banana Pi (можно безболезненно на Raspberry Pi заменить).…

    Потом узнал, что многие производители SoC дополнительно встраивают ядра Cortex-M (или собственные, например, в BeagleBone Black) для выполнения на них Real-Time OS.


    1. at91sam7a3
      04.05.2016 17:24

      Да, обычный контроллер в таких делах как замер испульсов ничем не заменить, и я сейчас как раз верчу в руках Ардуину мини, чтобы повесить ее на i2C а на нее ультразвуковой дальномер и использовать АЦП для контроля уровня заряда батарей.
      А зачем, собственно, заменять банану на распберри? Если для подключения камеры, то мне кажется USB веб камера будет намного удобнее в плане интерфейса с OpenCV.


      1. CGen
        04.05.2016 17:52

        Это я чисто гипотетически предполагаю возможность лёгкой замены, если вдруг чего. Пока до камеры не дошел. Долго ещё идти :-)
        RPi3 же с WiFi и Bluetooth вышла. Может быть проще её купить, чем отдельно USB-свистки.


        1. at91sam7a3
          04.05.2016 18:00

          Я ориентировался по потребляемому току- хотелось получить автономную конструкцию. У распберри А+ рекорд — 150мА, 2й распберри — 300, а вот у коллеги вчера на столе лежал odroid C2, запитанный от БП с амперметром, и на амперметре я видел 550мА. Интересно как с этим у банана.


          1. CGen
            04.05.2016 18:44

            У меня самая первая плата. Сам не измерял, но верю во этому: http://www.bananapi.org/2014/06/measure-power-consumption-of-banana-pi.html


            1. at91sam7a3
              04.05.2016 19:43

              А по поводу Wifi — 150мА это с Wifi, 2мя сервоконтроллерами, гироскопом и компасом. Они запитываются от Raspberry PI. Но вот такой мелкий WiFi работает не очень хорошо. По тестам большой USB свисток TPLink выдавал куда лучший пинг и скорость передачи в одной и той же сети. Когда я не смог добиться хорошего ФПС при стриминге видео, а потом взял у коллеги его большой Wifi адаптер — скорость волшебным образом выросла в несоклько раз и даже задержка видео пропала.


  1. anprs
    04.05.2016 19:10

    Не думал допилить сервы и получать с них обратную связь? Как-то так, например: habrahabr.ru/company/amperka/blog/127773


    1. at91sam7a3
      04.05.2016 19:33

      Думал. С самого начала. Сперва думал вывести агалоговый выход, но всё встало на 18 канальном АЦП. Понятно, что можно, конечно, взять 3 atmega16, но это показалось чересчур хлопотно. Потом нашел http://www.openservo.com/ — проект сервоконтроллера, управляюшегося по i2C, умеющего говорить свое положение и даже, кажется, температуру сервомотора. Просто шикарная идея, особенно остро стоявшая когда я понял что у меня есть 20 ненужных сервомоторов, которым было бы неплохо допилить электронику, чтоб сделать их слабее. Но проблемы такие — где купить их плату — непонятно, сделать самому — она 4х слойная, спроектировать самому — долго. А так, конечно, было бы удобно протянуть одну шину i2c ко всем моторам цепочкой.


  1. dimonnwc3
    05.05.2016 00:14

    Всегда хотел сделать робота. Только вот не разбираюсь в этом вообще. Не подскажете с какого робота лучше начать новичку? есть ли какие то полезные ресурсы?


  1. dedyshka
    05.05.2016 07:53

    Увидев название «Построение хексапода для тех кто не хочет мастерить, а хочет программировать» очень воодушевился и полез читать (т.к. как раз люблю с софтом возиться, а вот электроника для меня тёмный лес). Рассчитывал увидеть статью в стиле купил кит, собрал за час и программируй, но к огромному сожалению «ШИМ, I2C, мА, сервомоторы такие и сякие и пр.». Спасибо Вам, конечно, за статью, но вот название несколько вводит в заблуждение.


    1. at91sam7a3
      05.05.2016 08:12

      Я согласен, мне и самому хотелось бы сделать еще проще и быстрее, но пока это самый быстрый вариант который я знаю.
      Вам может быть стоит посмотреть на HexyHexapod — его продают собранным,, достаточно вставить батарейки и можно начать что-то делать. Да и цена выходит даже дешеле чем тут. Возожности, жалко, не те.
      А по моему рецепту — запаяно 6 проводов, в общей сложности. Пусть будет 2 часа. Их видно на фото, выходяшими из распберри. Сервмоторы все вставлены в разъемы. Еще парой припаян контроллер зарядки батареи. Сама отверточная сборка корпуса первый раз заняла около 3-4 часов. ( с деталями не пришло ниаких инструкций и руководствоваться пришлось фотографиями готовых роботов) Я бы сказал что за пол дня всё можно скрутить в кучу. если бы не 4 детали распечатанные на 3д принтере. Они-то за пол дня тоже напечатались, но 3д принтер пока есть не у всех, и смастерить самостоятельно крепежи, чтоб описанные платы прикрутить к корпусу таки займет какое-то время. А если притнер есть, то в итернете можно сразу же найти готовые модели. Вот, например, крепеж камеры image


  1. mmMike
    05.05.2016 08:29

    Когда то игрался с созданием хексапода и его управлением…

    Хотел бы предостеречь (из своего опыта) от использование дешевых серв с пластиковыми шестернями и большим усилием, без ограничения по току и пр.

    Упершись ножкой в препятствие серва говорит хрусть-хрусть и срезаются зубцы шестеренок (испортил 3 сервы в результате).
    Конечно, для этого нужны определенные условия и вероятность этого события не высока. Но она есть. Особенно, когда хексапод на автономном управлении. Застрял и… пытается двигать лапками без шансов сдвинуть корпус.

    И использование Малины для управления… сомнительный выбор. Автономность сильно снижается (в режиме ожидания) да и плохо подходит для управлению железом в режиме реального времени… Лучше уж взять нормальный контроллер управления железом (ARM Cortex M3..4).

    И мысли об автономной программе, позволяющей карабкаться по лестнице — ну очень оптимистичные мысли.
    Совсем не тривиальная кинематика движения и управления.

    Можно попробовать вначале в эмуляторе (я использовал Java 3D библиотеки), прежде чем тратится на физическое воплощение.


    1. at91sam7a3
      05.05.2016 09:58

      Спасибо за предупреждение, постараюсь всячески избегать такого финала. Пока перебираю варианты дальномеров, чтоб установить параллельно камере и строить карту препятствий, Потом наверно есть смысл мерять ток на сервомоторах. Про дальномеры пока знаю лишь 3 варианта
      -ульразвуковой
      -лазерная указка параллельно камере(мерять расстояние от центра камеры до красной точки впереди)
      -раскачиваясь влево-вправо сделать 2 кадра и построить карту глубины из стереоизображения

      Интересно, есть ли какой-то дешевый вариант лазерного дальномера?


      1. mmMike
        05.05.2016 10:28

        -ульразвуковой

        Самый простой вариант.
        Делал с круговым обзором. Дает довольно четкую картинку (прямо на экранчике на роботе).
        Вот здесь наверное должно быть видно. Правда на этом виде в режиме прямого управления ездит. Но делал и пробовал и автономный режим перемещения. https://www.youtube.com/watch?v=iq8M-esM4QQ

        Интересно, есть ли какой-то дешевый вариант лазерного дальномера?

        Лазерная указка или, что лучше, лазерная линия. Только не параллельно камере, а вынесенная в сторону на заведомо известное расстояние и с определенным углом относительно оси камеры.
        Можно еще и не фиксированный угол, а лазер на шаговик. тогда вообще 3D сканер получится.
        Малина вполне справится с расчетами. Они не сложны (простая геометрия и пред рассчитанные тангенсы.).

        На Малине не пробовал, но на Samsung S5 обсчет кадра через rederscript занимает 40ms на все (+ время на получение bitmap RGB в 50ms * 2):
        • снимок без лазера (можно без этого, но выделить лазерную линию при естественном освещении довольно трудно)
        • включить лазер + снимок с лазерной линией.
        • Вычесть 2 кадра (лазерная линия становится контрастней)
        • Выделить линию (координаты x,y в px на снимке) и рассчитать расстояние в mm до каждой точки линии (простейшая тригонометрия).


        -раскачиваясь влево-вправо сделать 2 кадра и построить карту глубины из стереоизображения

        Медленна малина для обработки изображения. Пробовал в системе видеонаблюдения делать обработку изображения в OpenCV.
        Не для реального времени. Ну разве что если робот будет двигаться ооочень медленно и таскать за собой тележку с аккумуляторами для обеспечение Малины.


        1. at91sam7a3
          05.05.2016 10:40

          На Малине не пробовал, но на Samsung S5 обсчет кадра через rederscript занимает 40ms на все (+ время на получение bitmap RGB в 50ms * 2):


          Не будете ли добры поделиться фотографиями, ссылками или кодом? Стало реально интересно. Инструкция подробная, но хотелось бы посмотреть на готовый результат.


          1. mmMike
            05.05.2016 10:56

            Готовый результат (статью) выложу, когда закончу этот проект (3D сканер на базе телефона). Закончу… соберу фотографии, выложу видео и исходники на GitHub. В принципе, немного осталось…

            Но вот как, например выглядит расчет координат по точкам выделенной лазерной линии (кусочек файла с renderscript):

            // screenAngleCoefficientW = ConfigDDD.cameraViewWidth / ConfigDDD.cameraViewDistance;
            // tangentScreenW = tangentScreenCoefficientPerPixel * (sreenPosW - screenWidth / 2);
            double tangentScreenCoefficientPerPixel; // = (screenAngleCoefficientW / screenWidth)
            double tangentLaserValue;
            double laserGreenL, laserRedL;
            
            float3 __attribute__((kernel)) getGreenLaserPointsCloud(float3 in, uint32_t x) {
              float3 out;
              short *p = (short*)rsGetElementAt(gGreenLaserPoints, x);
              short sreenPosW = p[0];
              if(sreenPosW < 0) {
               out.z = -2; out.x = 0;  out.y = 0;
               return out;
              }
              short sreenPosH = x;
              double tangentScreenW = tangentScreenCoefficientPerPixel * (sreenPosW - halfScreenWidth);
              out.z = laserGreenL / (tangentLaserValue + tangentScreenW);
              out.x = out.z * tangentScreenW;
              double tangentScreenH = tangentScreenCoefficientPerPixel * (sreenPosH - halfScreenHeight);
              out.y = out.z * tangentScreenH;
              return out;
            }
            

            ну что бы не было сомнений, что я этим плотно занимаюсь…


            1. at91sam7a3
              05.05.2016 11:09

              Да я ж не ставил под сомнение… просто сам пока только начал знакомиться с OpenCV, и пока учусь по чужим примерам. Было бы очень здорово приделать лазерную линию к сервомотору или шаговику и получить 3д сканер. Жду Ваш проект на гитхабе)

              Когда-то в нашем отделе работали над немецким 3д сканером. В двух словах — хорошая японская оптика, то ли кенон то ли никон, рядом проектор, проэцирующий сеточки-полосочки, из которых магия делала облако точек с точностью кажется в сотые миллиметра. Искал, но не нашел ничего похожего на миниатюрный проектор. Чтоб строить линии совсем без моторов.


              1. mmMike
                05.05.2016 11:30

                Полно миниатюрных проекторов HD для презентаций и пр. Вот только цена на них не радует.

                Есть китайские дешевые мини LED проекторы. Но в нижнем ценовом диапазоне «карманных» проекторов (размер матрицы для проецирования 480 x 320..320x240 и 100$) сотые mm не получить. Это легко считается. Даже mm не получить…
                Ну и в первую очередь с яркостью у них проблемы. Не только же в темноте робот ездить должен.

                Лазер для сканирования (и пр. в обвязке) в общем выйдет немногим дороже таких проекторов (20$ лазер..+ шаговик+контроллер..).
                Хотя и существенно медленней. Но и точность повыше и менее критичен к освещению.
                А если нужно только дальномер по курсу робота то ультразвуковой датчик ну гораздо проще и лучше. Смысл в лазере и точности < 1mm? Хватить 1-2 см, что дает ультразвук.

                Если бы у меня встала задача грубого сканирования помещения с точностью 1-5 см и до 2-х метров, то я бы взял кучку ультразвуковых датчиков (не готовых моделей, а именно излучателей/приемников без обвязки) и сделал бы из них. Ничего сложного разводке платы с накачкой излучателя и ОУ на приемник нет.

                Дешево и сердито и по потреблению тока не много. Народ такое на квадракоптеры вовсю ставит.


                1. at91sam7a3
                  05.05.2016 13:06

                  Это легко считается. Даже mm не получить…

                  там не сильно высокое разрешение было, но была какая-то фишка. Хитро подобранные паттерны, которые проецировались на объект. Это была не просто сеточка, а последовтельность из сеточек и полосочек с разным шагом. Я видид это только со стороны.


                  1. mmMike
                    05.05.2016 13:14

                    Да в принципе, никакой магии нет. Особенно это ничем не отличается от расчетов по лазерной линии.
                    Но точность определения координат ограничена как разрешением камеры, так и разрешением проектора/шага лазера/ширины лазерной линии.
                    Простая геометрия. Паттерны просто позволяет один кадр обрабатывать, получая сразу много данных (точек с заданными патерном координатами). В отличие от лазерной линии, где все что можно снять — это по одной точки на линии.
                    Выгодно, если обработка (комп) кадра быстрая. За меньшее количество кадров можно сделать полный скан, чем лазером.


      1. tmin10
        05.05.2016 13:40

        >Интересно, есть ли какой-то дешевый вариант лазерного дальномера?
        Почитайте эту тему, да и форум вообще полезный: http://roboforum.ru/forum10/topic12095.html


    1. CGen
      05.05.2016 12:36

      > Лучше уж взять нормальный контроллер управления железом (ARM Cortex M3..4)
      Ага. У них гарантированное время реакции на прерывание. И вложенные прерывания…

      Было любопытно посмотреть на решения проблемы.
      Один человек портировал FreeRTOS на Xen и запустил параллельно с Linux (в Cortex-A7 аппаратная виртуализация).
      Есть порт FreeRTOS на Raspberry Pi.
      Плату на Cortex-M соединяют с платой на Cortex-A (SPI, USB ...).
      Производители SoC на одном кристалле размещают Cortex-A Cortex-M. Это самое правильное и удобное для использования. Эх, если бы знать всё заранее :-), то выбрал бы изначально такой вариант.


      1. mmMike
        05.05.2016 12:44

        на одном кристалле Cortex-A и Cortex-M — это экзотика… (ну где такое в ширпотребе найдешь).

        >Плату на Cortex-M соединяют с платой на Cortex-A (SPI, USB ...).
        Решение, в котором котроллеру — контроллерово, а высокоуровневыми задачами (распознавание изображения и принятие решения и пр.) занимается другой модуль — это классика, проверенная временем.

        >Один человек портировал FreeRTOS на Xen и запустил параллельно с Linux (в Cortex-A7 аппаратная виртуализация).
        Все равно на Малине выведенных физически GPIO ножек не хватит для всех задач…


  1. Delics
    05.05.2016 11:22

    > Таким образом примерно за 300 долларов можно собрать робота, имеющего 6 ног, линукс на борту, запитанного от батарей, обладающего датчиками и камерой.

    За 300 долларов это слишком просто. Кстати, готовые примерно за такой порядок цен и продаются.

    Хорошо бы сделать что-то подобное долларов за 50-70. Летом, если будет время, попробую.


    1. mmMike
      05.05.2016 11:34

      $50-70…
      Не получится. Сервомашинку на коленке не сделать.
      Основная цена — стоимость сервомашинок. (6*3=18 шт).


      1. Delics
        05.05.2016 12:12

        В своё время помучался с дешевыми сервоприводами и понял, что надо брать или дорогие (для данного проекта неприемлемо, да и незачем), либо брать дешевые шаговые двигатели, но париться с конструкцией и программами.

        С учетом того, что это — хобби, «запарки» считаю бесплатными.

        Так что вполне можно уложиться.


        1. mmMike
          05.05.2016 12:30

          Шаговые двигатели для автономного робота с аккумуляторным питанием?!!!
          Оригинальная мысль…
          Но все же осмелюсь предположить, что не сработает.

          Единственное преимущество между классическим сервоприводом (а сервомашинка это частный случай сервопривода) отсутствие дополнительных программно-аппаратных схем удержания угла поворота.
          А в остальном — сплошные недостатки.

          Поверьте, даже 28BYJ48 c редуктором и дохленьким усилием сильно нагревается за пару минут работы.
          А уж как греются (радиаторы ставить приходится) NEMA-23 у меня на станке…

          Так что вполне можно уложиться.

          Пусть, считаем что батареи, корпус (ноги/крепления) все «бесплатно».

          Найдете комплект «движетелей» для платформы хексапода с полезной нагрузкой 1 кг (на батареи и пр.) и током потребления, позволяющем хотя бы 30-40 минут передвижения за < $300 — дайте пожалуйста знать…

          Только перед тем, как говорить, что нашли, сами проверьте по паспортным данным — точно потянут или нет.


          1. Delics
            05.05.2016 12:48

            > Но все же осмелюсь предположить, что не сработает.

            Конечно сработает.

            > Поверьте, даже 28BYJ48 c редуктором и дохленьким усилием сильно нагревается за пару минут работы.

            За пару минут непрерывной работы — да. Но их надо включать только для выполнения небольшого движения, как и сервоприводы, а удержание позиции делать механикой. В таком направлении: https://www.youtube.com/watch?v=2_LUOOlgo5k (я не говорю, что надо прямо так делать, ведь речь про гексапод).

            ===========

            Да, сервопривод SG-90, я так понимаю, именно он вами противопоставляется 28BYJ48 (т.к. один ценовой сегмент) — редкостное недоразумение.

            Ошибка ± 10 градусов, иногда вообще проскальзывает в крайние положения, жутко шумит, требует калибровки.


            1. mmMike
              05.05.2016 12:57

              Говоря про «нагрев» и «автономность», я пытался намекнуть на такой параметр, как потребляемый ток.
              Ну есть еще такой параметр как масса двигателя на мощность/угловой момент (еще один намек).

              удержание механикой (червячный привод что ли) это потеря информации о положении через N снятий тока удерживания.

              Конечно сработает

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


              1. Delics
                05.05.2016 13:54

                Вы заявляете, что SG-90 будет лучше работать и потреблять меньше тока, чем хорошо запрограммированный и правильно установленный 28BYJ48?

                Напрасно так думаете. Подозреваю, вы просто не сталкивались с SG-90.
                А промышленные дорогущие сервоприводы, конечно, будут лучше для такой задачи. Кроме цены.


                1. mmMike
                  05.05.2016 14:26

                  В кладовке валяется 15 штук SG-90 купленных когда то для хексапода (жадность — это плохо… пожалел денег на нормальные).
                  Из них 3 штуки с выкрашенными зубьями (усилие которое они развивают на грани срезания зубьев с их же пластиковых шестерней).
                  Еще 5 пошло на пульт управления манипулятором робота (https://www.youtube.com/watch?v=iq8M-esM4QQ).
                  Больше их ни на что так и не придумал приспособить. Хексапод даже ходил… вот только нагружать его аккумуляторами и доп. оборудованием для длительного автонома не получалось.
                  400 грамм веса все конструкции — максимум с чем SG-90 справляются. Для игрушки с радиоуправлением хватит, для чего то интересного — нет.
                  Да и угробив за неделю 3 сервы, решил, что хватит и разобрал.

                  А 28BYJ48 (как 5V так и 12V) куда я только не пихал (не менее 7 штук)… и прекрасно знаю и скорость и угловое усилие для разных режимов управления шагами. И как они греются при использовании ul2003 в качестве драйвера (ну не делать же для этого убожества нормальный драйвер с контролем по току и ШИМ).

                  И Вы будете мне таки рассказывать про скорость, ток и усилие на валу 28BYJ48 и SG-90…

                  И то и другое для хексапода с весом на платформе в 1 Кг просто не подходит.
                  Для SG-90 велика вероятность выкрашивания шестерней (да и на грани это его усилия), а 28BYJ48 просто не потянет по моменту на валу. Он у него совсем мизерный.

                  А просто сравнивать SG-90 и 28BYJ48 (ежа с ужом) просто бессмысленно. Они для разных целей.

                  И это не теоретические рассуждения. А мой личный опыт.


  1. j_wayne
    05.05.2016 12:57

    Интересно, а подобие вот такого робота (без прыжков конечно же):
    https://geektimes.ru/post/180571/
    на шести шаговых двигателях реально сделать?


    1. tmin10
      05.05.2016 13:49

      Думаю даже можно проще: обычные двигатели+редукторы+энкодеры.


      1. j_wayne
        05.05.2016 14:03

        Проще потому, что отслеживается угол поворота?


        1. tmin10
          05.05.2016 14:05

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


          1. j_wayne
            05.05.2016 14:10

            Про удержание положения я что-то не подумал…
            Спасибо.