Download
latest Releases : 2.0.0-RELESE
2.0.0-RELESE | Download page |
Number of Projects
RT-Component | 153.5 |
RT-Middleware | 35 |
Tools | 22 |
Documentation | 2 |
Choreonoid
Motion editor/Dynamics simulator
OpenHRP3
Dynamics simulator
OpenRTP
Integrated Development Platform
AIST RTC collection
RT-Components collection by AIST
TORK
Tokyo Opensource Robotics Association
DAQ-Middleware
Middleware for DAQ (Data Aquisition) by KEK
はじめに
このページでは、OpenCVの画像処理により図形を検出して移動ロボット (Raspberry Piマウス) を追従させるRTCの作成手順を説明します。
作成するRTコンポーネント
HoughCircles関数について
HoughCirclesはハフ変換を用いてグレースケール画像から円を検出する関数です。 詳細は以下のページを参照。
RTCの概要
カメラで取得した画像をグレースケール画像に変換後、HoughCircles関数で円を検出します。 検出した円の方向に移動ロボットが回転するように制御します。 具体的には、検出した円の位置が画像の右側の場合は右回り、左側の場合は左回りの回転する目標速度を指令します。 また、動作確認用に円の位置情報を付加した画像を出力します。
RTCの作成
以降はRTCの基本的な作成方法を理解している前提で進めます。 基本的な作成手順は以下のページを参照。
RTCBuilderによるひな型コード生成
RTCBuilderで、以下の仕様のRTCのひな型コードを生成します。
RTC::CameraImage型について
RTC::CameraImage型は画像データを格納するデータ型です。
このデータ型には、画像の幅width、画像の高さheight、画像データpixels等を設定できます。
ファイル編集
以下のファイルを編集します。
src/CMakeLists.txtの編集
srcフォルダのCMakeLists.txtをメモ帳などで開いて編集してください。 ここでは、OpenCVを利用するための設定を行います。
以下のようにfind_packageによりOpenCVのライブラリを検出します。 find_packageの行を追加してください。
次にリンクするライブラリに、OpenCVのライブラリを追加します。 以下の2か所を変更します。
include/CircleTracking/CircleTracking.h
include/CircleTracking/CircleTracking.hの編集を行います。 まず、37行目付近でインクルードファイルを記述します。
314行目付近にprivate:という記述があるため、その下にm_imageBuff、m_outputBuff、m_directionの3つのメンバ変数を追加します。
src/CircleTracking.cpp
src/CircleTracking.cppの編集を行います。 onActivated、onDeactivated、onExecuteの3つの関数を編集します。
RTシステムの構築、動作確認
ここからはRTSystemEditorで作業します。 Raspberry Piマウスを使用する場合は、Raspberry Piのアクセスポイントに接続した状態で作業してください。 以下のページのRobotControllerコンポーネントが必要なため、実機での動作確認まで進めておいてください。
事前準備
動作確認には、Raspberry Piマウス、USBカメラ、カメラ用マウント、LiDAR付属のネジ、円形状の図形を印刷した紙が必要です。 講習会ではUSBカメラとカメラ用マウントは接続済みです。紙も配布しています。
専用LiDARマウントかマルチLiDARマウントかで使用するネジが異なります。
まず、以下の専用LiDARマウントの場合は、ネジは2個付属しているので、それを使用してください。
以下のマルチLiDARマウントの場合は、なべタッピングネジ3-8を使用してください。
以下のようにRaspberry Piマウス前方の2か所で固定します。
PCとUSBカメラをUSBポートで接続してください。
動作確認
RTCの起動
動作確認には、以下の5つのRTCの起動が必要です。
RaspberryPiMouseRTCとRobotControllerコンポーネントの起動ついては、以下のページの手順を参考にしてください。
OpenCVCamera、CameraViewerはOpenRTM-aist付属のサンプルコンポーネントです。 Windows 10の場合は、画面左下の「ここに入力して検索」にC++_OpenCV-Examplesと入力して、C++_OpenCV-Examplesを選択したら起動するエクスプローラからCameraViewer.batとOpenCVCamera.batをダブルクリックして実行してください。
Ubuntuの場合はビルドとインストール作業が必要です。
CircleTrackingはビルドで生成したCircleTrackingComp.exeを実行してください。
RTシステムの構築
RTSystemEditor上で以下のようにポートを接続してください。
RTCをアクティブ化すれば動作確認を開始します。
カメラの前で円形状の図形を印刷した紙を左右に動かして、動作を確認してください。
OpenCVCameraコンポーネントがRaspberry Piマウスに取り付けたUSBカメラではなく、別のUSBカメラやノートPC内蔵カメラを使用する場合があります。 この場合は他のカメラの画像が表示されているので、RTSystemEditorでOpenCVCamera0を選択して、コンフィギュレーションパラメータを編集します。
以下のdevice_numを変更して確認してください。
また、円の誤検出が多い場合、RTSystemEditorでCircleTracking0を選択して、コンフィギュレーションパラメータを変更して試してみてください。
HoughCircles関数の引数の詳細についてはOpenCVのドキュメントを参考にしてください。