(ひ)
この記事は「[マイクロマウス (2) Advent Calendar 2024](https://adventar.org/calendars/10766)」 13日目の記事です。
現在、2024年12月13日 25時13分。24時を超えても次の日を迎えられない。
----
[スラロームの設計](https://limlnote.net/FY2024/%E3%82%B9%E3%83%A9%E3%83%AD%E3%83%BC%E3%83%A0%E3%81%AE%E8%A8%AD%E8%A8%88%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6/)に、比較的簡単にスラロームを実装できる方法が紹介されている。
この考え方に基づけばターン速度、ターン径、角度が異なってもその都度調整を行わなくて良い可能性がある。
ただ、その記事で暗黙のうちに仮定されている「角加速期間における横方向のずれを無視する」
というのが妥当なのか疑問が残る。
ずれが蓄積すれば、スラロームが連続するような走行では問題になる。
そこで、
角加速期間における横方向の移動距離 $y$ について検討する。
<img src="slalom.png" width="">
なお、角加速度一定の場合、この角加速期間における走行軌道はクロソイド曲線になる。
機体の移動速度を $v$, 角度を $\theta$ とすると、
x方向, y方向それぞれの移動速度は
$$
\begin{aligned}
v_x &= v \cos\theta \\
v_y &= v \sin\theta
\end{aligned}
$$
である。スラローム中 $v$ は一定であるとし、
スラローム開始時点では $\theta = 0$ とする。
円弧状態に移行するまでの時間を $t$ とする。
角度は角速度 $\omega$ を積分して
$$
\theta = \int_0^t \omega dt
$$
であり、$\omega$ は角加速度 $\alpha$ を積分して
$$
\omega = \int_0^t \alpha dt
$$
である。
一定の角加速度 $\alpha$ を与えて角加速する場合、
$$
\begin{aligned}
\omega &= \alpha t \\
\theta &= \frac{1}{2} \alpha t^2
\end{aligned}
$$
となる。
よって、横方向の移動距離 $y$ は
$$
\begin{aligned}
y
&= \int_0^t v_y dt \\
&= v \int_0^t \sin\left(\frac{1}{2} \alpha t^2\right) dt
\end{aligned}
$$
である。
ところが、残念ながら一般に $\sin x^2$ の積分は初等関数では表せないらしい。
そこで、まずは $f(t) = \sin\left(\frac{1}{2} \alpha t^2\right)$ を近似する。
$t=0$ のまわりでテイラー展開すると
$$
f(t) = f(0) + f^\prime(0)t + \frac{f^{\prime\prime}(0)}{2!}t^2 + \Omicron(t^3)
$$
(文字 $\Omicron$ はオーダを表す記号であり、ランダウの記号というらしい。)
1階、2階微分は
$$
\begin{aligned}
f^\prime(t) &= \alpha t \cos\left(\frac{1}{2} \alpha t^2\right) \\
f^{\prime\prime}(t)
&= \alpha \cos\left(\frac{1}{2} \alpha t^2\right)
- \alpha^2 t^2 \sin\left(\frac{1}{2} \alpha t^2\right)
\end{aligned}
$$
なので、
$$
\begin{aligned}
f(0) &= 0 \\
f^\prime(0) &= 0 \\
f^{\prime\prime}(0) &= \alpha
\end{aligned}
$$
である。
$t \ll 1$ として3次以降の項 $\Omicron(t^3)$ を無視すると、
$$
f(t) = \sin\left(\frac{1}{2} \alpha t^2\right) \simeq \frac{1}{2} \alpha t^2
$$
と近似できる。
これは、$x \ll 1$ のときに $\sin x \simeq x$ と近似できるということからもわかる。
近似した結果を使うと、
$$
y = v \int_0^t \frac{1}{2} \alpha t^2 dt
$$
となり、
$$
y = \frac{1}{6} \alpha v t^3 \qquad \cdots (1)
$$
を得る。
円弧状態に移行するまでにかかるおおよその時間 $t$ を考える。
半径 $R$、速度 $v$ でスラローム走行するとき、必要な角速度 $\omega$ は、だいたい
$$
\omega = \frac{v}{R}
$$
であり、
$$
\omega = \alpha t
$$
であるから、
$$
t = \frac{v}{\alpha R} \qquad \cdots (2)
$$
を得る。
式 (1) および 式 (2) より、円弧状態に移行する時点における横方向の移動距離は
$$
y = \frac{v^4}{6 \alpha^2 R^3}
$$
となる。
具体的に2パターン考えてみる。
ここでは、探索走行を想定した遅いターンと、
最短走行を想定した速いターンを考える。
遅いターンとして、下記のパラメータでスラローム走行することを考える。
* $R=30$ mm
* $v=300$ mm/s
* $\alpha=300$ rad/s$^2$
このとき、
$$
y = 0.56 \quad \text{mm}
$$
であり、1 mmも移動しないことがわかる。
速いターンとして下記を想定する。
* $R=60$ mm
* $v=1500$ mm/s
* $\alpha=5000$ rad/s$^2$
このとき、
$$
y = 0.16 \quad \text{mm}
$$
となり、やはり 1 mm も移動しないことがわかる。
スラローム走行における角加速時の横方向の移動距離について検討した。
その結果、ほとんど横には移動しないことがわかった。
ということは、スラローム走行は「直線+円弧+直進」と捉えてもそれほど問題ない可能性がある。
(計算あってる???)