LINUX.ORG.RU
ФорумTalks

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

 ,


0

3

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

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

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

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

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

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

★★

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

Всех дававших советы в этом треде скоро будет долбить ФСБ.

somemong
()

Может оказаться проще сделать локальную навигационную систему. Например, на берегу стоит несколько девайсов, которые одновременно пищат ультразвуком и передают свой id по радиоканалу (делать они это должны строго по очереди или на разных частотах). А на корабле замеряем разницу между временем прихода радиосигнала и первым приходом звукового (отражения придут позже, чем сигнал по прямой) + хардкодим вручную определённые координаты девайсов на берегу. Плюс фильтр Калмана для защиты от телепортаций.

Точность, конечно, вряд ли впечатляющей, но и ошибка накапливать накапливаться не будет.

Ещё можно попытаться справиться с GPS помехами. Узконаправленная антенна вверх, плюс RTK (если глушилка даёт одинаковое смещение координат на территории, то поможет).

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

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

Какие пульты я видел, там управление было по углу наклона, а не положения пульта в пространстве.

Это проще. Акселерометр даёт абсолютные углы наклона по двум осям, магнитометр по третьей, гироскоп добавляет точности, чтобы компенсировать шум первых двух датчиков. В краткосроке ориентируемся на гироскоп, в долгосроке усредняем углы по акселерометру и магнитометру.

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

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

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

Я где-то видел статью, где датчиков не просто ставили несколько, а ещё и все под разными углами и потом усредняли переводя в одну систему координат. И вот так типа лучшая точность. Так как у датчиков разные оси по-разному шумят. И так они все перекрывались.

KivApple ★★★★★
()

Можно пару стационарных станций добавить с которых отслеживать азимут на кораблик и по двум азимутам вычислять коорднинаты пересечения.

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

Делал. Углы определять норм. Координаты улетают очень быстро. Интеграл второго порядка это тебе не шутки.

Гироскоп шумит, но это компенсируется тем, что в долгосроке выше вес акселерометра и магнитометра (они тоже шумят, но среднее их даёт достаточно чёткий угол).

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

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

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

Такое лучше всего делать дополнительным не ведущим колесиком с энкодером. Или двумя колесиками на радиусе, если хочется отслеживать повороты.

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

А если (в качестве бреда), попробовать какую нить нейронку прицепить (не знаю, есть ли для ESP32), и ее обучить как то?

Иначе проще тогда на кораблик прицепить смартфон какой нить (дешманский маленький, и легенький, на андройде), и с него получать координаты, и, даже управление двигателями замутить, через USB-OTG (ну, и доп. минроконтроллер маленький, чисто с PWM и UART/USB)… Или как то так.

И в топку тогда этот ESP32 и акселерометры|гироскопы|магнетометры, написать ПО для андройда и не париться (можно и нейронку тогда какую туда же). Хотя, тогда наверно «реал-тайм» пропадет, хотя хз, что там есть в Google JAVA API для доступа к сенсорам , мож и нормуль будет.

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

Хотя, у меня где-то валялись «детские часы», дешманские, с симкой вроде, чтобы отслеживать дитятко.. мож их прикрутить можно.

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

Можно, но смартфон это сразу минус реалтайм, а дешёвый смартфон плюс к рандомным зависаниям/выгрузкой приложения oom killer.

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

Такое лучше всего делать дополнительным не ведущим колесиком с энкодером. Или двумя колесиками на радиусе, если хочется отслеживать повороты.

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

Энкодер на колесах тоже плох. Одометрия на практике (в нескольких разных промышленных задачах с которыми я имел дело) обычно дает 10-20% погрешности, причина в проскальзываниях, неровностях поверхности, вилянии машины.

Самостоятельно одометрия подходит для очень небольших расстояний – припарковаться, например. Для других случаев ее нужно сочетать (часто непонятно как, и часто она никакого улучшения не даст) с результатами других измерений.

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

Я где-то видел статью, где датчиков не просто ставили несколько, а ещё и все под разными углами и потом усредняли переводя в одну систему координат. И вот так типа лучшая точность. Так как у датчиков разные оси по-разному шумят. И так они все перекрывались.

А еще можно их в случайной ориентации расположить.

Все это обычные подходы, которые делают от безысходности.

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

Для примера, у тебя есть дальномер, который измеряет расстояние со стандартным отклонением в 1мм и человек с рулеткой со стандартным отклонением в 5мм. Какой смысл их усреднять? Нужно взять только показания дальномера.

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

Чего вы спорите то? При таких расстояниях ни о какой инерциалке и речи не может идти. Только UWB, только хардкор. 3 штуки DW1000 (даже не DW3000) и компас GYBNO-055 (или RM3100) и вся система будет работать без накопления ошибок с точностью до сантиметра. А mpu6500 сдать в Авито бесплатно, там ему самое место.

Ну в тысяч 20 это всё выльется. Потому как подключать это все хозяйство он будет не к esp32 а к orangepi или малинке, потомушта ещё эхолот (не знаю на чем он будет его реализовать) и управление движением лодки:) Даже интересно стало чем дело закончится, подпишусь на тему!

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

потомушта ещё эхолот (не знаю на чем он будет его реализовать)

JSN-SR04T

управление движением лодки:)

tc1508

Только UWB, только хардкор. 3 штуки DW1000 (даже не DW3000) и компас GYBNO-055 (или RM3100) и вся система будет работать без накопления ошибок с точностью до сантиметра.

надо что нить по дешевле

Ну в тысяч 20 это всё выльется.

за такие деньги я сам буду нырять ))

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

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

А mpu6500 сдать в Авито бесплатно, там ему самое место.

Народ, а что насчет IMU типа BNO080:

https://cdn.sparkfun.com/assets/1/3/4/5/9/BNO080_Datasheet_v1.3.pdf

Оно выдает вроде готовые кватернионы и прочее (само считает)… На озоне вроде в районе 1.5K.

Кто нить его пробовал?

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