|
| 1 | +--- |
| 2 | +title: カメラのキャリブレーション |
| 3 | +robot: CRANE+ V2 |
| 4 | +--- |
| 5 | + |
| 6 | +# カメラのキャリブレーション |
| 7 | +このページではCRANE+ V2の[カメラサンプル](https://github.com/rt-net/crane_plus/tree/master/crane_plus_examples#camera-examples)で使用するカメラのキャリブレーション方法について説明します。 |
| 8 | + |
| 9 | +カメラのキャリブレーションを行うと、カメラ画像の歪みやズレを補正することができます。 |
| 10 | + |
| 11 | +キャリブレーションが必要な例として、下図のようにカメラ画像とCRANE+ V2のモデルにズレが発生している場合などがあります。 |
| 12 | + |
| 13 | + |
| 14 | + |
| 15 | +このズレが大きい場合、検出した物体位置もズレてしまうため、ピックアンドプレースが失敗する可能性があります。 |
| 16 | +キャリブレーションを行うと、このようなカメラ画像のズレを小さくすることができます。 |
| 17 | + |
| 18 | +## 使用機材 {: #requirements} |
| 19 | + |
| 20 | +* 設置済みCRANE+ V2本体(Webカメラ搭載モデル) |
| 21 | + * [製品マニュアル](https://rt-net.jp/products/cranev2/)を読んで設置済みの状態を前提としています |
| 22 | +* ノートパソコン等のPC |
| 23 | + * OS(**Ubuntu Desktop 22.04**)がインストール済みであることを前提としています |
| 24 | + * ROS 2がインストール済みであることを前提としています |
| 25 | + * [ROS 2のインストール手順](./install.md)を参照してください |
| 26 | + * ROS 2用のパッケージがインストール済みであることを前提としています |
| 27 | + * [ROS 2パッケージのインストール手順](./package-install.md)を参照してください |
| 28 | +* キャリブレーション用のチェスボード |
| 29 | + * [OpenCVのサンプル](https://github.com/opencv/opencv/blob/master/samples/data/chessboard.png)をA4サイズで印刷してください |
| 30 | + |
| 31 | +## キャリブレーション用パッケージのインストール {: #install} |
| 32 | +ノートパソコン等のPCに、キャリブレーションを行うためのROS 2パッケージをインストールします。 |
| 33 | + |
| 34 | +```bash |
| 35 | +sudo apt install ros-humble-camera-calibration-parsers |
| 36 | +sudo apt install ros-humble-camera-info-manager |
| 37 | +sudo apt install ros-humble-launch-testing-ament-cmake |
| 38 | +sudo apt install ros-humble-image-pipeline |
| 39 | +``` |
| 40 | + |
| 41 | +## CRANE+ V2のカメラを起動 {: #launch-camera} |
| 42 | +CRANE+ V2のカメラを起動します。 |
| 43 | +`port_name`はCRANE+ V2との通信に使用しているUSB通信ポート、`video_device`は使用するカメラのデバイス名を指定してください。 |
| 44 | +```bash |
| 45 | +ros2 launch crane_plus_examples demo.launch.py port_name:=/dev/ttyUSB0 use_camera:=true video_device:=/dev/video0 |
| 46 | +``` |
| 47 | + |
| 48 | +## キャリブレーションの実行 {: #launch-calibration} |
| 49 | +カメラのキャリブレーションを実行します。 |
| 50 | +`size`はチェスボードの交点の数を指定し、`square`はチェスボードの1マスの大きさ(単位はメートル)を指定してください。 |
| 51 | +```bash |
| 52 | +ros2 run camera_calibration cameracalibrator --size 6x9 --square 0.022 --ros-args -r image:=/image_raw |
| 53 | +``` |
| 54 | + |
| 55 | + |
| 56 | + |
| 57 | +カメラ映像が表示されたら、カメラの画角内でチェスボードを遠ざけたり、近づけたり、傾けたり、回転させたりなど動かします。 |
| 58 | + |
| 59 | +CALIBRATEボタンが緑色になったら押してしばらく待ちます。 |
| 60 | + |
| 61 | + |
| 62 | + |
| 63 | +その後、SAVEボタンを押すと、`/tmp`ディレクトリに`calibrationdata.tar.gz`ファイルが生成されます。 |
| 64 | + |
| 65 | + |
| 66 | + |
| 67 | +## パラメータファイルの配置 {: #replace-file} |
| 68 | +パラメータファイル`ost.yaml`を`crane_plus/crane_plus_examples/config/camera_info.yaml`に配置します。 |
| 69 | +```bash |
| 70 | +cd /tmp |
| 71 | +tar -xvf calibrationdata.tar.gz |
| 72 | +cp ost.yaml ~/ros2_ws/src/crane_plus/crane_plus_examples/config/camera_info.yaml |
| 73 | +``` |
| 74 | + |
| 75 | +以上でCRANE+ V2のカメラのキャリブレーションは完了です。 |
| 76 | + |
| 77 | +パラメータファイルを配置した後に再びカメラを起動すると、カメラ画像とCRANE+ V2のモデルのズレが小さくなっていることが確認できます。 |
| 78 | + |
| 79 | + |
| 80 | + |
| 81 | + |
| 82 | +## 参考 |
| 83 | +- [Camera Calibration — Navigation 2 1.0.0 documentation](https://navigation.ros.org/tutorials/docs/camera_calibration.html) |
0 commit comments