Activity
Добрый день всем!
Использование 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, а ориентацию можно брать с выходов, управляющих подвесом - крен и тангаж. В модем их и на землю.
решил взять такую антенну www.telecamera.ru/catalog/Set.../BY_GPS_07.htm
Характеристики
Частотный диапазон: 1575 МГц;
Это только GPS L1.
Если нужен ещё Глонасс, ищите поддержку 1602 МГц
Добрый день всем!
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, киньте, пожалуйста, ссылочку.
Ну как-то так.
А что дает применение GPS на автомобиле?
В данном случае отладка алгоритмов на земле.
На самике хочу для начала управлять только рулём направления.
Привет!
Присоединяюсь.
Сделан вариант автопилота для электро-автомобиля.
На машинке стоит RC приёмник и GPS приёмник.
Автопилот сделал на базе GPS приёмника.
GPS генерит 2 канала (курс, тяга) PWM сигнал прямо с процессора.
Далее сигнал попадает на схему выбора источника.
Управление выбором - с RC передатчика, используя 2 свободных канала (переключатель)
Соответственно каждым каналом (курс, тяга) можно управлять либо с RC пульта,
либо автопилотом.
Сейчас обкатываю 2х метровый бензиновый тренер.
Используя только целые двубайтовые числа получить азимут между точками можно.
На удалении от 100 м. от базы точность будет не хуже нескольких градусов.
Чем дальше - тем точнее. Используя таблицу на 45 элементов и кучу IF’ов
получается точность 1 градус.
Но имеем только азимут, без расстояния.
Т.е. при пролёте над заданной точкой азимут поменяется на 180 градусов.
Для простых вычислений такой подход наверное приемлим.
Если не получится использовать библиотеку с плавающей точкой,
после НГ оформлю код.
в случае удачной разработки, есть желание подумать над написанием программы автоматической посадки планера на ВПП - примерно так, как сажали Буран в конце его единственного орбитального полета. Задачка посложнее будет - но ооочень интересная. 😉
А вот здесь точность нужна получше.
Плавающая или фиксированная точка.
И числа 32 bit.
Дык там так и сделано… педполагается, что далеко улетать никто не будет 😃
но на мой взгляд эта кактавасия не совсем корректна.У меня 3 байта для представления координат. и штатный сишный арктангенс. на 16 мгц считается за 40 мкс.
но пользуюсь арктангенсом не часто, 301 раз в секунду, поэтому времени на другие вычисления- вагон.
Если вычитать поотдельности градусы, минуты и дробную часть минут,
то 2х байт для самой разницы вполне хватит.
0xFFFF это в десятичном виде 65535. Знак можно хранить и учитывать отдельно.
Т.е., если принять первую цифру - минуты, то остаётся 4 знака на дробную часть.
Разница в одну тысячную минуты - это два метра. Величина сравнимая с шумом позиции.
А 6.5535 минут - это порядка 10000 метров.
Никто не мешает при большей удалённости брать первые две цифры за минуты.
Надо только это учесть при пересчёте.
На самом деле просил vovic’a пристегнуть библиотеку с плавающей точкой
для разложения синуса и арктангенса в ряд Тейлора.
Если же использовать таблицу вместо ряда, можно попробовать сравнить точность для целых чисел.
Цель замышляемого дела - модифицировать софт так, чтобы он смог работать с любой GPS-головкой.
Я заткнулся на том, что не смог написать расчет азимута на цель по известным координатам на Пикбейсике без библиотек функций. Ну, не программист я. 😊
Может кто возьмется помоч ?
Написал код (пока для проверки на MatLab’e) без библиотечных функций
Вход:
широта и долгота точки цели в формате NMEA GGA , т.е. GGMM.MMMM (LAT) и GGGMM.MMMM (LON)
широта и долгота текущей точки (в том же формате)
Выход:
азимут на цель
расстояние до цели
Ошибка порядка 0.1%
Вот только от плавучки не смог отказаться и числа в формате double
To: vovic
Володь, проверь пожалуйста, может влезет библиотека для плавающей точки.
Если полёты в одном месте, то можно просто поотдельности вычесть долготы и широты,
умножить на масштабный коэффициент и получиться
разность между точками по двум осям.
Отсюда знаем азимут и расстояние.
Например:
разница в 1 минуту
между
широтами долготами
Москва 1856 м 1058 м /метров
Воронеж 1855 м 1150 м /метров
Код на С++ вычисление азимуна и расстояние между точками.
Когда осилю Пик - перепишу на пикбейсике
nav.rar
Ладно, синусы/косинусы и обратные посчитаем по рядам Тейлора.
Просмотрел код rcap и не увидел там формата чисел с плавающей точкой.
В ПикБейсике только целочисленная математика?
Или всё-же плавучка есть?
Давно ищу себе соучастника вот в таком деле. Есть готовый проект:
rcpilot.sourceforge.net/modules/rcap/index.php
С открытым софтом - исходники выложены на сайте.
Он хорош простотой и доступностью любому желающему. Мною испытан и отлажен. Но плох тем, что работает только с навигатором, задающим курс на цель. С обычными GPS- приемниками работать не может.
Цель замышляемого дела - модифицировать софт так, чтобы он смог работать с любой GPS-головкой.
Я заткнулся на том, что не смог написать расчет азимута на цель по известным координатам на Пикбейсике без библиотек функций. Ну, не программист я. 😊
Может кто возьмется помоч ?
Синусы/косинусы и обратные функции в Пикбейсике есть?
Сам приёмник точно не бюджетный и преднозначен для другого сектора.
Поэтому и дал название фирмы.
Антенну поставил “ширпотребовскую” 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.
Как называется приемникGPS, позволяющий программировать PWM - сигнал?
Приёмник фирмы Javad Navigation Systems с процессором Motorola MPC566.
Весь автопилот реализован непосредственно в GPS приёмнике.
Сначала работал на частоте 1Hz, но оказалось мало для ровной езды.
Сейчас позиция считается 10Hz по методу наименьших квадратов ( без Калмана )
Шум позизии около метра-двух
Фильтруется только направление скорости на интервале 0.5 сек
Машинка едет ровно и гладко.
Ввёл режим движения от одной точки до другой с заданным азимутом,
имитируя движение самолёта вдоль ВПП. Ездит туда - обратно пока батарейка не кончится.
Подключил GPS и RF приёмники к рулевым машинкам через мультиплексор.
Теперь одни каналы могу отдать на время GPSу (курс), а другими управляю с передатчика (тяга, высота). Легко отрабатывать посадку.
Поставил на радиоуправляемую а/машинку автопилот из GPS приёмника.
Началось всё с идеи беспилотного самолёта.
Опыта авиапилотирования не было. Только симулятор.
Купил парк флаер Protech Piper Cub AFR. Собрал, поставил батарейку большей ёмкости,
но самик так и не взлетел.
Пришлось для экспериментов с автопилотом перейти на авто.
Купил внедорожник масштаба 1/8, выбросил “родную” электронику оставив только двигатель.
Поставил цифровую рулевую машинку, регулятор хода и, собственно, GPS приёмник.
На GPS приёмнике запрограммировал управление рулём и двигателем (PWM сигнал).
Движение возможно с указанным азимутом; через массив путевых точек (LAT, LON);
либо с азимутом, проходящим через путевую точку.
[quote=Селезнев Максим;260032]
Гы , я вот - то-же не пойму , обнаженных теток показывают гораздо реже - чем сериал - "не родись красивой " .
А я, в свою очередь , не пойму почему нет на ТВ передачи про РС модели и моделистов! Есть передача про садовый мазохизм с Павлом Лобковым ( ну и фамилия!) , есть занудство про ремонт квартир ( чужими руками), про рыболовов … Да, конечно! кто платит тот и заказывает музыку.
А может моделисты это такая секретная организация, что и упоминать о них лишний раз опасно?
На Discovery Science есть передача “Дистанционное безумие” - соревнование двух команд в управлении RC машиной, вертолётом и катером