mirror of
https://github.com/CopterExpress/clover.git
synced 2026-05-26 21:19:35 +00:00
106 lines
6.0 KiB
Markdown
106 lines
6.0 KiB
Markdown
# Настройка камеры
|
||
|
||
> **Note** Документация для версий [образа](image.md), начиная с **0.20**. Для более ранних версий см. [документацию для версии **0.19**](https://github.com/CopterExpress/clover/blob/v0.19/docs/ru/camera_frame.md).
|
||
|
||
Для корректной работы всех функций, связанных с компьютерным зрением (в том числе [полета по ArUco-маркерам](aruco.md) и [Optical Flow](optical_flow.md)) необходимо сфокусировать основную камеру, а также выставить ее расположение и ориентацию. Улучшить качество работы также может опциональная калибровка камеры.
|
||
|
||
## Настройка фокуса камеры {#focus}
|
||
|
||
Для успешного осуществления полетов с использованием камеры, необходимо настроить фокус камеры.
|
||
|
||
<img src="../assets/cam_setup.png" width=180 class="center zoom">
|
||
|
||
1. Откройте трансляцию изображения с камеры используя [web_video_server](web_video_server.md).
|
||
2. С помощью вращения объектива камеры добейтесь максимальной резкости деталей (предпочтительно на расстоянии предполагаемой высоты полета – 2–3 м).
|
||
|
||
|Расфокусированное изображение|Сфокусированное изображение|
|
||
|-|-|
|
||
|<img src="../assets/unfocused.png" width=300 class=zoom>|<img src="../assets/focused.png" width=300 class=zoom>|
|
||
|
||
## Настройка расположения камеры {#frame}
|
||
|
||
Расположение и ориентация камеры [задается в файле](cli.md#editing) `~/catkin_ws/src/clover/clover/launch/main_camera.launch`:
|
||
|
||
```xml
|
||
<arg name="direction_z" default="down"/> <!-- direction the camera points: down, up -->
|
||
<arg name="direction_y" default="backward"/> <!-- direction the camera cable points: backward, forward -->
|
||
```
|
||
|
||
Для того, чтобы задать ориентацию, необходимо установить:
|
||
|
||
* направление обзора камеры `direction_z`: вниз (`down`) или вверх (`up`);
|
||
* направление, в которое указывает шлейф камеры `direction_y`: назад (`backward`) или вперед (`forward`).
|
||
|
||
### Примеры
|
||
|
||
#### Камера направлена вниз, шлейф назад
|
||
|
||
```xml
|
||
<arg name="direction_z" default="down"/>
|
||
<arg name="direction_y" default="backward"/>
|
||
```
|
||
|
||
<img src="../assets/camera_option_1_rviz.png" width=300>
|
||
<img src="../assets/camera_option_1_clever.jpg" width=300>
|
||
|
||
#### Камера направлена вниз, шлейф вперёд
|
||
|
||
```xml
|
||
<arg name="direction_z" default="down"/>
|
||
<arg name="direction_y" default="forward"/>
|
||
```
|
||
|
||
<img src="../assets/camera_option_2_rviz.png" width=300>
|
||
<img src="../assets/camera_option_2_clever.jpg" width=300>
|
||
|
||
#### Камера направлена вверх, шлейф назад
|
||
|
||
```xml
|
||
<arg name="direction_z" default="up"/>
|
||
<arg name="direction_y" default="backward"/>
|
||
```
|
||
|
||
<img src="../assets/camera_option_3_rviz.png" width=300>
|
||
<img src="../assets/camera_option_3_clever.jpg" width=300>
|
||
|
||
#### Камера направлена вверх, шлейф вперёд
|
||
|
||
```xml
|
||
<arg name="direction_z" default="down"/>
|
||
<arg name="direction_y" default="forward"/>
|
||
```
|
||
|
||
<img src="../assets/camera_option_4_rviz.png" width=300>
|
||
<img src="../assets/camera_option_4_clever.jpg" width=300>
|
||
|
||
> **Hint** [Утилита `selfcheck.py`](selfcheck.md) выдает словесное описание установленной в данной момент ориентации основной камеры.
|
||
|
||
### Произвольное расположение камеры
|
||
|
||
Также возможны произвольное расположение и ориентация камеры. Для этого раскомментируйте запуск ноды, подписанной как `Template for custom camera orientation`:
|
||
|
||
```xml
|
||
<!-- Template for custom camera orientation -->
|
||
<!-- Camera position and orientation are represented by base_link -> main_camera_optical transform -->
|
||
<!-- static_transform_publisher arguments: x y z yaw pitch roll frame_id child_frame_id -->
|
||
<node pkg="tf2_ros" type="static_transform_publisher" name="main_camera_frame" args="0.05 0 -0.07 -1.5707963 0 3.1415926 base_link main_camera_optical"/>
|
||
```
|
||
|
||
Эта строка задает статическую трансформацию между фреймом `base_link` ([соответствует корпусу полетного контроллера](frames.md)) и камерой (`main_camera_optical`) в формате:
|
||
|
||
```txt
|
||
сдвиг_x сдвиг_y сдвиг_z угол_рысканье угол_тангаж угол_крен
|
||
```
|
||
|
||
Фрейм камеры задается таким образом, что:
|
||
|
||
* **<font color=red>x</font>** указывает направо на изображении;
|
||
* **<font color=green>y</font>** указывает вниз на изображении;
|
||
* **<font color=blue>z</font>** указывает от плоскости матрицы камеры.
|
||
|
||
Сдвиги задаются в метрах, углы задаются в радианах. Корректность установленной трансформации может быть проверена с использованием [rviz](rviz.md).
|
||
|
||
## Калибровка {#calibration}
|
||
|
||
Для улучшения качества работы алгоритмов также рекомендуется произвести калибровку камеры, процесс которой описан [в отдельной статье](camera_calibration.md).
|