こんにちは、林です。
今回は内容としては走行軌道のデバッグに関してになりますが、
このブログで言いたいことは、軌道生成と生成した軌道の確認は面白いよということです。
走行軌道のグラフ化
対象について
このプロット機能の目的は走行のログを見るためになります。目視では追いきれない走行軌道の確認が目的です。走行中はケーブル等を接続することはできない状態になります。
数値として正しい挙動をしているか、想定している軌道になっているかの確認も行います。
最終的には、実際に走行できているかが重要になります。
取得するデータ
今回、取得しているデータになります。
- 系列のタイムスタンプ(ms)
- 計算上の速度、加速度、角速度、角加速度
- 計測上の速度、角速度
- (場合によって、duty等もデバッグの対象次第)
取得時間として、3秒間(3000ms)取得できれば大体のことは確認できると思います。
グラフ化の流れ
保存用の配列を準備して、走行時のデータを配列に保存、
PCと接続して、配列の中身をUARTで送信、PC上でTeraTerm等で確認します。

確認したデータをスプレットシート等に取り込んでグラフ化します。
ちなみにSTM32マイコンを使用している場合、STMCubuMonitorという便利なものがあります。

直進軌道のグラフ
全日本大会でのパラメータ関連で走行した際のグラフになります。
開発初期のグラフ
グラフでは定速区間はありませんが、台形軌道を実装して、走らせて見ると想定した走行にはなりませんでした。
軌道生成周りで修正したもの
目標軌道生成に関して
初期段階では、車体の現在状態から目標速度を随時計算していましたが、制御器の性能や操作次元の変換等が問題が複雑になってしまったので、予め目標軌道を一括で計算するシンプルなものに変更しました。
最低速度の初期値の導入
静止した状態から動く時、車体が動き出す最低の速度を初速として、入力することで静止摩擦の影響で車体が動かない時間を減らし、走り出しの際の意図しない停止時間をなくすことが狙いになります。
マイクロマウスの競技的に走行中の無駄な時間は極力減らしたいため、この処理を入れました。今回はフィードバック制御だけで動かしているので最低速度を使用しましたが、フィードフォワード制御を導入することで不連続的な目標を与えずに走行することができるようになると思われます。
減速後の低速走行
停止前の減速した速度は、走行できる最低速度を下回ることになります。これにより目標の停止位置に到達できず走行を終了してしまいます。また、随時軌道を生成する場合、減速し続けることになるので目標速度がいずれマイナスになり、暴走することになります。
最低速度を下回る場合、速度を一定にして加減速しないようにして、最低限目標の停止位置に止まれるようにしました。
ゲインの調整
使用した制御器はPID制御のみで、ゲインの調整は限界感度法になります。色々思う所はありますが、手っ取り早く動かすのには一番手が付けやすいと思っています。

以下のグラフはPゲインを変化させた時の様子になります。プロットができるとはっきりと挙動の違いがわかると思います。

Pゲインが高い
(個人の意見ですが、マイクロマウスに関してはIゲインを上げるととりあえず走ってくれる印象です。)
まとめ
軌道生成のデバッグについて書きました。
全日本大会までで直進、旋回、スラロームを確認できたので、斜め走行のターンの軌道とかどうなっているか興味が湧いています。

また、マイクロマウスで走行させる場合、走行の種類によって、ゲインを変更するのも良いと思いました。速度、角速度だけでなく、直進、旋回、スラロームといった軌道毎に変えたり、軌道の加減速でも変更できると走行の幅が広がると思いました。