LINUX.ORG.RU
ФорумTalks

Инерциальная навигационная система (порекомендуйте что нить простое)

 ,


0

3

Народ, а никто не занимается инерциальными системами навигации?

Блина, есть акселерометр + гироскоп (mpu6500). И есть радиоуправляемый кораблик китайский. Хочу его переделать на esp32s3 + добавить ультразвуковой сенсор чтобы рельеф дна сканировать, для рыбалки конечно (а то сходил я летом у нас в городе раз 5 и ничего не поймал и погруснел что-то ))).

Но для начала надо координаты кораблика хотя бы как-то получать… ЖПС и оное не предлагать (у нас блокируют), так вот, хочу как ни будь на акселерометре + гироскопе замутить это (точность особая не нужна, плюс минус метр).

Читал всякие ресурсы (лазил по всяким либам), но там математика всякая, матрицы, кватернионы, фильтры каллмана и прочий «треш» (я уже забыл все это, бошка уже пухнет, я уже как бы скуф).

Мож есть у кого что нить готовое (рабочее), типа на входе подставить показания акселерометра + гироскопа, а на выходе получить координаты (позицию), хотя бы какую нить относительно чего нить (хотя бы относительно самой первой позиции кораблика, которую за 0 принять) ?

PS: Линукс тут при том, что АПИ библиотек от ESP IDF похож на API Linux (POSIX).

★★

Последнее исправление: kuzulis (всего исправлений: 1)

Дальность хода какая? Именно она определяет требуемую точность инерциальной системы, т.к. ошибка накапливается.

В целом, попробуй просто полетный контроллер от БПЛА взять.

ЗЫ: mpu6500 – на этом говне у тебя после интегрирования даже на 5 метровой дистанции погрешность будет в полметра.

soomrack ★★★★★
()
Последнее исправление: soomrack (всего исправлений: 1)
Ответ на: комментарий от soomrack

Дальность хода какая?

В среднем по максимуму надо «отсонировать» дно у квадрата 100Х100 метров… Но в реале 50Х50 метров пойдет, т.к. дальше смысла нет кидать приманку (да и река где-то 60-70 метров по ширине)…

ЗЫ: mpu6500 – на этом говне у тебя после интегрирования даже на 5 метровой дистанции погрешность будет в полметра.

Не, ну может есть какие нить фильтры умные (читал где-то на хабре про них).

В целом, попробуй просто полетный контроллер от БПЛА взять.

Ага, спс, погуглю шо это такое.

kuzulis ★★
() автор топика

UWB модули для позиционирования продаются, но это дорогое удовольствие для детской забавы. И 50 метров это многовато.

Frost ★★★
()
Последнее исправление: Frost (всего исправлений: 1)
Ответ на: комментарий от soomrack

Нету, чуда быть не может.

Не, ну даже в пультах от смарт-тв указатель то работает (позиционирование по экрану ТВ), и в стоячем положении ошибка там не накапливается (курсор на месте стоит, не плывет).. Как то китайцы то делают это (я не думаю что там прям дорогие IMU в пультах стоят).. ))

kuzulis ★★
() автор топика
Ответ на: комментарий от kuzulis

Положение пульта? Ну там может простая триангуляция.

soomrack ★★★★★
()

Нет. Показания акселерометра и гироскопа там недостаточно, там непрерывный дискретный процесс.

Без математики ты не обойдешься, хотя она там примитивная на уровне пятого-шестого класса.

Я бы на твоем месте просто воспользовался ИК прожектором.

windows10 ★★★★★
()
Ответ на: комментарий от kuzulis

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

На VR такие вещи калибруются или через базовые станции, или попадая в камеру шлема. Чудес не бывает.

Gary ★★★★★
()

Читал всякие ресурсы (лазил по всяким либам), но там математика всякая, матрицы, кватернионы, фильтры каллмана и прочий «треш» (я уже забыл все это, бошка уже пухнет, я уже как бы скуф).

Эхолот купи, который можно закидывать удилищем.

aiqu6Ait ★★★★
()

MPU6500 говно, лучше поприличнее поискать. Найденное поставить в количестве от 16 штук (чем больше, тем лучше) и усреднять значения - получится весьма точный девайс, который на твоих дистанциях даст более чем достаточную точность. Если есть только MPU6500 то их надо от 32 штук.

Stanson ★★★★★
()
Ответ на: комментарий от Stanson

Найденное поставить в количестве от 16 штук (чем больше, тем лучше) и усреднять значения - получится весьма точный девайс

Что-то сомневаюсь, что будет лучше, чем простая калманская фильтрация от одного.

soomrack ★★★★★
()
Ответ на: комментарий от soomrack

