Open tmori opened 10 months ago
こうみると、ピッチ角が90度のケースがあるのか。。
物理的に拘束した状態で回転させたい
ジンバルの中心に機体を拘束して、外力与えて回してみたい
うーん、外力で積分は無理だと思う。実際にやるときは、モータートルクで回さないからなあ。
案は、マグネットを外界とインタラクションさせること。Unity に磁北線張って、角度だすとか? この絵のキャリブレーションではどのセンサの値とってるのだろ?
この絵のキャリブレーションではどのセンサの値とってるのだろ?
ジャイロセンサですね。
ジャイロは外界との関係性確立だから、ドローン単体ではできないと思っている。 あと、位置も積分と、もう一つGPSはUnityから取る手もあるね。
単体やるなら、外力でなく、角度を強制的に変えて、その時のmag値をかえすんかな。
この構成で機体を制御して、物理モデルから出てくる速度データなどをセンサにそのまま与えて、PX4に返す方法を考えてみましたが、機体が遠くに飛ばないように固定する条件が必要そうですね。。
いや、ジャイロとmag を勘違いしてた。ジャイロならやりようがある。 外界といったのは、magです。 トルクでやるなら、どこか一点固定して、みたいにコマ回すのだけど、別の力学が必要な予感。
トルクでやるなら、どこか一点固定して、みたいにコマ回すのだけど、別の力学が必要な予感。
おー。
トルクでなく、角速度を与えてやれば良さそう。
キャリブレーション用の関数をbody_frame内部に入れ込む。のが一番近道。
追加情報: ここに各センサーのキャリブレーションの仕方あり. https://qiita.com/ezokitsune/items/170ac3cc8b81b382f10a また,ここに PX4 <-> GrouondControl のキャリブレーションのオフィシャルドキュメントあり. https://docs.px4.io/main/en/config/compass.html 一回,各キャリブレーションの意味を表にまとめてみます.
調べ方:
もしや:
この辺りが解説部分。
おそらく、以下のパラメータをチューニングしていると思われる。
機体設定で auto tune できるのは、レートコントローラと姿勢コントローラのみ。
なので、それらの制御プログラムのパラメータが対象と考えるのが自然。
以下が調査結果。
https://docs.px4.io/main/en/advanced_config/parameter_reference.html#multicopter-rate-control
https://docs.px4.io/main/en/advanced_config/parameter_reference.html#multicopter-attitude-control
PIDのパラメータチューニングで解決できること
ということは以下の2つのissueは解決できなさそうな気がしてきた。
カルマンフィルタの推定値がずれている問題を調査すれば、上記の issueの問題点がより浮き彫りになりそうな予感。
あと、auto-tuningはセンサのキャリブレーションではなくて、PID制御パラメータのキャリブレーションのように思えてきたので、センサ単独のキャリブレーションもできた方が良さそう。
機体の姿勢を外部から変更するAPIはあるので、ちょっとやってみます。
コンパス:
加速度センサ:
calibration ディレクトリ使ってもらっていいですよ。
姿勢角を少しずつ増減できる:10度角くらい?
姿勢角を数値で指定できる:
姿勢操作用のアプリを作って、キーボード入力を受け付けて、上記を実現する。
設計できた!
せっかくなので、最近整理した箱庭アセットAPIを使って、第3の箱庭アセットを開発することにしました。
おー!
背景
たまにコンパスエラーが出るけれど、もしかするとキャリブレーションで解決できたりして?
QGCには、センサキャリブレーション機能がある。
実機の場合は、機体を手でもって傾けたりしてキャリブレーションするのだが、シミュレータだと難しい。
対応案
シミュレータから外部操作できるUIを作って、物理モデルに位置や姿勢を変更できるようにしてみてはどうか。