5

Я создал робота, управляемого Arduino и Processing, который перемещается в комнате, вращаясь (как сфера).Определение местоположения автономного робота в помещении

Мне нужно, чтобы иметь возможность получить новое место, когда оно движется по полу (скажем, в помещении размером 3 м х 3 м). Я использую датчик 9DOF (3 оси данных акселерометра, 3 оси гироскопических и 3 оси магнитных данных), чтобы определить его рулон, шаг и рыскание, а также его направление.

Как можно точно определить местоположение робота в декартовых (x, y, z) координатах относительно его исходного положения? Я не могу использовать GPS, поскольку движение меньше, чем 20 см на оборот, и робот будет использоваться в помещении.

Я нашел некоторые решения для размещения в помещении и 3D-позиционирования, такие как pozyx или с помощью фиксированной камеры. Однако мне нужно, чтобы это было экономически выгодно.

Есть ли способ конвертировать данные 9DOF, чтобы получить новое местоположение или любой другой датчик? Любое другое решение, такое как алгоритм?

+0

Интеграция ускорения дает скорость, а интегральная скорость дает положение. Однако это будет не очень точно. –

+0

@DonReba Знаете ли вы, как это сделать? Любой учебник или статья об этом? – Apollon1954

+0

@DonReba Знаете ли вы какой-либо другой более точный способ? – Apollon1954

ответ

6

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

Вместо этого люди используют термин «слияние сенсора», который объединяет данные нескольких датчиков в лучшую оценку, например. Положение. Тем не менее, он все равно будет накапливать ошибку с течением времени, если вы будете полагаться только на акселерометр и гироскоп. Однако магнитный вектор поможет вам, но он, вероятно, все еще будет неточным.

Я нашел следующее руководство в Интернете, которое дает введение в слияние датчиков с фильтрами kalmann на ардуине.

http://digitalcommons.calpoly.edu/cgi/viewcontent.cgi?article=1114&context=aerosp

Внимание: вам нужно знать некоторые математику, чтобы получить это и работает.

+0

Спасибо за ваш ответ. Я проверил прилагаемую статью, но, как я понимаю, не вычисляет координаты XYZ. – Apollon1954

2

Мой следующий ответ не включает конкретную реализацию, и мой опыт не включает в себя робототехнику. (Я исследователь в области машинного обучения, NLP, поле AI). Однако я считаю, что мое предложение о недостаточной детализации было бы полезно, потому что ваша проблема остается на общем уровне.

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

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

Итак, если бы я был вами, я бы начал с использования стандартного метода SLAM. Я бы подобрал несколько популярных и общих методов из учебника SLAM и искал программное обеспечение с открытым исходным кодом, реализующее эти методы.

Насколько я знаю, particle filter (PF) является одним из самых популярных и успешных методов в поле SLAM. PF - это расширенная дисперсия фильтра Калмана (KF). PF очень прост в реализации. Математика намного проще, чем KF. Я думаю, что PF стоит попробовать в вашей ситуации.

 Смежные вопросы

  • Нет связанных вопросов^_^