Робот-муравей: Настройка и отладка

Главное окно приложения пульта

В предыдущей статье мы разобрали ряд сложных вопросов, связанных с инверсной кинематикой и алгоритмами. Были приведены все математические выкладки, части кода программы, отвечающие за генерацию ШИМ и преобразования координат. Показаны варианты алгоритмов перемещения конечностей робота при ходьбе и поворотах.

На самом деле, самая важная часть начинается сейчас – это отладка. В подобных примерах в интернете это процесс практически не описан. А без этого ни один уважающий себя робот не будет делать то, что вы от него хотите!

Пульт дистанционного управления

Начнем мы с интерфейса взаимодействия с нашим другом. Будем общаться с ним по Bluetooth-каналу. Модули, подобные HC-05, в особой настройке не нуждаются, соединены с контроллером по протоколу USART, и после инициализации готовы к работе. В качестве пульта дистанционного управления я буду использовать свой смартфон. Для этой цели я разработал специальное приложение, которое по каналу Bluetooth способно отправляться команды контроллеру, так и получать от него различную служебную информацию. Приложение состоит из нескольких вкладок.

Вкладки движение и позиция

Вкладки «Движение» и «Позиция» особых пояснений не требуют. В первых версиях приложения их содержание было гораздо беднее, по сути было только движение в четырех направлениях. Все остальные навороты добавились позднее.

Вкладка «Калибровка» предназначена соответственно для калибровки и определения параметров конечностей для математической модели.

Вкладки «Тест1» и «Тест2» служат уже для заключительной проверки правильности калибровки конечностей. Но перед этим их надо откалибровать. А это, поверьте мне, занятие не для слабонервных!

Калибровка

Напомню, что математическая модель каждой ноги описывается десятью параметрами: 4 линейных размера, 3 коэффициента усиления сервоприводов и 3 угла ошибки (для компенсации ошибки при установке нуля привода). С необходимостью линейных размеров все понятно, они участвуют в формулах для расчета углов поворота сервоприводов. Коэффициент усиления (как я его со своей легкой руки назвал) – это зависимость изменения угла поворота от изменения ширины импульса ШИМ. Даже у приводов одной марки он может существенно отличаться, кроме того, правые и левые ноги робота имеют разный знак этого коэффициента. Углы ошибки введены в расчет потому, что невозможно идеально точно при сборке установить сервоприводы в нулевое положение. Это обусловлено конструкцией: сервопривод устанавливается только в дискретные положения, кратные шагу шестеренки на валу.

В самом начале проекта я выполнял калибровку весьма примитивным способом. В коде программы прописывал фиксированные значения ШИМ, смотрел какие им соответствуют углы и по двум точкам для каждого сервопривода вручную рассчитывал коэффициент усиления и угол ошибки. Потом вставлял в код программы, проверял. Это было очень трудоемко, а для повторной калибровки при любой разборке робота приходилось перешивать контроллер по несколько раз. Наконец, как следует намучившись, я автоматизировал весь процесс и сделал калибровку, не привязанной к текущей прошивке контроллера.

При старте контроллер проверяет во FLASH-памяти существуют ли там пользовательские калибровочные значения: если они есть, то использует их, если нет – берет значения по умолчанию. Если нам требуется калибровка, то в приложении на смартфоне выбираем вкладку «Калибровка», выбираем нужную ногу, там в ручную прописываем 4 линейных размера конечности, остальные 6 параметров вычислим, нажав на кнопку «Авто определение». При этом появившемся диалоге настраиваем 6 ползунков на соответствующие углы. Например, перемещая ползунок «Femur +90», добиваемся, чтобы положение сустава Femur было +90 градусов. Настроив параметры ноги, записываем их в память. Теперь будут действовать эти параметры, даже после сброса питания, так как они записаны в память контроллера.

Вкладки калибровки

При калибровке есть одна небольшая хитрость: нужно соблюдать определенный порядок настройки углов, чтобы ноги не мешали друг другу. Я использовал такой порядок: Tibia 0, Femur -90, Femur +90, Tibia +120, Coxa -45, Coxa +45. Углы можно измерять транспортиром или самодельным картонным трафаретом.

Тестирование

В моем приложении существует два вида тестирования: по углам (Тест 1) и по координатам (Тест 2). При угловом тестировании у каждого сервопривода для любой выбранной ноги можно задать конкретный угол поворота. Это был самый первый тестовый режим, он не учитывает всех параметров модели. Более совершенным является координатный тест. Он задает одновременно для всех ног координаты, в которые должен переместиться кончик ноги. Этот тест полноценно определяет качество калибровки. Да и перемещения по координатам гораздо легче измерить, чем углы. Так как ноги перемещаются по одинаковым координатам, то их кончики всегда должны лежать на одной прямой и плоскости, параллельной корпусу. Таким образом, дополнительно можно убедиться в качестве калибровки.

Вкладки тестов

Мы почти подошли к финалу. Наш робот настроен, умеет корректно выполнять все наши команды. Процесс создания был труден и тернист. Обо всех тонкостях и сложностях, возникших в процессе разработки, изготовления и настройки, а также о перспективах я расскажу в следующей статье «Робот-муравей: Заключение». Спасибо за внимание!

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

Ваш e-mail не будет опубликован. Обязательные поля помечены *