Под новый год удалось вырваться в сельскую местность с целью поковырять робота. Основных целей было 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’ом выглядит вот так:
Китайский автопилот там смотрится инородным телом. Кроме того, его очень неудобно соединять с остальной платой — для этого приходится использовать объёмный монтаж (перемычки). При этом, на самой материнской плате предусмотрено посадочное место под довольно большой (96х96 мм) модуль. А точнее — под модули, т.к. конструкция подразумевает установку модулей друг на друга.
Во-вторых, на Pixhawk’е не хватает выходов на контроль скорости колёс — насколько я понял из мануалов, для этой цели можно использовать только выводы AUXn — их всего 6, из которых сейчас заняты 4 (2 — реверсы бортов, ещё 2 — реле). А колёс у нас 4 (а в принципе хотелось бы и 6).
На этот случай из говна и палок был спешно разработан узел автопилота, который должен был выполнять все функции Pixhawk’а, исключая ненужные (которых там большинство). В частности, он не должен был определять какие-то там препятствия и пытаться их объезжать — этим будет заниматься специально обученный компуктер (возможно, Jetson Nano).
Задачами этого автопилота будет низкоуровневый контроль за колесами и направлением движения. Грубо говоря, головной вычислитель даёт ему команду «ехать прямо со скоростью 2 м/с», а плата уже выдаёт ШИМы в колёса, получает от них обратную связь, определяет по ней неисправности колёс и прочие неприятные ситуации.
Печатные платы нового автопилота были изготовлены и даже закуплены компоненты. Но на месте выяснилось, что для приведения автопилота в сколько-нибудь функциональное состояние просто не хватит времени. Прошивка от Pixhawk’а к нему не подойдет — они аппаратно несовместимы, так что придётся всё писать с нуля. А просто для того, чтобы получить данные от автопилота и поуправлять хоть как-то с пульта — надо было имплементировать 2 непростых протокола — Mavlink и SBUS. Поэтому задачу решили отложить до лучших времен. Тем более, удалось вылечить повороты на Pixhawk’е.
Испытания
Раз уж так всё хорошо сложилось, что успели и панели поставить и управление починить — надо было хоть немного поездить. Тем временем, специально обученный инженерный кот Пирожок продолжал морально разлагать нестройные ряды роботостроителей.
Для начала выяснилось, что сверхнадёжный китайский тахометр не желает работать. Показывает какую-то ахинею. Вскрытие показало, что никаких видимых дефектов внутри нет. Платы чистенькие, пайка везде хорошая. Для успокоения совести я всё равно пропаял несколько ответственных мест, но это не помогло. Из-за отсутствия тахометра не получилось выровнять скорости колёс. Тут надо понимать, что драйверы у нас аналоговые — т.е. мы даём туда ШИМ, внутри он преобразуется фильтром в некий аналоговый сигнал, по которому уже драйвер и выдаёт какое-то воздействие в мотор. Проблема в том, что при одном и том же ШИМе все 4 драйвера могут давать разную скорость вращения колес. На этот случай у драйверов есть специальный регулировочный винт, но для того, чтобы его крутить — надо измерить скорость вращения колеса. Попытки выровнять скорости «на выпуклый военно-морской глаз» не привели к сколько-нибудь значимому эффекту. Тем не менее, мы всё-таки вытащили робота в поле, точнее, пока что на дорогу 🙂
По прочищенному он поехал вполне нормально. Развороты на месте на снегу получаются вообще отлично! Однако, когда в конце мы попытались загнать его в нечищеный снег — он там предсказуемо застрял. Частично сказались неотрегулированные колеса — на видео хорошо видно, что крутятся не все колеса — это как раз следствие отсутствия обратной связи. Как раз эту ситуацию и должен был устранить новый автопилот. Кроме того, у меня есть ощущение, что ему надо добавить мощности — ещё одна пара колёс была бы очень кстати. Это сразу и мощность увеличило бы и площадь сцепления с грунтом.
Планы
Следующий этап работ запланирован на май этого года. В ходе него будем вешать на робота полезные нагрузки — пора ему уже начать делать что-то осмысленное. В числе первых кандидатов в полезные нагрузки пока значатся косилка и манипуляторы. Что из этого будет реализовано — пока неизвестно. Следите за обновлениями! 🙂
Привет. Случайно наткнулся на ваши заметки. Интересуюсь похожими темами, делаю газонокосилку. Пока только радиоуправление через Wii Nunchuk. И могу посоветовать вам на колеса повешать 2 платы от гироскутера перешитые на управление по UART. Прошивка от Эмануэля Ферру у меня заработала почти сразу, с настройками повозился и результат ровные прогоны. Тоже не часто занимаюсь проектом, но чаще чем вы ))
А вообще сейчас непонятно с работой и поэтому приходится заниматся всякой фигней, не до роботов (
Там потом будут драйверы колес с CAN’ом. Чтобы один интерфейс был сразу на все колёса, т.к. рассматривается вариант с 6-ю колесами. Так никаких UART’ов не напасёшься)
Круто, молодцы. Жаль что государство РФ не выделяет таким инженерам гранты и не пристраивает их как стартапы к техникумам и институтам. Очень Жаль что инновации не востребованы в России.
По хорошему запустить робота над грядками и чтобы он начал хотя бы окучивать картошку, даже если под камерой с оператором который сидит дома например или прикован к дому. Будет рабочая схема которую не стыдно показать. а со временем как ИИ обучится работе от оператора, то он и сам сможет обрабатывать километры грядок и полей.
Но не стоит унывать, думаю уже с этим продуктом нужно искать своего потребителя в РФ , и если никто не откликнется то в искать за границей там точно инновации ценятся.