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

Этапы разработки:
Часть 1 — проектирование
Часть 2 — сборка
Часть 3 — кинематика
Часть 4 — математика траекторий и последовательности
Часть 5 — электроника

Немного общих моментов


Я дал проекту новое название, так как текущее нечего дельного о нем не говорит. По сути SKYNET это небесная сеть, ну или что-то вроде того (sky — небо, net — сеть). В данном случае никакой сети нет, а неба тем более.

Новое название AIWM (artificial intelligence walking machine) — шагающая машина с искусственным интеллектом. На счет интеллекта тут пока рано, но вдруг я смогу дожить до этого момента :)

Я сделал небольшой демо ролик с описанием текущих возможностей (превью нового дизайна начинается со 2й минуты).


Изменения в функционале


Во время перепроектирования возникало множество идей и сложностей. Было убрано несколько не нужных деталей и добавлен новый функционал. Вот список изменений, которые планируется реализовать:

  1. Мультипроцессорная архитектура. На данный момент запланировано 3 MCU: контроллер машинного зрения (Broadcom BCM2835), контроллер питания (STM32F030), головной контроллер (STM32F373);
    • Контроллер машинного зрения представляет из себя готовый модуль Raspberry Pi Zero и будет заниматься сбором, обработкой и распознаванием объектов с камеры. Все необходимое для этого железо подключается к нему же. Коммуникация ведется по протоколу ModBus в режиме слейва;
    • Контроллер питания представляет из себя мощный (до 250Вт) DC-DC с возможностью регулировки выходного напряжения на лету через коммуникацию. Он запитывает всю электронику гексапода и является его сердцем. Возможно в будущем появится возможность перейти на прямое питание приводов от 7.4В, но такие приводы довольно дорогие даже на али. Коммуникация ведется по протоколу ModBus в режиме слейва;
    • Головной контроллер является связующим звеном этой архитектуры. Он занимается обработкой движения и предоставляет интерфейс для коммуникации с внешним миром. Коммуникация ведется по протоколу ModBus в режиме слейва (внешний мир) и мастера (межпроцессорная коммуникация);
  2. Поддержка видеотрансляции, либо передача изображений по WIFI для возможности управления вне зоны прямой видимости, если хватит свободных ресурсов Raspberry Pi Zero;
  3. Управление решено перевести на Bluetooth (будет использоваться готовый мост BLE-UART HM-10), так как WIFI теоретически уже занят для трансляции видео на пульт управления. К тому же хочется иметь возможность обновления прошивки или конфигурации на лету с удаленного сервера и если использовать WIFI для коммуникации, то в интернет уже не выйдешь;
  4. Управление RGB светодиодами спереди дабы освещать в темноте и попутно показывать состояние FW;
  5. В структуру ног интегрированы датчики касания, что позволит реализовать более умный алгоритм передвижения;

Головной контроллер или плата управления


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

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

Для совместимости текущего Android ПО предусмотрено посадочное место под WIFI-UART мост, который сейчас используется в прототипе. Скрины платы показаны ниже (на 3D виде убран WIFI-UART, так как Altium почему-то отображает его модель полностью одним цветом). На самом деле тут вообще без разницы, что использовать для коммуникации — главное чтобы на выходе интерфейса был UART.




На плате предусмотрены следующие разъемы:
— Основное питание 12В + контакты с балансировочного разъема для возможности мониторинга напряжения каждой ячейки, так же на основе этого можно определять тип подключенного АКБ (количество ячеек);
— Разъем для передачи сигналов на плату питания для сервоприводов;
— Разъемы для подключения контроллера машинного зрения и контроллера питания;
— Разъем для управления передними RGB светодиодами;
— Разъемы для датчиков касания на конечностях;
— Разъем для подключения пьезоизлучателя. Предполагается, что у пищалки уже встроена схема управления, а мы коммутируем только питание.

Все достаточно просто и переезд на STM должен пройти безболезненно. Я довольно удачно спроектировал код и достаточно заменить драйвера, работающие с регистрами периферии.

Контроллер питания


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

Для управления мощной нагрузкой, в качестве которой в данном случае выступают 18 приводов со средним потреблением 12-15А, требуется что-то более эффективное простых DC-DC. Как правило узким местом в них является диод, который при больших токах начинает отапливать помещение. Напряжение питания приводов составляет 6В при входном напряжении до 12В, в данном случае диод будет работать ~50% цикла (грубая прикидка без учета просадки напряжения и прочих радостей). Соответственно даже при использовании диода Шоттки выделяемая на нем мощность будет достаточно большой для того, чтобы начать думать об отводе тепла.

