[ArduPilot] PIDチューニングした結果
はじめに
去年入手した、ArduPilot Mini Copterをもっと安定飛行させたかったのでチューニングを行いました。
今回使用する機体はこちらです。
屋内用の機体で、主にArduPilotの機能開発用途で使っています。GPSは付いていないため、自動飛行はできません。
今回チューニングを行うのは、ロール、ピッチ、ヨー、高度制御です。
高度制御では、気圧計より精度を出したかったので、VL53L1Xライダーを付けています。
チューニングは以下のページを参考に実施しました。
チューニング後の飛行
チューニング後に高度の精度を確認するため動画を撮影しました。
個人的には大満足の結果になりました。見ていてもほとんど上下に動いていませんね。
ログ確認
チューニング前と後で、どのように変化したのか、ログから違いを探っていきます。
注意点として、チューニング前のログはデフォルトのPID値を使用しているわけではなく、機体を組み立てた後に軽くチューニングを行った状態です。今回はそこから更に細かくチューニングをしました。
以下の方法で確認します。
データフラッシュログを使用
Mission Plannerでログを読み込む
ロール、ピッチ、ヨー、高度制御の4つを確認
DesiredとActualの違いを確認
ロール
チューニング前
チューニング後
チューニング前は約5度程度の誤差がありましたが、チューニング後には1度程度の誤差まで減らすことができました。
左側はロールを30度左右に傾け、右側はピッチを30度前後に傾けたときのログです。チューニング前のグラフではピッチを動かしているときにロールが少し不安定になっていることが分かります。
ピッチ
チューニング前
チューニング後
チューニング前は5度から10度程度の誤差があります。また、ロールを傾けている間(グラフの左側)、ピッチは不安定になっています。
チューニング後は、1度程度の誤差で、ロールを傾けている間も安定して姿勢を制御できています。
ヨー
ロールやピッチを動かしている間のヨーの安定性を確認します。
チューニング前
チューニング後
チューニング前は0度~30度の間で変化しています。
チューニング後は2、3度程度の誤差しかありません。
ロールやピッチのみを変化させているため、ヨーは常に同じ方向を向けている想定でしたが、グラフの右側ではDesiredの値も少し変化しています。モード1を使用しているのですが、ピッチとヨーは右のスティックで操縦します。ピッチを変化させる際に意図せずヨーを動かしてしまったため、多少の変化がありました。
ヨーを変化させたときのログも載せておきます。
オーバーシュートはなく、きれいに追従しているのが分かります。
高度
チューニング前
チューニング後
チューニング前は全体的に20cmほどオフセットしています。また、高度を変えた際に毎回オーバーシュートしており、40cmほどの誤差が発生している個所もあります。
チューニング後はオフセットはほとんどなくなり、最大誤差も約10cmほどまで減っています。
この記事の初めの方で掲載した動画のホバリング時のログも見てみます。
上記のログから、特に安定している個所を拡大したものが以下です。
約1分20秒の間で、1.18m~1.23mと5cmしか上下していません。
終わりに
チューニングした結果、実際に安定しているのかをログから確認してきました。
ロール、ピッチ、ヨー、高度のそれぞれの制御で誤差は減りました。チューニング後の飛行でも高度がかなり安定していることも確認できました。
DJIなどの完成された機体を飛ばしている方からしたら、チューニング後の飛行が当たり前かもしれませんね。
たまに、ArduPilotの飛行安定性はどうですか?と聞かれることがあります。
飛行安定性を高めるには、ハードウェアに何を使用するかやチューニングの知識も必要になります。
今回は、ArduPilotを使用した機体で、安定した高度維持ができるのかを検証したくてチューニングを始めました。ホバリング時の高度維持については安定していることを感じてもらえたと思います。
ただ、精度を高めるためにライダーを使ったため、地面が平らな場所でないと今回のような精度では飛行できないことに注意が必要です。
また、今回は位置制御を行っていないため、水平方向には移動してしまっています。見る人によっては、高度が安定していることよりも、水平方向に不安定ということに意識が向かってしまったかもしれません。
ArduPilotで安定飛行が可能ということを伝えるためにも、次回は手放しのホバリングで安定した飛行や高精度の自動飛行にチャレンジしようと思います。
※ 2022年6月2日追記
手放しホバリングと自動飛行にチャレンジしました。