GPS-приемники для квадрокоптеров
Приехал модуль m8n, и теперь имеется пара вопросов:
Плата имеет большие габариты 40 х 40 х 11 мм, плюс к тому антенна в 2 раза толще обычной с железным экраном снизу, что делает общую высоту под 20мм. Соответственно, в стандартный корпус все это дело никак не помещается. Посоветуйте подходящий для него корпус, находящиеся по поиску имеют малый размер.
Далее, проблему создает железный экран снизу антенны (как я понимаю, под ним lna?) - из-за него встроенный компас при калибровке выдает дичайшие оффсеты, размагнитить сходу не получилось, минимальное полученное после шаманств значение - 800. Возможно ли вообще сделать компас на плате пригодным к использованию, или наличие рядом магнитного материала ставит на нем крест?
Приехал модуль m8n, и теперь имеется пара вопросов:
Плата имеет большие габариты 40 х 40 х 11 мм, плюс к тому антенна в 2 раза толще обычной с железным экраном снизу, что делает общую высоту под 20мм. Соответственно, в стандартный корпус все это дело никак не помещается. Посоветуйте подходящий для него корпус, находящиеся по поиску имеют малый размер.
Далее, проблему создает железный экран снизу антенны (как я понимаю, под ним lna?) - из-за него встроенный компас при калибровке выдает дичайшие оффсеты, размагнитить сходу не получилось, минимальное полученное после шаманств значение - 800. Возможно ли вообще сделать компас на плате пригодным к использованию, или наличие рядом магнитного материала ставит на нем крест?
На Neo-6m я отпаивал экран из жести и ставил самодельный из меди.
Задумал место крепления - одна из боковых стоек ног
не важно как трекер стоит на коптере. Важно как он будет расположен после неконтролируемого падения после улета аппарата. подумайте, как и что может сломаться и отвалиться, чтобы прикрепить трекер “правильнее”
У меня несколько иная задача трекера. Мне не важно будет ли он работать после краша, потому что он отошлет на сервер координаты за каждые 5 сек. своего полета. Конечная точка маршрута будет известна.Конечно тут как и во всем есть свои плюсы и минусы, но меня устраивает, я так летал на другом коптере и его можно в реальном времени отслеживать на карте и смотреть записаный маршрут полета, скорости… и т.д.
Мне просто интересно, будет ли он достаточно удовлетворительно работать будучи наклоненным под 45 градусов, или же стоит заморочится и опаяв ГПС антенну от платы , удлинив ее кабелем вывести повыше и строго вертикально? Вчера первый раз попрбовал этот новый трекер. На подоконнике окна ловил 6 спутников. Сегодня попробую испытать его наклоненным.
По поводу кабеля для модуля GPS BeStar BN-880, я заказал вот такой: goodluckbuy.com/high-quality-pixhawk-px4-flight-co… - он не подходит, разъём другой, пришлось припаивать к модулю. Сейчас появился ещё вот такой: goodluckbuy.com/gps-connection-cable-pix-interface…, возможно, он подойдёт.
Далее, проблему создает железный экран снизу антенны (как я понимаю, под ним lna?) - из-за него встроенный компас при калибровке выдает дичайшие оффсеты
Он должен быть из немагнитного материала и никак не влиять на компас. Его можно отпаять, уверен значения будут те-же.
Увы, еще как магнитится. Может позже займусь этим, а пока встроенный компас бесполезен.
Пробовали магнитом? Ну китайцы значит опять закосячили.
Увы, еще как магнитится
Пробовали магнитом?
Ну, теперь поможет только размагничивание…)
Увы, еще как магнитится.
А откуда он?
если размагнитить нечем - снять экран, сделать разделительный слой, оклеить медной фольгой
Ну, теперь поможет только размагничивание…
Недавно столкнулся с подобной неприятностью
rcopen.com/forum/f123/topic233564/19468
Господа форумчане, подскажите пожалуйста, такой модуль GPS стоит брать для AIOP v2 с маховиком на борту?
www.aliexpress.com/item/…/32366818254.html
Взял модуль ublox 6m, но косячный он до боли, то есть 3d fix, то нет…
И компас штатный наводок дает очень много, при включении удержания по gps начинает колбасить и улетать в сторону китая… Думаю решить эту проблему neo7m с отдельным компасом на борту.
Господа форумчане, подскажите пожалуйста, такой модуль GPS стоит брать для AIOP v2 с маховиком на борту?
если не ошибаюсь Дмитрий Котвицкий свой модуль на чипсете медиатек 3333 с антенной 35*35мм как раз для этого контроллера с прошивкой делал
поддержу тезку. ИМХО для маховика мтк3333 самое оно с его фильтрацией и точностью.
Спасибо за ответы, друзья!
собираюсь в отпуск, есть задумка в этот период нарисовать в коде ардукоптера 3.2 программный фильтр позиции под медиатек.
помощь в программировании и обсуждении алгоритма приветствуется. )
пока задумка такая
- округленная позиция по широте и долготе на основе накопления N количества сэмплов c выводом настройки глубины этого фильтра в параметр.
но если этот праметр оставить единственным то при движении округленная позиция будет отставать от реальной поэтому вторая переменная средняя скорость точки за аналогичный период - назовем ее динамическая ошибка. где средняя динамическая ошибка по широте и долготе = накопление разницы между средней позицией и свежим сэмплом.
соответственно прогнозируемая позиция это средняя позиция + средняя динамическая ошибка. - при превышении скорости скажем 10кмч можно уменьшать глубину фильра а при больших скоростях использовать сырые данные в качестве актуальной позиции
а инерциалку в ардукоптере вырублю. должно получиться гораздо стабильнее на мелких аппаратах с сильным уровнем вибраций
кто со мной?
округленная позиция будет отставать от реальной
хмм…
если мне не изменяет память… в 3333 как раз категорически фильтр не нужен, т.к. он выдает уже отфильтрованные значения (у меня с маховием была как раз проблема с отставанием-унитазингом, пока фильтр не вырубил).
или же речь идет об 3333 с отключенным фильтром?
да, у меня прошивка навигационного модуля с отключенным по умолчанию встроенным в навигационный модуль фильтром.
скачать ее, тулзу и лоадер можно тут files.msdatabase.ru/gps (снизу, в аттачах)
Очень точно и честно показывает координату. точки кучно бьют в метр но если инерциалку в ардукоптере отключить квадрик начинает “гонять муху” в этом метре (TC_XY = 0,5) инерциалка в ардукоптере хорошо работает на больших аппаратах с хорошо подавленными вибрацими - на мелких и в случае вибраций случаются неприятности.
хотелось бы сделать прошивку ардукоптер надежной и менее зависимой от вибраций
собственно время подходящее - новых прошивок для АПМ от дидронесов больше не ожидается
вот немножко в коде идея
struct PACKED Location {
union {
Location_Option_Flags flags; ///< options bitmask (1<<0 = relative altitude)
uint8_t options; /// allows writing all flags to eeprom as one byte
};
// by making alt 24 bit we can make p1 in a command 16 bit,
// allowing an accurate angle in centi-degrees. This keeps the
// storage cost per mission item at 15 bytes, and allows mission
// altitudes of up to +/- 83km
int32_t alt:24; ///< param 2 - Altitude in centimeters (meters * 100)
int32_t lat; ///< param 3 - Lattitude * 10**7
int32_t lng; ///< param 4 - Longitude * 10**7
};
// так декларирована переменная выходных данных класса жпс
// Location location;
// пусть это будут сырые данные от навигационного модуля
// которые без округления ложились в выходную переменную location
// new_lat; new_lng; new raw data from gps
//gps filter size параметр глубины фильтрации который можно вынести в параметры
int32_t gps_filter_size = 65; // 9 = 8 samples avg + 1 actual; 65 = 64 samples avg + 1 actual
int32_t gps_filter_avg = gps_filter_size - 1;
int32_t gps_filter_portion = 1
static int32_t avg_lng;
static int32_t avg_lat;
if (avg_lng == 0 && avg_lat == 0 ) // инициализация начальных значений
{
avg_lng = new_lng;
avg_lat = new_lat;
}
avg_lng = (avg_lng * gps_filter_avg + new_lng * gps_filter_portion) / gps_filter_size ;
avg_lat = (avg_lat * gps_filter_avg + new_lat * gps_filter_portion) / gps_filter_size ;
//move avg position to estmate position with avg speed
static int32_t avg_lng_spd =0;
static int32_t avg_lat_spd =0;
int32_t lat_spd = avg_lat - new_lat;
int32_t lng_spd = avg_lng - new_lng;
avg_lng_spd = (avg_lng_spd * gps_filter_avg + lng_spd * gps_filter_portion) / gps_filter_size ;
avg_lat_spd = (avg_lat_spd * gps_filter_avg + lat_spd * gps_filter_portion) / gps_filter_size ;
location.lng = avg_lng + avg_lng_spd ;
location.lat = avg_lat + avg_lat_spd ;
Задумка очень интересная. Однако становится вопрос - как оно будет держать позицию при порывистом ветре?
При внесении фильтра, пусть и с экстраполяцией значений, все равно будет вносится задержка обнаружения реальной позиции. Чтобы с отключенной инерциалкой коптер нормально держал позицию - нужно загрублять реакцию на gps (loiter P, верно?), иначе, если задержка измерений будет превышать скорость реакции, может возникнуть унитазинг/колебания вокруг позиции.
При таких настройках и без инерациалки, аппарат только так будет носить резким ветром.
Предложенная экстраполяция значения по оценке средней ошибки, скорее всего, не сможет скомпенсировать задержку, новый семпл будет стоять далеко от предыдущих, и прогнозируемая по средней динамической ошибке позиция будет отличаться от реальной. А если не делать прогнозов и просто устреднять, то разница будет еще больше. Стоит обдумать этот момент, например внести быстрый критерий отключения фильтра, и его оценка должна быть не по средней скорости движения коптера.
В таком случае, на помощь как раз может прийти инерциалка. Критерий отключения и/или изменения глубины фильтра gps можно оценивать с ее помощью, ведь она быстрее всего отрабатывает возмущения.
Таким образом, мне кажется, стоит делать динамический фильтр, глубина и нахождение средней динамической ошибки которого должна производится по следующий критериям:
1 При скорости около нуля, инерциалку полностью не отключать, а проверять ее значения по свежим семплам gps, фильтр делать малой глубины. (Этот момент надо обдумать, возможно стоит начинать сразу с пункта 2)
2 При скорости ниже определенного уровня но выше “условно нулевой” отключать инерциалку, смотреть усредненное абсолютное значение ускорения (так можно снизить влияние вибраций), и при превышении им определенного значения снижать глубину фильтра (возможно сделать несколько градаций), или пропорционально увеличивать значение “средней динамической ошибки”. Так можно получить и точные усредненные координаты, и хорошую динамическую реакцию.
3 При скорости выше некоторого уровня, делать фильтр минимальной глубины, или вообще убирать его.
Описание несколько сумбурно, надеюсь суть ясна.