Фильтрация вообще никак не поможет вычислить правильное абсолютное значение, если датчик даёт систематическую ошибку. А усреднение данных кучи датчиков с разными систематическими ошибками как раз позволит получить достаточно точные абсолютные данные.

Stanson ★★★★★
()
Ответ на: комментарий от soomrack

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

Это стандартный способ уменьшения систематической ошибки.

Как это делать можно посмотреть, например, тут - https://github.com/will127534/IMU_Array

Ну или поискать ещё про «DIY IMU Array».

Stanson ★★★★★
()
Ответ на: комментарий от Stanson

Ошибка для акселерометров данного типа распределена по Гауссу

Да нет. Гауссиан там есть, но не четкий, еще его форма сильно зависит от резкости движений. Все эти размышления исходят из идеализированных представлений об объекте, а в случае данного датчика эта идеализация весьма далека от реальности.

soomrack ★★★★★
()
Ответ на: комментарий от soomrack

Ещё раз - принцип устройства и работы датчика обуславливает распределение систематической ошибки по гауссу от девайса к девайсу. Поэтому усреднение данных с разных датчиков этого типа работает очень хорошо. Поэтому IMU Array и является решением данной проблемы и производится не только любителями но и промышленно. Это работает и работает хорошо.

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

Stanson ★★★★★
()
Ответ на: комментарий от Stanson

Ты сам пробовал это сделать?

Ты о какой ошибке ведешь речь? Вначале ты говорил о систематической ошибке прибора, потом просто о случайной ошибке измерений (как я понял).

Случайная ошибка, если она распределена по Гауссу гораздо лучше нивелируется калмановской фильтрацией, чем усреднением от нескольких приборов.

Систематическая ошибка усреднением приборов в общем случае не убирается.

soomrack ★★★★★
()
Ответ на: комментарий от aiqu6Ait

Эхолот купи, который можно закидывать удилищем.

Ну там же все равно надо расстояния измерять до берега (по шпуле, или еще как нить).

И да, купить я всегда успею (да и неинтересно так)… ))

kuzulis ★★
() автор топика
Ответ на: комментарий от soomrack

Что-то сомневаюсь, что будет лучше, чем простая калманская фильтрация от одного.

Вот, я вычитал что есть какой-то убер-мега-фильтр от Маджвика; https://github.com/mirhamza708/Madgwick-filter-STM32-MPU9250

Проще вроде как, на выходе дает кватернион поворота… Типа у него нет болячек Калмана (где углы Эйлера используются), и какой то используется алгоритм скользящего чего-то там для компенсации ошибки (я без понятия что это). А уже из него, из этого кватерниона) (я так понимаю), зная начальное положение (скажем, равное нулю), можно вычислять уже текущую позицию, просто умножив кватернион поворота на кватернион предыдущей позиции (и так делать каждый раз на каждый квант времени), судя по инфе из гугла.

И, еще, основная же ошибка идет от гироскопа (я так понимаю), в статике накапливается, пока объект на месте стоит… Т.е. если объект будет постоянно в движении - то, я так понимаю, что эта ошибка может и не так влиять…

В общем, тут одни теоретики? А на практике кто нить делал что нить такое? ))

kuzulis ★★
() автор топика
Ответ на: комментарий от kuzulis

Я студентам давал задание примерно на таком датчике: робот-машинка проехать 2 метра вперед, потом вернутся в стартовую точку. Лучший результат показанный статистически – погрешность 20 см. Моторы и колеса немного различаются, т.к. неидеальны, плюс проскальзывания, поэтому тупо вперед-назад по таймеру не работает от слова «совсем».

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

soomrack ★★★★★
()

Ты это, осторожно. А то военные заберут.

Shadow ★★★★★
()
Ответ на: комментарий от soomrack

Ты сам пробовал это сделать?

Да пробовал. Проблема независимой навигации без сраных third-party спутников и прочей инфраструктуры становится всё актуальнее, если ты не в курсе.

И пробовал не только я. Cцылки на всякий матан и промышленные IMU array можно найти по сцылке которую я привёл ранее.

Ты о какой ошибке ведешь речь?

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

Твои теоретические измышления без малейшего понятия о том, как IMU работают и откуда там берутся ошибки не имеют никакого смысла.

Теоретики такие теоретики…

Stanson ★★★★★
()

Определять положение бота по IMU - это же извращение? По расстоянию до пульта и двух других ориентиров, на берегу например, можно, но для этого радар нужен.

Хочу его переделать на esp32s3 + добавить ультразвуковой сенсор чтобы рельеф дна сканировать, для рыбалки конечно

Не нужно это всё для рыбалки.

yvv1
()
Ответ на: комментарий от soomrack

