|[[''前の日記''>日記/20070420]]|[[''次の日記''>日記/20070422]]| ~ *20070421 シミュレータのアイデア [#z080874a] **シミュレータの実現ステップ [#ec0e536f] とりあえず、こんなステップでシミュレータをつくろうかなと思います。当面はできるところまで。~ こんなステップでシミュレータをつくろうかなと思います。期間内にできるところまで。~ ~ 目的にあわせて、どのレベルの正確さを求めるか、が物理シミュレーター作りのポイント。~ ~ -''STEP1:''通称:&size(20){''LV1''};~ 最低限の動作をシミュレーションする。2次元、3自由度(X,Y,ヨー)の車両のシミュレーション。必要な各種パラメータは実機あわせ。実時間シミュレーションの離散化はシンプルなオイラー法。~ 2週間くらいで作るというのはこれくらいが限界じゃないでしょうか。。。~ 2週間くらいで作るというのはこれくらいが限界かな~ #ref(model.PNG,nolink); ~ -''STEP2:''通称:&size(20){''LV2''};~ 少し動力学、運動学をいれてみる。各種パラメータ(たとえば慣性モーメントとか、テンソルとか)は物性値から計算してみる。2次元、3自由度(X,Y,ヨー)の車両のシミュレーション。実時間シミュレーションの離散化はちょっとこったルンゲクッタで。 ~ ~ -''STEP3:''通称:&size(20){''LV3''};~ 3次元、6自由度の運動シミュレーション。ぜんぶ自作プログラミングだと厳しいかも。まっとうな物理エンジンとか、最低でもMATLABくらいは使いたい。 ~ ~ **実装よりの整理 [#id496a88] より実装よりにシミュレータへの要望を整理してみます。~ たとえばこんな感じでしょうか。~ 実装よりにシミュレータへの要望を整理してみると、こんな感じ~ ~ -''Windowsプラットフォームで動作すること''~ みんなのPCがWindowsだから。DirectXの過去のLIB使えそうというのもある。~ ~ -''今後のSTEP2,STEP3への物理計算拡張を考慮した設計とすること''~ 物理計算処理も階層化したほうがよさそうです。ソルバー単位になるかな。。~ ~ -''物理計算エンジン部分を取替え可能に設計すること''~ 物理計算と描画の境界線は意識しましょう。学生の頃、物理計算用のPG組んだとき、これを混ぜて痛い目を見ました。後から描画処理を追加するときに、計算処理に手をいれたくなるんです。その頃はASPECT指向知りませんでした。~ 物理計算と描画の境界線は意識しましょう。学生の頃、物理計算用のPG組んだとき、これを混ぜて痛い目を見た。後から描画処理を追加するときに、計算処理に手をいれたくなるもの。~ ~ -''パスファインダーをパーツのアセンブリとして表現すること''~ 将来パスファインダーを構成する部品が変わってもいいように。~ ~ -''3Dグラフィックスへの対応を考慮した設計とすること''~ やはり見た目的に3Dにも対応させたいので、スケール感をもって、2Dの計算をさせたほうが良いでしょう。~ いずれ3Dにも対応させたいので、スケール感をもって、2Dの計算をさせたほうが良いでしょう。~ ~ -''複数台のパスファインダーの同時シミュレーションに対応すること''~ 複数でアルゴリズム対決みたいなのをシミュレータ上でできたら楽しそうです。~ 複数でアルゴリズム対決みたいなのをシミュレータ上でできたら楽しそう。~ ~ -''C++で記述されたパスファインダー制御コードと連携できること''~ パスファインダーの制御コードはC++なので、Fortranでシミュレータを作ってはいけないということです。Windowsに依存しすぎてもいけないのでInterfaceを定義して、薄いWrapperをかませるような使い方を想定します。~ パスファインダーの制御コードはC++なので、薄いWrapperをかませるような使い方を想定します。~ ~ ~ **実装イメージ[#fe00dd29] もう少しイメージをふくらませると、こんな感じでしょうか。~ もう少しイメージをふくらませて~ #ref(arch0.PNG,nolink); ~ |[[''前の日記''>日記/20070420]]|[[''次の日記''>日記/20070422]]| ~