Тут на помощь приходят синхронные DC-DC, у который вместо диода используется полевой транзистор. У хороших транзисторов сопротивление канала достаточно малое для того, чтобы гонять большие токи без существенного выделения тепла. Ниже показаны главные отличия асинхронного DC-DC от синхронного:


В общем перечитав кучу инфы я наконец-то определился с требованиями:

  • Способность гонять токи до 20А в номинальном режиме работы;
  • Переход в аварийный режим при нарушении нормального режима работы: перегрев или насыщение катушки, перегрев силовых ключей, низкое входное напряжение, КЗ, установлено неадекватное выходное напряжение и прочие радости;
  • Возможность коммуникации с DC-DC для получения значений измеряемых величин: входного и выходного напряжений, потребляемого тока, температурах катушки и силовых ключей;
  • Адекватное КПД;

Проектировать DC-DC я решил с использованием микроконтроллера STM32F030, стоит копейки и имеет всю необходимую для решения моих задач периферию. Единственный минус применения данного МК — довольно грубая регулировка напряжения с шагом 25мV при частоте 100кГц. Для получения более высокой точности нужно применять МК с high resolution timers на борту, либо уменьшать частоту переключения транзисторов. Для моих требований такого шага регулировки напряжения вполне достаточно.

На данный момент спроектирован и собран первый прототип, который показал работоспособность схемы. КПД при грубых измерениях составляет 87% при токе 11А в отладочной конфигурации платы с использованием защитных резисторов от сквозных токов (необходимо для настройки dead-time между переключениями транзисторов).

Более подробно о DC-DC будет чуть позже, когда доведу его до ума. Довольно много интересных моментов, запаха поджаренных драйверов затвора и МК :) Кстати транзисторы оказались на столько мощными, что в результате сбоя проходящий ток прожег печатную плату и при этом транзисторы остались целыми.

Немного о новом корпусе


Электроника это очень интересно, но и о механике забывать тоже не нужно. Наконец-то гексапод приобрел адекватный закрытый корпус, откуда не будут торчать провода и куски печатных плат. Вот собственно он

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

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

Корпус представляет из себя набор деталей для последующей сборки болтами «имбус» M3 (в некоторых местах можно применять пластиковый крепеж, к примеру для верхней и нижней крышек) для уменьшения веса. При этом болты вкручиваются непосредственно в пластик в специальные для этого отверстия с предварительно нарезанной резьбой.

Основа собирается из трех разных частей при помощи пазов с последующей фиксацией болтами. В разделении на части нет никакой конструкторской задумки, это просто физические возможности принтера (220х220) и расширять его не очень хочется, поэтому приходятся придумывать как выходить из такой ситуации. В этом есть и свой плюс — в случае каких-либо повреждений достаточно перепечатать только поврежденную часть, что позволит сэкономить на пластике и времени при ремонте (во время тестов всякое может быть).

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


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

Приводы для управления конечностей перенесены в FEMUR, что должно немного снизить нагрузку за счет уменьшения веса TIBIA в результате переноса крепежа и смещение двигателя сервопривода ближе к началу рычага. Да и по дизайну будет лучше, если на FEMUR часть будут устанавливаться TIBIA и COXA, а не наоборот как раньше.

COXA, FEMUR and TIBIA? - What is it?



По предварительным расчетам на печать корпуса уйдет 670г пластика и 51 час непрерывной печати при слое 0.2мм и толщине сопла 0.4мм. В целом по деньгам получается чуть дешевле фанеры, но дизайн даже сравнивать бессмысленно и это того стоит.

P.S.


Буду рад каким-нибудь предложениям по корпусу. На момент написания статьи корпус уже печатался, но еще есть время внести изменения в оставшиеся детали. Я единственный разработчик всего этого проекта и иногда бывают периоды, когда новые мысли в голову тупо не приходят — сейчас начинается этот период :)

