naza2frsky - адаптер смартпорта для FrSky за 3$

alezz

дистанцию тоже зря делал, насколько помню таранис сам считает.
По высоте. ну выведи сначала чистый gps_altitude потом чистый home_altitude и посмотри 😃

slava135

Пытался. почему то home_altitude 100000, ну и соответственно …

проверил.
Высота по gps гуляет сильно от 350 до 190. По этому наверно и точка фиксируется на большей высоте а затем падает. Пробую на балконе. может быть из за этого или есть другая причина такого гуляния?

alezz
slava135:

проверил.
Высота по gps гуляет сильно от 350 до 190. По этому наверно и точка фиксируется на большей высоте а затем падает. Пробую на балконе. может быть из за этого или есть другая причина такого гуляния?

GPS в принципе хреновато высоту показывает, нужно минимум 6 спутников для точности в десяток метров. Если спутников меньше погрешность 300м - легко, так что балкон не показатель. Тем более для старенького, младшего ublox 6й серии

slava135

Облетал. координаты отработал хорошо, даже удаление в принципе неплохо. Проблема осталась с высотой. При чем в логе высота по gps - отрабатывает нормально. Вся проблема в первичной записи высоты в ячейку. Может сильно рано пишется. Хочу попробовать добавить внешнее прерывание, типа фиксация стартовой точки, когда высота GPS стабилизируется. Погрешность конечно будет, но не минус всю дорогу. 😃
Скорость показывает неверно. 5-6 к/ч. видимо нужно коэффициент подобрать.
Вариометр тоже =0. Я так понимаю по формуле это разница между уже считаной высотой и новым считыванием. Может разнести их дальше в процедуре?

alezz

по моему главное это координаты 😃
По поводу высоты, да можно добавить счетчик чтобы брало не первое измерение после фиксации 6 спутников, а например 10е. Или брать среднее арифметическое первых 10 измерений. Но повторяю значительно минимизировать проблемы с высотой можно только перейдя на более современный уровень, например на gps модуль с ublox 8, на ublox 6 погрешность будет присутствовать постоянно, не смотря на всех костыли
Скорость возможно выводится в м/с
Вариометр все та же песня про высоту 😃 Нужно в логе смотреть как меняется соседние значения высоты и сравнить с тем что выдает вариометр. Возможно умножить на 100, чтобы разница была не в метрах а в сантиметрах

Можешь выложить вариант с правильными координатами? Я в основной проект внесу изменения и выложу сюда, авось кому пригодится

slava135

Да, конечно. Соберу сегодня код. А то у меня в тестовом варианте (усеченные модули.) Добавлю в последнюю версию.

slava135

Файл с изменениями по координатам.

alezz

чет я даже строчки ни типа

if ((home_altitude == 0) && (sat_visible > 5)) home_altitude = gps_altitude;

ни загадочной

int c = GPS_Serial.read();

не обнаружил 😃
Ну да ладно, я только на 10 умножил координаты, должно работать. Получилась версия 0.5, тем кто протокол NMEA не использует качать НЕ НУЖНО разницы с 0.41 нет!

naza2frsky_v05_nmea.rar

slava135

Я эти фишки пока не включал. Еще тестирую. Пару дней погоняю. Да и дистанцию, я понял не нужно включать. Если все же интересно - то в следующей выложу.

slava135

Проблему с высотой кажется понял, только еще не проверил в поле. Не верно работает эта строка if ((home_altitude == 0) && (sat_visible > 5)) home_altitude = gps_altitude;

процедура gps.satellites() возвращает 255 если спутники плохие. И соответственно условие срабатывает и home_altitude фиксируется как 1000000.0 Поставил условие && (sat_visible != 255) Да и кнопку добавил для резерва.

alezz

Похоже что 255 это -1 для 8ми битного числа 😃
подумал… лучше вместо && (sat_visible != 255) добавить условие

&& (gps_fixtype == 3)

так будет корректнее

slava135

Облетал.
Высота отработала корректно (относительно ±2-3 м.) А вот скорость так и не понятна. В функции она выводиться в Км/ч - и составляет 0.14-0.21. Даже не пойму на что нужно умножить 😃

alezz

если смотреть на числа то получается

groundspeed   	= gps.f_speed_kmph()/36*200; 

Но если объяснить почему 36 я еще как-то могу, то 200 нет 😃

alezz

0.14-0.21 среднее 0.18
0.18 / 36 = 0.005
0.005 * 200 = 1

slava135

так .021 это примерно 70-80 к/ч по ощущениям. Замерить нечем. Подбором напрашивается 0.21*36*10 Но это пальцем в небо. Непонятно почему такие цифры возвращает эта функция. Попробую глянуть и в узлах. Она там по умолчанию

alezz

делить на 36 однозначно т.к. дальше в FrSkySPort на 36 умножается (эту процедуру лучше не трогать чтобы не пришлось добавлять ключи компилятору для dji и ublox одно, а для nmea по другое). На что умножать посмотри сам, тогда например на 20000, и лучше это делать в naza2frsky.ino
По повожу замерить. Можно прикрепить на аппарат смартфон/трекер, только покрепче, и включить запись трека а потом сравнить показания

Дока

Алексей, летаю на связке: наза, назовский ГПС, таранис. Дистанция растет одинаково с высотой при вертикальном взлете. Это так и должно быть? Или можно дистанцию как-то отвязать от высоты?

alezz

дистанцию считает таранис, а не naza2frsky см. первый скриншот, последняя строка
rcopen.com/forum/f123/topic386079/321
Так что вопрос нужно адресовать скорее разработчикам opentx. Но вообще, я считаю правильным, что при наборе высоты растет и дистанция, т.к. коптер удаляется от нас как ни крути