目次
Section 1
屋外でテスト走行とスロットル関連の設定
前回までの設定で概ね机上で行う最低限の設定は完了しました。
今回からいよいよ屋外で走らせながら調整を行っていきます。
屋外では、まず [Manual ]モードで走らせて見て、走行に問題がないか確認しましょう。
恐らく、ステアリングを切っていないのに少しずつカーブして行ってしまう状態ではないでしょうか。
これは、ステアリングトリムの調整を机上でざっくり行った状態のままですので、実際に走らせながらさらに微調整を行う必要がある為です。
テレメトリーでPCのMission Plannerと接続できる状態にしてありますので、過去の記事「Ardupilot Roverの製作【11】モーターとサーボの構成」で紹介した方法で [ステアリングトリム ]の微調整をおこない、ステアリングを切らない状態で直進する状態まで持っていきましょう。
上記作業まで完了した前提で、今回は特にスロットルに関連する設定を紹介し、次回はカーブに関連する設定を紹介します。
既に走行できる状態なのに、なぜ追加でスロットルやカーブの設定が必要なのか?
これは、一口に車両型の機体と言っても、手のひらサイズのラジコンカーがベースになっている場合もあれば、実際に人が乗れる程度の大きさのものまで、幅広い機体が考えられます。
それぞれの走行性能は当然大きく異なりますので、FCがこの車両がどの程度の加速力やスピードがある車両なのか、どのくらいの速度でどのくらいの角度で曲がる事ができるのか、ということを理解していないと、良い形で補助したり、自動走行を実施する事ができないためです。
今回の作業は下記のArdupilot Roverの公式ドキュメントでも紹介されており、分かりやすいビデオも掲載されていますので、合わせてご覧ください。
Tuning Speed and Throttle
https://ardupilot.org/rover/docs/rover-tuning-throttle-and-speed.html#rover-tuning-throttle-and-speed
Section 2
スロットルベースラインの設定
スロットルベースラインの設定は、補助機能スイッチを割り当てると半自動で設定できます。
補助機能スイッチはフルパラメーターリストから設定する方法もありますが、今回は [設定/調整 ]タブ、[User Params ]ページから設定してみましょう。

画面左下のオプションを割り当てる区画で、希望のチャンネルに [Learn Cruise ]を割り当てましょう。
[フルパラメータリスト ]から操作する場合は
RCx_OPTION=50
で設定できます。
今回はRC13に設定しましたので、 [フルパラメータリスト ]で設定する場合は
RC13_OPTION=50
となります。
[Learn Cruise ]をスイッチに設定したら、 [Manual ]モードで50パーセントから80パーセントのスロットルで車両を走らせ、その間に [Learn Cruise ]を設定したスイッチをハイポジションに変更し、ローポジションに戻します。
Mission Plannerのメイン画面やメッセージ画面に “Cruise Learned: Thr:XX Speed:YY”というメッセージが表示されればOKです。
[設定/調整 ]タブ、 [ベーシックチューニング]ページで、 [クルーズ速度]と [クルーズ]の欄の数値が変更されていることを確認します。

今回は [クルーズ速度2.331283 ]、 [クルーズ78 ]と設定されました。
これでスロットルベースラインの設定は完了です。
Section 3
スロットルPIDの設定
続いて、スロットルPIDの設定を行ないます。
このPIDは [Hold ]モードと [Manual ]モード以外の全てのモードで使用されるとのことです。
[Hold ]モードと [Manual ]モード以外では、多かれ少なかれFCからの制御が介入しますので、 FCからの制御では必ず使われるパラメータということになります。

まず上記のように [フルパラメータリスト ]から
GCS_PID_MASK=2(スロットル)
に設定して、必要な情報をMission Plannerへ送信できるようにします。

次に、Mission Plannerのホーム画面で [チューニング ]のチェックボックスにチェックを入れ、グラフを表示させます。
このチェックボックスは非常に見つけづらいのですが、画面下部にあり、チェックするとウィンドウが追加されます。
さらに、そのグラフをダブルクリックし、たくさんの項目が出現しますので、 [piddesired ](目標値)と [pidachieved ](実際の値)をチェックしましょう。

