Activity

Полетный контроллер DJI Naza M v1

Добрый день всем!

Использование MC Naza + Naza GPS для полёта по точкам.

В Назе есть замечательный режим - Go-Home, возвращение к месту старта (RTL) одним движением стика тангажа к себе. Вне зависимости от ориентации коптера.
И другой замечательный режим - Manual record home point.

Идея такая:
Добавляем ещё один самый простой контроллер. Подойдёт ArduPilotMini на ATMega328 за 1000 р. Делаем врезку в разрыв между выходом GPS чипа и входом назовского контроллера (внутри GPS корпуса).
ArduPilotMini отключает контроллер от живого GPS чипа, “подсовывает” контроллеру нужную позицию вместо реальной с GPS, включает запись Home Point, подключает опять контроллер к настоящему GPS-у и включает режим Go-home, “тянет” стик тангажа “на себя”.
Всё. Наза сама летит к нами введённой позиции.
При достижении нужной точки далее по кругу с начала, с вводом новых координат.

Должно работать. Ничего не упустил?
Есть здравый смысл?

Кстати тут вам и позиция для OSD, а ориентацию можно брать с выходов, управляющих подвесом - крен и тангаж. В модем их и на землю.

Полетный контроллер DJI Naza M v1

Добрый день всем!

DJI Naza GPS binary protocol
Прошу прощения если повторение, но описания не нашёл.

Распиновка
(слева направо, если смотреть на разъём с кабелем, первый пин также помечен треугольником)

1 - GND
2 - TX
3 - ? (наверное RX)
4 - +5V

UART 115200
Выдаются три сообщения в бинарном виде
Преамбула (HEX) два байта: 55 AA

Message ID (HEX) 10 - 4Hz данные из GPS
Длина (четвёртый байт) 0x3A байт
Собственно 58 байт данных
Чек-сумма два байта
Самое интересное.
Пока позиция не посчитана, выдаётся старая.
Вначале идёт время, потом широта с долготой и куча чего-то.
Но вот когда GPS начинает считать позицию, структура меняется.
Похоже передаётся удаление от начальной точки. Пока точно не разобрался.
Ну и куча мусора, включая кол-во спутников.

Message ID (HEX) 20 - 30Hz компас
Длина (четвёртый байт) 6 байт
Собственно 6 байт данных
Чек-сумма два байта
Данные похоже по 2 байта три оси, до конца не разобрался

Message ID (HEX) 30 - редко, не знаю что это такое
Длина (четвёртый байт) 0x0С байт
Собственно 12 байт данных
Чек-сумма два байта

Naza GPS использует чип LocoSys MC-1612 MediaTek, антенна пассивная
UART 57600; бинарный протокол; 4 Hz
Преамбула (HEX): B5 62
сообщения
06 - время GPS week time - первые четыре байта после длины, ещё не знаю что 8 байт,
потом три раза по 4 байта координаты XYZ (ECEF)
30 - ?
03 - ?
02 - ?
04 - ?
12 - ?
21 - ?
Описание протокола не нашёл, декодировал “в лоб”, нашёл пока то, что искал -
время и координаты.
Кто знает описание двоичного протокола MediaTek, киньте, пожалуйста, ссылочку.

Ну как-то так.

UAV сотрудничество

Привет!

Присоединяюсь.

Сделан вариант автопилота для электро-автомобиля.
На машинке стоит RC приёмник и GPS приёмник.
Автопилот сделал на базе GPS приёмника.
GPS генерит 2 канала (курс, тяга) PWM сигнал прямо с процессора.
Далее сигнал попадает на схему выбора источника.
Управление выбором - с RC передатчика, используя 2 свободных канала (переключатель)
Соответственно каждым каналом (курс, тяга) можно управлять либо с RC пульта,
либо автопилотом.

Сейчас обкатываю 2х метровый бензиновый тренер.

Fail-Safe - Автопилот для полетов по камере

Используя только целые двубайтовые числа получить азимут между точками можно.
На удалении от 100 м. от базы точность будет не хуже нескольких градусов.
Чем дальше - тем точнее. Используя таблицу на 45 элементов и кучу IF’ов
получается точность 1 градус.
Но имеем только азимут, без расстояния.
Т.е. при пролёте над заданной точкой азимут поменяется на 180 градусов.
Для простых вычислений такой подход наверное приемлим.

Если не получится использовать библиотеку с плавающей точкой,
после НГ оформлю код.

