Откалибруйте 2d сканер, установленный на поворотной оси

9

Лазерный сканер 2d установлен на оси вращения. Я хочу определить матрицу преобразования от центра оси к центру сканера, используя только вход от сканера и угол поворота.

введите описание изображения здесь

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

Поворотная ось также откалибрована, она будет точно измерять угол своего движения.

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

Предположим, что нецелесообразно измерять положение и ориентацию сканера напрямую. Я ищу способ определения точных значений 6-градусного смещения, которое сканер может иметь относительно оси, определяемого исключительно по 2-й информации от сканера и углу поворота от оси.

введите описание изображения здесь

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

Сканируя известный калибровочный объект, можно определить эти смещения. Каковы математические формулы для этого?

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

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


пример

введите описание изображения здесь

Слева камера расположена точно на оси вращения. Камера сканирует плоский объект с контрольными точками AB и C. На основании измерений лазерного расстояния и угла наклона этот плоский объект может быть реконструирован.

Справа у камеры неизвестное смещение относительно оси. Сканирует один и тот же объект. Если облако точек построено без знания этого смещения, плоская поверхность отображается на криволинейную поверхность.

Можно ли рассчитать смещение на основе кривизны поверхности?

Если я знаю реальные расстояния и углы между A, B и C, как я могу рассчитать смещения камеры из этого? Какое минимальное количество контрольных точек мне нужно для всех 4 смещений?

HugoRune
источник

Ответы:

1

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

С подходящим опорным объектом, сканируя его по мере вращения вашей оси, вы сможете рассчитать четыре смещения, которые вы хотите.

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

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

Марк Бут
источник
Моя проблема не в том, чтобы разместить опорный объект, это достаточно просто. Моя проблема в расчете смещений. Как вы говорите, должно быть возможно рассчитать четыре смещения на основе объекта калибровки, но как? Допустим, я сканирую куб известных размеров. Я легко вижу, что мои смещения неверны, если этот куб отображается на неплоское, непрямоугольное облако точек. Но как мне получить правильные смещения от этого?
HugoRune
Спасибо за разъяснения @HugoRune - если бы вы могли отредактировать свой вопрос, включив в него эту информацию, то, надеюсь, следующий ответивший сможет предоставить лучший ответ. Я только когда-либо делал такую ​​калибровку, уже упростив задачу до 2D, поэтому я могу дать только общие советы.
Марк Бут
1

Самый простой метод в этом случае - по сути, грубо форсировать проблему, но грубо форсировать ее разумным образом.

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

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

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

Это довольно краткое и плохое описание очень глубокой темы, но, надеюсь, оно укажет вам направление. Если вы хотите более подробное описание чего-либо, оставьте комментарий.

ApockofFork
источник