DJI Telloのフロントカメラのcamera_calibration

DJI Tello等ドローンの自律飛行を実現するには、3D環境でナビゲーション経路を計画としてOMPL（Open Motion Planning Library）を試してみます。

# 目次
1. [OMPLのインストール](https://qiita.com/k-koh/items/4f7e441d1225e6580f82)
2. [OMPLの基礎](https://qiita.com/k-koh/items/9933cd29599c859cac45)
3. [OMPL.appの入門](https://qiita.com/k-koh/items/fe1f05313045ed729c8b)
4. [OMPLの使用](https://qiita.com/k-koh/items/3a8b372537aa29e17863)
5. DJI Telloの使用
    1. [DJI Telloのフロントカメラのcamera_calibration](https://qiita.com/k-koh/items/094631646931ea5bc2bb)　← いまココ
    2. [Visual SLAM ORB_SLAM2 用のカメラキャリブレーションYamlファイルの作成](https://qiita.com/k-koh/items/b524fc175198e701bdff)
    3. [DJI Telloのカメラ でVisual-SLAMのORB-SLAM2 を動かしてみた](https://qiita.com/k-koh/items/98b5f079f784b22dcd01)
6. navigationスタックの使い方
    1. [Turtlebot3 NavigationをGazebo Simulationで動かしてみた](https://qiita.com/k-koh/items/1a4fbc175ca37be6206b)
    2. [Turtlebot3 Navigationでmap_fileの代わりにSLAMを使用](https://qiita.com/k-koh/items/1ec9097e4afedd0b43ca)
    3. [ARdroneのシミュレーターをGazeboで動かす](https://qiita.com/k-koh/items/feccbaee7c11c43c3ab4)
    4. [AirSimのシミュレーターを動かす](https://qiita.com/k-koh/items/52122fb5e96336ac8d33)
    5. [octomapのインストール](https://qiita.com/k-koh/items/c9a3a87e043934456842)
    6. [単眼カメラでORB_SLAM2から3D point clouodの生成](https://qiita.com/k-koh/items/1e069c9dda43b85e2fa0)
    7. [point_cloud2から3D octomapの生成](https://qiita.com/k-koh/items/01e34f353487eb8a6e26)
7. OMPLで3D 経路計画
    1. [状態空間環境のセットアップ](https://qiita.com/k-koh/items/e19ac08bb0a16975081e)


## 動作環境
- Ubuntu 18.04
- ROS Melodic
- Tello EDU

# DJI Telloのフロントカメラのcamera_calibration

DJI TelloのROSドライバを利用して、フロントカメラのcamera_calibrationを行います。


- キャリブレーション用のプレートをダウロード
[check-108.pdf](http://wiki.ros.org/camera_calibration/Tutorials/MonocularCalibration?action=AttachFile&do=view&target=check-108.pdf)

- check-108.pdfをA4で印刷

- tello_driverを起動

```console
# ros2 launch tello_driver teleop_launch.py
```

- camera_calibrationを実行

square: 印刷したA4プレートの市松模様の1辺の長さ(0.0245m)

```console
rosrun camera_calibration cameracalibrator.py --size 8x6 --square 0.0245 image:=/tello/image_raw
```

- camera_calibrationの結果を保存

saveすると、/tmp/calibrationdata.tar.gzが生成されます。
![tello_front_camera_calibration.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/386259/a424ecd6-014b-fc8f-b926-9beb177eea87.png)

calibrationdata.tar.gzを解凍、calibration結果のost.yamlを開く

```yaml
image_width: 960
image_height: 720
camera_name: narrow_stereo
camera_matrix:
  rows: 3
  cols: 3
  data: [941.157225, 0.000000, 452.917655, 0.000000, 941.828857, 365.688689, 0.000000, 0.000000, 1.000000]
distortion_model: plumb_bob
distortion_coefficients:
  rows: 1
  cols: 5
  data: [-0.004306, 0.075005, 0.000249, -0.007162, 0.000000]
rectification_matrix:
  rows: 3
  cols: 3
  data: [1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000]
projection_matrix:
  rows: 3
  cols: 4
  data: [949.711426, 0.000000, 447.736415, 0.000000, 0.000000, 956.075378, 365.760827, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000]
```

Next: 5.2. [Visual SLAM ORB_SLAM2 用のカメラキャリブレーションYamlファイルの作成](https://qiita.com/k-koh/items/b524fc175198e701bdff)
Prev: 4. [OMPLの使用](https://qiita.com/k-koh/items/3a8b372537aa29e17863)