Пару фоток процесса печати


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


  1. Tavrid
    24.12.2019 09:12

    Одно время следил за проектом projecthexapod.com, они создали прототип, выложили в сеть 3D модели деталей. Потом проект заглох, вроде как недавно что-то зашевелилось вновь.
    Предложение — сделать ноги и корпус легче, внешне заметно, что весо-габаритные характеристики перешли по наследству от прототипа.


    1. Neoprog Автор
      24.12.2019 09:15

      Верно. Габариты от прототипа почти 1 в 1, а вот с весом тут проще — он варьируется путем регулировки заполнения при печати. Разницу в весе пока нет возможности замерить, так как корпус до конца не напечатан еще.

      Модель выложу чуть позже, когда проверю её и устраню косяки (добавлю соответсвующий раздел в статью)


      1. Tavrid
        24.12.2019 16:33

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


  1. vakhramov
    24.12.2019 09:51

    Надо как-то для начала было придумать передавать момент на конечности без таскания такого количества моторчиков при их подъёме


    1. Neoprog Автор
      24.12.2019 09:53

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

      Проще купить более мощные приводы, если текущих нехватает. Благо в наше время есть приводы с усилием более 50кг\см.


      1. defecator
        24.12.2019 10:46

        так моторчики с таким (и бОльшим) усилием уже и вес имеют бОльший
        так что масло масляное получается


      1. opaopa
        24.12.2019 10:47

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


        1. Neoprog Автор
          24.12.2019 10:49

          Мне кажется такая система будет намного сложнее поддаваться контролю. Для такой игрушки это излишне


          1. opaopa
            24.12.2019 11:25

            Зато она имеет минимальную «неподрессоренную массу». Ну и да: такие системы обычно делают с обратной связью ибо каждому действию положено противодействие.


        1. Shrim
          24.12.2019 11:38

          Гидравлика имеет смысл при «малость» других размерах

          например
          image


      1. starDestroyer
        24.12.2019 14:07

        Есть ещё вариант с тросиками. Вес конечностей уменьшится, но может будет люфт.


        1. Neoprog Автор
          24.12.2019 14:08

          Тут это скорее всего не применимо. На самом деле проблемы в весе то нет, я ему сверху ставил полную 1.5л бутылку с водой — он даже не заметил её.


      1. PavloG
        26.12.2019 07:50

        Система рычагов, сервы 20кг, по 14$ за штуку вполне достаточны для такого


  1. Prometheus
    24.12.2019 11:31

    Потом эти штуки будут нас порабощать :)


    1. Neoprog Автор
      24.12.2019 11:47

      Это если допустить в коде ошибку вроде этой (внимательный человек заметит подвох):

      typedef enum {
          TARGET_TYPE_HUMAN = 0,
          ...
      } target_type_t;
      
      if (target = TARGET_TYPE_HUMAN) {
          action = ACTION_NONE;
      }
      else {
          action = ACTION_KILL;
      }


      1. KIVagant
        24.12.2019 16:18

        Тут прям двойная ошибка


      1. ZUZ
        24.12.2019 22:51

        Может сделать как в фильме Ева? www.kinopoisk.ru/film/493452


  1. nIx0iD
    24.12.2019 11:47
    +1

    Отличное изложение.
    Из советов:

    • думаю, танец можно сделать повеселее и подольше, это может «выстрелить» на youtube мне кажется
    • на счет веса — думаю, стоит напечатать небольшую часть, замерить вес и примерно просчитать по нему весь вес, а не печатать все целиком и перепечатывать, все-таки это сильно важный момент, от которого зависит и время работы, и скорость передвижения, и долговечность сервов
    • «Возможно в будущем появится возможность перейти на прямое питание приводов от 7.4В» — я уже писал ранее, мне кажется это очень здравой идеей :) Но зато приобретенный опыт бесценен!

    Да, и хотел спросить — нечего нет про то, из чего корпус — PLA, ABS? Если ABS, то планируется ли использование «ацетоновой бани»?
    Вот в этом проекте мне очень понравилось, как сделан корпус — красивый, прочный и легкий: zentasrobots.com/mx-phoenix-hexapod
    там правда сервы стоят каждый по 500$, но не суть :)


    1. Neoprog Автор
      24.12.2019 12:01

      Спасибо за советы.

      Да, и хотел спросить — нечего нет про то, из чего корпус — PLA, ABS? Если ABS, то планируется ли использование «ацетоновой бани»?

      По поводу пластика — пока что PLA с печатью на зеркале, т.е. глянец будет только с одной стороны детали (логичнее делать его на внешней стороне). Очень красиво смотриться. На счет ABS тут сложнее, принтер стоит дома + маленький ребенок, а как мы знаем ABS довольно вредный и вонючий. В общем нужно делать камеру с вытяжкой — пока нет времени на это, проще принтер-куб купить.

      Но зато приобретенный опыт бесценен!

      Ради этого все и затевалось :)


  1. fmkit
    24.12.2019 12:14

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


    1. Neoprog Автор
      24.12.2019 12:17

      Видео в живую на улице www.youtube.com/watch?v=799JIimmuLA

      Нехватало еще и ультразвуковые датчики собирать и отлаживать :) Сейчас проблем достаточно, возможно позже.


  1. predator86
    25.12.2019 06:15

    Тоже когда то давно занимался. Интересная тема была.