2020年3月20日金曜日

M5StickVを使った物体追跡ロボット


3月15日に行われた第15回チロルチョコロボット大会に出場しました。
ここ数年続いている射的競技があるのですが、これに新しい方法で挑みました。

自律的に紙コップ標的めがけて進んでいく車両型ロボットを作り、これを発射体として使いました。発射体というと普通は何か物を投げたり転がしたりするものですが、こういうのもありだということです。
元々は障害物の裏に回り込んで標的に命中させられないかと発想したものでした。これまでにおよそ紙コップ2個分ぐらいの微妙な照準のズレを正す程度の性能が実現できました。
大会でも得点を挙げることができ、好評でした。

ハードウェア


前輪2輪、後輪1輪の3輪車です。後輪で舵を切ります。駆動輪は無く、ロボットが自力で移動する能力はありません。その代わり、親機からスロープによって送り出され、慣性によって走行し、操舵だけして進行方向を制御します。


フレームと車輪はFDM方式の3Dプリンタで作成、ABS樹脂製です。

すべての車輪はボールベアリングで自由に回るようになっています。タイヤの代わりにNBRゴムシートを貼り付け、地面へのグリップを確保しています。
操舵輪はR/C用サーボモーター(MG90S)をマイコンから制御して方向を変えられるようになっています。

操舵機構は動画ではほんの少ししか動いていないように見えますが、ホイールベースが短いのでこれで十分曲がります。また、あまり急な曲率で曲がろうとすると遠心力で倒れてしまいますのでこのぐらいが適正です。

制御

カメラで得た画像から紙コップ標的の位置を検出して左右へのずれ量を計算、それに応じて左右に曲がって標的に向かいます。

制御にはM5StickVを使用しました。
M5StickVは、人工ニューラルネットワークの出力計算(推論)を高速に行うための専用回路を搭載したマイコン、カメラ、LCD、SDカードスロット等を搭載した製品です。MicroPythonでの開発環境が提供されています。「AIカメラ」という触れ込みにあるように、単独でニューラルネットワークベースの物体認識アルゴリズムをリアルタイムで適用してビューファインダーのように見る、というような応用ができます。ニューラルネットワークの構造と重みのデータをFlashまたはSDカードに入れ、それをPythonのAPIから呼び出して使うことができます。
今回は画像認識のため、高速な物体検出アルゴリズムの一つYOLO-v2を応用しました。物体として紙コップのみを認識するモデルを作成しました。

なお余談として、これは元々ロボット「Teapot」本体の方のチロルチョコ投擲装置の自動照準機能に使ってみようとしていたものでしたが、子機を発射するほうが面白そうだったので計画を変更したものです。

※本来の搭載場所にすると液晶画面が隠れるのでずらして置いて撮影しています。

制御則としては、ずれ量に比例して操舵輪の目標角度を出力するP制御を行っています。操舵輪をあまり急な角度(とはいっても数度ぐらい)にすると転倒してしまうため、上限を設けてあります。ちょうどすぐ上の動画ぐらいの角度が最大です。

発射装置

本体のロボットが「発射装置」としてスロープを牽引する形でチロルチョコロボット大会に出場しました。

このスロープは元々仮設の実験装置でした。牽引用フックと子機保持用ストッパーを付けて本体のロボットの一部とし、無線操縦で移動および方向を定めて発射できるようにしました。


今後の課題(今回先送り・誤魔化した事項)

  • 速度に合わせてフィードバックゲインを変えるべきであるが、速度計測手段がない。
  • 物体の物理的な相対位置ではなく、画像内での物体位置を計測と制御の対象としている。物体検出が十分正確であれば、地面平面への拘束、または物体の見かけ上の大きさから奥行きを含む物理的な相対位置が推測でき、これを制御に用いるのが本来である。
  • 物体検出が10fps程度であり、高速走行すると補正が間に合わない。
    • 現状、命中までに2~3回ぐらいしか認識を反映するタイミングがないのであるが一応それらしく動いて見える。
  • 走行速度が速すぎると、画像がmotion blurで滲むため検出できなくなることがある。
    • 速度が速くなりすぎないように発射台の方を調整した。
    • 車輪の転がり抵抗を抑えて低速で走行する距離を長くしている。
    • また、スロープで投下したときの速度でぶれた画像を学習させており、それなりに検出できるようになっている。
  • サイズ制限に合わせてM5StickVを横置きしたため、カメラが左側に偏った位置になる。そのため右側の視野が狭い。
    • 現状、M5StickV全体を右に少しパンした姿勢で取り付けるというhackyな方法でごまかしている。
  • 画像の224x224の中央領域のみを使用しているため、視野が狭い。そのため追跡できる範囲が狭い。これはサンプルのプロジェクトのYOLOv2の実装をそのまま使用したため。320x240の画像をそのまま入力とするような認識ネットワークを作成する。

参考文献



0 件のコメント:

コメントを投稿

二足歩行実験用ロボット製作開始

二足歩行の制御実験用のロボットを作り始めました。 コンテストに参加するためではなく、バランスを維持するフィードバック制御を試すためのものです。ROBO-ONEでは低重心、高剛性のメカ、強力な関節の位置制御と足裏の面積で機械的安定性を稼ぐことが定跡となっており、かつレギュレ...