» » » История одного диплома или как сделать шаробота

 

История одного диплома или как сделать шаробота

Автор: admin от 26-07-2016, 17:50, посмотрело: 747

История этого проекта начинается в 2014 году, когда я учился на 4-м курсе в ведущем техническом вузе России на кафедре «Робототехнические системы». В это время я уже начал задумываться над темой диплома и искал проект, который был бы интересен мне, и при этом в нем присутствовала некоторая новизна. И вот однажды, увидев видео шаробота Rezero, я захотел попробовать повторить успех. Кому интересно, что из этого получилось — прошу под кат.


История одного диплома или как сделать шаробота

Введение


В начале хотелось бы поговорить о достоинствах шаробота. Благодаря единственной точке контакта с поверхностью, шаробот одинаково легко передвигается во всех направлениях, являясь чрезвычайно подвижным и манёвренным, по сравнению с обычными колесными роботами. Манёвренность шаробота ограничена только его динамикой, в отличие от механических ограничений, налагаемых колёсами (например, невозможность движения боком).


Следующее важное достоинство — робот может быть высоким, и чем выше он будет, тем он будет устойчивее. Почему устойчивее? Это видно из уравнения динамики обратного маятника. Ускорение отклонения от вертикального положения равновесия обратно-пропорционально расстоянию до центра масс, т.е. более высокий обратный маятник будет медленнее падать. Это снижает требования к скорости реакции системы управления, но, возможно, увеличивает момент, который должны развивать привода.


Еще одно преимущество — он может ездить по наклонным и подвижным поверхностям, например, палуба корабля или пол самолета при взлете. Да и согласитесь, движется он гораздо красивее, чем обычные колесные роботы.


Один из главных недостатков шаробота — возможность потери вертикального положения равновесия. Но лично я думаю, что это вполне решаемая инженерная задача. Инженеры роботов Aido и Mobi решили ее следующим образом: при превышении некоторого угла отклонения выдвигаются “ноги”, чтобы робот не потерял устойчивость.


Мой рассказ состоит из следующих частей:
— Математическая модель
— Разработка алгоритмов управления
— Конструкция
— Аппаратно-программное обеспечение
— Результаты



1 Математическая модель


Вывод уравнений движения необходим для дальнейшего синтеза управления и моделирования движения. В этом разделе будет немного математики и механики.


На данный момент все существующие математические модели шаробота составлены с учетом некоторых упрощений с помощью уравнений Лагранжа 2-го рода. А так как шаробот является неголономной механической системой, то применять уравнения Лагранжа 2-го рода к такой систему некорректно. В роботе CMU модель шаробота рассматривается как три независимые плоские модели, тем самым не учитывается взаимовлияние этих моделей. В Rezero разработали трехмерную математическую модель, в которой не учитываются гироскопические эффекты, возникающие при вращении омниколес.


Я поставил цель создать наиболее полную математическую модель робота с минимальным количеством допущений. В достижении этой цели мне помог мой научный руководитель С.Л. Крутиков, за что я выражаю ему огромную благодарность.


1.1 Кинематика


Для кинематического описания системы я ввел подвижные системы координат, показанные на рисунке.


История одного диплома или как сделать шаробота

Инерциальная система координат обозначена как История одного диплома или как сделать шаробота. Система координат История одного диплома или как сделать шаробота находится в центре шара. Для перехода от инерциальной системы отсчёта к центру шара используется следующая однородная матрица:



где История одного диплома или как сделать шаробота и История одного диплома или как сделать шаробота смещение центра шара вдоль оси История одного диплома или как сделать шаробота и История одного диплома или как сделать шаробота соответственно.


Для описания вращения шара удобно использовать кардановы углы или углы Tait–Bryan. Таким образом, система координат История одного диплома или как сделать шаробота, связанная с шаром, получается путем поворота История одного диплома или как сделать шаробота на углы История одного диплома или как сделать шаробота, История одного диплома или как сделать шаробота и История одного диплома или как сделать шаробота вокруг осей История одного диплома или как сделать шаробота и История одного диплома или как сделать шаробота соответственно. Данную последовательность поворотов можно представить в виде произведения матриц поворота:



Аналогично можно описать вращение тела шаробота в пространстве. Система координат История одного диплома или как сделать шаробота 2-го звена, связанная с телом, получается путем поворота История одного диплома или как сделать шаробота на углы История одного диплома или как сделать шаробота, История одного диплома или как сделать шаробота и История одного диплома или как сделать шаробота вокруг осей История одного диплома или как сделать шаробота и История одного диплома или как сделать шаробота соответственно. Данную последовательность поворотов также можно представить в виде произведения матриц поворота:



