引き続きソフトを作っています。
SimConnectから得られる値について
モーションシミュレータではシミュレータ世界で体が受けるであろうGの方向を実世界の重力の方向に合わせる様に制御しようと思います。例えば離陸のために加速する時は後ろ向きにGが掛かるので座席を上向きに傾ける事で体にそれっぽい力が加わります。しかし以前の投稿で体にかかるGの方向がSimConnectから上手く取れない話を書きました。
SimConnectから得られる変数に「ACCELERATION BODY X(同様にY,Z)」と「ACCELERATION WORLD X(同様にY,Z)」という変数があります。
ドキュメントに詳しい説明が見当たりませんが、名前からするとこれらが体にかかる加速度およびワールド座標での加速度かと思います。しかしこれらの変数を表示させても妙に小さな値ですし思った様な変化をしていません。
下の4つのグラフは出来るだけ水平を保って右旋回を続けた時の変化です。
一番上のグラフは機体のピッチ、ロール、ヘディングを表します。単位はラジアンでヘディングの0(又は2π)は北を示しており、ノコギリ状のグラフになっているのは右方向に2回転した事を示します。
2番目のグラフは各方向への速度(単位はFeet/s)を示します。東西がvX、南北がvZなのでこの二つが90度位相がずれたサインカーブをほぼ描いており回転している事が判ります。
そして3番目のグラフが加速度を示すと思われる変数「ACCELERATION WORLD X(及びY,Z)」の値ですが、何を示しているのかよく分かりません。
そこで4番目のグラフに速度から算出した加速度をプロットしてみました。横軸が1秒ステップなので2番目のグラフの値を元に、それぞれ一つ前からの差を計算すればFeet/S2(フィート/毎秒毎秒)になるはずです。これだと最大120feet/S2で速度を90度ずらしたそれっぽい波形になっています。
・・・という事で速度の変化から計算した加速度を用いる事にします。
なお、この加速度に重力は含まれていないのでY軸方向に32.174feet/S2(=1G)足した上で機体座標に変換して座席の姿勢を決める事にします。
SimConnectの座標
SimConnectが出す値を調べた結果、各座標は下の様に表しているみたいです(座標変換するとき何度もこんがらがるので覚書き)。
以上で求めた座席の傾きをUSBのCOMポートに書き出し、後はArduinoでの処理となります。
モーション・フライトシミュレーター関連の投稿一覧
フライトシムのモーションシミュレータ化~9~
Microsoft Flight Simulator 2020 + モーション機構
モーションフライトシミュレータ強化~2~
モーションフライトシミュレータ強化
Maker Faire Kyotoにモーションシミュレータを持っていきたい
フライトシムのモーションシミュレータ化~8~
フライトシムのモーションシミュレータ化~7~
フライトシムのモーションシミュレータ化~6~
フライトシムのモーションシミュレータ化~5~
フライトシムのモーションシミュレータ化~4~
フライトシムのモーションシミュレータ化~3~
フライトシムのモーションシミュレータ化~2~
フライトシムのモーションシミュレータ化
フライトシムからデータを取出しアクチュエータを動かす。