Калибровка камеры
Last updated
Was this helpful?
Last updated
Was this helpful?
Система ROS содержит специальный пакет, предназначенный для калибровки камеры. Подробнее о нём можно прочитать по ссылке . Ниже мы рассмотрим последовательность действий для калибровки монокулярной камеры. Перед началом калибровки камеры необходимо подготовить шаблон чёрно-белой плоской «шахматной доски» с известным размером квадратов. В нашем примере используется шахматная доска 9 х 7 квадратов размером 108 мм. Также нужно обеспечить публикацию изображений с камеры через ROS. Установка программы осуществляется с помощью команды:
Убедитесь, что камера публикует изображения через ROS с помощью команды rostopic list. По умолчанию большинство камер ROS предоставляют топики /camera/camera_info и /camera/image_raw.
Для начала процесса калибровки в параметрах нужно указать топики камеры и размеры шахматной доски. Калибровка запускается следующей командой:
Данная команда открывает окно калибровки, в котором обозначаются распознанные углы шахматной доски:
Если окно не открылось – попробуйте в команду запуска калибровки добавить параметр --no-service-check
Если углы шахматной доски не обозначены цветными квадратами – убедитесь, что количество внутренних углов в шахматной доске соответствует размеру, указанному в параметрах команды. Чтобы получить правильные результаты калибровки – нужно переместить шахматную доску по всем углам камеры: вверх, вниз, вправо, влево, ближе/дальше от камеры:
После каждого перемещения подержите доску на месте, пока не отобразится подсветка углов в окне калибровки. По мере перемещения три индикатора отображают накопление необходимого объёма данных для калибровки: X – перемещений вправо-влево, Y – перемещений вверх/вниз, Size – перемещений ближе/дальше от камеры. Когда загорится кнопка Calibrate – это означает, что накоплено достаточно данных для калибровки, Вы можете нажать Calibrate и посмотреть результат. Калибровка может занять около минуты. Окно может стать серым, но нужно подождать, пока выполнится калибровка.
По завершении калибровки вы увидите её результаты в окне терминала и откалиброванное изображение в окне калибровки:
В результате успешной калибровки на откорректированном изображении все прямые линии реального мира должны также стать прямыми. В результате плохой калибровки обычно получаются пустые или кривые изображения, или изображения с непрямыми линиями.
После успешной калибровки вы видите слайдер вверху окна калибровки для изменения размера ректифицированного изображения. Scale = 0 означает что изображение отображено таким образом, что отражаются все точки ректифицированного изображения. У ректифицированного изображения нет чёрного бордюра, но некоторые точки оригинального изображения – исключены. Scale = 1.0 – означает, что все точки оригинального изображения видны, но ректифицированное изображение имеет чёрные края там, где нет соответствующих точек на оригинальном изображении. Пример выдачи параметров калибровки в окно терминала:
По нажатии кнопки COMMIT параметры калибровки будут отправлены камере для постоянного хранения (запишутся в yaml файл, указанный при инициализации камеры, в нашем примере - fe130_320_01.yaml). Окно GUI закрывается, в консоли отображается сообщение «writing calibration data to …». С помощью инструмента Camera Calibration Parser () можно создать yml – файл, который можно использовать практически с любым драйвером камеры ROS с помощью параметра camera_info_url. Подробнее про калибровку камеры можно прочитать по ссылке: .