Что вы хотите сделать, так это найти преобразование между локальными и глобальными координатами. В зависимости от вашей точной модели состояния уравнения будут меняться. Но основная идея состоит в том, чтобы начать с известной точки в обоих кадрах. Скажем, в начальный момент времени в нашем глобальном фрейме у нас есть (Pпозиция glocal) Pg=[xg0 yg0 zg0 rg0 pg0 yg0]
, а координата робота равна Pr =[xr0 yr0 zr0 rr0 pr0 yr0]
, в этот момент нам нужно создать сопоставление от Pg до Pr. у нас есть это, мы можем представить все данные в одном и том же.
Сопоставление 6dof с другим 6dof очень сложно и очень нелинейно. Обычно это можно представить в два этапа
- карту между xyz, чтобы получить ось в той же области.
- отображать ориентацию между двумя осями (крен, тангаж, рыскание)
Я не смог найти много источников о выполнении обоих одновременно, но если вы делаете их последовательно, это все равно будет работать (порядок имеет значение, поэтому будьте последовательны) вот хороший пост с преобразованиями xyz https://gamedev.stackexchange.com/questions/79765/how-do-i-convert-from-the-global-coordinate-space-to-a-local-space
отличный сайт (я использовал его для решения задачи 3d SLAM, это было невероятно полезно), и на нем есть информация о преобразованиях тангажа и рысканья. http://planning.cs.uiuc.edu/node104.html, если вы исследуете веб-сайте вы также должны найти преобразования xyz. Иногда бывает полезно сначала начать с 2D-примеров, чтобы понять концепцию, а затем посмотреть 3D-примеры.
Удачи
изменить
Первоначально я разместил неправильную ссылку на веб-сайт планирования, но она исправлена. Вот основное уравнение
Ваши опорные точки для SLAM являются результатом этого уравнения Global landmark = T * Landmark w/respect Robot
, и каждая точка представлена как [x,y,z,1]
, где 1 требуется для сохранения перевода. Крен (альфа), шаг (бета) и рыскание (гамма) получаются из матрицы вращения между глобальными координатами и координатами робота.
person
andrew
schedule
05.05.2015