Copyright © 2005 [email protected]
Содержание
- 1. Введение
- 2. Готовые компоненты
-
- 2.1. Платформа вертолёта
- 2.2. Встроенный компьютер
- 2.3. Другое оборудование
- 3. Аппаратное обеспечение
-
- 3.1. Стабилизатор напряжения
- 3.2. Широтно-импульсный модулятор
- 3.3. Джойстик от Xbox
- 4. Программное обеспечение
-
- 4.1. Многоканальный широтно-импульсный генератор
- 4.2. Эмулятор Bluetooth приёмника
- 4.3. Эмулятор Bluetooth передатчика
- 5. Сборка системы
- 6. Эксплуатация
-
- 6.1. Дистанционное управление через Bluetooth
- 7. Отказ от гарантии
- 8. Похожие open-source проекты
- 9. Планы
-
- 9.1. Уменьшение веса
- 9.2. Точность широтно-импульсного генератора
- 9.3. Датчики
- 9.4. Качество и класс (QoS) Bluetooth
- 9.5. Канал передачи данных WiFi
- 9.6. Джойстики с Bluetooth
- 9.7. ПО управления полёта
- Ссылки
- Глоссарий
Список рисунков
- 1. Схема встроенного контроллера, входящего в обычный коммерческий набор для микровертолёта.
- 2. Детальная схема и изменения (отмечены красным) платы радиоприёмника.
- 3. Конфигурация микшера xpad_ccpm120_mode2.mix.
- 4. Коэффициенты для 120° CCPM-микширования.
- 5. Вертолёт + ARM + Linux.
- 6. Вид сзади с разъёмом на дочерней плате ввода/вывода.
- 7. Общая схема дистанционного управления через Bluetooth.
Список таблиц
- 1. Выходы широтно-импульсного модулятора приёмника радиосигналов.
- 2. Примеры конфигурации многоканального широтно-импульсного модулятора.
- 3. Многоканальные широтно-импульсные модуляторы.
- 4. Назначение штырьков ввода/вывода дочерней платы Gumstix.
1. Введение
Цены на радиоуправляемые модели вертолётов достигли уровня, когда все типы робототехнических
проектов становятся осуществимыми. В этом документе описывается, как создать способный летать
в 3-х мерном пространстве 300-граммовый вертолёт со встроенной ОС Linux и каналом передачи данных
Bluetooth всего за 500 евро.
В качестве подтверждения работоспособности идеи мы предлагаем программное обеспечение, позволяющее
удалённо управлять вертолётом с помощью джойстика от ПК через канал Bluetooth. В будущем работа
будет сконцентрирована на интеграции датчиков (инерциальные датчики, высотомер, магнитный компас,
GPS, камера) и программного обеспечения управления полётом (стороннего производителя или специально
разработанного).
2. Готовые компоненты
2.1. Платформа вертолёта
Любителям радиоуправляемых моделей на данный момент доступно несколько недорогих микровертолётов:
Ikarus Piccolo, MS Hornet, Carboon, Dragonfly, Hummingbird, Tiny, Aerohawk. Они являются существенно
уменьшенными версиями настоящих вертолётов, причём появление этих моделей стало возможным благодаря
технологическому развитию аккумуляторов. Некоторые модели имеют роторы с фиксированным общим шагом,
другие - как с циклическим, так и с общим шагом. Большинство моделей обладает отдельным двигателем
хвостового винта, а не хвостовым ротором регулируемого шага.
Недавнее радикальное изменение в дизайне роторов - это самостабизирующаяся деформируемая разработка
"ProxFlyer". К сожалению, текущие коммерческие реализации слишком малы для использования к качестве
платформ для создания роботов. Кроме того, стабильность достигается лишь отказом от манёвренности.
В этом проекте мы используем микровертолёт ARF, в комплект которого входят:
-
Предварительно собранный вертолёт с ротором общего шага, два щёточных двигателя и три миниатюрных
сервопривода
-
Набор электронных компонент с 6-канальным радиоприёмником, гироскопом по углу рыскания и приводом двигателя
-
6-канальный радиопередатчик на 41 МГц с жёстко смонтированным CCPM-микшированием
-
Литиево-полимерный аккумулятор на 11,1 В, 850 мА*ч
-
Зарядка для аккумулятора.
Вертолёт весит 270 г и может поднимать как минимум 50 г полезного груза.
Электронный модуль является "чёрной коробкой", соединяющей все компоненты воедино. Такое решение отличается
от реализаций в более крупных моделях вертолётов, где подключения между приёмником, гироскопом, электроникой
и приводами вынесено наружу и задокументировано. Объединение всех этих компонент уменьшает общий размер, вес и
стоимость, но в то же время затрудняет их модификацию.
К счастью, в некоторых коммерческих микровертолётах "чёрная коробка" может быть "сломана" довольно легко. На
самом деле она состоит из двух плат, взаимно соединённых с помощью 2x3-штырькового разъёма (см.
рис. 1):
Общая плата радиоприёмника с семью 3-штырьковыми выходами широтно-импульсного модулятора, которые идут
на сервоприводы
Плата питания/гироскопа с контроллерами питания, гироскопа, двигателей и контроллером безотказной работы.
Рис. 1. Схема встроенного контроллера, входящего в обычный коммерческий набор для микровертолёта.
В таблице 1 перечислены выходы широтно-импульсного модулятора, два из которых служат для
внутреннего соединения двух плат.
Таблица 1. Выходы широтно-импульсного модулятора приёмника радиосигналов.
Канал |
Предназначение |
1 |
Правый сервопривод |
2 |
Передний сервопривод |
3 |
Основной двигатель (внутренне подключён к плате питания/гироскопа) |
4 |
Хвостовой ротор (внутренне подключён к плате питания/гироскопа) |
5 |
Не используется |
6 |
Левый сервопривод |
B |
Не используется (12 мс синхронизирующие импульсы) |
Использован может быть любой подобный вертолёт. Основные требования:
-
Контроллер должен понимать сигналы с широтно-импульсной модуляцией. Использование
импульсно-кодовой модуляции потребовало бы больших затрат, особенно при создании собственного
механизма кодирования.
-
Контроллер должен уметь делить мультиплексированный сигнал с широтно-импульсной модуляцией между
FM радио приёмником и демультиплексором (см. раздел 3.2), или по крайней мере переводить входящие сигналы
с широтно-импульсной модуляцией на приводы двигателей.
-
Вертолёт должен быть достаточно мощным, чтобы поднимать, по крайней мере, 30 г полезного груза.
-
Аккумулятор должен иметь запас по току 200 мА для питания дополнительных цепей
2.2. Встроенный компьютер
Мы использовали одноплатный компьютер Gumstix со следующими параметрами:
-
200 МГц XScale PXA255 процессор (ARM)
-
4 Мб флэш-памяти с предустановленной ОС Linux-2.6.10 и дополнительным ПО
-
64 Мб SDRAM
-
Контакты ввода/вывода общего назначения
-
Дочерняя плата ввода/вывода с контактными площадками на 2.54 мм
-
Шина I2C
-
Модуль Bluetooth с антенной
-
Полная среда разработки ПО
Некоторые возможности, которые не были использованы:
-
Аппаратный генератор сигналов с широтно-импульсной модуляцией:
Предназначен для управления яркостью и контрастом ЖК-монитора. Нам кужно больше, чем два канала.
-
Клиентский USB-интерфейс: предназначен для КПК, основанных на ARM. usbnet является полезной возможностью
при работе с Gumstix, однако вместо неё мы будем использовать Bluetooth.
2.3. Другое оборудование
-
Компьютер с USB и Bluetooth под управлением Linux
-
Xbox-совместимый контроллер
-
Регулируемый источник питания на 12 В и 5 А
-
10 МГц аналоговый осциллограф (рекомендуем)
3. Аппаратное обеспечение
3.1. Стабилизатор напряжения
Плата питания/гироскопа имеет два регулятора напряжения на +5 В. Они подключены параллельно и
отмечены на плате как CX1117-5.0. Реактивная составляющая тока равно 50 мА.
Поскольку эти каналы на +5 В выведены для каждого подключения к серводвигателю (включая те, которые не
используются), то будет удобно запитать Gumstix от них. Для того, чтобы обеспечить дополнительный ток
(всего 100-200 мА), возможно потребуется заменить эти два регулятора напряжения на более мощную моделью 7805,
которая монтируется снаружи.
3.2. Широтно-импульсный модулятор
Для управления вертолётом мы переделали плату радиоприёмника таким образом, что Gumstix может
посылать свои собственные сигналы с широтно-импульсной модуляцией в демультиплексор модулятора платы.
Почему бы не отказаться полностью от платы приёмника и не генерировать пять модулированных сигналов с
помощью Gumstix ? Наш подход имеет несколько преимуществ:
-
Не нужно создавать свой блок управления.
-
Всего три провода между Gumstix и вертолётом (земля, +5 В и мультиплексированный сигнал с
широтно-импульсной модуляцией).
-
Демультиплексор модулятора добавляет ещё один уровень электрической изоляции между Gumstix и силовой
электроникой.
На рис. 2 показана схема обычного радиоприёмника и изменения, которые мы сделали.
Надо просто разрезать правильный провод силового блока управления и подсоединить оба конца к 2-контактному
коннектору, который находится снаружи пластикового корпуса. Хронограммы должны помощь найти нужные сигналы.
Рис. 2. Детальная схема и изменения (отмечены красным) платы радиоприёмника.
Изначальная функциональность может быть восстановлена путём отключения Gumstix и использования перемычки.
3.3. Джойстик от Xbox
Контроллеры Xbox достать можно почти везде, они недороги и имеют чётко определённую функциональность
(в отличие от джойстиков для ПК). Они могут быть подключены к ПК путём замены родного коннектора на USB.
В качестве альтернативы можно использовать любой USB джойстик с двумя двухосевыми аналоговыми рычагами.
В этом случае конфигурационный файл микшера должен быть подстроен под схему осей (см. раздел 4.3).
4. Программное обеспечение
Исходный код ПО можно скачать тут: http://perso.wanadoo.fr/pascal.brisset/chromicro/dist/chromicro-1.0.tgz.
4.1. Многоканальный широтно-импульсный генератор
pxa_mpwm.ko - это основанный на таймере многоканальный генератор модулированных сигналов для PXA255,
реализованный как загрузочный модуль ядра для linux-2.6.10gum.
Его можно настроить на генерацию одного многоканального модулированного сигнала и/или многих одноканальных
модулированных сигналов через контакты ввода/вывода общего назначения (GPIO). GPIO контакты, каналы и временные
параметры задаются таким образом, как показано в таблице 2.
Таблица 2. Примеры конфигурации многоканального широтно-импульсного модулятора
Задача |
Параметры |
Один выходной сигнал с 6 мультиплексированными каналами широтно-импульсного модулятора |
modprobe pxa_mpwm gpio=61 nchans=6 tmin=500 tmax=1500 tpause=500
tsync=12000 |
То же самое с одноканальным сервовыходом кроме CH5 |
modprobe pxa_mpwm gpio=61 nchans=6 servo=58,59,60,62,-1,63 tmin=500
tmax=1500 tpause=500 tsync=12000 |
Только одноканальные сервовыходы |
modprobe pxa_mpwm nchans=6 servo=58,59,60,62,-1,63 tmin=500
tmax=1500 tpause=500 tsync=12000 |
Пользовательские программы запускают генератор модулированных сигналов через интерфейс устройства, см. таблицу 3.
Генерация модулированных импульсов начинается при инициализации устройства и задания значений по всем каналам.
GPIO контакты переводятся в логическую 1, когда программа закрывает устройство.
Таблица 3. Многоканальные широтно-импульсные модуляторы.
Устройство |
Применение |
/dev/mpwm0 |
Модулированный сигнал #1 (все каналы записываются сразу же) |
/dev/mpwm0-0 |
Канал #1 модулированного сигнала #1 |
/dev/mpwm0-1 |
Канал #2 модулированного сигнала #1 |
/dev/mpwm0-2 |
Канал #3 модулированного сигнала #1 |
/dev/mpwm0-3 |
Канал #4 модулированного сигнала #1 |
/dev/mpwm0-4 |
Канал #5 модулированного сигнала #1 |
/dev/mpwm0-5 |
Канал #6 модулированного сигнала #1 |
Многоканальный широтно-импульсный модулятор использует OSMR1 (OS Match Register 1), которая как правило
имеется в Gumstix. (OSMR0 используется системным таймером Linux, а OSMR3 используется сторожевой схемой).
Период таймера PXA255 составляет 270 нс, что позволяет разрешать типичные сигналы с
широтно-импульсным модуляцией в диапазоне 1 мс с точностью 11 бит. Хотя многоканальный широтно-импульсный
модулятор использует высокоприоритетный PXA255 FIQ, а не обычный IRQ, джиттер может достигать нескольких
микросекунд. Этого всё ещё достаточно, чтобы летать на вертолёте. Смотри также раздел 9.2.
4.2. Эмулятор Bluetooth приёмника
bluerc_rx - это пользовательская программа, разработанная для выполнения под Gumstix. Она получает
радиоданные в виде UDP-пакетов через подключение Bluetooth BNEP и передаёт их генератору модулированных импульсов.
Данная программа завершает свою работу, если не получает UDP-пакет в течение заданного в настройках интервала. Это
отключает выходы модулятора и (будем надеяться) заставит плату питания/гироскопа отключить двигатели.
Использование: bluerc_rx [-p <port>] [-t <timeout>] [-c <PWM
device>]
Пример: bluerc_rx -p 9000 -t 2000 -c /dev/mpwm0
4.3. Эмулятор Bluetooth передатчика
bluerc_tx - это пользовательская программа, предназначенная для выполнения на Linux-компьютере
с защитной заглушкой Bluetooth и USB джойстиком. Она считывает положение аналоговых рычагов и триггеров,
линейно микширует их в 6 радиоканалов и посылает значения каналов вертолёту в виде 6-байтовых UDP-пакетов через
Bluetooth BNEP.
Использование: bluerc_tx [-c <joystick>] [-r <refresh rate>] [-m
<matrix>] [-d <dest IP>] [-p <dest port>]
Пример: bluerc_tx -c /dev/js0 -r 50 -m xpad_ccpm120_mode2.mix -d
192.168.10.1 -p 9000
Соответствие между осями джойстика и радиоканалами определяется матрицей в конфигурационном файле.
На рис. 3 показана установка по умолчанию.
Шаг 1. Настройка
-
Переведите рычаги в желаемое "нейтральное" положение.
-
Надавите кнопку "back".
-
Дайте рычагам вернуться в их центральное положение.
-
Отпустите кнопку "back".
Рис. 3. Конфигурация микшера xpad_ccpm120_mode2.mix.
Рис. 4. Коэффициенты для 120° CCPM-микширования.
5. Сборка системы
Рис. 5. Вертолёт + ARM + Linux.
На рис. 6 и таблице 4 показано соединение с дочерней платой Gumstix.
Рис. 6. Вид сзади с разъёмом на дочерней плате ввода/вывода.
Таблица 4. Назначение штырьков ввода/вывода дочерней платы Gumstix.
Контакт |
Сигнал |
Применение |
10 |
NACRESET (отключён) |
Вход +5 В |
16 |
GND |
Земля |
18 |
GPIO61 |
6-канальный выход модулятора |
6. Эксплуатация
6.1. Дистанционное управление через Bluetooth
На данный момент (рис. 7) мы просто эмулируем обычный процесс дистанционного управления.
На вертолёте нет ни датчиков, ни сложного встроенного ПО, а также нет обратной связи от вертолёта к наземной станции.
Рис. 7. Общая схема дистанционного управления через Bluetooth.
Для быстрого запуска используйте make tx и make rx в директории src.
Шаг 2. Запуск
-
Запустите bluerc_tx на ПК.
-
Подключите аккумулятор. GPIO-контакт перейдёт в верхнее логическое состояние на время загрузки Gumstix.
-
Настройте работу в сети через Bluetooth (BNEP). Этот процесс может быть автоматизирован с помощью pand.
-
Загрузите pxa_mpwm.ko на Gumstix. GPIO-контакт будет настроен как выход, но состояние его останется
в логической 1.
-
Запустите bluerc_rx на Gumstix. Генерация модулированных сигналов начнётся, как только будут получены
UDP-пакеты.
Шаг 3. Выключение
-
Либо отключите аккумулятор, остановите bluerc_rx, или остановите
bluerc_tx. Все альтернативы должны быть одинаково безопасны. Заметьте, что при работе с родным
пультом дистанционного управления (при частотной модуляции) необходимо отключать приёмник или аккумулятор перед
остановкой передатчика.
7. Отказ от гарантии
Используйте эти инструкции и всё прилагаемое ПО на свой страх и риск.
Это экспериментальное ПО не обладает никакими безаварийными особенностями, которые свойственны коммерческим
продуктам.
Дистанционно управляемые воздушные суда не являются игрушками. С ними обычно занимаются должным образом
подготовленные и застрахованные любители на специальных аэродромах.
Из-за механической сложности и движущихся частей вертолёты являются одними из самых опасный воздушных судов.
Воздушные роботы имеют особенность двигаться по непредсказуемым траекториям.
Программа выводит дамп ядра; железо же просто разбивается.
Литиево-полимерные аккумуляторы воспламеняются при повреждении.
Диапазон радиоканала Bluetooth составляет 10 м. Это не подходит для полётов на улице.
8. Похожие open-source проекты
rcpilot - http://rcpilot.sourceforge.net/
Autopilot - http://autopilot.sourceforge.net/
Paparazzi - http://www.nongnu.org/paparazzi/
9. Планы
9.1. Уменьшение веса
9.2. Точность широтно-импульсного генератора
Цель: уменьшить джиттер основанного на таймере широтно-импульсного генератора.
Заблокировать обработчик FIQ в кэше I/D ?
9.3. Датчики
-
Модуль измерения инерции. 6 степеней свободы, I2C-интерфейс.
-
Видео камера
-
Магнетометр. I2C-интерфейс.
-
Давление (высота, скорость полёта). I2C-интерфейс.
-
Фотокамера.
9.4. Качество и класс (QoS) Bluetooth
Цель: Уменьшить задержку при передаче данных.
Использовать более подходящий протокол, нежели BNEP.
9.5. Канал передачи данных WiFi
Цель: Увеличить радиус покрытия.
9.6. Джойстики с Bluetooth
Цель: Избавиться от компьютера.
Благодаря консолям видеоигр следующего поколения, дешёвые Bluetooth-джойстики должны появиться в 2006 году.
9.7. ПО управления полёта
Помощь при полёте: устойчивое зависание, 3D
Точки маршрута
Взлёт и посадка
Автономная навигация, обработка изображений
Ссылки
[pxa255_dev] Intel PXA255 Processor. Developer's manual.
[pxa255_user] Intel XScale Microarchitecture for the
PXA255 Processor. User's Manual.
[pxa255_elec] Intel PXA255 Processor. Electrical, Mechanical, and Thermal Specification.
Глоссарий
- Почти готов к полёту (Almost Ready to Fly, ARF)
-
Относится к модели воздушного судна, которая продаётся предварительно собранной.
- Цепь, заменяющая аккумулятор (Battery-Elimination Circuit, BEC)
-
Преобразователь переменного напряжения (линейный регулятор или переключательный преобразователь), который
используется для питания радиоприёмника и серводвигателей от того же аккумулятора, от которого запитан двигатель.
Выходное напряжение обычно составляет 4,8 или 5 В.
- Сетевой протокол инкапсуляции Bluetooth (Bluetooth Network Encapsulation Protocol, BNEP)
-
Предоставляет Ethernet-подобный интерфейс (например, bnep0) на каждом конце Bluetooth-соединения.
- Общий шаг несущего винта (Collective pitch, CP)
-
Относится к дизайну ротора вертолёта с изменяемым общим шагом. Тяга регулируется путём изменения либо общего
шага, либо скорости главного мотора.
См. также Фиксированный шаг (Fixed pitch).
- Циклично-коллективное микширование шага (Cyclic-Collective Pitch Mixing (CCPM)
-
- Фиксированный шаг (Fixed pitch, FP)
-
Относится к дизайну ротора вертолёта с цикличный шагом, но с фиксированным общим шагом. Тяга регулируется
путём изменения скорости главного мотора. Это приводит к большей инертности, чем у вертолётов с общим шагов
несущего винта. Кроме того, вертолёты с фиксированным шагом не могут летать вверх дном.
См. также Общий шаг несущего винта (Collective pitch).
- Ввод/вывод общего назначения (General-Purpose I/O, GPIO)
-
Процессор PXA255 имеет 85 контактов общего назначения, которые могут быть независимо сконфигурированы
для ввода, вывода или подключения к интегрированным периферийным устройствам (таким как, последовательные
порты и ЖК монитор).
- Глобальная система позиционирования (Global Positioning System, GPS)
-
- Модуль измерения инерции (Inertial Measurement Unit, IMU)
-
Акселерометры (перемещение) и гироскопы (вращение)
- Литий-полимер (Lithium-Polymer, LiPo)
-
- Режим 1 / Режим 2 ()
-
Альтернативное расположение осей на радиопередатчике вертолёта.
- Печатная плата (Printed Circuit Board, PCB)
-
- Импульсно-кодовая модуляция (Pulse Code Modulation, PCM)
-
Общий термин для цифровой передачи данных.
- Фазоимпульсная модуляция (Pulse Position Modulation, PPM)
-
Неверный термин для широтно-импульсной модуляции, в терминологии радиоуправления
- Широтно-импульсная модуляция (Pulse Width Modulation, PWM)
-
Модуляция, которая кодирует аналоговый сигнал в цифровые импульсы переменной длины.
- Беспилотное воздушное судно (Unmanned Aerial Vehicle, UAV)
-
Не обязательно автономное.
Права на копирование, распространение и/или изменение этого документа даются в соответствии с лицензией GNU
по свободной документации (GNU Free Documentation License), версия 1.1; без неизменных разделов, без
вступительных и заключительных текстов.
|