diff --git a/docs/assets/camera_calibration.png b/docs/assets/camera_calibration.png new file mode 100644 index 00000000..5f3d18f5 Binary files /dev/null and b/docs/assets/camera_calibration.png differ diff --git a/docs/assets/chessboard.pdf b/docs/assets/chessboard.pdf new file mode 100644 index 00000000..0d24c45f Binary files /dev/null and b/docs/assets/chessboard.pdf differ diff --git a/docs/ru/SUMMARY.md b/docs/ru/SUMMARY.md index 2b5d2753..35d9c6b3 100644 --- a/docs/ru/SUMMARY.md +++ b/docs/ru/SUMMARY.md @@ -53,6 +53,7 @@ * [CAD-модели Клевера](models.md) * [Docker-контейнер с симулятором](sitl_docker.md) * [Установка ROS Melodic](ros-install.md) + * [Калибровка камеры](camera_calibration.md) * [Управление мультикоптером при помощи 4G связи](4g.md) * [Пакеты Клевера на Jetson Nano](jetson_nano.md) * [Пилотирование со смартфона](rc.md) @@ -66,7 +67,6 @@ * [Неисправности радиоаппаратуры](radioerrors.md) * [Прошивка ESC контроллеров](esc_firmware.md) * [Настройка режима тренера](trainer_mode.md) - * [Калибровка камеры](camera_calibration.md) * [Взаимодействие с Arduino](arduino.md) * [Подключение GPS](gps.md) * [Работа с ИК датчиками](ir_sensors.md) @@ -95,6 +95,7 @@ * [Подсчет количества объектов c камеры](object_counting.md) * [Пульт на Андроид](android.md) * [Блочный конструктор полета](clever_blocks.md) + * [Калибровка камеры (legacy)](camera_calib.md) * [Управление дроном для оценки позы человека](human_pose_estimation_drone_control.md) ## Учебник diff --git a/docs/ru/camera_calibration.md b/docs/ru/camera_calibration.md new file mode 100644 index 00000000..d836457b --- /dev/null +++ b/docs/ru/camera_calibration.md @@ -0,0 +1,52 @@ +# Калибровка камеры + +Калибровка камеры может значительно повысить качество работы модулей, связанным с компьютерным зрением: [распознавание ArUco-маркеров](aruco.md) и [Optical Flow](optical_flow.md). + +При калибровке камеры подбираются параметры, наиболее хорошо описывающие конкретный установленный объектив. Данные параметры включают в себя фокусные расстояния, расположение точки principal point (которое зависит от того, насколько ровно по центру установлен объектив), коэффициенты дисторсии *D*. Подробнее про использующуюся модель искажений камеры можно прочитать в [документации OpenCV](https://docs.opencv.org/2.4/modules/calib3d/doc/camera_calibration_and_3d_reconstruction.html). + +Существует несколько инструментов, которые позволяют откалибровать камеру и прописать вычисленные параметры в систему. Обычно, они используют калибровочные изображения: "шахматные доски" (*Chessboard*), а так же комбинации шахматной доски и сетки ArUco-маркеров ([*ChArUco*](https://docs.opencv.org/3.4/df/d4a/tutorial_charuco_detection.html)). + +## ROS-пакет camera_calibration + +Основной туториал: http://wiki.ros.org/camera_calibration/Tutorials/MonocularCalibration. + +Для калибровки камеры с использованием ROS-пакета camera_calibration необходим компьютер с установленным ОС GNU/Linux и [ROS Melodic](ros-install.md). + +ROS Camera Calibrator + +1. Используя Терминал, установите на компьютер пакет `camera_calibration`: + + ```bash + sudo apt-get install ros-melodic-camera-calibration + ``` + +2. Скачайте калибровочную доску – [`chessboard.pdf`](../assets/chessboard.pdf). Распечатайте доску на принтере либо выведите ее на экран компьютера. + +3. Подключитесь к [Wi-Fi Клевера](wifi.md). + +4. Запустите калибровку (на компьютере): + + ```bash + ROS_MASTER_URI=http://192.168.11.1:11311 rosrun camera_calibration cameracalibrator.py --size 6x8 --square 0.108 image:=/main_camera/image_raw camera:=/main_camera + ``` + + > **Note** Вместо значения *0.108* укажите реальный размер квадрата на распечатанной доске или на экране (в метрах). Например, значение *0.03* будет соответствовать 3 см. + +5. Когда программа для калибровки запустится, начните перемещать дрон таким образом, чтобы калибровочная доска попадала в кадр под разными углами. + + * Перемещайте калибровочную доску в левый, правый, верхний и нижний торец кадра. + * Вращайте калибровочную доску вокруг всех 3-х осей. + * Отдаляйте и приближайте камеру к калибровочной доске. + +6. Нажмите кнопку *CALIBRATE*, когда она станет активной. Процесс вычисления параметров калибровки займет несколько минут. + + Когда калибровка завершится, в терминале вы увидите полученные параметры. В окне отобразится изображение с выправленными искажениями. При успешной калибровке все реальные прямые линии должны остаться прямыми на полученном изображении. + +7. Нажмите *COMMIT*, чтобы сохранить полученные параметры калибровки. Результат будет записан в файл калибровки основной камеры Клевера: +`/home/pi/catkin_ws/src/clever/clever/camera_info/fisheye_cam_320.yaml`. + +8. Перезапустите сервисы Клевера: + + ```bash + sudo systemctl restart clever + ``` diff --git a/docs/ru/camera_setup.md b/docs/ru/camera_setup.md index 022afb7a..92f7dab3 100644 --- a/docs/ru/camera_setup.md +++ b/docs/ru/camera_setup.md @@ -80,3 +80,7 @@ > **Hint** [Утилита `selfcheck.py`](selfcheck.md) выдает словесное описание установленной в данной момент ориентации основной камеры. + +## Калибровка + +Для улучшение качества работы алгоритмов также рекомендуется произвести калибровку камеры, процесс которой описан [в отдельной статье](camera_calibration.md).