Всем привет! Разработка гексапода активно продолжается и пришло время показать кардинальные изменения в конструкции и планы по прошивке. Появилась большая пауза в выходе новых статей в результате длительного проектирования новой электроники и корпуса. В принципе об этом и будет статья, как всегда много картинок.
Этапы разработки:
Часть 1 — проектирование
Часть 2 — сборка
Часть 3 — кинематика
Часть 4 — математика траекторий и последовательности
Часть 5 — электроника
Немного общих моментов
Я дал проекту новое название, так как текущее нечего дельного о нем не говорит. По сути SKYNET это небесная сеть, ну или что-то вроде того (sky — небо, net — сеть). В данном случае никакой сети нет, а неба тем более.
Новое название AIWM (artificial intelligence walking machine) — шагающая машина с искусственным интеллектом. На счет интеллекта тут пока рано, но вдруг я смогу дожить до этого момента :)
Я сделал небольшой демо ролик с описанием текущих возможностей (превью нового дизайна начинается со 2й минуты).
Изменения в функционале
Во время перепроектирования возникало множество идей и сложностей. Было убрано несколько не нужных деталей и добавлен новый функционал. Вот список изменений, которые планируется реализовать:
- Мультипроцессорная архитектура. На данный момент запланировано 3 MCU: контроллер машинного зрения (Broadcom BCM2835), контроллер питания (STM32F030), головной контроллер (STM32F373);
- Контроллер машинного зрения представляет из себя готовый модуль Raspberry Pi Zero и будет заниматься сбором, обработкой и распознаванием объектов с камеры. Все необходимое для этого железо подключается к нему же. Коммуникация ведется по протоколу ModBus в режиме слейва;
- Контроллер питания представляет из себя мощный (до 250Вт) DC-DC с возможностью регулировки выходного напряжения на лету через коммуникацию. Он запитывает всю электронику гексапода и является его сердцем. Возможно в будущем появится возможность перейти на прямое питание приводов от 7.4В, но такие приводы довольно дорогие даже на али. Коммуникация ведется по протоколу ModBus в режиме слейва;
- Головной контроллер является связующим звеном этой архитектуры. Он занимается обработкой движения и предоставляет интерфейс для коммуникации с внешним миром. Коммуникация ведется по протоколу ModBus в режиме слейва (внешний мир) и мастера (межпроцессорная коммуникация);
- Поддержка видеотрансляции, либо передача изображений по WIFI для возможности управления вне зоны прямой видимости, если хватит свободных ресурсов Raspberry Pi Zero;
- Управление решено перевести на Bluetooth (будет использоваться готовый мост BLE-UART HM-10), так как WIFI теоретически уже занят для трансляции видео на пульт управления. К тому же хочется иметь возможность обновления прошивки или конфигурации на лету с удаленного сервера и если использовать WIFI для коммуникации, то в интернет уже не выйдешь;
- Управление RGB светодиодами спереди дабы освещать в темноте и попутно показывать состояние FW;
- В структуру ног интегрированы датчики касания, что позволит реализовать более умный алгоритм передвижения;
Головной контроллер или плата управления
Мне порядком надоела текущая плата-бутерброд и было решено спроектировать новую плату управления с учетом нововведений в конструкцию. В процессе проектирования были выкинуты дисплей (не ну реально нафиг он там нужен) и ультразвуковой дальнометр (то еще гуано). Попутно я решил переехать на 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, а не наоборот как раньше.
По предварительным расчетам на печать корпуса уйдет 670г пластика и 51 час непрерывной печати при слое 0.2мм и толщине сопла 0.4мм. В целом по деньгам получается чуть дешевле фанеры, но дизайн даже сравнивать бессмысленно и это того стоит.
P.S.
Буду рад каким-нибудь предложениям по корпусу. На момент написания статьи корпус уже печатался, но еще есть время внести изменения в оставшиеся детали. Я единственный разработчик всего этого проекта и иногда бывают периоды, когда новые мысли в голову тупо не приходят — сейчас начинается этот период :)
Комментарии (22)
vakhramov
24.12.2019 09:51Надо как-то для начала было придумать передавать момент на конечности без таскания такого количества моторчиков при их подъёме
Neoprog Автор
24.12.2019 09:53Да, хотелось бы. Я думал над этим, но в подобных конструкциях много подвижных элементов в которых будет какой-то люфт и так как таких мест будет много, то в результате этого снизится точность позиционирования ног, что соответсвенно скажется на качестве походки.
Проще купить более мощные приводы, если текущих нехватает. Благо в наше время есть приводы с усилием более 50кг\см.defecator
24.12.2019 10:46так моторчики с таким (и бОльшим) усилием уже и вес имеют бОльший
так что масло масляное получается
opaopa
24.12.2019 10:47Ну есть пневматика и гидравлика.
например, надутая трубочка стремится выпрямиться.Neoprog Автор
24.12.2019 10:49Мне кажется такая система будет намного сложнее поддаваться контролю. Для такой игрушки это излишне
opaopa
24.12.2019 11:25Зато она имеет минимальную «неподрессоренную массу». Ну и да: такие системы обычно делают с обратной связью ибо каждому действию положено противодействие.
Shrim
24.12.2019 11:38starDestroyer
24.12.2019 14:07Есть ещё вариант с тросиками. Вес конечностей уменьшится, но может будет люфт.
Neoprog Автор
24.12.2019 14:08Тут это скорее всего не применимо. На самом деле проблемы в весе то нет, я ему сверху ставил полную 1.5л бутылку с водой — он даже не заметил её.
PavloG
26.12.2019 07:50Система рычагов, сервы 20кг, по 14$ за штуку вполне достаточны для такого
Prometheus
24.12.2019 11:31Потом эти штуки будут нас порабощать :)
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; }
nIx0iD
24.12.2019 11:47+1Отличное изложение.
Из советов:
- думаю, танец можно сделать повеселее и подольше, это может «выстрелить» на youtube мне кажется
- на счет веса — думаю, стоит напечатать небольшую часть, замерить вес и примерно просчитать по нему весь вес, а не печатать все целиком и перепечатывать, все-таки это сильно важный момент, от которого зависит и время работы, и скорость передвижения, и долговечность сервов
- «Возможно в будущем появится возможность перейти на прямое питание приводов от 7.4В» — я уже писал ранее, мне кажется это очень здравой идеей :) Но зато приобретенный опыт бесценен!
Да, и хотел спросить — нечего нет про то, из чего корпус — PLA, ABS? Если ABS, то планируется ли использование «ацетоновой бани»?
Вот в этом проекте мне очень понравилось, как сделан корпус — красивый, прочный и легкий: zentasrobots.com/mx-phoenix-hexapod
там правда сервы стоят каждый по 500$, но не суть :)Neoprog Автор
24.12.2019 12:01Спасибо за советы.
Да, и хотел спросить — нечего нет про то, из чего корпус — PLA, ABS? Если ABS, то планируется ли использование «ацетоновой бани»?
По поводу пластика — пока что PLA с печатью на зеркале, т.е. глянец будет только с одной стороны детали (логичнее делать его на внешней стороне). Очень красиво смотриться. На счет ABS тут сложнее, принтер стоит дома + маленький ребенок, а как мы знаем ABS довольно вредный и вонючий. В общем нужно делать камеру с вытяжкой — пока нет времени на это, проще принтер-куб купить.
Но зато приобретенный опыт бесценен!
Ради этого все и затевалось :)
fmkit
24.12.2019 12:14шумит как танк? интересно посмотреть видео с оригинальным саунд, а на счет ультразвука зря — я разобрал арду.дальномеры использую трансдюсеры как в парктрониксе на прием и на передачу одним излучателем, удобно выводить робот из сна, дальность выросла до 20м
Neoprog Автор
24.12.2019 12:17Видео в живую на улице www.youtube.com/watch?v=799JIimmuLA
Нехватало еще и ультразвуковые датчики собирать и отлаживать :) Сейчас проблем достаточно, возможно позже.
Tavrid
Одно время следил за проектом projecthexapod.com, они создали прототип, выложили в сеть 3D модели деталей. Потом проект заглох, вроде как недавно что-то зашевелилось вновь.
Предложение — сделать ноги и корпус легче, внешне заметно, что весо-габаритные характеристики перешли по наследству от прототипа.
Neoprog Автор
Верно. Габариты от прототипа почти 1 в 1, а вот с весом тут проще — он варьируется путем регулировки заполнения при печати. Разницу в весе пока нет возможности замерить, так как корпус до конца не напечатан еще.
Модель выложу чуть позже, когда проверю её и устраню косяки (добавлю соответсвующий раздел в статью)
Tavrid
Проектировать следует сразу с учетом конечной модели, а она в итоге будет из металла. Прочность деталей изготовленных на 3D принтере подходит для прототипа, но для рабочей модели лучше металл, иначе случайно ребенок наступил и все сломано. Подумайте над технологичностью изготовления деталей в металле в будущем, что бы не начинать проектировать корпус и ноги с самого начала.