Amalgam Blog

2021年12月

そもそも自分が今回遠征に向かった理由ですが、教室で面倒を見ているチームが出場していたからです。

その割に僕自身はレスキュースタッフにつきっきりだったのでインタビューも競技も見ておらず、彼らがステージに上っているのは表彰式だけ...
結果は優勝...といっても4チームしかいませんでしたが、アウェイかつ初めてのオフライン競技でしっかりロボットを動作させて競技を行えた(多分)のであれば良いことだと思います。

正直なんで勝てたのかもよくわかっていませんが、それについては別途考察したいと思います。

RCAPのOnStage競技区分は結局最後までよくわかりませんでしたが、4区分あってそれぞれ1チームだったそうです。
異なる区分で競うことに意味があるのかという気もしますが、結局どの区分でも同じステージで競技をやるみたいなので、意外とどうにかなるみたいですね。(じゃあ区分で何が違うんだよという気もしますが...)






スタッフをやって思ったことです。
かなり長文になってしまいました。それも文章だけなので、最後まで読むにはかなり気合が必要かもしれない...

趣旨としては、得点計算的にも被災者救助が軽視されているので、もっと救助の価値が得点的にも高くなるにはどうすればいいか、について書き連ねています。

以下本文

-------------------------------------------------------------------------------------------------------------------------------------
まずいくつか前提を撒いておきます。

1.これはレスキュー競技である
 自明だとは思いますが、これはレスキューすなわち救助活動をモチーフにした競技なので、救助行動の成功は大きく評価されるべきだと思います。そのために「人の入れない環境に入り込む(ライントレース部)」「救助活動を行う(救助部)」の両立が、この競技の主題なのではないかなと考えてます。
 現状では、救助を捨ててライントレースのみで点数を稼ぐロボットがほぼ全てでした。ただ大会期間中、他のスタッフとの雑談では、やはり「ライントレースもいいけど救助してほしいよね」という声がありました。

2.選手は得点を欲する
 競技として参加している選手らの目線としては、評価が得点で決まる以上、より高い得点を効率的に取るような戦略を立てます。これ自体は至極まっとうで、私が現役のときもそうしていましたし、現在生徒に指導する際も、得点が取れるかどうかは大きな判断基準にしています。


以上の前提の元、私が問題だと感じているのは「低いレベル帯において、効率よく点数を取る戦略に被災者の救助が含まれない」ということです。
もう少し簡単にいうと、「確実に点が欲しいならライントレースだけやるのが安泰」というのが現環境です。

ただし例外は、ライントレースが難なくこなせるようなチームが殆どを占めるような上位レベルでは、ライントレースに加えて被災者救助をしないと、得点で上位をとることはできません。

この環境を作っているのはもちろんルールですが、そのうち特に得点計算が大きく関係しています。
現在の得点計算の概要は次のとおりです。

  • 最終的に、基礎点に倍率をかけることで計算される
  • 基礎点はライントレースでの課題クリアで与えられる(基礎点0からスタート)
  • 倍率は被災者の救助によって与えられる(倍率1.0からスタート)

ライントレースと救助を分け、掛け算によって計算するこのシステムは、両者の得点源の立場を対等にしているように見えますが、全くそんなことはありません。
問題の根源は基礎点が0からスタートすることに対し、倍率は1からスタートするところにあります。

すなわち「救助だけをするロボット」はどうあがいても0点を取る一方で、「ライントレースだけをするロボット」はライントレースで得た分の得点をそのまま最終得点にすることができます。

これが「効率よく点数を取る戦略に被災者の救助が含まれない」環境を作っている所以だと考えます。


ではどう解決すればよいのか。

ルール的に救助の価値が低いのに「なんでお前らはレスキューなのに救助機構すら持ってないんだ」
と責めるには無理があるので、やはり根本的なルールにメスを入れるべきだと思います。

そこで、いくつかルールの改定案を考えてみます。
改定は前提1に乗っ取り、現ルールよりも被災者の救助行動が結果に反映されやすくなることを念頭に置きます。

A.そもそも順位付け方法を変える
 現在の順位付けは最初に得点を参照します。ついで競技時間などが参照されますが、この参照順の第一位に「被災者の救助人数」を入れることで、かなり強引ですが被災者を救助することが評価に直結します。
問題としては、逆にライントレースを捨てるチームが続出すること。
おそらくですが、ラインセンサすらを持たないロボットで競技進行の停止を繰り返し避難ゾーンまでスキップするようなチームが続出します。
(ただRCAPでは救助機構を一切持たないロボットが現在横行し上位を占めていたことを考えると、そこまで不自然な光景では無いでしょう。)
 ただし、やはり現環境同様に競技コンセプトを著しく損なうことは確かなので、あまり良い方法では無いでしょう。

B.倍率のスタートを0にする
 現在1からスタートする倍率を、0にします。すなわち被災者を救助して倍率を得ることで、初めて得点を得ることができます。例えば次のような成果の2チームを考えます。
