KLAPラップタイマー・アップデート:逆走防止機能を新搭載!
今回のアップデートでは、計測の信頼性を劇的に向上させる**「逆走判定ロジック」**を導入しました。
従来は「通過後15秒間は反応しない」というクールダウン時間のみで誤作動を防いでいましたが、新バージョンでは「外積(がいせき:Cross Product)」計算を採用。最初にラインを通過した時の「向き」を学習し、それ以降、正しい方向での通過のみをラップとしてカウントします。
仕組み:2つの「矢印」で向きを判別
ラインを「ベクトル(矢印)」として定義
設定したスタートライン(P1からP2)を、**「左から右へ引かれた一本の矢印」**と見なします。
自車の動きも「ベクトル」で捉える
自車の移動(1つ前の位置から現在の位置まで)を、「後ろから前への矢印」として捉えます。
2つの矢印の「ねじれ」を計算する
この2本の矢印が交差したとき、数学的に「外積」を計算すると、自車がラインに対して**「表から裏へ」突き抜けたのか、あるいは「裏から表へ」**(逆走)突き抜けたのかが、数値のプラス・マイナスとして明確に現れます。
ラインを「ベクトル(矢印)」として定義
設定したスタートライン(P1からP2)を、**「左から右へ引かれた一本の矢印」**と見なします。
自車の動きも「ベクトル」で捉える
自車の移動(1つ前の位置から現在の位置まで)を、「後ろから前への矢印」として捉えます。
2つの矢印の「ねじれ」を計算する
この2本の矢印が交差したとき、数学的に「外積」を計算すると、自車がラインに対して**「表から裏へ」突き抜けたのか、あるいは「裏から表へ」**(逆走)突き抜けたのかが、数値のプラス・マイナスとして明確に現れます。
実際の動作プロセス
ステップ1:初回学習
TIMERボタンを押して最初にラインを跨いだ瞬間、その時の外積(例:プラス)を「正解の向き」として自動保存します。
ステップ2:2回目以降の比較
ラインを跨ぐたびに外積を再計算し、保存された「正解」の符号と同じかどうかを瞬時にチェックします。
ステップ3:逆走の切り捨て
復路(逆走やピットでの戻り)では計算結果が必ず逆(例:マイナス)になるため、システムが「向きが違う」と判断。クールダウン時間に関わらず、誤反応を完全にスルーします。
ステップ1:初回学習
TIMERボタンを押して最初にラインを跨いだ瞬間、その時の外積(例:プラス)を「正解の向き」として自動保存します。
ステップ2:2回目以降の比較
ラインを跨ぐたびに外積を再計算し、保存された「正解」の符号と同じかどうかを瞬時にチェックします。
ステップ3:逆走の切り捨て
復路(逆走やピットでの戻り)では計算結果が必ず逆(例:マイナス)になるため、システムが「向きが違う」と判断。クールダウン時間に関わらず、誤反応を完全にスルーします。
技術解説:外積(Cross Product)とは?
一言でいうと、「2つの矢印から、それらに垂直な第3の矢印を作り出す計算」のことです。
1. 「右ネジの法則」が基本
外積の結果がどちらを向くかは、「右ネジの法則」で決まります。
ラインの矢印(ベクトルA)から、自車の矢印(ベクトルB)に向かってネジを回したとき、ネジが進む方向が計算結果になります。
2次元平面の計算では、結果が 「プラス」なら表側(上向き)、「マイナス」なら裏側(下向き) という数値で現れます。
2. 左右どちらを通り抜けたかが一瞬でわかる
順走の場合:ラインに対して「左から右」に横切ると、外積は特定の符号になります。
逆走の場合:同じ場所を「右から左」に横切ると、自車の矢印が逆転するため、計算結果の符号も必ず反転します。
順走の場合:ラインに対して「左から右」に横切ると、外積は特定の符号になります。
逆走の場合:同じ場所を「右から左」に横切ると、自車の矢印が逆転するため、計算結果の符号も必ず反転します。
3. 計算式(2次元の外積)
プログラム内部では、以下の非常にシンプルな算術を行っています。
ラインのベクトルを $\vec{L}(Lx, Ly)$、自車の移動ベクトルを {V}(Vx, Vy)とすると:
この計算結果の 正負(+かーか) だけを見ることで、複雑な計算なしに「正しい向きか」をリアルタイムで判定しているのです。

コメント
コメントを投稿