3-я, 4-ая и 5-ая системы координат связаны с омниколесами. Чтобы перейти от системы координат тела к системе координат омниколеса требуется выполнить ряд элементарных преобразований(два поворота, перенос, затем опять поворот), я не буду их описывать здесь.


Последовательность переходов представлена в виде следующего кинематического графа:


История одного диплома или как сделать шаробота


Для описания положения системы используется следующий вектор обобщенных координат:



где История одного диплома или как сделать шаробота — координаты центра шара, История одного диплома или как сделать шаробота — кардановы углы, описывающие вращение шара и тела соответственно, История одного диплома или как сделать шаробота — углы поворота омниколеса вокруг оси двигателя.


1.2 Динамика


Исходя из неголономности системы было принято решения использовать уравнения Аппеля для составления дифференциальных уравнений движения шаробота.


На систему наложено 6 неголономных связей: три связи качения омниколес по шару, две связи для скорости центра шара и одна связь отсутствия верчения шара. Таким образом, число обобщенных координат m=11, число связей s=6, а число степеней свободы n=5. Будем использовать следующий вектор псевдоскоростей:



Для составления уравнений движения необходимо вычислить энергию ускорений для каждого звена:



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



Дифференциальное уравнение движения Аппеля в псевдокоординатах:



где История одного диплома или как сделать шаробота – обобщенная сила от моментов приводов, История одного диплома или как сделать шаробота – обобщенная сила от сил тяжести.


Записываем уравнения Аппеля в матричной форме и решаем относительно История одного диплома или как сделать шаробота:




Все вычисления выполнялись символьно с помощью Maple. Затем полученные уравнения были перенесены из Maple в Matlab для моделирования.



2 Разработка алгоритмов управления


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


Для получения линейно-квадратичного регулятора в начале необходимо линеаризовать систему в окрестности вертикального положения неустойчивого равновесия История одного диплома или как сделать шаробота



Вектор История одного диплома или как сделать шаробота — вектор состояния или фазовый вектор, История одного диплома или как сделать шаробота — вектор измерения и История одного диплома или как сделать шаробота — управление(моменты приводов).


LQR регулятор имеет следующий критерий оптимальности:



где История одного диплома или как сделать шаробота и История одного диплома или как сделать шаробота — положительно определённая матрица. Задача минимизации данного функционала сводится к решению матричного алгебраического уравнения Риккати:



Для линейно-квадратичного регулятора управление записывается в виде История одного диплома или как сделать шаробота, где История одного диплома или как сделать шаробота, История одного диплома или как сделать шаробота – решение уравнения Риккати. В итоге мы имеет матрицу коэффициентов обратной связи:



При умножении данной матрицы на вектор состояния История одного диплома или как сделать шаробота мы получим три момента, которые необходимо подать на двигатели для стабилизации системы. LQR является PD регулятором, в случае если вектор состояния состоит из координат и их производных. Как вы понимаете, использовать обычный PID регулятор и подбирать коэффициенты вручную в такой системе почти невозможно.




3 Конструкция


Конструкция робота разработана в CAD системе Siemens NX. На основании построенной модели были определены массовые и инерционные характеристики звеньев робота.


История одного диплома или как сделать шаробота

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


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


В качестве шара используется баскетбольный мяч диаметром 240 мм. Держатели шара прижимают его к омниколесам, тем самым увеличивают трение. К сожалению, их не получилось изготовить, так как на нашей кафедре нет 3D принтера, а печатать на заказ дорого, т.к. они не маленькие и коэффициент заполнения нужен большой для прочности.


Омниколеса были приобретены на Aliexpress по 120$ за штуку. Самая дорогая часть робота, после приводов, конечно.


Все металлические детали изготовлены из дюралюминия на заказ на одном Московском заводе. На этом же заводе нам сделали полки из оргстекла. Заказ вышел на сумму 30 000р, примерно.




4 Аппаратно-программное обеспечение


Почти все аппаратные компоненты шаробота представлены на функциональной схеме. Скажу пару слов про каждый элемент, двигаясь "снизу вверх".


История одного диплома или как сделать шаробота


4.1 Привода и контроллеры приводов


Всех сложнее было найти привода и контроллеры приводов. На выходе LQR регулятора у нас момент, следовательно надо иметь контроллер с возможностью управления по току(т.е. по моменту). Видимо, эта задача встречается очень редко в повседневной жизни, и я нашел только одно доступное по деньгам решение — Dynamixel. Мы купили и попробовали привода Dynamixel MX64, в которых есть режим управления по току. К сожалению, их быстродействия не хватало для стабилизации робота.


