FC2ブログ

スラローム自動生成で楽をしたかった話

この記事はMicroMouse Advent Calendar2020の14日目の記事です。

前回はぱわぷろさんの「ジャイロセンサ「ICM20948」で苦しんだ話」でした。

新しい素子を使うのは大変ですよね。自分はソフトが苦手でついつい新機体を

設計しがちですが、毎回悩まされるのはIMUと通信できないことです。

いつかは人ともICとも会話できないコミュ障から脱却したいものです……


◆はじめに

マウサーの皆さんは各種調整作業は好きですか?私は大嫌いです。

タイヤ径、トレッド幅、壁センサの閾値、ジャイロの感度係数などなど、

マウスを完走させる上で調整すべきパラメータは無数にあるでしょう。


私はこれらのパラメータが重要なことは重々承知していますが、

それでも目的の動作になるまで何度も何度も繰り返し同じ作業をすることが

飽き性の私には苦痛でならないのです。

これが嫌いでソフトを嫌厭してしまっていると言っても過言ではありません。


その中でもスラロームの調整作業は苦行以外の何物でもありません。

スラロームは角度や速度によって軌道が異なるため、ターン前後の直線距離を

角度と速度毎に調整パラメータとしている人が多いのではないでしょうか。

そもそもターンの軌道を計算するだけでも色んなパラメータがあり、

それらも加えると数えたくもない程のパラメータが存在していると思います。


私はこの調整作業をサボるためにスラロームの自動生成機能を実装しました。

この記事はそんなものぐさが書いたものなので期待しないで読んで下さい。


◆スラロームのパラメータ

私のスラロームには1つのターンに対して5種類のパラメータがあります。
  • 角度
  • 速度
  • 最小旋回半径
  • 前距離
  • 後距離
それぞれのパラメータについて説明していきます。

  スラローム旋回のシーケンスの図
  一般的なスラローム構成 ※理系的な戯れより転載

角度は説明するまでもないと思いますが、ターンで曲がりたい角度です。
マウスだったら90degとか45deg、180deg、135degなどでしょう。

速度も説明不要ですよね。ターン中の車両進行方向速度です。
沢山のマウサーがブログで大会で走った各種ターンの速度をブログに
掲載しているので目標速度として参考にしてみて下さい。

最小旋回半径はターンの軌跡を計算する際に使っているパラメータです。
クロソイドと円弧でスラロームを作っている場合は円弧区間の旋回半径だと
思って下さい。最も遠心力が強くなる部分なので限界速度の参考にもなります。

前距離、後距離は前述した通り、ターン前後に入れる直進区間です。
スラローム時に区画中心から区画中心に移動するように調整する区間とも言います。

これら5つのパラメータを計算できればスラロームが生成できます。
次章からはこれらの計算方法について説明していきます。

◆自動生成のパラメータ

まず自動生成に必要なパラメータを紹介します。

  • 角度θ
  • 目標位置[X,Y]
  • 限界横重力加速度G
  • コーナリングパワーC

またパラメータが増えるのかと思った方はもう少し読んで下さい。


角度は前述した通りです。作りたい角度毎に設定して下さい。

目標位置はスラローム開始時を原点としたスラローム終了後の位置です。

限界横重力加速度は最大遠心力と同義です。スラロームの速度と最小旋回半径を

求めるのに必要なパラメータです。マウサーが「何Gでターンしている」などと

会話しているのを聞いたことがあるかもしれません。

これらはスラロームを作る上で設定するだけで調整項目ではありません。


唯一調整が必要なのはコーナリングパワーです。

大抵の人には聞き覚えのない言葉だと思うので簡単に説明します。
  タイヤの発生する力の図示

  タイヤに発生する力 ※理系的な戯れより転載


クルマが曲がるときにタイヤから発生する力のことをコーナリングフォース

と言います。遠心力と釣り合っている力とも言いますね。

この力は横滑り角βと比例関係にあるというのが最も単純なタイヤモデルで、

その比例定数をコーナリングパワーと呼んでいます。


図を見るとタイヤの方向とタイヤが進んでいる方向には角度がついていますが、

この角度を横滑り角と言い、タイヤが変形することで車両角度と車両進行方向が

ズレることを表しています。このズレがスラローム速度によって軌道が変わる

原因だと仮定して今回の自動生成アルゴリズムを構築しています。


コーナリングパワーはタイヤ固有のパラメータなので、スラローム毎に調整する

必要はありません。なので、このパラメータを1つ調整するだけですべての

スラロームを生成することができます。


少しだけ考え方が違いますが、こじまうす方式でも比例定数kを調整するだけで

