この記事では、NHKロボコン2024のR2「比叡」について紹介していきます。
R2は、全自動で籾(ボール)を識別し、回収し、サイロに投入するロボットです。
ハードウェア
ステア
RS735を用いた汎用的な独立ステアリングとなっています。これは過去の先輩のCADをベースに作り直したものです。
ハード的な洗練度、性能ともに時代遅れ感はありましたが、今までステアをおよそ採用してこなかった部の状況から考えるに、このステアの成功は大きな一歩であると考えています。ここで得た知見をもとに、ブラシレスモーター化を行うなど、今後の大会でも活用できるようさらなる改良を進めていきます。
籾回収
オムニホイールを用いた回収機構です。籾にまっすぐに向かっていくだけで回収でき、自動化が必須という特性にマッチしていたと思います。
回収範囲を広げるために大径のオムニを採用しましたが、回収時の衝撃の大きさからか、機構に与える負荷が大きく、フレームの歪みに繋がっていました。
機体内運搬及びサイロ投入
上部のほぼ全域を可動域にした機構となっています。回収用のオムニホイールを回すモーターで、丸ベルトを回転させることで籾を引き上げます。その後、籾が乗るレールを動かすことで、籾の投入と排出を行えるという設計になっています。
一部では高評価をいただいていましたが、設計者としては、この機構により丸ベルトへ悪影響が生じてしまったり、上部の拡張性に難があったりと、反省点が残るものとなっています。
ソフトウェア
構成
制御にはR1同様に、ROS 2を用いています。R2のノード構成は以下の図のようになっています。ROS 2の良さを活かすべく各機能ごとにノードを細かく分けてあります。また、自己位置推定やハードウェアとの通信については、なるべくR1とノードの共通化を図れるように工夫しています。
今回はルール上、R2は完全に自動化する必要があったため、各センサーで得られたデータをもとに機体の行動計画を作成し、それをもとに各機構の動作を行うようになっています。
R1と同様、基板やセンサーとの通信に問題が生じた際はWeb UI上に表示できるようになっています。それに加えて、機体の自己位置などのステータス情報も表示することで、機体が正しく動作しているかを常に監視できるようになっています。
ボール認識
R2はサイロ側・ストレージゾーン側それぞれにDepthカメラがついており、ボール位置を常に認識できるようにしてあります。カメラの視界から消えたボールについても、運動モデルを用いることでおおよその位置を知ることができます。
ボールの認識はカメラで得られた3D点群情報をもとに行っており、RANSACを用いて球のモデルに適合させ、ボール位置を認識しています。ボール位置の認識には、YOLOなどに代表される深層学習を用いずに処理を行っており、練習環境と本番環境での環境の変化に耐えられるようになっています。
機体に接近したボールはカメラの視界から外れてしまうため、機体の回収口付近にToFセンサーを設置し、ボールへの精密なアプローチを可能にしています。これにより、動いているボールに対しても正しく接近できるようになっていました。また、サイロに向かう際に邪魔になるボールの位置を、自己位置推定用のLRFを流用して把握しており、ボールをよけた経路を作成することでストレージゾーンからボールを押し出してしまわないようにしました。
ボール回収と投入
機体内部に取り込んだボールは、カラーセンサーによりボール色を判別しています。籾であれば機体上部に収納し、空籾であれば機体側面から排出して次のボールを回収しにいきます。この際、複数のボールを同時に機体内部に取り込んでしまうと丸ベルトが外れるなどの機械的な問題が生じてしまうため、回収直後にボールの取り込みを阻止する機構を搭載しています。また排出は左右両側にすることが可能で、機体位置によりストレージゾーンから出てしまわない方向に排出するようになっています。
行動計画
センサーデータを処理して得られたボール位置や機体の自己位置をもとに、ボールの回収計画や、投入サイロの決定が行われます。
ボールの回収計画では、近い位置の籾を回収するという単純な動作から、空籾の後ろにある籾を回収するために手前にある空籾を一度機体内に取り込むといった複雑なものまで作成しています。この複雑な動作は、機体と壁の間にボールが挟まって身動きが取れなくなるといった事故を防ぐため作成しています。
投入サイロは、相手にVゴールを取られないようにするという戦略の下、サイロ内のボール数と機体からの距離を基に決定していきます。例えば、同じ2段積まれているサイロでも、Vゴールを防ぐ戦略上、相手チームの籾が1個でも入っているものが相手チームの籾が1個も入ってないサイロよりも優先され投入サイロが決定されます。
これらの動作計画はBehavior Treeを用いて統合されており、各ノードに細かい指示を出す形で実行されていきます。Behavior Treeは例外的な状況であっても対応できるように作成しており、認識ミスが起こってもなるべくリトライを行う必要がないようにしました。
ForteFibreでは、ご支援・ご協力いただけるスポンサー様を募集しています。
詳しい内容はsponsor@fortefibre.netにお問い合わせください。