気圧センサーと加速度センサーを組み合わせて、高度(高さ)、上昇下降速度をなるべく正確(数cm~数十cm程)に算出できないかやってみました。使っているマイコンはArduinoです。
▼確認動画▼
※シリアル経由、Processingで可視化してます。
気圧センサーはBME280、6軸センサーはMPU6050を使ってます。はじめは気圧センサーだけで高さを検出しようとしたのですが、値が結構ゆらいでしまうため、6軸センサーと組み合わてやってます。
簡単に方法です。(今回の内容はドローンの高さ制御に組み込む前提です)
気圧センサーから高さ算出
気圧センサーからの高度(高さ)の算出ですが、気圧×高度の関係が次式のように定義されてます。
Hが高度[m]、Pが気圧[hPa]となります。(平均海水面での気圧が1013.15hPa、気温が15゜Cでの条件)
結構複雑な式でArduinoでこのまま演算するのはもったい無い気もします。今私が使おうとしている検出範囲はどんなに高くても30m程度なのでほぼ線形近似できる範囲です。1Pa≒8.3cmの近似で計算することにします。
で実際に気圧センサーのみから高さ検出してみました。
▼気圧センサーのみから高さ検出▼
センサーは机の上に40秒ほどそっと放置してます。が40cm程の振れ幅で検出してしまってます。(机上を0cmとしてます)非常に良い精度かと思うのですが、もう少し精度が欲しいです。さらにここから上昇・下降速度だすために微分するとかなり厳しそう・・。
ということで加速度センサー(6軸センサー)と組み合わせで精度を上げてみます。
加速度センサー(+ジャイロ)から速度と位置の検出
加速度センサーからは絶対座標の上下方向の加速度を検出します。まず加速度+ジャイロからなるべく正確なセンサーの傾き角を算出しておきます。
それで傾き角から、センサーを絶対座標軸に戻せば(回転すれば)、z方向(上下)の加速度がある程度予測できるかと・・。少し無理やりですが・・。
算出した上下方向の加速度から積分繰り返して速度、位置を算出します。
このままではドリフトがすごくて使い物にならないため、最後に先ほど算出した気圧センサーからの高さと速度で補正して完了です。
動画中ではセンサーがある程度傾いても上下方向の位置は割と算出できてるようにも見えます。値が取れるようになったのであとは数値モデルをドローンの制御プログラムに組み込んで行きたいと思います。
コメント
初めて今井と申します。素晴らしい!自分のスノーボードに着けて、ジャンプの高さを知りたいです。
パソコン無しで、基盤にジャンプの高さを表示できる液晶か何か着ける事は可能でしょうか?
今井さん、はじめまして。
スノボに取り付けるとなると相当な雑音が予想されます。
やれないことはないかと思いますが、
いろいろ工夫が必要にってくるのではないかと思います。
Arduinoでドローンを自作しようとしている者です.
高度維持の制御を組み込みたいのですが,気圧センサでは精度に欠けるので
加速度センサでセンサヒュージョンしたいと考えています.
補正の詳しい方法を教えていただけないでしょうか?
ussyさん、サイト拝見下さり有難うございます。
さてなかなか回答に困ってしまいますが、概要は本投稿で解説しておりますので、その中でもう少し分からないところを具体的にご質問頂けないでしょうか。