Погуглил - не, я имел ввиду контроль пройденного расстояния по оптическому датчику, и обратная связь с моторами. Надо будет заморочиться, давно хотел что-нибудь такое сделать. С с ультразвуковым сонаром тоже может быть ок. Интересно, в общем.

Shadow ★★★★★
()
Последнее исправление: Shadow (всего исправлений: 1)

А ты на донку пробовал ловить? Мотаешь пять-шесть донок по три хвоста и прячешь. Обязательно что-нибудь да поймается.

Блин, погуглил, все удобные снасти запрещены или частично запрещены.

Shadow ★★★★★
()
Последнее исправление: Shadow (всего исправлений: 1)
Ответ на: комментарий от Shadow

А ты на донку пробовал ловить?

Не, тока на фидеры (хотя по сути это и есть донка). В деревне рыба ловится, а в городе, ну никак вообще. Мож у меня руки кривые, мож еще что (не судьба, к примеру).

kuzulis ★★
() автор топика
Ответ на: комментарий от yvv1

Не нужно это всё для рыбалки.

У нас нужно, т.к. всякие м*ки, всю рыбу под ноль извели (сетями, электро-удочками и т.п). Нужно знать места и много чего еще, никто не расскажет про них.

А если ехать на известные всем места - то там рыбаков - как клопов на матрасе, кишмя-кишат, все места заняты. ((

В общем, надо рельеф дна и эхо отражения от косяков рыб, хотя бы знать что рыба в этом месте есть, что есть смысл сидеть с удочкой. ))

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

kuzulis ★★
() автор топика
Последнее исправление: kuzulis (всего исправлений: 1)
Ответ на: комментарий от Gary

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

Проверил, ушел, все работает (даже если пульт внутри коробки закрытой) ..

Пульт не ИК, а какой-то RF, от смарт-тв от LG.

kuzulis ★★
() автор топика
Ответ на: комментарий от kuzulis

Мне самому интересно стало что там внутри, что за телевизор и модель?

А так я не видел ни одного IMU который работал бы нормально без привязки к ориентирам. Нет математической функции «сделай зашибись», которая поправит тебе расчёты когда гироскоп смотрит в одну и ту же сторону, а показывает разные значения.

В частности MPU6500 считается совсем говном, хуже него только MPU6050 (т.к. они иногда продаются уже мёртвые), я бы просто выкинул его в мусорку, лол. Можно попытаться спасти ситуацию докупив ещё магнетометр, но если нет желания возиться с математикой, лучше забей. И это решает только тему гироскопа, я не знаю насколько плохой там акселлерометр.

Gary ★★★★★
()
Ответ на: комментарий от kuzulis

Ты ж простое просил, вот оно. Дальность на шпуле всегда можно зафиксировать, когда до нужной дистанции домотаешь, в общем тебе рыбачить или изобретать?

aiqu6Ait ★★★★
()

mpu6500

точность особая не нужна, плюс минус метр

Да вы, батенька оптимист) Без спутника про навигационные параметры можно забыть. С задачей автономной навигации даже датчики за 100к не справляются (даже до 5-ого класса точности там ой как далеко).

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

otto ★★★★
()
Ответ на: комментарий от Gary

Мне самому интересно стало что там внутри, что за телевизор и модель?

43UM7490PLC

В частности MPU6500 считается совсем говном, хуже него только MPU6050

Да я понимаю, что оно г-но, но не хочу тратить деньги на что то еще более дорогое. Буду как то выкручиваться.

kuzulis ★★
() автор топика
Ответ на: комментарий от aiqu6Ait

Ты ж простое просил, вот оно.

Речь шла про простую ИНС ))

Дальность на шпуле всегда можно зафиксировать, когда до нужной дистанции домотаешь,

Дык и кораблик я могу на глаз туда-сюда гонять ))

в общем тебе рыбачить или изобретать?

И то и то. )))

kuzulis ★★
() автор топика
Ответ на: комментарий от otto

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

Воот, это уже что-то, значит докупить магнетометр надо еще… Но это потом, сначала надо без него посмотреть как оно будет.. Надо чтобы руки дошли (машинку наверно надо сначала вместо кораблика помучать, чтобы дома на коленке на полу, а не в ванне).

kuzulis ★★
() автор топика
Ответ на: комментарий от kuzulis

Проще вроде как, на выходе дает кватернион поворота… Типа у него нет болячек Калмана (где углы Эйлера используются)

У тебя каша в голове. Углы Эйлера и кватернионы это способы математически описать параметры вращения объекта в пространстве, они не привязаны ни к каким фильтрам. У углов Эйлера недостаток в том что вращающиеся оси «складываются» в определенных условиях, например при тангаже в 90 градусов и еще они требуют тригонометрии для расчета (страдает точность вычислений). Кватернионы намного сложнее, но не имеют недостатков.