これで表示されているグラフの内容が変更され、現在の実際の速度と目標速度が表現されます。
このグラフを見ながら、今度は [ACRO ]モードで車両を走行させ、二つのグラフがしっかり追従している状態にするのが目標です。

うまく追従しない場合は、 [設定/調整 ]タブ、 [ベーシックチューニング ]ページの [スピード2スロットル ]と記載されている区画のPとIの数値を上下に調整します。
[Pゲイン ]をはじめに調整しましょう。
車両の速度がぎくしゃくして不安定な場合は、Pのパラメータを下げる、逆に反応が遅いようだったら数値を上げてみましょう。
[Iゲイン ]は長期的な誤差を修正します。
目標速度に到達しない場合はIのパラメーターを上げ、速度が速すぎる、遅すぎるという状態を繰り返す場合は数値を下げます。
通常、IはPよりも低い値になるとのこと。
今回はPとIを同じ値にして同時に上げ下げし、テスト走行を繰り返しました。
[Dゲイン ]はゼロのままでも構わないようなのですが、短期的な速度変化時の出力を安定させるために必要に応じて調整を行うと良いみたいです。
今回は特に問題を感じなかったので [Dゲイン ]はゼロのままにしました。
上記がPとIをどちらも0.5に設定しテスト走行を行ったグラフです。

少し値を下げて試してみましょう。
上記はPとIをどちらも0.2に設定しテスト走行を行ったグラフです。
そこまで大きく違いを感じませんでした。

上記は、間をとってPとIをどちらも0.3に設定しテスト走行を行ったグラフです。
PとIを同じ値にして0.5、0.2、0.3でテストしましたが、どれも綺麗に追従できており、そこまで大きな違いがわかりませんでした。
全体としてあまり差は感じなかったのですが、特に急発進や急加速、急停止の際にも最も安定してグラフが追従していたように思えた0.3に設定し、次の設定に進みます。
最終的に問題が出てくる場合は戻って修正することにしましょう。
Section 4
Acceleration Limit の設定
この設定は他のチューニングほど重要ではないそうなのですが、FCがその車両にとって不可能な加速を実行しないように、調整を行うとより良いようです。
パラメーターとしては
- ATC_ACCEL_MAX
- ATC_DECEL_MAX
上記2つの設定を行ないます。
方法としては、まず先程グラフの内容を変更したのと同じ手順でグラフをダブルクリックし、出てきたリストから今度は [ax ]をチェックします。

グラフを表示した状態で、[Manual ]モードに切り替え、停止状態からフルスロットルで最高速度まで加速します。

今回テストした結果では稀に600程度まで数値が上がるものの、大体500程度でした。
表示される加速度を参考に、 [ATC_ACCEL_MAX ]および [ATC_DECEL_MAX ]パラメータを設定するのですが、このグラフで表示される値はcm/s/s単位なのに対して、 [ATC_ACCEL_MAX ]と [ATC_DECEL_MAX ]のパラメーターに入力する単位はm/s/sであるため、グラフで表示された数値を100で割った数値を入力します。

今回は500くらいだろうと言うことで、 [ATC_ACCEL_MAX ]と [ATC_DECEL_MAX ]を5に設定しました。
最後に確認のため [ACRO ]モードで機体を走らせ、車両の加速がスムーズで、減速が遅れすぎないかを確認して問題なければ設定完了となります。
Section 5
今回のまとめ
今回からいよいよ走らせながらの設定作業に入りました。
実際に機体を動かしながら、グラフの変化をモニターしつつ行う設定作業となっており、文章だけではわかりづらい部分もあったかと思います。
ArdupilotのドキュメントTuning Speed and Throttleに掲載されている動画も非常に参考になりますし、今回の記事についても追って動画の補足資料を作成したいと考えています。
次回は設定としては最後となるカーブに関連した設定を紹介します。
---
いつもご覧いただきありがとうございます。
DAYSCAPEのブログは、皆さまからの応援によって成り立っています。
「いいね」と思っていただけたら、無理のない範囲でご支援いただけると嬉しいです。
下記のボタンより、PayPalを通じて応援いただけます。
応援はこちら
※この応援は任意のものです。商品やサービスの購入を伴うものではありません。



