Разработка hexapod с нуля (часть 6) — переход на 3D печать


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

    Этапы разработки:
    Часть 1 — проектирование
    Часть 2 — сборка
    Часть 3 — кинематика
    Часть 4 — математика траекторий и последовательности
    Часть 5 — электроника
    Часть 6 — переход на 3D печать
    Часть 7 — новый корпус, прикладное ПО и протоколы общения

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


    Я дал проекту новое название, так как текущее нечего дельного о нем не говорит. По сути 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.


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

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


    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее
    Реклама

    Комментарии 26

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

        Модель выложу чуть позже, когда проверю её и устраню косяки (добавлю соответсвующий раздел в статью)
          0
          Проектировать следует сразу с учетом конечной модели, а она в итоге будет из металла. Прочность деталей изготовленных на 3D принтере подходит для прототипа, но для рабочей модели лучше металл, иначе случайно ребенок наступил и все сломано. Подумайте над технологичностью изготовления деталей в металле в будущем, что бы не начинать проектировать корпус и ноги с самого начала.
        0
        Надо как-то для начала было придумать передавать момент на конечности без таскания такого количества моторчиков при их подъёме
          0
          Да, хотелось бы. Я думал над этим, но в подобных конструкциях много подвижных элементов в которых будет какой-то люфт и так как таких мест будет много, то в результате этого снизится точность позиционирования ног, что соответсвенно скажется на качестве походки.

          Проще купить более мощные приводы, если текущих нехватает. Благо в наше время есть приводы с усилием более 50кг\см.
            0
            так моторчики с таким (и бОльшим) усилием уже и вес имеют бОльший
            так что масло масляное получается
              0
              Ну есть пневматика и гидравлика.
              например, надутая трубочка стремится выпрямиться.
                0
                Мне кажется такая система будет намного сложнее поддаваться контролю. Для такой игрушки это излишне
                  0
                  Зато она имеет минимальную «неподрессоренную массу». Ну и да: такие системы обычно делают с обратной связью ибо каждому действию положено противодействие.
                  +1
                  Гидравлика имеет смысл при «малость» других размерах
                  например
                  image

                  А в малых размерах сервоприводы расположенные непосредственно в конечностях — самый оптимальный вариант. Другие варианты усложняют/удорожают/утяжеляют конструкцию (нужное подчеркнуть).
                  Посмотрите сами, практически все проекты сделаны с такой компоновкой. А, как известно, миллионы мух инженеров не могут ошибаться.
                  0
                  Есть ещё вариант с тросиками. Вес конечностей уменьшится, но может будет люфт.
                    0
                    Тут это скорее всего не применимо. На самом деле проблемы в весе то нет, я ему сверху ставил полную 1.5л бутылку с водой — он даже не заметил её.
                    0
                    Система рычагов, сервы 20кг, по 14$ за штуку вполне достаточны для такого
                    люфты будут всегда при использовании сервоприводов, уменьшение массы ног выигрышнее чем увеличенный люфт, также пробовал шестерни и тросики — не вышло.
                  0
                  Потом эти штуки будут нас порабощать :)
                    +1
                    Это если допустить в коде ошибку вроде этой (внимательный человек заметит подвох):

                    typedef enum {
                        TARGET_TYPE_HUMAN = 0,
                        ...
                    } target_type_t;
                    
                    if (target = TARGET_TYPE_HUMAN) {
                        action = ACTION_NONE;
                    }
                    else {
                        action = ACTION_KILL;
                    }
                  +1
                  Отличное изложение.
                  Из советов:
                  • думаю, танец можно сделать повеселее и подольше, это может «выстрелить» на youtube мне кажется
                  • на счет веса — думаю, стоит напечатать небольшую часть, замерить вес и примерно просчитать по нему весь вес, а не печатать все целиком и перепечатывать, все-таки это сильно важный момент, от которого зависит и время работы, и скорость передвижения, и долговечность сервов
                  • «Возможно в будущем появится возможность перейти на прямое питание приводов от 7.4В» — я уже писал ранее, мне кажется это очень здравой идеей :) Но зато приобретенный опыт бесценен!

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

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

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

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

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

                    0
                    шумит как танк? интересно посмотреть видео с оригинальным саунд, а на счет ультразвука зря — я разобрал арду.дальномеры использую трансдюсеры как в парктрониксе на прием и на передачу одним излучателем, удобно выводить робот из сна, дальность выросла до 20м
                      0
                      Видео в живую на улице www.youtube.com/watch?v=799JIimmuLA

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


                        0
                        А какие сервоприводы брали? Что из характеристик важнее скорость поворота или мощность?
                        Имеет ли смысл использовать соха-драйвер мощнее или быстрее?
                          0
                          DS3218MG. На данный момент стоят именно они и полностью удовлетворяют мои потребности с запасом. До этого пробовал MG996R — по усилию хватает, но точность оставляет желать лучшего и как показала практика у них зависимость угла от ширины импульса нелинейная, соответственно для каждого приходилось подбирать таблицу угол-импульс.

                          Я считаю, что в данном случае более важнее усилие, чем скорость. Но это не значит что нужно брать серву на 100кг, которая будет еле вращаться.

                          По поводу coxa. Можно взять менее мощный привод, но скорость всех приводов должна быть как можно более одинаковой. Лучше установить одинаковые приводы во все узлы, будет меньше проблем.
                            0
                            Про соха спросил, тк в моем понимании на эту ось приходится большая часть движения и соответственно ускорив ее можно ускорить всего гексапода в целом. Кроме того нагрузка на приводы тоже ведь везде разная. Соха в моем понимании совершает наибольшее движение, но при этом несет вроде не самую большую нагрузку… Отсюда и мысль — а может можно взять и сделать конфигурацию оптимальнее, чем если брать все одинаковые.

                            А по поводу серв как раз и присматриваюсь к DS3218, но модели pro. У нее заявлена существенно более высокая скорость: 0.12-0.09 против 0.16-0.14 и она немного мощнее. При этом по скорости обгоняет и более старшие модели на 25 и 30кг и другие аналоги за сколько нибудь соизмеримую стоимость. С другой стороны может имеет смысл взять сервы по мощнее. У меня есть доступ к ЧПУшкам, но по материалам скорее всего будет сталь 2мм. Понятное дело надо будет облегчать конструкцию и вырезать решетки, но все равно получится тяжелым. И встает вопрос хватит ли мощности. Тк такое количество серв стоит ну в общем-то немало и совсем не хочется ошибиться с заказом…
                              0
                              В одной из ссылок выше заметил
                              «I’ll use 6 MX-64T as coxa servos and 12 MX-106T for the femur and tibia sections»
                              первые за 300$ вторые за 500$ шт. Тоесть на coxa наоборот более слабые движки ставят…

                          Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                          Самое читаемое