vovic:

в случае удачной разработки, есть желание подумать над написанием программы автоматической посадки планера на ВПП - примерно так, как сажали Буран в конце его единственного орбитального полета. Задачка посложнее будет - но ооочень интересная. 😉

А вот здесь точность нужна получше.
Плавающая или фиксированная точка.
И числа 32 bit.

Fail-Safe - Автопилот для полетов по камере
serj:

Дык там так и сделано… педполагается, что далеко улетать никто не будет 😃
но на мой взгляд эта кактавасия не совсем корректна.

У меня 3 байта для представления координат. и штатный сишный арктангенс. на 16 мгц считается за 40 мкс.
но пользуюсь арктангенсом не часто, 301 раз в секунду, поэтому времени на другие вычисления- вагон.

Если вычитать поотдельности градусы, минуты и дробную часть минут,
то 2х байт для самой разницы вполне хватит.
0xFFFF это в десятичном виде 65535. Знак можно хранить и учитывать отдельно.
Т.е., если принять первую цифру - минуты, то остаётся 4 знака на дробную часть.
Разница в одну тысячную минуты - это два метра. Величина сравнимая с шумом позиции.
А 6.5535 минут - это порядка 10000 метров.
Никто не мешает при большей удалённости брать первые две цифры за минуты.
Надо только это учесть при пересчёте.

На самом деле просил vovic’a пристегнуть библиотеку с плавающей точкой
для разложения синуса и арктангенса в ряд Тейлора.
Если же использовать таблицу вместо ряда, можно попробовать сравнить точность для целых чисел.

Fail-Safe - Автопилот для полетов по камере
vovic:

Цель замышляемого дела - модифицировать софт так, чтобы он смог работать с любой GPS-головкой.
Я заткнулся на том, что не смог написать расчет азимута на цель по известным координатам на Пикбейсике без библиотек функций. Ну, не программист я. 😊
Может кто возьмется помоч ?

Написал код (пока для проверки на MatLab’e) без библиотечных функций
Вход:
широта и долгота точки цели в формате NMEA GGA , т.е. GGMM.MMMM (LAT) и GGGMM.MMMM (LON)
широта и долгота текущей точки (в том же формате)
Выход:
азимут на цель
расстояние до цели

Ошибка порядка 0.1%

Вот только от плавучки не смог отказаться и числа в формате double
To: vovic
Володь, проверь пожалуйста, может влезет библиотека для плавающей точки.

Fail-Safe - Автопилот для полетов по камере

Если полёты в одном месте, то можно просто поотдельности вычесть долготы и широты,
умножить на масштабный коэффициент и получиться
разность между точками по двум осям.
Отсюда знаем азимут и расстояние.

Например:
разница в 1 минуту
между
широтами долготами
Москва 1856 м 1058 м /метров
Воронеж 1855 м 1150 м /метров

Fail-Safe - Автопилот для полетов по камере

Ладно, синусы/косинусы и обратные посчитаем по рядам Тейлора.
Просмотрел код rcap и не увидел там формата чисел с плавающей точкой.

В ПикБейсике только целочисленная математика?
Или всё-же плавучка есть?

Fail-Safe - Автопилот для полетов по камере
vovic:

Давно ищу себе соучастника вот в таком деле. Есть готовый проект:
rcpilot.sourceforge.net/modules/rcap/index.php
С открытым софтом - исходники выложены на сайте.
Он хорош простотой и доступностью любому желающему. Мною испытан и отлажен. Но плох тем, что работает только с навигатором, задающим курс на цель. С обычными GPS- приемниками работать не может.
Цель замышляемого дела - модифицировать софт так, чтобы он смог работать с любой GPS-головкой.
Я заткнулся на том, что не смог написать расчет азимута на цель по известным координатам на Пикбейсике без библиотек функций. Ну, не программист я. 😊
Может кто возьмется помоч ?

Синусы/косинусы и обратные функции в Пикбейсике есть?

Fail-Safe - Автопилот для полетов по камере

Сам приёмник точно не бюджетный и преднозначен для другого сектора.
Поэтому и дал название фирмы.

Антенну поставил “ширпотребовскую” GlobalSat 4см. в диаметре
одночастотную с магнитиком.

Позиция считается без всяких WAAS дифференциальных систем.
Т.е. с точки зрения позиции всё по-честному.

