2 ドライバーの車速、アクセル/ブレーキ操作を比較する [自作の fastf1 便利ライブラリ]
車速でドライバーを比較する
2025年のイタリア GP の予選で、フェルスタッペンと角田のタイム差が Q3 で大きく広がりました。
セクター 2 のレズモを通過するときの、フェルスタッペンと角田の車速を並べてみます。実線がフェルスタッペンで、点線が角田です。レズモは 2 個のコーナーが組み合わさった複合コーナーなので、山と谷が 2 個ありますが、それぞれで角田はかなり早めにアクセルをオフしているのがわかります。グラフの真ん中あたりでカクカクしている線は、アクセルとブレーキの踏み込み量なのですが、この線はちょっとわかりにくいので改善したいと思っています。
このグラフは、上記ライブラリの「cornerspeed_compare」関数で出力できます。使い方は、
ff1.cornerspeed_compare(
session=session_qual,
driver1='VER',
driver2='TSU',
min_dist=2300,
max_dist=3000
)
session
にはセッションオブジェクト、driver1
、driver2
は比較したいドライバー (カーナンバーでも、3文字略称どちらでも指定可)、min_dist
から max_dist
で指定した間の距離をグラフ化します。各ドライバーの最速ラップを比較するので、基本的には予選セッションで比較するイメージです。どの周回を比較するか指定できるようにしても、便利かもしれないですね。
Jupyter Lab でパラメータを調整しやすくする ipywidgets
しかし、cornerspeed_compare
はパラメータが少し面倒です。比較したいコーナーを指定したくても、そのコーナーがどのくらいの距離に入るかを計算するのは大変です。
そこで、パラメータを可変にして、スライダーなどで選べるようにします。Jupyter Lab でコードを書いているので、Jupyter Lab でそういうことを実現できる ipywidgets
を使ってみます。
ipywidgets をインストール
もしインストールしていない場合、Jupyter Lab を実行している環境で
pip install ipywidgets
を実行します。古いバージョンの Jupyter Lab は有効化したりいろいろ手順が必要なようですが、最近のバージョンは自動的に有効になるようです。ただ、Jupyter Lanのカーネルの再起動と、ブラウザのリロードはしないとうまく表示できないようでした。
実行
コードは以下の通り。変数が変更されたらそれを引数に実行される関数を def
で定義し、interact
で入力欄を定義します。セレクトボックスを使う場合は、先に Select
でリスト要素を定義しておきます。スライダーは最小値、最大値、ステップ数を引数に指定する形です。
from ipywidgets import interact, Select
def f(drv1, drv2, a, b):
ff1.cornerspeed_compare(
session=session_qual,
driver1=drv1,
driver2=drv2,
min_dist=a,
max_dist=b
)
driver_codes = {
drv: session_qual.get_driver(drv)['Abbreviation']
for drv in session_qual.drivers
}
w1 = Select(description='Drv1:', options=list(driver_codes.values()), rows=4,)
w2 = Select(description='Drv2:', options=list(driver_codes.values()), rows=4,)
interact(f, drv1=w1, drv2=w2, a=(0, 5700, 100), b=(100, 5800, 100))
これを実行するとこんな感じ。
a
、b
のスライダーで任意の距離を表示させて、速度の上がり下がりでコーナーを判別して、比較するドライバーを選べます。これでだいぶ比較しやすくなりました。
レース結果
そんな風にフェルスタッペンと角田の比較をしながら、レース結果について考えてみようと思いましたが、今回はそれどころではない展開になったので諦めました。ペースの悪さや接触はともかくとして、ピットアウト直後にベアマンに抜かれたのはいただけないと感じました。あそこで抜かれないように戦略を練って、ピットクルーもそれを実践したわけですから、いくら苦しくても簡単に抜かれてはいけない場面だと思います。あそこで抜かれてしまうと、今後もレッドブルの戦略担当としてはアンダーカットのカバーをさせる判断を取りづらくなると思います。あそこで角田がピットインすることがベストな判断だったかどうかはともかく、ピットインしたからには「ベアマンの前に出る」という意図は明確だったはずです。それができないと、戦略担当も「角田にできること」の中から選択肢を選ばなくてはいけなくなるので、ますますベストな判断からは遠のく可能性が高まります。モンツァで抜かれないように走るのは難しいかもしれませんが、あまりにもあっさりと抜かれてしまったのは、かなり厳しいように感じました。