2025年11月25日火曜日

第4回新ROBO-剣参加

11/16に行われた 第4回新ROBO-剣に参加しました。ロボットは去年と同じ「逡巡」です。

結果は本戦トーナメント2勝1敗、敗者トーナメント(本戦で早めに負けたチームによる別リーグ)第2位でした。新ルールでは、今回初めて有効な攻撃で勝利を挙げることができました。勝利した試合はすべてストレートの2本先取となっており(1本取った後に電源が落ちてタイムを取得したことによる反則のみ1回あり)、安定した動作ができるようになってきたと思います。

今回の変更点としては、システムの信頼性を向上させたり不完全だった部分を補って、前回できなかった動作をできるようにした、ということになります。

特に、移動しつつアームの動作を開始して、アームの届かない範囲から攻撃を行うという動作も部分的に実現し、試合のアルゴリズムにも組み込みました。「部分的に」というのは、予め進む距離を固定値(25cm)で与えてあり、この分アーム原点をずらして打撃成功する軌道が作れたら採用する、となっている点です。本来は踏み込む距離も逆運動学の変数に入れて解くのが綺麗なのではないかと思います。


試合のアルゴリズムは大まかには

1. 相手の方を向く

2. 相手との距離を保つ

3. 有効打突部位が打てそうな状態であれば打つ

またこれらと並行して、フィールド外周から落ちないように、縁に近づいたらその近さに応じて中央方向に戻す速度ベクトルも加算しています。現在位置の認識はIMUと独立計数輪で測った移動距離をスタート地点から積算するのみとなっています。ROBO-剣のルールであれば試合時間の3分程度は誤差も許容範囲に収まると読んで設計した方法でしたが、今回実際にそれが証明されました。

特に敗者トーナメントの決勝戦では、相手ロボットはアームの届く距離まで接近しようと近づいてくる一方で逡巡は踏み込んでの打撃に適した距離を保とうとし、結果的にフィールドの周りを回りながら3分間ずっと追いかけっこ(後ずさりで逃げる側)しつつ攻防するという格好になりました。次第に誤差によりリング縁に寄っていき最後は車輪のうち1つがリングから脱輪したもののそのまま復帰し、時間一杯まで動作を続けました。

上記のような刺激反応系のreactiveな部分しかできていないため、この例もそうですが、相手によっては膠着状態になってしまうことがあります。せっかくマップ上での自己位置というglobalな情報が使えていてこれは優勝ロボットにもないものなので、次はこれを活かして相手の横に回り込む、追い詰める、等といった戦略的な部分も実装したいと思います。

また、基礎となる制御的な面で改善点というかまだ実現していない点になりますが、次は移動している標的にも当てられるようにしたいと思います。

これは、現在は相手が止まっているものとして動いているため、動き回り続ける相手にはなかなか当たらない、というよりも原理的に当たらない、という状態になっています。ホッケーロボットや、また逡巡自体でも対象物体の移動履歴からの外挿による行き先予測は既に試しており、この方法を実際に組み込んで試してみることになります。

そのためには対象物の位置計測の精度と、全体的な処理速度の向上も必要となります。3次元点群を入力とする処理をしているので処理量が多くなりがちで、現状では毎秒7〜15回ぐらいとなっていました。これを改善するのが次の課題となります。

優勝した「メタリックファイター」は毎秒30回のビデオフレームレート内で処理が終わるようにという縛りを設計に入れており、単純なラスタ画像(深度)の処理で相手の認識を行っている、処理対象データもなるべく減らしている、とのことでした。逡巡ではガードをかわしての打突(防がれるような打ち方はしない)ということも目指しているので3次元点群を対象とする処理という方式は変えないと思いますが、この30fpsを目安として少しでも近づけるように今後処理の方法を考えていくことにします。

0 件のコメント:

コメントを投稿

第4回新ROBO-剣参加

11/16に行われた 第4回新ROBO-剣 に参加しました。ロボットは去年と同じ「逡巡」です。 結果は本戦トーナメント2勝1敗、敗者トーナメント(本戦で早めに負けたチームによる別リーグ)第2位でした。新ルールでは、今回初めて有効な攻撃で勝利を挙げることができました。勝利した試合は...