Я уже было потерял надежду на создание реального шаробота, но к счастью мне помог Ярослав из НУЦ "Робототехника" и предоставил на некоторое время три привода Maxon с контроллерами, за что я ему очень благодарен. В итоге у меня оказался бесколлекторный двигатель постоянного тока Maxon EC-max 30 40Вт со следующими характеристиками:



  • Номинальное напряжение 24В

  • Номинальная скорость вращения 7220 об/c

  • Номинальный момент 33.8 мНм

  • Удерживающий момент 160 мНм


Планетарный редуктор Maxon GP 32 с передаточным числом n=14 и контроллер привода Maxon EPOS 24/5, который имеет режим управления по току.


Как вы можете заметить, привода не очень мощные и передаточное число маленькое, поэтому момента на выходе едва ли хватает для стабилизации шаробота. У Rezero, например, используются двигатели 200Вт и редуктор с передаточным числом 51.


4.2 Микроконтроллер, инерциальный модуль, трансивер


В качестве микроконтроллера я использовал STM32F4-Discovery, который имеет необходимые нам интерфейсы: CAN, UART и I2C. Он получает данные с гироскопа и акселерометра по I2C и энкодеров по шине CAN. На основе полученных данных рассчитывает управление и отправляет задание на контроллеры приводов по шине CAN. Чтобы не реализовывать протокол для связи с EPOS контроллерами самому, я использовал библиотеку libepos. Для того, чтобы подключить STM'ку к CAN сети необходим приемопередатчик CAN(трансивер) за 4$.


В качестве инерциального модуля я использовал плату GY-521 за 3$ на основе микросхемы MPU6050, которая включает в себя 3-х осевой гироскоп и 3-х осевой акселерометр. Для обработки показаний этих датчиков я использовал фильтр Маджвика, который в последнее время так полюбили коптероводы.


Для упрощения разработки под STM я использовал STM32Cube HAL(hardware abstraction layer).


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


int main()
{
    initialize_imu();/* инициализация IMU по I2C */
    initialize_motors(); /* инициализация двигателей по CAN */

    while (1) {     
        read_imu(); /* чтение и фильтрация данных IMU */
        get_omniwheels_speed(); /* чтение данных энкодеров по CAN */

        /* поступила команда по UART от odroid */
        if (uart_rx_flag) {
            uart_rx_flag = 0;

            struct joystick_data* joystick = (struct joystick_data*)UARTdev_Get_RX_buf();
            process_joystick_input(joystick);
        }

        calculate_control(); /* вычисление управления */
        set_torque(); /* отправка задания на привода по CAN */
    }
}

4.3 Одноплатный компьютер, аккумулятор, DC-DC преобразователь, джойстик


Бортовой одноплатный компьютер ODROID U3 принимает данные от джойстика через Bluetooth адаптер и передает их на микроконтроллер через UART. На нем установлена операционная система lubuntu c Linux ядром 3.8.13.26-rt31 c поддержкой реального времени.


История одного диплома или как сделать шаробота

Свинцово-кислотный аккумулятор Delta 12045 ёмкостью C = 4.5 Ач. Его хватает примерно на час работы.




История одного диплома или как сделать шаробота
Напряжение питания одноплатного компьютера Odroid-U3 5В, максимальный потребляемый ток 2А. Т.к. источник питания 12В, необходим понижающий LM2596S DC-DC преобразователь за 2$.




История одного диплома или как сделать шаробота
Для управления шароботом используется Bluetooth джойстик Terios. Джойстик передает команды по Bluetooth на ODROID, в котором стоит Asus USB-BT400 адаптер. Для чтения команд джойстика я использовал следующую библиотеку. Поступившая команда парсится, пакуется и отправляется по UART на STM32, где на прием каждого байта происходит прерывание.


История одного диплома или как сделать шаробота

Так же к ODROID можно подключится по SSH. При запуске одройд создает Ad-hoc сеть через WiFi адаптер.



Результаты


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


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


Я достаточно поверхностно рассказал про процесс разработки, так что буду рад ответить на ваши вопросы.




Источник: Хабрахабр

Категория: Программирование » Веб-разработка

Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

Добавление комментария

Имя:*
E-Mail:
Комментарий:
Полужирный Наклонный текст Подчеркнутый текст Зачеркнутый текст | Выравнивание по левому краю По центру Выравнивание по правому краю | Вставка смайликов Выбор цвета | Скрытый текст Вставка цитаты Преобразовать выбранный текст из транслитерации в кириллицу Вставка спойлера
Введите два слова, показанных на изображении: *