Как откалибровать камеру и робота

У меня есть робот и камера. Робот — это просто 3D-принтер, в котором я заменил экструдер на инструмент, поэтому он не печатает, а перемещает каждую ось независимо. Кровать прозрачная, а под кроватью камера, камера не двигается. Это просто обычная веб-камера (глаз PlayStation).

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

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

Чтобы все было проще, ось Z можно игнорировать. Так что калибровка будет по X и Y.


person Dr Sokoban    schedule 26.03.2012    source источник


Ответы (1)


Это зависит от того, какая ошибка приемлема для вас.

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

Предположим, что изображение и плоскость параллельны.

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

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

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

http://opencv.willowgarage.com/documentation/camera_dication_and_3d_reconstruction.html

http://dasl.mem.drexel.edu/~noahKuntz/openCVTut10.html

person Michael Kupchick    schedule 05.04.2012
comment
Я откалибровал изображение, потому что искажения были очень высокими. Затем я использовал отношение между точками камеры и точкой реального мира инструмента (все в 2D) для вычисления матрицы преобразования (один поворот, одно перемещение по x и одно по y). Но у меня проблемы с вычислением переводов. Я могу сделать это вручную, но... это очень подвержено ошибкам. - person Dr Sokoban; 14.04.2012
comment
По сути, вам нужно указать какую-то точку с известными координатами в системе инструментов на изображении, вы можете поставить какой-либо маркер или выбрать точку самостоятельно, пока я не вижу вашу настройку, довольно сложно точно объяснить процедуру - person Michael Kupchick; 15.04.2012
comment
Это робот: youtu.be/YZnsBhWDvFI Инструмент — это кончик иглы. Вы также можете видеть камеру и изображение с камеры. Моя цель — щелкнуть какой-нибудь пиксель на этом изображении с камеры и переместить туда иглу. Я размещаю иглу на этом изображении в 10 разных местах и ​​позволяю пользователю щелкнуть пиксель, где находится игла. Затем я использую findhomography из OpenCV, чтобы найти отношение, перевод очень хороший, поворота нет, поэтому есть огромная разница между тем, куда идет стрелка, и тем, где она должна быть. - person Dr Sokoban; 15.04.2012
comment
@MichaelKupchick обе ссылки мертвы - person ComputerScientist; 22.04.2018