OpenRTM-aistのPython版、Java版には付属していませんのでご注意ください。また、Linux上では、LinuxにおけるOpenCVサンプルコードのビルド手順に従ってビルドしてインストールしてください。
GUI画面を持ったRTコンポーネントのサンプルです。TkCalibGUI.batを実行することでサンプル・コンポーネントが起動します。 カメラキャリブレーションを行う ImageCalibrationコンポーネント用のGUIです。
本コンポーネントを実行して選択可能リストの中からカメラコンポーネントを指定すると、ImageCalibrationCompと合わせて自動起動し、コンポーネント間のポート接続も自動で行います。 GUIのボタン操作でキャリブレーションに必要なカメラ画像の保存、及び、カメラパラメーターの算出を行うことができます。
OpenRTM-aist C++のWindows用インストーラーを使ってインストールされた場合は、TkCalibGUI.batを実行するだけで動作します。
ソースからビルドされた場合は、実行条件を整える必要があります。本コンポーネントでは実行に必要な環境のチェックを行っています。 条件に合わないと以下のようなメッセージダイアログを表示します。指示に従ってインストールしてください。
メッセージ内容 | 対応処理 |
OpenRTM-aist Python is not installed. | OpenRTM-aist Python版のページからWindows用インストーラーをダウンロードできます。 インストーラーのOSのバージョン(32bit or 64bit)は、OpenRTM-aist C++版に合わせてください。 |
Ttk is not installed. | pyttkをインストールしてください。python2.7には含まれていますが、python2.6では別途インストールが必要です。 |
PIL is not installed. | PILをインストールしてください。 |
NumPy is not installed. | numpyをインストールしてください。 |
rtctree is not installed. | rtctree-3.0.1以上が必要 近日インストーラーを公開予定ですが、それまではgithubのページの右下の「Download Zip」をクリックし、rtc-master.zipファイルをダウンロード・展開し、setup.pyを実行してインストールしてください。(> python setup.py install) site-packages\rtctree\rtmidlへのパスをシステム環境変数のPYTHONPATHに追加してください。 例)C:\Python27\Lib\site-packages\rtctree\rtmidl |
メッセージ内容 | 対応処理 |
OpenRTM-aist Python is not installed. | OpenRTM-aist Python版のページから一括インストールスクリプトをダウンロードできます。 |
Ttk is not installed. | $ sudo apt-get install python-tk |
PIL is not installed. | $ sudo apt-get install python-pil.imagetk |
NumPy is not installed. | $ sudo apt-get install python-numpy |
rtctree is not installed. | rtctree-3.0.1以上が必要 githubからダウンロードし、setup.pyを実行してインストールする手順はWindows環境と同じ。~/.bashrcなどにPYTHONPATHを追加してください。 export PYTHONPATH="/usr/local/lib/python2.7/dist-packages/rtctree/rtmidl" |
最初に使用するカメラコンポーネントをリストの中から選択します。このリストには実行環境で使用可能なカメラコンポーネント名が表示されています。 Windows 10のVC2019の環境ではOpenCVCameraCompとMFCameraCompが選択可能です。この2つはどちらも同じような動作をしますが、OpenCVCameraCompの方が新しく環境依存性も少ないようです。また、このtkCalibGUI.batで起動される実行ファイルにより、ImageCalibrationコンポーネントが起動されます。また、このコンポーネントはImageCalibration.batによって単体起動できますが、単体起動した場合に接続して動作確認するようなコンポーネントは別途準備されていませんので、tkCalibGUIを用いずにImageCalibrationコンポーネントを使用したい場合は、別途接続するコンポーネントをユーザ側で作成してください。
[All Activate]ボタンをクリックするとカメラ映像が表示されます。 この時の全コンポーネントの接続状態は下図の通りです。TkCalibGUI以外のコンポーネントは自動起動され、コンポーネント間も自動接続しています。
チェッカーパターン(キャリブレーションパターン)を用意します。参考として、ここではcheckerboard.pdf を使っています。 チェッカーパターンのコーナー数は、ImageCalibrationのConfigurationで指定する必要があります。パターンの縦横の白と黒四角の共有している頂点の数(checker_h, checker_w)ーこれは白黒の四角の数-1です、と撮影枚数(image_num)もConfigurationで変更可能です。
チェッカーパターンの取り込みは、そのパターンをいろいろな角度でなるべく画面全体をカバーするような形で指定枚数分保存します。[確認]ボタンで保存画像の確認が可能です。[取消し]ボタンをクリックするとその画像は削除されますので保存し直してください。
指定枚数の保存が終了すると[結果表示]ボタンが有効です。これをクリックするとカメラパラメーター値が表示されます。
カメラパラメーターはcamera.ymlのファイル名でコンポーネントの実行ファイルと同じディレクトリに出力されます。
%YAML:1.0 calibration_time: "Thu May 22 16:38:06 2014\n" image_width: 640 image_height: 480 board_width: 13 board_height: 9 cameraMatrix: !!opencv-matrix rows: 3 cols: 3 dt: d data: [ 5.8272934483011682e+002, 0., 3.3703801084645710e+002, 0., 5.8023846162074653e+002, 2.2824562602176763e+002, 0., 0., 1. ] distCoeffs: !!opencv-matrix rows: 1 cols: 5 dt: d data: [ -1.4659954975042236e-001, 5.7825601645508595e-001, -3.3745642103035984e-003, 1.2569676956708463e-003, -9.8011775330916773e-001 ]