Робот-колхозник: испытания 01.22

Под новый год удалось вырваться в сельскую местность с целью поковырять робота. Основных целей было 2: установить солнечные панели и устранить косяки с управлением. И если останется время — установить плату автопилота собственной конструкции на замену Pixhawk.

Зима в деревне

В сельской местности хорошо, поэтому руки дошли до робота далеко не сразу 🙂

Солнечные панели

Первым делом надо было установить на робота солнечные панели, чтобы он мог немного подзаряжаться когда стоит на солнце. В августе я оставил робота вот в таком состоянии:

Робот-колхозник в августе

Сами панели были закуплены ещё в прошлом году и с тех пор валялись в гараже робота. Кронштейн для установки панелей был уже сварен, но установить не успели. Теперь для установки панелей нужно было изготовить петли, которые позволяли бы открывать панели вверх и при этом не отламывались бы при отклонении панели вниз от горизонта (например, при снятии и переноске кронштейна). Наверное, где-то уже есть такие готовые, но я сходу не нашел. Поэтому распечатал на 3Д принтере. В качестве оси был использован болт М6. Особой нагрузки там нет, поэтому пластиковые элементы вполне подошли. Потом немного кривой разметки, матов, сверления и в результате получилось вот это:

Солнечные панели на роботе

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

Солнечные панели на роботе

Суммарная мощность двигателей робота 1000 Вт. Панели максимально могут дать 250 Вт. Этого мало для движения, но в качестве дополнительного источника зарядки АКБ — вполне подойдёт. Проверить панели в деле не получилось — т.к. почти всё время была пасмурная погода, а без прямого солнца они почти ничего не вырабатывают.

Управление

Следующей проблемой был внезапный реверс при повороте на ходу. Ситуация была очень странная: при раздельном управлении двумя стиками (каждый за свой борт отвечает) — всё ОК; при нормальном управлении (левый — вперед/назад, правый — лево/право) — повороты на месте тоже ОК, а вот при повороте на ходу влево (только влево!) вместо замедления левого борта происходил сначала его реверс, а потом реверс и правого борта. При этом всё сопровождалось какими-то странными рывками.

Злосчастный параметр

Перепрошивка на новую версию ArduRover’а не помогла. Значит, это было штатное поведение системы. Почти полгода я ломал голову над этой проблемой, а решилась она методом научного тыка — я перебирал все настройки, которые хоть как-то относились к управлению. Ларчик открывался просто, за багованое поведение отвечал параметр PILOT_STEER_TYPE. Там стояло значение 2 (Direction reversed when backing up) — что, казалось бы, логично. Но как работает логика в этом автопилоте — я не знаю. По крайней мере, при изменения значения на 3 (Direction unchanged when backing up) — баг исчез и машина стала нормально поворачивать.

Свой автопилот

Собственно, зачем он нужен, если есть Pixhawk?

Во-первых, мне очень не нравятся разнородные по конструктиву узлы внутри одного блока. Pixhawk выполнен в виде законченного устройства в своём корпусе и не рассчитан на интеграцию куда бы то ни было ещё. Блок управления с установленным Pixhawk’ом выглядит вот так:

Блок управления для RK-bot

Китайский автопилот там смотрится инородным телом. Кроме того, его очень неудобно соединять с остальной платой — для этого приходится использовать объёмный монтаж (перемычки). При этом, на самой материнской плате предусмотрено посадочное место под довольно большой (96х96 мм) модуль. А точнее — под модули, т.к. конструкция подразумевает установку модулей друг на друга.

Во-вторых, на Pixhawk’е не хватает выходов на контроль скорости колёс — насколько я понял из мануалов, для этой цели можно использовать только выводы AUXn — их всего 6, из которых сейчас заняты 4 (2 — реверсы бортов, ещё 2 — реле). А колёс у нас 4 (а в принципе хотелось бы и 6).

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

Узел автопилота

Задачами этого автопилота будет низкоуровневый контроль за колесами и направлением движения. Грубо говоря, головной вычислитель даёт ему команду «ехать прямо со скоростью 2 м/с», а плата уже выдаёт ШИМы в колёса, получает от них обратную связь, определяет по ней неисправности колёс и прочие неприятные ситуации.

Печатные платы нового автопилота были изготовлены и даже закуплены компоненты. Но на месте выяснилось, что для приведения автопилота в сколько-нибудь функциональное состояние просто не хватит времени. Прошивка от Pixhawk’а к нему не подойдет — они аппаратно несовместимы, так что придётся всё писать с нуля. А просто для того, чтобы получить данные от автопилота и поуправлять хоть как-то с пульта — надо было имплементировать 2 непростых протокола — Mavlink и SBUS. Поэтому задачу решили отложить до лучших времен. Тем более, удалось вылечить повороты на Pixhawk’е.

Испытания

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

Кот Пирожок (цинично спит, пока остальные работают)

Для начала выяснилось, что сверхнадёжный китайский тахометр не желает работать. Показывает какую-то ахинею. Вскрытие показало, что никаких видимых дефектов внутри нет. Платы чистенькие, пайка везде хорошая. Для успокоения совести я всё равно пропаял несколько ответственных мест, но это не помогло. Из-за отсутствия тахометра не получилось выровнять скорости колёс. Тут надо понимать, что драйверы у нас аналоговые — т.е. мы даём туда ШИМ, внутри он преобразуется фильтром в некий аналоговый сигнал, по которому уже драйвер и выдаёт какое-то воздействие в мотор. Проблема в том, что при одном и том же ШИМе все 4 драйвера могут давать разную скорость вращения колес. На этот случай у драйверов есть специальный регулировочный винт, но для того, чтобы его крутить — надо измерить скорость вращения колеса. Попытки выровнять скорости «на выпуклый военно-морской глаз» не привели к сколько-нибудь значимому эффекту. Тем не менее, мы всё-таки вытащили робота в поле, точнее, пока что на дорогу 🙂

Робот-колхозник на зимнем выгуле

По прочищенному он поехал вполне нормально. Развороты на месте на снегу получаются вообще отлично! Однако, когда в конце мы попытались загнать его в нечищеный снег — он там предсказуемо застрял. Частично сказались неотрегулированные колеса — на видео хорошо видно, что крутятся не все колеса — это как раз следствие отсутствия обратной связи. Как раз эту ситуацию и должен был устранить новый автопилот. Кроме того, у меня есть ощущение, что ему надо добавить мощности — ещё одна пара колёс была бы очень кстати. Это сразу и мощность увеличило бы и площадь сцепления с грунтом.

Робот-колхозник на зимнем выгуле

Планы

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

About the Author: admin

Добавить комментарий

Ваш адрес email не будет опубликован.