Просто мне удобно с ним обращаться.
Хотел прежде всего поделиться моей реализацией.
В процессоре MPC565/566 есть модуль Modular Input/Output Subsystem
На нём и запрограммировал PWM сигнал
Позицию пишу во внутреннюю память.
Используется только “голая” плата весом 150грамм.

Данный приёмник используется чисто в хоббийных целях без всех его возможностей.
Математика простейшая, нацеленная на микроконтроллер.
Просто у меня нет отдельного микроконтроллера (хотя в дальнейшем перейду на дешёвый GPS и отдельный контроллер), а есть дорогой приёмник.
Мне сейчас удобней использовать такой вариант (всё в одном флаконе).

Наверняка в других приёмниках можно сделать похожее.

Испытывался не сам GPS приёмник, а его реализация и, собственно, алгоритм автонавигации с простой математикой.
Коммерческие варианты не интересууют. Хочу сделать весь комплекс сам и с “подручными”
материалами с нуля, с чисто хоббийными целями.
GPS приёмник дорогой, но он у меня есть, и ипользую его как маленький компьютер с позицией.
вес - 150г.
Возможности GPS приёмника для расчёта сверхточной позиции не используются.
Т.е. он у меня как дорогой макет для будущей дешёвой реализации.

А вот на любые вопросы связанные непосредственно с автоуправлением отвечу с радостью.

Реализация мультиплексора:
Поставил нашу отечественную микросхемку К555КП12, стоимостью 10р.
Она умеет в зависимости от уровня управляющего сигнала подключать выход к одному из 4х входных цифровых сикналов.
Таким образом на входе мультиплексора
с радиоприёмника
1й канал - курс
2й канал - управление
с GPS приёмника - курс

Ко 2му каналу RC прёмника подключил регулятор оборотов. Выдаёт либо высокий либо низкий уровень для мультиплексора
На выходе мультиплексора сигнал либо с RC приёмника, либо с GPS. Управление вторым каналом с RC передатчика.
Также и тяга и т.п.
Таким образом в любой момент с RC пульта можно управлять курсом самому, либо брать с GPS.

Fail-Safe - Автопилот для полетов по камере
vovic:

Как называется приемникGPS, позволяющий программировать PWM - сигнал?

Приёмник фирмы Javad Navigation Systems с процессором Motorola MPC566.
Весь автопилот реализован непосредственно в GPS приёмнике.
Сначала работал на частоте 1Hz, но оказалось мало для ровной езды.
Сейчас позиция считается 10Hz по методу наименьших квадратов ( без Калмана )
Шум позизии около метра-двух
Фильтруется только направление скорости на интервале 0.5 сек

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

Подключил GPS и RF приёмники к рулевым машинкам через мультиплексор.
Теперь одни каналы могу отдать на время GPSу (курс), а другими управляю с передатчика (тяга, высота). Легко отрабатывать посадку.

Fail-Safe - Автопилот для полетов по камере

Поставил на радиоуправляемую а/машинку автопилот из GPS приёмника.
Началось всё с идеи беспилотного самолёта.
Опыта авиапилотирования не было. Только симулятор.
Купил парк флаер Protech Piper Cub AFR. Собрал, поставил батарейку большей ёмкости,
но самик так и не взлетел.
Пришлось для экспериментов с автопилотом перейти на авто.
Купил внедорожник масштаба 1/8, выбросил “родную” электронику оставив только двигатель.
Поставил цифровую рулевую машинку, регулятор хода и, собственно, GPS приёмник.
На GPS приёмнике запрограммировал управление рулём и двигателем (PWM сигнал).
Движение возможно с указанным азимутом; через массив путевых точек (LAT, LON);
либо с азимутом, проходящим через путевую точку.

Битвы роботов

[quote=Селезнев Максим;260032]

Mikhail_Yunin:

Гы , я вот - то-же не пойму , обнаженных теток показывают гораздо реже - чем сериал - "не родись красивой " .

А я, в свою очередь , не пойму почему нет на ТВ передачи про РС модели и моделистов! Есть передача про садовый мазохизм с Павлом Лобковым ( ну и фамилия!) , есть занудство про ремонт квартир ( чужими руками), про рыболовов … Да, конечно! кто платит тот и заказывает музыку.
А может моделисты это такая секретная организация, что и упоминать о них лишний раз опасно?

На Discovery Science есть передача “Дистанционное безумие” - соревнование двух команд в управлении RC машиной, вертолётом и катером