если объект будет постоянно в движении - то, я так понимаю, что эта ошибка может и не так влиять

Неправильно, будет еще как влиять. Классический интегральный способ коррекции за счет акселерометров переводит накапливающуюся угловую ошибку в постоянную, колеблющуюся с периодом Шулера (84 минуты) с амплитудой равной максимальной погрешности. Способ списать эту погрешность есть: нужно знать линейную скорость объекта в пространстве (gps, ну или воздушную скорость в случае с самолетами)

otto ★★★★
()
Ответ на: комментарий от otto

Да вы, батенька оптимист) Без спутника про навигационные параметры можно забыть.

Так, а если прикупить просто GPS приемник какой дешевый.. То его одного хватит вообще? Или оно все медленное и ненадежное, и надо комбинировать обязательно с IMU?

kuzulis ★★
() автор топика
Ответ на: комментарий от kuzulis

без него посмотреть как оно будет

А какая величина bias у твоего гироскопа по даташиту? Допустим, при 0,1 градус в сек. за минуту у тебя будет ошибка в 6 градусов. Тут без компаса никак)

otto ★★★★
()
Ответ на: комментарий от otto

А какая величина bias у твоего гироскопа по даташиту?

Девайс - MPU6500 (может китайская поделка перемаркированная, хз, я бы не рассчитывал на даташит).

Хз, не смотрел еще, да и далек я от этой математики сейчас стал. Что в институте изучал - вообще из башки ушло… К сожалению… Давно было это (20 лет назад).

kuzulis ★★
() автор топика
Последнее исправление: kuzulis (всего исправлений: 2)
Ответ на: комментарий от kuzulis

То его одного хватит вообще?

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

otto ★★★★
()
Ответ на: комментарий от otto

Кстати, в зависимости от компаса крен с тангажем на воде тоже могут пригодится, так как выше определенных углов информация от компаса становится недостоверной.

Блина, как все сложноо тооо.. Я думал - херакс, херакс и в продакшн.

Что там 50 метров то всего (думал я), это ж не километры.. Мдаа-сс..

kuzulis ★★
() автор топика
Ответ на: комментарий от kuzulis

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

otto ★★★★
()
Ответ на: комментарий от kuzulis

как все сложноо тооо

Да не, сложно это когда тебе приходится учитывать элипсность земного шара в расчетах)

Для 50 метров бери компас.

otto ★★★★
()
Ответ на: комментарий от otto

У тебя каша в голове. Углы Эйлера и кватернионы это способы математически описать параметры вращения объекта в пространстве, они не привязаны ни к каким фильтрам. У углов Эйлера недостаток в том что вращающиеся оси «складываются» в определенных условиях, например при тангаже в 90 градусов и еще они требуют тригонометрии для расчета (страдает точность вычислений). Кватернионы намного сложнее, но не имеют недостатков.

Ну, так, это корректное утверждение, что все-таки из кватерниона поворота (который фильтр Маджвика как результат выдает, вроде именно его выдает) можно, зная начальное положение (вектор), можно вычислить текущее положение (вектор)?

kuzulis ★★
() автор топика
Ответ на: комментарий от kuzulis

Вот тут

https://courses.cs.washington.edu/courses/cse466/14au/labs/l4/madgwick_internal_report.pdf

типа и пример кода на C есть, типа в двух вариантах:

1 - аксел + гиро (без магнет)

2 - аксел + гиро + магнет

типа на выходе получаем «estimated orientation quaternion»

kuzulis ★★
() автор топика
Последнее исправление: kuzulis (всего исправлений: 1)
Ответ на: комментарий от kuzulis

Да, умножаешь предыдущий кватернион на кватернион поворота и получаешь текущее положение. Это работает вообще без всяких фильтров, просто на голых измерениях. Фильтр нужен для уменьшения погрешности.

otto ★★★★
()
Ответ на: комментарий от otto

Ага, спасибки, вдохновил ты меня… (а то я уже расстроился совсем) )))

kuzulis ★★
() автор топика
Ответ на: комментарий от otto

С задачей автономной навигации даже датчики за 100к не справляются (даже до 5-ого класса точности там ой как далеко).

Справедливости ради, ему нужно только квадрат 50м х 50м покрыть. Но тут я бы посоветовал не инерциалкой делать, а триангуляцией. Чего-нибудь типа qorvo DWM3000.

soomrack ★★★★★
()
Ответ на: комментарий от yvv1

Не нужно это всё для рыбалки

Да и рыбалка, в общем-то, не нужна.

Nervous ★★★★★
()
Закрыто добавление комментариев для недавно зарегистрированных пользователей (со score < 50)