同じことができます。


◆自動生成アルゴリズム

雑なフローチャートで申し訳ないですが、これを使って説明します。

  


初期角度の設定

最初の速度は自分のマウスが出せないと思う限界の速度を設定して下さい。

この速度以上のスラロームは生成できません。また速すぎても計算時間が

かかるだけなので、自分のハーフマウスでは2m/sを設定しています。


最小旋回半径の算出

最小旋回半径Rは、最大遠心力時の旋回半径と同義なので、上で設定した

速度Vと限界横重力加速度Gから算出します。(M:質量、g:重力加速度)

  


ターン軌道の算出

次は最小旋回半径Rから前後距離を除くターンの軌道を算出します。

まず、私はターンの軌道を計算する上で下図のような形状となる角速度と

時間の関係式を使ってます。一般的な台形関数でも考え方は同じです。


  


最小旋回半径Rと速度Vから最大角速度ωmaxを算出します。

  

この値が角速度関数の最大値となり、角速度関数の面積(角速度の積分)が

ターン角度θとなるので、ターン時間Tが算出できます。(A:上図の関数の面積)

  

これで角速度の関数が求まりました。
  

速度V一定で角速度ωの分布があれば滑りのないターンの軌道が算出できます。


続いてコーナリングパワーを用いて横滑りを考慮したターンの軌道を求めます。

まず横滑り角は上図タイヤに発生する力より下記のように表せます。
(u:車両前方方向速度、v:車両横方向速度)

  

今回の計算では、単純化するために横滑り角が十分に小さいと仮定とすると、

左右輪の横滑り角は下記になります。(W:車両中間からタイヤ力点までの距離)

  
  
コーナリングフォースは、横滑り角とコーナリングパワーで比例するので、
  
  
となり、コーナリングフォースは車両にかかる遠心力と釣り合っているので、
  
  
となります。初期値を0として数値積分することで横滑り角βが求まります。

あとは求めた角速度の分布と横滑り角から、速度一定で積分することで
以下のような軌道を求めることができます。
(青線:横滑りを考慮しない軌道、虹線:横滑りを考慮した軌道)

  運動方程式から計算したスラローム旋回グラフ
  ターン軌跡イメージ図 ※理系的な戯れより転載


横滑りが発生しているため、少しだけ大回りすることがわかります。

この位置と角度のズレがスラロームの調整を面倒にしていると考えています。


前後距離の算出

最後は前後距離の算出です。

ターン終了後の位置と角度がわかっているので、設定した目標位置との差分を

幾何計算するだけで求まります。


  


ターン終了位置を(XEnd, YEnd)、ターン終了角度をθEnd、

目標位置を(XGoal, YGoal)とすれば、前後距離は以下のようになる。

  

  

初期位置や角度が違う場合にはそれぞれの値を移動、回転して使って下さい。


算出した軌道の確認

これでスラロームの軌道を求めることができました。

あとはフローチャートに従って前後距離が負の値になっていないかや、

柱と干渉していないかなどを確認して下さい。

もしいずれかの条件に満たなければ速度を落として計算し直します。

私の場合は計算速度も考慮して10mm/s刻みで繰り返し計算しています。

※180度ターンだけは刻みを細かくしないとうまくできません。


◆計算結果

これで単一パラメータの調整のみで任意のターンが自動生成できるようになりました。




コーナリングパワーはターン角度の大きい135度ターンなどで、
位置が合うように調整するのがオススメです。私はまだ速いマウスが
作れていないので、1.5Gくらいまでしか試していませんが、
これくらいのターンであれば問題なく走っています。

◆おわりに
ここまで読んで頂きありがとうございます。

スラロームの自動生成は、地獄のような調整から開放されるだけでなく、

リアルタイムに計算できれば位置や角度の補正に使えたり、

こじまターンなどのアウトインアウトで曲がるターンを生成できたりと、

安定化や高速化にも役立つはずだと妄想しています。

まだまだ検証が足りていないですが誰かの調整作業を楽にできれば幸いです。


さて、明日のMicroMouse Advent Calendar2020sshunさんの
「HALがビミョーである理由の考察と改善案」です。
HALよりLLの方が扱いやすいと呟いたばかりの自分にとっては、
ホットな話題です。とても楽しみです。


スポンサーサイト



コメントの投稿

非公開コメント

プロフィール

コヒロ

Author:コヒロ
某自動車会社の子会社に就職した新入社員。某五年制大学のサークルでマイクロマウスを製作していました。現在も製作中。パソコン、自転車、読書などなど多趣味で中途半端な人間です。

最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
FC2カウンター
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QR