Данная статья скорее логическое продолжение моей статьи о балансере: «Создание робота балансера на arduino».
В ней будут очень кратко освещены: простая модель угловой стабилизации квадрокоптера с использованием кватернионов, линеаризация, построение управления для объекта и проверка его в Matlab Simulink, а так же проверка на реальном объекте. В качестве подопытного будет выступать Crazyflie 1.0.
Сейчас оно летает так (на момент съемок я не очень правильно выставил управление):
Мне давно не давало покоя желание рассчитать какой-нибудь достаточно сложный механизм и воплотить его жизнь.
Выбор пал на задачу об обратном маятнике. Итог на видео:
Начитавшись в интернете и в том числе на хабре о создании разнообразных роботов, я решил сделать своего. Тем более, что у меня давно без дела валяется arduino.
За неименеем денег на шасси для робота, решил сделать самое дешевое и простое. В качестве органов чувств был выбран ультразвуковой дальномер.
Не так давно я решил узнать, где находятся открытые wifi-точки в моём районе. Для этого мне потребовался ноутбук и GPS-приёмник. Ноутбук благо нашёлся довольно быстро. А вот с GPS пришлось помучаться.
Из арсенала моих гаджетов нашёлся только один, умеющий определять местоположение, и это был HTC Hero. Работающих программ, позволяющих превратить свой КПК в приёмник я не нашёл, да и все они хотели, чтобы телефон подключался по Bluetooth, что съедало бы зарядку мобильного за несколько минут.
Идея
К сожалению, Android не позволяет телефонам с официальной прошивкой работать с USB, зато он разрешает посылать логи через кабель в debugger. Я решил воспользоваться именно этим.
Реализация
Первым делом я прикрутил к своей уже написанной программе на Дройд ведение логов ( Log.i(«DroidGPS», (NMEA + "\n"));), важно было посылать логи именно в NMEA-строке. Для её формирования я вытянул класс из нерабочей программы, найденной на просторах Интернета.