Comments (15)
原因が一個わかりました。
M_inv * M が I になりませんでした。
原因は、精度が float だったため。double制度にしたら、Iになりました。
でも、まだ、ASSERTで引っかかっています。。
from hakoniwa-px4sim.
ASSERTの発生条件:
double thrust = 1.0;
double torque_x = 0.1;
double torque_y = 0.0;
double torque_z = 0.0;
エラー:
ERROR: Invalid caluculation of Omega to duty because of omega^2(0) is minus value(-1.63099e+07)...
Motor 0: Omega^2 = 0, PWM Duty = 0
Motor 1: Omega^2 = 4.89297e+07, PWM Duty = 0.874372
Motor 2: Omega^2 = 4.89297e+07, PWM Duty = 0.874372
ERROR: thrust:1 tx: 0.1 ty: 0 tz: 0
ERROR: Invalid caluculation of Omega to duty because of omega^2(3) is minus value(-1.63099e+07)...
from hakoniwa-px4sim.
成功パターン
double thrust = 1.0;
double torque_x = 0.01;
double torque_y = 0.0;
double torque_z = 0.0;
Motor 0: Omega^2 = 1.30479e+07, PWM Duty = 0.451524
Motor 1: Omega^2 = 1.95719e+07, PWM Duty = 0.553002
Motor 2: Omega^2 = 1.95719e+07, PWM Duty = 0.553002
Motor 3: Omega^2 = 1.30479e+07, PWM Duty = 0.451524
from hakoniwa-px4sim.
トルクの大きさが閾値を超えると、ありえないパターンになるらしい。
推力、トルクの上限値があると思われる。
from hakoniwa-px4sim.
wolfram との比較結果
glm:
Matrix M_inv:
0.25 -5 5 0.25
0.25 5 -5 0.25
0.25 5 5 -0.25
0.25 -5 -5 -0.25
wolfram
0.0004 -0.008 0.008 0.0004
-1.6e-05 0.008 -0.008 0.0004
-1.6e-05 0.008 0.008 -0.0004
-1.6e-05 -0.008 -0.008 -0.0004
計算ミスっているかも。。
from hakoniwa-px4sim.
Ω^2が負の値になる件について
- まず逆行列計算によって負の値になるのは数式の誤りではない。
- 与えている推力とトルクが物理的にあり得ない値にしてしまっているからと思われる
- 一方で、物理的にあり得る範囲で推力とトルクを計算することは難しい。
- どうしたら良いか?
from hakoniwa-px4sim.
案1.
推力とトルクの上限・下限を設定する。
- 推力:
- 上限:2 * T0(ホバリングする推力)
- 下限:0
- トルク:
- 上限:+(イナーシャの値)
- 下限:-(イナーシャの値)
from hakoniwa-px4sim.
ちょっと難しいので、結論としては、Ω^2が負になる場合は、0として扱右ことで対応します。
from hakoniwa-px4sim.
と思って、最終テストを実施したところ、まともに飛行しないことがわかった。。
タイムアップ感出てきたので、再び、ペンディングします...。
from hakoniwa-px4sim.
今回わかった問題は以下でコミット:
from hakoniwa-px4sim.
- Wolfram との差分は、1列目の符号を除いて、ぴったり、Wolf*(2500/4) = glm に見える。
- Ω^2 < 0 という値がでることは、モータ逆回転(ccw=-ccw)を意味している(より強いトルクが必要となるとき)。
from hakoniwa-px4sim.
Ω^2 < 0 という値がでることは、モータ逆回転(ccw=-ccw)を意味している(より強いトルクが必要となるとき)。
はい、その通りで、実験で、そのトルクを出すのに推力を強くしたらどうかなと思って、大きくしたらマイナスにならなくなりました。
ただ、どれだけあげれば良いのかはちょっとわからずです。
from hakoniwa-px4sim.
Wolfram との差分は、1列目の符号を除いて、ぴったり、Wolf*(2500/4) = glm に見える。
小数点になっていたので、見逃していました。確かに、値は一緒でした。
from hakoniwa-px4sim.
- 原因がわかったので、一旦、Wolfram は考えなくてよいとする。
- Ω^2 < 0 の解が出たときの対処方は、よくわからない。確かに T を大きく設定しなおすのはありかも。。。
- [T, τ] が出せない値である、と解釈すると、一旦制御不可エラーで返して、上位の状態に応じて目標値を緩めに設定する(p,q,rを上げすぎず徐々に上げるなど?)
from hakoniwa-px4sim.
>ちょっと難しいので、結論としては、Ω^2が負になる場合は、0として
これをやると、(本来は一次遅れなのだけど今回は直値計算なので)一瞬でモーターがストップすることになり、それでダメなんじゃないか。。。?現状維持、くらいならなんとかなるかも。もし現状維持ためすなら、前回値を持っておいて(あるいは取得して)一次遅れ計算もしてしまうのもありか。いっぺんにやると良くなさそうなので、もう少し考える。
from hakoniwa-px4sim.
Related Issues (20)
- Python APIでカメラ撮影すると復帰しないみたい。。 HOT 8
- v2.5.0リリース作業
- 3DLiDARの可変超配列対応
- Windows向けUnityアプリの公開
- Mac向けUnityアプリの公開
- リリースノート作成
- プラント物理モデルを、制御のために線形化して行列で表現してみたい。 HOT 12
- drone_physics の仕様バグ HOT 1
- 空気摩擦係数の3次元対応 HOT 5
- Resoniteと連携可能にする
- 地面の上でドローンが物理的に停止できるようにできないか HOT 5
- 東尋坊でドローン飛ばす時は高速で飛ばしたい。 HOT 14
- 東尋坊の外観調整 HOT 7
- 東尋坊でドローン移動させた時の違和感 HOT 2
- PX4連携しようとすると、Unityがエラーログを大量に出力する
- PX4のUbuntu向けドキュメント改修対応
- hakoniwaのUbuntu向けドキュメント改修対応
- [観光ドローン] VR対応
- v2.5.0のhakoniwa-px4-win.zipのパッケージミスがあった HOT 1
- Windows向けのPX4のIPアドレスが変更されている
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from hakoniwa-px4sim.