高度推定に加速度計をどのように使用できますか?


9

私は現在、最近飛行して安定した自律型クワッドコプターを実装していますが、大きな外乱が存在する場合は自動補正できません。これは、飛行中にさらに調整する必要があるPIDゲインの調整が不十分なためだと思います。

現在の進行度合:

  • 私の研究の範囲は屋内飛行のみであり、同僚によると気圧計の偏差は+ -5メートルであるため、気圧計を除外しました。
  • 私は現在、高度推定に超音波センサー(HC-SR04)を使用しています。これは0.3cmの解像度を持っています。しかし、超音波センサーのリフレッシュレート20Hzは遅すぎて、高度補正に十分な速度で応答できないことがわかりました。
  • カスケードpidコントローラースキームで速度PIDに使用する速度を取得するために加速度を統合することにより、加速度計からZ軸の加速度を使用して高さデータを取得しようとしました。高度PIDコントローラーの現在の実装は、超音波センサーからの位置入力でPコントローラーを使用するシングルループpidコントローラーです。
  • 重力による負の加速度測定値を考慮に入れていましたが、オフセットをどれだけ計算しても、負の加速度(たとえば-0.0034)が存在します。クワッドコプターを平らな面に置いたまま重力オフセットを計算し、加速度計のz軸から20,000個のサンプルを収集して平均化して、定数変数として保存されている「オフセット」を取得しました。次に、この変数が加速度計のZ軸出力から差し引かれ、オフセットが削除され、加速していない場合は「ゼロ」になります。質問で述べたように、負の加速度(例:-0.0034)がまだ存在しています。次に、私のクワッドは、常に高度を上昇させます。超音波センサーPコントローラーのみで、クワッドが50 cm振動します。

この一貫した負の加速度測定値をどのように効果的に処理できますか?

考えられる解決策:加速度計を使用して内部ループ(PIDコントローラー)とソナーセンサーを使用して外部ループ(Pコントローラー)で高度ホールドのカスケードPIDコントローラーを実行することを計画しています。私の顧問は、クワッドコプターが高度の遅いセンサーでも高度を保持できるようにするには、シングルループのPコントローラーで十分だと述べました。これで十分ですか?Pゲインだけでは、クワッドコプターが高度をオーバーシュートすることに気づきました。

ここに画像の説明を入力してください

  • Leaky Integrator:私はこの記事を見つけて、彼がLeaky integratorを使用して負の加速をどのように処理したかを説明しましたが、負のエラーが正のエラーになって問題を解決しないと思うので、なぜそれが機能するのか少し理解できません。私はあまりよく分からない。http://diydrones.com/forum/topics/multi-rotors-the-altitude-yoyo-effect-and-how-to-deal-with-it

  • 超音波センサーのみのシングルループPDコントローラー:これは遅いセンサーからのフィードバックを使用して実現可能ですか?

出典:


重力オフセットをどのように計算していますか?それはどのような加速度計ですか?データシートをリンクできますか?
チャック

1
振動は、ダンピングが必要であることを意味します!!!
holmeski 2016年

1
スタック交換では、コメントを追加するのではなく、質問を編集してコメントで要求された情報を追加することをお勧めします。コメントは質問と回答の改善に役立つためのものであり、注意散漫になるため、コメントは最小限に抑えるようにしています。質問への回答に必要なすべての情報が含まれている場合、コメントを整理する(削除する)ことができます。
マークブース

@チャック私は関連する情報で投稿を編集しました:)
user123456098

同じプロジェクトに取り組んでいます。現在、Arduinoを使用してクワッドコプターの姿勢を安定させるためにカスケードPIDコントローラーを実装しています。今は高度で作業したいと考えています。速度推定なしでそれを実装しますか、そして私は地球から体へのフレーム変換を推定する必要があるのか​​、
それとも

回答:


10

pixhawkに搭載された気圧計の高度分解能は10 cmです。それだけでは不十分な場合は、予測ステップで加速度計データを使用し、補正ステップで超音波センサーや気圧計を使用するカルマンフィルターを作成できます。

しかし、これで問題が解決するとは思いません。20Hzでの高度の正確な測定は、あなたがしようとしているすべてが高度を保持することであるなら、たくさんあるはずです。

コントローラーの時定数/固有振動数と減衰は何ですか?

今朝、あなたの質問を読み終えていなかったと思います(私のコーヒーの前でした)。imuからの加速度は、加速度に重力を加えたものです。imuの慣性加速度を取得するには、測定値から重力ベクトルを差し引きます。統合された加速度測定を制御することはできません。測定値はノイズによって破損しており、これを修正する方法はありません。

---質問の制御部分への回答

あなたがしようとしているすべてが高度を保持することであり、現在のところポジションを保持することに関心がないと仮定しましょう(このアプローチも同様に機能します)。そして、(理由の範囲内で)好きな推力をコマンドできると仮定すると、これは簡単な問題になります。

システムダイナミクスの最初のパスは次のようになります

z¨=umg

ポジティブなところ z上がっています。重力を扱うスロットルにホバーコンポーネントを追加しましょう。そう

u=ufb+uhover

新しいダイナミクスは次のようになります

z¨=ufb+uhovermg=ufbm

涼しい!次に、目的の高度に対応できるように制御則を設計します。

私たちの制御システムは、クワッドと希望の高度の間の仮想のバネとダンパーになります(これはpdコントローラーです)。

z¨=kp(zdesz)+kd(z˙desz˙)

これで、システムは2次システムのように動作するはずです。 kp そして kd 目的の減衰比と固有振動数を実現するように選択できます。

この時点で、加速度計データを統合することは状態推定を生成するための適切な方法ではないことを繰り返し述べたいと思います。何かをすばやくハックしたい場合は、適切なドロップオフ周波数のローパスフィルターにソナー測定値を送ります。あなたの車両は20Hzで振動することはないので、ソナーデータだけで十分です。


1
ありがとう、私はこれを4日前に実装し終えたところ、非常に微小な振動+ -2cmで動作しました
user123456098

それを聞いてうれしい!速度の推定が適切であると想定して、kdを増加させることで振動を
停止できるはずです。– holmeski
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.