Всем привет! Не так давно я начал изучать программирование под микроконтроллеры. По началу написание простых программ для мигания светодиодом и даже двумя уже не доставляло удовольствие и становилось скучно. И вот одним вечером сидя в раздумьях над тем, чем же занять свою голову, решил найти более сложные проекты. На просторах интернета увидел много вещей, которые создают люди, но больше всего меня удивил шестиногий робот или hexapod.
Вдохновившись картинками и видео решил опробовать свои силы. Разработка корпуса, электроники и программы будет вестись с 0.
Исходные материалы и комплектующие для будущего робота:
0. Arduno Due (писать будем в Atmel Studio на чистом C без Arduino IDE, заодно расскажу как подключить отладчик к этой плате) — 1шт;
1. HLK-RM04 (UART to WIFI converter) — прозрачный мост с UART в WIFI — 2шт;
2. Сервоприводы MG996R (из китая, как же без него) — 18шт;
3. LM317D2T-TR для питания сервоприводов + мелкая рассыпуха в виде резисторов и конденсаторов;
4. САПР «КОМПАС 3D»;
5. Фанера 3мм в качестве материала для корпуса (дёшево и пахнет вкусно);
6. Возможность заказать лазерную резку;
7. Время. Много времени.
В самом начале пути встал вопрос «А какой же корпус я хочу?». В процессе поиска ответа на данный вопрос набрел на несколько готовых решений. Больше всего понравились PhantomX и A-Pod. Посмотрев на корпуса, решил уже было начать разработку, но нет. Появилась следующая проблема: так как этих роботов в глаза я не видел и в руках не держал, то я имел плохое представление об их габаритах. В поиске решения этой проблемы я наткнулся на одну из статей на хабре. Автор статьи tomnewmann любезно поделился со мной чертежами своего проекта, за что ему большое спасибо.
Оценив размеры будущих деталей и немного обдумав всю полученную информацию начал набрасывать чертежи корпуса. Я посчитал, что разумнее будет начать с проектирования ног, так как они являются наиболее сложной часть корпуса.
Спустя несколько часов размышлений появилась первая модель «Coxa» (так принято обозначать узел, соединяющий ногу с корпусом). Узел попытался сделать максимально компактным. Сервопривод будет полностью находится внутри, соответственно нужно не забыть (что я первый раз и сделал) про отверстие для вывода проводов.
Деталь 1 — Ось, на которую будет крепиться Femur (вторая часть ноги). Собрана из винта М3x15, шайбы и гайки М3
Деталь 2 — Винт М3x20
Деталь 3 — Стойка для печатных плат M3x20
Деталь 4 — Являются своего рода фиксаторами сервопривода, для предотвращения его перемещения по вертикали.
Высоту (А) данного узла необходимо делать такой, чтобы в внутрь смог уместиться сервопривод, который будет стоять на раме.
Далее нужно сделать «Femur». Деталь оказалась самой простой из всех и думаю не нуждается в комментариях.
Деталь 1 — Винт М3x20
Деталь 2 — Пластиковая втулка 3x10 (длинную стойку я не нашел, пришлось искать другие пути решения)
Деталь 3 — Стойка для печатных плат M3x30
Следующая деталь — «Tibia», последняя часть ноги. С ней проблем быть не должно и её длина зависит от высоты, на которую планируется понимать робота. У меня она составляет 130мм от оси сервопривода, больше делать не стал, так как с увеличением длины увеличивается и нагрузка на сервоприводы, особенно на сервопривод в «Coxa». На второй стороне сделал на второе отверстие под ось, чтобы можно было перевернуть сервопривод и уменьшить длину рычага, если вдруг сервоприводам будет тяжело.
Далее на очереди идет рама — самая большая часть. Именно она определяет конфигурацию ног будущего робота. Существует несколько вариантов расположения ног, но я остановился на варианте буквой Ж (при взгляде сверху похож).
На первых этапах проектирования возник вопрос: «А на каком расстоянии должны находится ноги друг от друга?». В поисках ответа на этой вопрос я понял, что каких-либо рекомендаций по этому поводу нет. Изучая чужие проекты и варианты походок сделал вывод о том, что расстояние подбирается исходя из желаемого максимального угла поворота конечности. Чем больше расстояние между ногами тем больший угол могут достичь конечности во время ходьбы.
В решении данного вопроса помогли чертежи tomnewmann, из которых я и взял расстояние между ног, так как габариты роботов были довольно похожи (мой немного меньше). Спустя несколько часов родились верхняя и нижняя части рамы:
В нижней части рамы сделан вырез под АКБ и его крепления. Кстати крепиться он будет на липучку, которые используются на квадриках при креплении АКБ к ним. Рама получилось довольно большой. Посидев еще 1 вечер и сделав промежуточные детали в виде опор между частями, я решил, что пора сделать сборку рамы с установленными сервоприводами. Результат не заставил себя долго ждать:
Так как все необходимые компоненты у нас уже есть, то можно сделать полную сборку корпуса:
В центре корпуса между пластинами планировался располагаться блок питания для сервоприводов, снизу 3S Li-po аккумулятор, а сверху плата управления (Arduino Due). В соответствии с этим я изменил сборку рамы:
Плата сверху это модель Arduino Mega c каким-то шилдом. Используется просто для вида и имеет аналогичные размеры, как и Due.
Выглядит это не очень красиво, а с учетом проводов, которые будут торчать будет еще хуже. К тому же тело казалось мне очень худым. Я решил максимально прикрыть электронику без ущерба внешнему виду и придумать название своему детищу.
Решением первой задачей являлись крышки сверху и снизу, закрывающие АКБ и управляющую электронику. Это единственные детали, которые будут собраны при помощи клея. Спустя вечер родилась модель нижней крышки.
Если с первой задачей проблем не было, то со второй задачей возникли трудности на 2 дня. Да, именно столько времени у меня заняло, чтобы просто придумать ему имя. Случайно вспомнив фильм «Терминатор» решил назвать его «Skynet» и вырезать имя на верхней крышке. Так же добавил вырезы для HC-SR04.
В результате добавления всего двух крышей, корпус существенно изменил внешний вид в лучшую сторону:
Полученный результат меня очень впечатлил и внешний вид довольно привлекателен. Во второй части расскажу о сборке корпуса и граблях, на которые я наступал.
Вдохновившись картинками и видео решил опробовать свои силы. Разработка корпуса, электроники и программы будет вестись с 0.
Итак, часть 1 — разработка 3D модели корпуса
Исходные материалы и комплектующие для будущего робота:
0. Arduno Due (писать будем в Atmel Studio на чистом C без Arduino IDE, заодно расскажу как подключить отладчик к этой плате) — 1шт;
1. HLK-RM04 (UART to WIFI converter) — прозрачный мост с UART в WIFI — 2шт;
2. Сервоприводы MG996R (из китая, как же без него) — 18шт;
3. LM317D2T-TR для питания сервоприводов + мелкая рассыпуха в виде резисторов и конденсаторов;
4. САПР «КОМПАС 3D»;
5. Фанера 3мм в качестве материала для корпуса (дёшево и пахнет вкусно);
6. Возможность заказать лазерную резку;
7. Время. Много времени.
В самом начале пути встал вопрос «А какой же корпус я хочу?». В процессе поиска ответа на данный вопрос набрел на несколько готовых решений. Больше всего понравились PhantomX и A-Pod. Посмотрев на корпуса, решил уже было начать разработку, но нет. Появилась следующая проблема: так как этих роботов в глаза я не видел и в руках не держал, то я имел плохое представление об их габаритах. В поиске решения этой проблемы я наткнулся на одну из статей на хабре. Автор статьи tomnewmann любезно поделился со мной чертежами своего проекта, за что ему большое спасибо.
Оценив размеры будущих деталей и немного обдумав всю полученную информацию начал набрасывать чертежи корпуса. Я посчитал, что разумнее будет начать с проектирования ног, так как они являются наиболее сложной часть корпуса.
Coxa
Спустя несколько часов размышлений появилась первая модель «Coxa» (так принято обозначать узел, соединяющий ногу с корпусом). Узел попытался сделать максимально компактным. Сервопривод будет полностью находится внутри, соответственно нужно не забыть (что я первый раз и сделал) про отверстие для вывода проводов.
Деталь 1 — Ось, на которую будет крепиться Femur (вторая часть ноги). Собрана из винта М3x15, шайбы и гайки М3
Деталь 2 — Винт М3x20
Деталь 3 — Стойка для печатных плат M3x20
Деталь 4 — Являются своего рода фиксаторами сервопривода, для предотвращения его перемещения по вертикали.
Высоту (А) данного узла необходимо делать такой, чтобы в внутрь смог уместиться сервопривод, который будет стоять на раме.
Femur
Далее нужно сделать «Femur». Деталь оказалась самой простой из всех и думаю не нуждается в комментариях.
Деталь 1 — Винт М3x20
Деталь 2 — Пластиковая втулка 3x10 (длинную стойку я не нашел, пришлось искать другие пути решения)
Деталь 3 — Стойка для печатных плат M3x30
Tibia
Следующая деталь — «Tibia», последняя часть ноги. С ней проблем быть не должно и её длина зависит от высоты, на которую планируется понимать робота. У меня она составляет 130мм от оси сервопривода, больше делать не стал, так как с увеличением длины увеличивается и нагрузка на сервоприводы, особенно на сервопривод в «Coxa». На второй стороне сделал на второе отверстие под ось, чтобы можно было перевернуть сервопривод и уменьшить длину рычага, если вдруг сервоприводам будет тяжело.
Рама
Далее на очереди идет рама — самая большая часть. Именно она определяет конфигурацию ног будущего робота. Существует несколько вариантов расположения ног, но я остановился на варианте буквой Ж (при взгляде сверху похож).
На первых этапах проектирования возник вопрос: «А на каком расстоянии должны находится ноги друг от друга?». В поисках ответа на этой вопрос я понял, что каких-либо рекомендаций по этому поводу нет. Изучая чужие проекты и варианты походок сделал вывод о том, что расстояние подбирается исходя из желаемого максимального угла поворота конечности. Чем больше расстояние между ногами тем больший угол могут достичь конечности во время ходьбы.
В решении данного вопроса помогли чертежи tomnewmann, из которых я и взял расстояние между ног, так как габариты роботов были довольно похожи (мой немного меньше). Спустя несколько часов родились верхняя и нижняя части рамы:
В нижней части рамы сделан вырез под АКБ и его крепления. Кстати крепиться он будет на липучку, которые используются на квадриках при креплении АКБ к ним. Рама получилось довольно большой. Посидев еще 1 вечер и сделав промежуточные детали в виде опор между частями, я решил, что пора сделать сборку рамы с установленными сервоприводами. Результат не заставил себя долго ждать:
Так как все необходимые компоненты у нас уже есть, то можно сделать полную сборку корпуса:
В центре корпуса между пластинами планировался располагаться блок питания для сервоприводов, снизу 3S Li-po аккумулятор, а сверху плата управления (Arduino Due). В соответствии с этим я изменил сборку рамы:
Плата сверху это модель Arduino Mega c каким-то шилдом. Используется просто для вида и имеет аналогичные размеры, как и Due.
Выглядит это не очень красиво, а с учетом проводов, которые будут торчать будет еще хуже. К тому же тело казалось мне очень худым. Я решил максимально прикрыть электронику без ущерба внешнему виду и придумать название своему детищу.
Решением первой задачей являлись крышки сверху и снизу, закрывающие АКБ и управляющую электронику. Это единственные детали, которые будут собраны при помощи клея. Спустя вечер родилась модель нижней крышки.
Если с первой задачей проблем не было, то со второй задачей возникли трудности на 2 дня. Да, именно столько времени у меня заняло, чтобы просто придумать ему имя. Случайно вспомнив фильм «Терминатор» решил назвать его «Skynet» и вырезать имя на верхней крышке. Так же добавил вырезы для HC-SR04.
В результате добавления всего двух крышей, корпус существенно изменил внешний вид в лучшую сторону:
Полученный результат меня очень впечатлил и внешний вид довольно привлекателен. Во второй части расскажу о сборке корпуса и граблях, на которые я наступал.
P.S.
- Чертежи: drive.google.com/open?id=1KHteI6MK5aWlVP0mCM4DmjNJArnF98Ur.
- Буду рад любой критике и готов ответить на любые вопросы в рамках данного материала.
MaxAlekseev
На противоположной оси (винт М3x15) от выходного вала сервомотора желательно использовать подшипник, стоят они не дорого, а люфтов удасться избежать. Т.к 3-х звенная нога, то без подшипников последнее звено может порядочно гулять суммируя все люфты.
Neoprog Автор
Да, с счет подшипников Вы правы, люфт небольшой имеется, но в большей части он исходит от самих сервоприводов (дешевые). Отверстия под винты я сделал на 0.5мм меньше диаметра винта, чтобы плотно прижимало, но через время оно увеличится от трения. Думаю в следующем варианте корпуса добавлю. Это и есть одна из тех граблей, на которую я наступил.
На счет ИМХО согласен, нечего революционного в нем нет. У меня такой подход к саморазвитию, т.е. я беру проект, в котором я мало разбираюсь и в процессе разработки закрываются пробелы в знаниях.
Пока, что планирую хотя бы научить его обходить\отодвигать препятствия на ровной поверхности, ну и трансляцию видео по воздуху.
MaxAlekseev
Neoprog Автор
Готовые нейросети да, это очень круто. Спасибо за совет, нужно будет подумать. С Pi ни разу не работал.
А можете посоветовать более нормальный аналог? Я знаю ИК датчики дистанции, но там тоже свои нюансы.
MaxAlekseev
Да по большему счету он вообще в данном проекте лишний, намучаетесь с ним. Платформа будет сильно наклоняться в процессе движения и датчик будет «хватать» пол + свои глюки. Достаточно ограничится камерой и управлением движением с ноута. Камера + OpenCV можно реализовать движение по линии. Если очень хочется в дистанцию то для помещения пойдет ИК GP2Y0A02YK (на улице будет ловить ложние срабатывания от солнца) Данных датчиков надо будет ставить несколько для объезда препятствий, по аналогии с парктроником. Так что я бы на дальномеры не закладывался, СТЗ куда интереснее.
Neoprog Автор
Спасибо. На счет управления движением с компа хорошая идея.
Alex_ME
Тогда уж две камеры, карта глубины и SLAM, чтобы наваерняка. Тут, конечно, без Raspbery не обойтись (правда, не знаю, хватит ли ее мощностей). USB-вебкамеры могут быть слишком большие для маленького аппарата и медленные, можно попробовать csi-камеры.
Elmot
Сейчас появились очень прикольные ИК датчики time-of-fly, например VL53L1X.
Neoprog Автор
Да, датчики крутые. Был бы рад ими завладеть)), но стоят они конечно прилично.
DarkTiger
Тогда уж Pi Zero — вес, потребление лучше чем у Pi3, а по сравнению с ардуиной — оба как небо и земля
Newcss
Есть Pi Zero W, с WiFi на борту))).
OldGrumbler
Использовать как ось резьбовую часть винта — моветон, потому что поверхности трения почти и нет в начале, а потом пойдет износ или отверстия витками резьбы, или самих витков. По уму та часть винта должна быть без резьбы, длиной в толщину фанеры и чуть большего диаметра. А совсем по уму — отверстия в фанере под оси втулить, иначе они быстро превратятся в дырки )))
Neoprog Автор
Да верно. Проще всего маленькие подшипники вставить, что я скорее всего и сделаю
im_stD
Автору для КДПВ…
Недавно пересматривал «Прибытие», поэтому слово «гексапод» сразу ассоциировалось...
slovak
Прошу простить "зануда мод", но там количество конечностей было 7, а не 8. Так что "геПтаподами" прилетевших величали.
Плюс на кдпв, предложенной Вами, у существа радиальная симметрия тела, чего нет у робота автора статьи.
im_stD
Да, Вы правы, гептаподы. Беру свое предложение обратно.
third112
А не лучше использовать дюраль или листовой пластик типа полистирола? Тонкая фанера не всегда идеально плоская, может впитывать влагу и деформироваться (ее надо лакировать), отверстия могут расшириться в процессе эксплуатации (если небольшой перекос оси). Обработка не сильно сложнее.
Neoprog Автор
Возможно лучше, но для отладки дешевле всего фанера. В конечном варианте думаю перейти на пластик. Фанера временное решение
Arxitektor
Посоветую резьбовые заклёпки.
Очень удобная штука.
И порежут его легко. Куча контор. Можно даже взять листовой поликарбонат.
Прочный очень.
Neoprog Автор
Глянул резьбовые заклепки и не очень понял как это должно быть. Вы предлагаете вставить заклепку во вторую часть ноги?
Karlson_rwa
Я правильно понимаю, что вы собрались питать всю конструкцию от 3S1P лития, а напряжение питания серв (5В, да?) будете брать с линейного стабилизатора LM317?
Тогда у меня вопрос. Где алюминиевый радиатор размером с робота? :)
Neoprog Автор
Там всё есть)) На картинке с электроникой в центре стоит плата питания, а на ней радиатор и вентилятор. Кстати во время работы LMки не сильно греются. Слегка теплые.
И да, там каждый сервопривод питается от отдельной LM.
Karlson_rwa
Извините, не удержался.
Neoprog Автор
Хах, да я понимаю не самое лучшее решение, но одно из самых простых и дешевых. Пока, что имею мало опыта в разработке импульсных БП, а брать готовые не интересно.
При том зима скоро, дополнительный обогрев не помешает))
Neoprog Автор
Я уже боюсь писать статью про разработку электроники. Убьют)))
Elmot
Если будете питать сервы с LMок, то да, убьют. И правильно сделают.
MaxAlekseev
del
MaxAlekseev
очередного велосипедаимпульсного БП — это бесполезная трата времени, есть шанс не дойти до финала. А как уже сказали выше линейниками греть атмосферу, через силовое питание серв… точно заклюют.timdorohin
Безумец вы. И злостный растратчик электрической энергии! :D
Купите на али мелкие dc-dc 6-24В — 5В двух/трехамперные и будет вам счастье. По доллару штука, блин.
Neoprog Автор
Да, можно было купить, но хочется самому собрать. Возможно когда-нибудь и перейду на импульсные, на каком-нибудь этапе Х — «Оптимизация времени работы». Да и дома линейных валяется много, решил употребить.
Elmot
Это не только время работы. Ваши 18 серв под мех нагрузной возьмут столько тока, что лмки будут плавиться. Возьмите сначала готовый DCDC, а когда все заработает, переходите на самопал.
Neoprog Автор
Я делал питание из того, что дома валяется. Мощного DC-DC у меня, к сожалению, не нашлось. Я понимаю, что DC-DC это верный вариант, но для начала и LMки пусть погреют.
Плату питания сервоприводов я тестировал на нагрев и результаты вполне хорошие. Руку не обжигают при работе. Сильно нагреваются при клине, когда идут максимальные токи, вплоть до срабатывания защиты LM.
Цифры привести не могу, рука не показывает температуру. В будущих частях приведу конкретные цифры для LMок, если к этому времени не перейду на DC-DC.
Elmot
hobbyking.com/en_us/yep-20a-hv-2-12s-sbec-w-selectable-voltage-output.html
variable
ардуиню в свободное время, буду рад если поделитесь чертежами.
Neoprog Автор
Скинул ссылку в личку
variable
Поблагодарил в личке)
Avtoelectrika29
Классная задумка. Могу вырезать тебе все детали из металла. Бесплатно. Если нужно напиши в личку.
Neoprog Автор
Спасибо за предложение, но под металл нужны другие чертежи. Тут все завязано на толщине материала, а корпус из 3мм металла (даже алюминия) думаю будет слишком тяжелым. Если и использовать металл, то только в релизной версии, но думаю она будет не скоро.
Avtoelectrika29
Ок
Avtoelectrika29
Удачи.
Neoprog Автор
Спасибо)
Andrey_NV
Очень перспективное начинание, при удачной реализации! Удачи
Neoprog Автор
Спасибо, постараюсь довести проект до конца
rekzi
А чертежи и схемы лучше в github выложить.
k2m30
Как-то логично напрашивалась в конце ссылка на гитхаб-репозиторий с чертежами и кодом