2022年3月14日

SPIKE WRO2022 RoboMissionシニアクラスの技術要素

今回はWRO2022 RoboMissionカテゴリーのシニアクラスでの競技において必要な技術を試していきます。 シニアクラスではケアロボットをテーマに、ロボットが病院内で洗濯物を運んだり、水を配達したり、患者と遊ぶことがタスクとして課されます。本記事では簡単なルールの理解と、ルールから一部抜粋してロボットの動きを確認していきます。

※本記事内に記載している競技内容やルールについては、あくまで個人での理解ですので誤っている場合があります。WRO2022の競技に関係・挑戦する方は必ず公式のルールを参照してください。

今回の機能を紹介する上で簡易的な車体を用意します。 (ここではSPIKEプライム ラージハブを地面と水平になるように組み立ててください。)

車体に使用しているハードウェア

  • SPIIKEプライム ラージハブ
  • Mモーター×2(A,Eポート)
  • Lモーター(Cポート)
車体1
車体2
車体3
車体4

今回はCポートに接続しているLモーターを使ってフォークリフトのようなものを作成しています。

本記事内で作成したプログラムの動作に関しては以下の動画を参照してください。
(https://youtu.be/2l2IPWSf-Ls)

◆シニアクラス オブジェクト及びタスクについて

シニアクラスでのタスクは大きく分けて5種類あります。

  • 洗濯物(ランドリーブロック)、ランドリーコンテナ

    洗濯物をランドリーコンテナまで運ぶタスクです。 コースに全部で3つ配置され、競技中にランドリーコンテナまで運ぶ必要があります。 同じ色のランドリーコンテナに入れることができればよりポイントを得ることができます。

    洗濯物(ランドリーブロック)洗濯物(ランドリーブロック)
    ランドリーコンテナランドリーコンテナ
  • マーキングブロック

    シニアクラスのコースでは四隅に部屋が設けられていて、それぞれの部屋で決まったタスクをこなす必要があります。 各部屋でどのタスクをこなすのかを判断するためにマーキングブロックの色を読み取って判断します。 マーキングブロックは白と緑の2色が2つずつあり、各部屋の近くに1つずつ配置されています。

    マーキングブロックマーキングブロック
  • ボール、ネット

    部屋の近くで緑色のマーキングブロックを読み取った場合は、その部屋でボールをネットに運ぶゲームをこなす必要があります。 部屋の中にボール、ネットが一つ配置されているのでボールをネットまで運びます。

    ボールボール
    ボール2 
    ネットネット
    ネット2 
  • 水筒、テーブル

    部屋の近くで白色のマーキングブロックを読み取った場合は、その部屋内にあるテーブルの上に水筒を運んでくる必要があります。 水筒はフィールド中央の決まった場所に置かれています。

    水筒水筒
    テーブルテーブル
  • 人オブジェクト

    フィールドには6つの人オブジェクトが決まった場所に配置されています。 この人オブジェクトを動かしたり、壊してしまうとボーナスポイントが得られなくなります。

    人オブジェクト人オブジェクト

以下がコース全体像です。中央がスタート、フィニッシュエリアになっており、四隅に部屋が設けられているのがわかります。 詳細な配置などは公式のルールを確認してください。

コース全体

詳細なルールについては以下のURLより公式のドキュメントを参照することができます。
https://wro-association.org/competition/2022-season/#rules

◆タスクについて

今回は、エレメンタリーやジュニアでは登場しないオブジェクトの「ボール」について取り組んでみます。 ボールオブジェクトはフィールドにあらかじめ配置されており、それをネットと呼ばれる籠状のオブジェクトに収める必要があります。 ボールをネットに収める都合上、最低でも3cm程度はボールを持ち上げる必要がありそうです。 また、球状のものなのでブロックの保持とは違った方法で保持する必要があるかもしれません。

ボールオブジェクト1 ボールオブジェクト2

ルールではネットを動かしてしまうと減点されてしまうため、なるべくネットへの接触を控えながらボールを運ぶ必要があります。 今回はボールをどうネットまで運ぶか考えていきます。

◆ロボットの構成

今回は前述した車型ロボットの前方にフォークリフトのようなアームを取り付けたロボットを作成しています。 アームはLモーターでギアを回転させることで上下するようにしています。これを利用してボールをすくい上げるように保持してネットまで運んでみます。

ロボット1 ロボット2

◆プログラム作成

プログラム

アームの制御は関数を用いて再利用できるように作成しています。3種類の動きを用意しており、地面近くまで下す「アーム初期位置」、ボールをすくい上げる「アーム上げ」、ネットにボールを収める「ボール下し」の3つを用意しています。

プログラム

また、旋回するブロックでは演算を用いて正確に90度左を向くように制御しています。 計算式は「向きたい角度/360度*車幅*円周率」としています。今回のロボットは左のタイヤから右のタイヤまでが約16cmだったためプログラム内のような「90/360*16*3.14」となっています。

プログラム

実際に動かしている様子は動画を参照してください。
(https://youtu.be/2l2IPWSf-Ls)

◆追加で考えるべきこと

今回はボールオブジェクトに着目して動作を実現してみました。シニアクラスでは他にもこなさなければいけないタスクがあります。 それらを加味して以下のことが必要であると考えられそうです。

ロボット面では

  • 洗濯物、水筒も運べる機構
  • マーキングブロックを読み取るためのカラーセンサー取り付け
  • ライントレースに適したロボットの大きさ
  • ボールを安定して保持できる機構

プログラム面では

  • ライントレースをしながらタスクをこなす方法
  • マーキングブロックを読み取り、タスクを判断する制御
  • 人オブジェクトやネットを動かさない制御
  • どのタスクを何回こなしたか記憶して判断する方法

などを考えてタスクをロボットに行わせる必要があります。

※2022/3/8 最新バージョン(2.0.4)のSPIKEアプリに基づく情報です。
※これらの仕様はアプリのアップデートによって変更される場合があります。

(2022/3/8 現在)