第2回からかなり間が開きました。
今回はロボットへ付けるカメラを探していたのですが、ふと疑問が湧いたのでその実験報告です。
よくデュアルカメラで映像の遠近を認識しているロボットがありますよね?
単眼カメラだと物体までの距離が解らないので、
このようにカメラを左右に二台配置して対象物の差分から距離を算出するという方法です。
これ、もしかしてミラーを適切に配置すれば単眼カメラでも映像を分割して同じように2つの映像から距離算出が出来るのでは?と思い立ちました。しかし、調べて見てもそのような事例は見当たりませんでした。
<構想>
図の黄緑の鏡でカメラを2分割して青色の鏡の角度を変えることで映像の方向を変えます。すると赤色の線でうまく映像が2分割されるんじゃないの?
取得した映像をプログラムで修正してやればカメラ1台分のリソースを節約することができるのでは?
ということで早速実験です。
まずはミラーが4枚必要です。
手元にミラーが無かったのですがHDDドライブを分解したときに出てきたプロッタを発見しました。これはミラーといっても遜色ないぐらい鏡面なんです(写真はキズ予防の為にマスキングテープを貼って少し切った後です)。
厚さ1mmのアルミ板ですがカッターで頑張れば辛うじて切れます。
実験に丁度良いサイズのミラーが手に入りました。
後の複雑な部品は3Dプリンターの出番です。
3Dプリンターは単なる思いつきをすぐ現実に召還してしまえる本当に素晴らしいマシンです。
作成した装置です。
センターには90度(各45度)固定のミラーを配置してあり、外側のミラーは真ん中のアームを前後させることで左右同時に角度を変更出来るようになっています。
カメラをセットすれば完成です。
想像以上に本体はゴツくなってしまいました。
<実験>
単眼カメラ(装置無し)で対象物を撮影したものです。
当然ながら狙い通りの普通の映像が取得できました。
続いて、装置を装着して対象物を撮影したものです。
一見して「なるほど!」という結果ですね。
映像の取得には大成功ですが、単純にミラーを配置しただけだと映像を取得出来る範囲が限られてしまうようです。
2分割しているので映像の横幅も最大で半分です。
その中でミラーの型がそのまま映像に反映されているので実質使えそうな映像範囲はこの程度ということになってしまいます↓
ミラーを大きくしたり曲げたりレンズを入れたりすれば解決するような気もしますがそんな面倒なことするぐらいなら素直にカメラ2台取り付けた方が遥かに簡単!というわけでおそらく事例が無い訳ですね。ナルホド
場合によってはこの方法で使えるものもあるかもしれませんが今回の目的はロボットの走行なので撮影範囲が問題になると使えそうにありません。
ということで実験結果として「出来なくはないが用途は限られる」と今回は結論付けておきます。