タミヤのカムプログラムロボットにOpenMV Camを載せて二次元マーカー(AprilTag)を交通標識のように読み込ませようと目論んでいます。そこでOpenMV Camの標準カメラでどの程度の範囲にあるマーカーを検出可能か調査してみました。
カムプログラムロボットにOpenMVを取り付けた様子です。カメラの位置を確かめるだけなので、ひとまずマスキングテープで仮止めしただけです。USBケーブルをMacBookに繋げてデバッグしています。レンズの中心を床面から約10.5cmの高さにセットしています。
AprilTag
AprilTagはカメラを使ったロボット制御を目的として開発された二次元マーカーです。OpenMVの標準ライブラリもAprilTagに対応しています。QRコードはマーカーの種類しか判定できませんが、AprilTagは、マーカーまでのおおよその距離や方向、角度(ヨーやピッチ)もカメラで撮影した画像から計算できるように工夫されています。
- ミシガン大学 April Robotics研究所 AprilTag
- https://april.eecs.umich.edu/software/apriltag.html
AprilTagブロック
印刷したAprilTagを100円ショップで購入した発泡スチロールブロックにマーカーを貼り付けて看板のように立てます。マーカーの種類は TAG36H11 の 00000 です。複数の種類のマーカーの中からTAG36H11系を選択したのはOpenMVのデフォルト(推奨)だったからです。TAG36H11系には587種類のマーカーがあるので、一番番号の若い 00000 を選びました。
- マーカーの印刷サイズ(外枠の正方形)は縦横 約61mmです。
- マーカーの中心の高さは床から約95mmです。(下辺は約65mm)
OpenMVのカメラの中心位置とマーカーの中心位置がほぼ水平となるようにしました。
マーカー検知範囲測定風景
ロボット(カメラ)の正面にマーカーを置いて『検出』or『非検出』をチェックしました。マーカーはロボットの進行方向正面に対して直角に置いています。
縦横 5mm 間隔で検出/非検出を測定して色分けしたシールを貼っています。
- 検出:青シール
- 不定:黄シール
- 非検出:赤シール
※ 不定:検出と非検出が短時間で変化する位置
検出範囲測定結果
測定結果は写真のような感じです。
- 最遠検出距離 : 75cm
- 最近検出距離 : 15cm
- 検出可能視野角 : 左右 ±20度くらい
ロボット(カメラ)とマーカーが近いと左右の検出可能視野も狭くなるので、実用上は25cm〜30cmより近づくと確実にマーカーを検出するのは難しそうです。もしくはマーカーに近づいたときはロボット(カメラ)を左右に振ることでマーカーの検出範囲を広げる工夫をする必要がありそうです。
最遠位置も左右の視野を考慮すると60cm前後が最も好ましいようです。これ以上離れてしまうと真正面であれば検出できますが左右に振った時点で検出が不安定になります。距離が遠いときは照明やマーカーの向きも大きく影響するようです。「ロボット正面右」に対して「ロボット正面左(写真では下)」のほうが検出可能範囲が広いのは、写真下方向から外光が差し込んでいたことが影響したようです。