GPS с гироскопом и одометром.

Во всех логах HMC5883L.

Не, извини, нифига не понимаю, что с этими данными делать.
Почему магнетометр по оси Z показыват самое большое значение и больше всего плавает?.. Почему модуль вектора магнитного поля плавает от 300 до 650?.. Плюс не ясно, какая калибровка, какой режим, какое расположение датчиков относительно друг друга, какое закрепление на машине (жёсткое или лежит на сидении) и т.п.

Буду пока скрещивать одометр с GPS

Так расположен вектор магнитного поля. А ты думал он на всей планете горизонтален? :slight_smile:
Горизонтален он будет на экваторе, вертикален на полюсах, и нечто среднее на наших широтах.

Не калиброван. У датчика на каждой оси есть смещение, с ним надо разбираться самостоятельно.

А если откалибровать будет четко показывать?

Почему нельзя брать информацию только с компаса и датчиков на колесах?

На магнитных полюсах.

Да, при условии, что перед вычислением курса, вектор компаса надо будет вправлять на место в соответствии с креном\тангажом автомобиля, ибо компас работает только в строго горизонтальном положении (но к счастью, т.к. у него 3 оси, горизонтальное положение можно получить виртуально).

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

  1. См. выше. Нужна информация о наклоне автомобиля, иначе вычисление курса не будет работать корректно.
  2. Если я положу рядом телефон\ноут\любой девайс с магнитом внутри, курс будет сбит сразу, и до тех пор, пока алгоритм калибровки не обнаружит сей досадный факт. Как быстро это произойдёт - зависит от алгоритма.
  3. Почему в список не включен GPS? Колёса тоже не идеально показывают расстояние, погрешность может достигать 2%.
  4. Как учитывать наклон дороги? Колёса справедливо выдадут, что проехали больше, чем это отобразится на плоскости карты.

Капитан Очевидность :slight_smile:

Иллюстрация “не все дороги горизонтальны”.


У вас запросы больше, чем я думал.

Всмысле? На 10км 2% будет уже 200 метров мимо. От переодической синхронизации с GPS никуда не денешься, независимо от запросов.
Или я вас неправильно понял?

PS. А что делать зимой, когда колёса проскальзывать могут?

Конечно, от синхронизации никуда не денешься.

Я мыслю в том направлении, что хорошо бы было если во время стоянки на светофоре, при проезде арок, развязок, туннелей и тп. координаты не бросало в стороны. А арок и развязок в 10 км длинной нет (туннели есть, но не так много).

Не совсем по авто теме, но очень близко (и лично для меня более актуально): что бы навигация в смартфоне внутри зданий работала (здания тоже редко превышаю размеры в несколько сотен метров).

А есть возможность определить, какое именно колесо буксует? При разгоне брать наиболее медленное, при торможении - наиболее быстро вращающееся колесо.

:slight_smile: интересное обсуждение, а если все четыре колеса сорвало в юз ??
вы так до доплерового датчика, направленного на дорогу, доиграетесь.

Да сразу обвешаться лазерами и камерами, как в автопилотах делают:

:slight_smile:

А есть что-то более ли менее готовое, для записи трека с инерциальной системы. Мне хочется замапить относительно небольшой участок, но с каменной, очень плотной застройкой (старый город Котора). gps там сходит сума, снимки из-за перепада высот корежит. Мне по сути видется 2 варианта - трек не с gps или построение облака точек по видео/серии фото.

Мне уже предлагали оптический датчик (по типу тех, что в мышке) на дно машины закрепить :slight_smile:

На самом деле, буксующее колесо - не такая большая проблема (тем более, что ведущие - передние, а я подключился к задним), но потребует более частой синхронизации с GPS, чем 10км :slight_smile:

Это всё замечательно, но выше OverQuantum собрался определять направление(поворот) чисто по разнице скорости вращения колёс, плюнув на гироскоп :slight_smile:

Кстати, инерциальную систему тоже будет корежить, если заранее не позаботиться о трёхмерных вычислениях (опять же, здесь понадобится знать текущий крен\тангаж автомобиля).

Забыл уточнить, об автомобиле там речи не идет.

Не надо. В заносе колеса будут крутится не пойми как. нужно в комплексно подходить к этому вопросу. Если с колес пошли какие-то не понятные данные - переходить на гироскоп.