αチーム:ライントレースでの基礎点が200点、救助による倍率点が0点
βチーム:ライントレースでの基礎点が100点、救助による倍率点が0.5点

現ルールでは最終得点は次のように計算されます。
αチーム:200 * (1+0) = 200
βチーム:100 * (1+0.5) = 150

提案する、倍率を0スタートにすると次のようになります。
αチーム:200 * (0+0) = 0
βチーム:100 * (0+0.5) = 50

つまるところ、ライントレースと救助の両方をやらないと点はあげないよ、という変更です。
問題は、特にノード大会などの下位レベルにおいて、0点が恐らく続出することです。

救助をしないと点数がつかないというのは救助の価値を高める一方で「どのレベル帯であっても点数差がつく」という機能を著しく損なってしまいます。

C.基礎点のスタートを0でなくす
 一応、今回私が論ずる中での結論でもあります。
現在、基礎点は0点からスタートしますが、これを100や200点にするという案です。基礎点のスタートをいくつにするかは議論が必要ですが、ここでは100点と仮置します。
このもとで、先程の仮想2チームに1チーム加えた3チームを評価します。

αチーム:ライントレースでの基礎点が200点、救助による倍率点が0点
βチーム:ライントレースでの基礎点が100点、救助による倍率点が0.5点
γチーム:ライントレースでの基礎点が0点、救助による倍率点が2点

これは現ルールでは
αチーム:200 * (1+0) = 200
βチーム:100 * (1+0.5) = 150
γチーム:0 * (1+1.5) = 0

提案するルールによって基礎点を100点スタートにすると
αチーム:(100+200) * (1+0) = 300
βチーム:(100+100) * (1+0.5) = 300
γチーム:(100+0) * (1+2) = 300

となります。
かなり両極端な具体例ですが、これはB案の長所を受けつつも短所をうまく打ち消せているのではないかなと思います。
また開発が追いついていなかったり初心者が多く能力が偏ったロボットが多いノード大会でも、どんなロボットでも得意分野を発揮できればそれなりに点数が取れて順位争いに参加できるのではないかなと思います。

もちろん、救助機構を持たずにライントレースだけを粛々とこなしたり、
競技開始から競技進行の停止を繰り返して救助エリアの目の前までスキップするロボットも残るでしょうが、
最終的に点数を取るためには両方をこなす必要があります。

何より、Cの改定案の元で効率よく点数を稼ごうと思ったら「両方そつなくできるロボット」が必要になるはずです。(1.0*2.0 < 1.5*1.5なので)
そうすればまぁ、競技の趣旨をそもそも全うできないようなロボットが上位を占めるようなことは減るのかな、と想像します。

本論は以上です。
最後に、案Cにおける具体的な得点の比重について考察したものを付録としておきます。

---------------------------------------------------------------------------------------------------------------------------------------
基本的には計算を対称的にするために、ライントレースによる基礎点を1にするように正規化しています。またライントレース部と救助部の最終得点への影響力を考慮し、救助周りの得点を調整しています。

・ライントレース部
タイル点:0.05点(1回目でのトライでクリア)
交差点:0.1
ギャップ:0.1
バンプ:0.05
傾斜路:0.1
障害物:0.2

・救助部(全てレベル2を選択、レベル1はこの半分くらい)
被災者:1.0
レスキューボックス:1.0


仮想レイアウトを次のように考えます。
・ライントレース部
総タイル数:50枚(RCAPのレイアウトだと、少なくともこれぐらいありました)
交差点:6個
ギャップ:3個
バンプ:4個
傾斜路:2個
障害物:1個
→満点:4.0

・救助部(個数はルールで固定されている)
被災者:3人
レスキューボックス:1個
→満点:4.0(両方レベル1だと2.0)

最終点の満点は
(1.0+4.0) * (1.0+4.0) = 25.0

ライントレース部の得点は既存のものを基準にし、救助部の得点は
(ライントレース部の満点)=(救助部の満点)
ぐらいになるように調整できればちょうどいい感じかなと思います。
(ライントレースだけ満点のロボットと救助だけ満点のロボットが同等になる調整です)

------------------------------------------------------------------------------------------------------------------------
さらに付録

ライントレース部と救助部の得点の合算方法としてこれまで乗算を上げていましたが、別に合算もアリです。というか昔はそうでした。
ただその場合
αチーム:ライントレースで1.0点、救助で0.0点
βチーム:ライントレースで0.5点、救助で0.5点
γチーム:ライントレースで0.0点、救助で1.0点
が全て同点になります。

乗算だと、βが若干優位を取ります。
個人的には、冒頭で上げたレスキューの二大コンセプトである「人の入れない環境に入り込む(ライントレース部)」「救助活動を行う(救助部)」の両立ができているロボットのほうが、どちらかに特化しているロボットよりも優れていると考えているため、そのようなロボットが評価される乗算式が適しているのかなと考えています。





このページのトップヘ