И ещё нужно тогда учитывать покрытие дороги, т.к. мне кажется, что на грунтовой дороге колеса даже при езде по прямой немного проскальзывают (по сравнению с чистым асфальтом). На мелких ямках тоже может набраться погрешность (колесо едет не по прямой, а как бы в горку, а потом с горки). На повороте на внешнее колеса давление больше, значит резина сожмется больше и выдаст немного другие показания. После каждой остановки (а впрочем - и во время езды) учитывать, что вес машины мог изменится, а значит и давление на колеса будет разным. Покрышки нагреваются при езде немного - ещё 0,001% погрешности. Это вам на будущее - с миру по нитке, так и получится, что не будет погрешности даже на 10 км.

Коллеги,
Я на гироскоп, акселерометр и магнетометр “плюнул” потому как не понимаю как интерпретировать представленные сырые данные. Либо я чего-то не понимаю, либо все три датчика выдают данные с паразитной постоянной составляющей (которая не факт что сильно постоянная) и которую непонятно как отфильтровать. Возможно сказывается, что я не работал с такими датчиками сам. Если кто-то поможет с методикой - буду признателен.

Сейчас магистральная идея - интегрировать одометр с притягиванием его (по параметрам - диаметру колёс и “колеи”) к GPS треку по методу наименьших квадратов. Причём параметры предполагается делать “плавающие”, что по идее позволит компенсировать проскальзывание, наклоны колёс и т.п.

Ув господа! А вы фильтр калмана пробовали курить? У меня такое ощущение, что он эту проблему полностью решит, если его запрограммировать.

Zkir
Почитай 2-3 последних страницы. Суть не в Калмане, а в том что при таком огромном наличии сенсоров в современном мире никто не поделился готовыми решениями (формулы, алгоритмы, матрицы моделей).

Вот как я это понимаю:

Гироскоп
При первом старте постоянную составляющую можно измерить во время стоянки и далее вычитать её.
Плывёт она не сильно, в основном - с изменением температуры.
Во время езды можно воспользоваться фильтром для удаления НЧ составляющей. Именно так и делает MotionFusion, за что и поплатился выпрямлением слишком слабых изгибов загородных дорог (конечно, параметры своего фильтра можно сделать помягче, да и GPS тут должен всё исправить).

Акселерометр
Постоянной составляющей не должно быть.

У MPU-6050 кажется нашлось одно объяснение: регистры MPU6050_XA_OFFS, MPU6050_YA_OFFS, MPU6050_ZA_OFFS содержат следующие оффсеты:
Accel X: -2320
Accel Y: -432
Accel Z: 1332
Если к 14016 прибавить 1332, будет 15348, что практически равно 1g (16384).
Но надо учесть остальные оси - делать парковки горизонтальными у нас, видимо, не принято :slight_smile:

У ADXL345 кстати логи выглядят хорошо изначально. Только, разрешение у него маленькое, всего 255 отсчётов на 1g.

Компас
Надо учитывать, что сам вектор магнитного поля у нас не горизонтален, а бьёт из земли под небольшим углом. Это накладывает дополнительные требования:

  1. Имея 3 оси магнетометра, надо вычислить вектор, и используя текущий крен\тангаж автомобиля, повернуть его так, как будто замеры были сделаны со строго горизонтальным расположением магнетометра. Надеюсь понятно объяснил. Требование обязательно, ибо из-за особенностей вектора магнитного поля, придётся ловить небольшие его отклонения, и любой наклон магнетометра изменит результат всех вычислений до неузнаваемости.
  2. Требуется точно выставить оффсеты. В экселе можно построить точечную диаграмму по X+Y, должен получиться круг из точек. Если это сделать ПОСЛЕ п.1, то круг будет более-менее красивым (иначе можно увидеть размазню). Далее смысл простой - оффсеты выставляются такими, чтобы центр круга был в нулях. (В идеале конечно надо и Z, но решения я не знаю, ибо машина никогда не переворачивается, чтобы измерить эту ось с другой стороны).
  3. Курс после этого вычисляется банальным atan2(y,x)
    Смещение может плавать. В пределах одного трека - не принципиально, а вот в разные дни - существенно.

Я конечно почитаю, на свежую голову, но пока мне кажется, что есть показания жпс - условно говоря (X,Y) и есть показание инерциальной системы (Vx, Vy), но нет понимания как их свести.