合計 昨日 今日

[Unity]自動車の動力系一式をプログラムでシミュレートする方法

フォーラムルール
フォーラムルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
Name: KIMI
[URL]
ぴよぴよ(521 ポイント)
Date: 2018年1月08日(月) 00:30
No: 1
(OFFLINE)

 [Unity]自動車の動力系一式をプログラムでシミュレートする方法

Unityで自動車の運転をしてあれこれするゲーム(ETSみたいな)を目指していろいろと試しているのですが、どうしても再現する方法がわからない部分があるのでどなたかお力添えをいただきたいです。
わからないのは、エンジンからタイヤまでの伝達系の再現で、それぞれの操作がお互いにどのように作用して…というところです。

再現したいのは、
・アクセル、ブレーキ、クラッチという入力(アナログ)
・エンジンの回転数と、アクセルを踏み込んだ量に応じた出力トルクの管理(厳密でなくてもある程度の値でOK。トルクカーブという機能を使って実装するつもり)
・クラッチ1またはニュートラルでアクセルを踏み込んだ時に、回転数が徐々に上がって徐々に落ちてくる(空ぶかし)の再現
・クラッチを徐々につないだ時にタイヤにトルクを伝えるだけでなく、エンジンにも負荷がかかり、ある程度回転数が落ちる(半クラッチ)
・半クラッチからつなぎすぎた時にエンジンが止まる
・ある程度の速度で走行時、アクセルを戻すとエンジンブレーキがかかる

など、主にMT車の動作に関係するところです。
「AT車でいいじゃないか」という意見、ごもっともですが、そこだけはどうしても譲れない部分といいますか…もはや意地というかロマンなんで突っ込まないでくださいm(_ _)m

現状ではWheelCollider(車体となるボディにくっつけることで車輪をシミュレートする。モータートルク、ブレーキトルク、ステアリングアングルを設定して使う)を使って、一応車として動作はします。
ただ限界なしにどこまでも加速してしまう状態です。(車速関係なしにトルク一定)
当たり判定の関係からWheelColliderではなくRigidBodyによる当たり判定(ヒンジジョイント、摩擦によるよりリアルな当たり判定が得られる)にしようかと思っています。

できることとしては
・車輪にトルクをかけて走行させる WheelColliderに駆動トルクを渡して、実際に車を走行させる(更新しなければずっとそのトルクで走り続ける)
・駆動輪の回転数を得られる WheelColliderであればRPMから直接回転数が所得できますし、RigidBodyでも角度から回転数を計算することはできます。
・コントローラからの入力をFloatで受け取れる 0から1の間で受け取れます。
くらいです。
走行抵抗をWheelColliderから直接受け取ることはできないです。
以上がUnityでの制約といったところです。

いろいろ考えたのですが、いまいち全部を再現できるようなプログラムが書けませんでした。
私は自動車整備を学んでいる身なので基本的な動作原理などに関しては、ある程度の専門用語でもわかります。
それでいても、こういう関係は整備には関係ないので全く知りません。
一応本屋に通って自動車工学の本を読んだり、ネットで調べたりしたのですが、関係する情報を見つけられませんでした。
おとなしく5000円ほどでそういったアセット(ライブラリ)を購入すれば簡単なのですが、遊び程度にそこまで払えないというのと、それ以前にバイトをしていないのでそんな金とてもじゃないですが出せないのと、せっかくならこういうところに関する知識もつけたいというのと、自分でプログラム書きたい(DIY)など、とにかく自分でやりたいです。ので「おとなしくアセットを買いましょう」というのはやめてください。

こういったことに関係する情報のページや、考え方など、なんでもいいので教えてほしいです。
お願いしますm(_ _)m


※この掲示板にこういうUnityのことを挙げてもいいのかわからないのですが、一応C言語なので許してください。

Name: あたっしゅ
[URL]
中級者(10,959 ポイント)
Date: 2018年1月09日(火) 08:03
No: 2
(OFFLINE)

 Re: [Unity]自動車の動力系一式をプログラムでシミュレートする方法

>おとなしく5000円ほどでそういったアセット(ライブラリ)を購入すれば簡単なのですが、遊び程度にそこまで払えないというのと、それ以前にバイトをしていないのでそんな金とてもじゃないですが出せないのと、せっかくならこういうところに関する知識もつけたいというのと、自分でプログラム書きたい(DIY)など、とにかく自分でやりたいです。ので「おとなしくアセットを買いましょう」というのはやめてください。

 コンピュータ関連の役立つ資料の本って、\5,000.- で買えれば安い方ですよ。\5,000.- 払えないなら、プログラムやめた方がいいです。
手提鞄あたっしゅ、[MrAtassyu]

Name: あたっしゅ
[URL]
中級者(10,959 ポイント)
Date: 2018年1月09日(火) 08:07
No: 3
(OFFLINE)

 Re: [Unity]自動車の動力系一式をプログラムでシミュレートする方法

 わしは、Mathematica の本(日本語版、定価 \9,500.-)を BookOff で \105,- で手に入れましたけれども、そんなのは、そうそう、あることでありません。
 必要ならば、英語の本を買って読む気合いがありますか ?
手提鞄あたっしゅ、[MrAtassyu]

Name: よもやま
[URL]
かけだし(1,184 ポイント)
Date: 2018年1月09日(火) 11:58
No: 4
(OFFLINE)

 Re: [Unity]自動車の動力系一式をプログラムでシミュレートする方法

KIMI さんが書きました:現状ではWheelCollider(車体となるボディにくっつけることで車輪をシミュレートする。モータートルク、ブレーキトルク、ステアリングアングルを設定して使う)を使って、一応車として動作はします。
ただ限界なしにどこまでも加速してしまう状態です。(車速関係なしにトルク一定)


エンジンと駆動輪の関係について触れられておられないのですが
エンジンと駆動輪の関係:FF、FR、RR、MR etc
駆動輪:2WD、4WD
全てを対象とされておられるのでしょうか。
シミュレートする構造をFR、2WDとして絞り込んではいかがでしょうか。
シミュレートというと下記Wikiペディアのような機構動作に近いのかな??
クランクシャフト(Wikiペディア)

Name: よもやま
[URL]
かけだし(1,184 ポイント)
Date: 2018年1月09日(火) 22:57
No: 5
(OFFLINE)

 Re: [Unity]自動車の動力系一式をプログラムでシミュレートする方法

KIMI さんが書きました:ただ限界なしにどこまでも加速してしまう状態です。(車速関係なしにトルク一定)
当たり判定の関係からWheelColliderではなくRigidBodyによる当たり判定(ヒンジジョイント、摩擦によるよりリアルな当たり判定が得られる)にしようかと思っています。


限界なしに加速しているのは
入力値からの変化が正しく処理されていないかもしれません。
(想像の範囲ですが)

Name: あたっしゅ
[URL]
中級者(10,959 ポイント)
Date: 2018年1月10日(水) 04:48
No: 6
(OFFLINE)

 Re: [Unity]自動車の動力系一式をプログラムでシミュレートする方法

自分の作成したプログラムを公開すれば、誰かが直してくれるかもしれません。
しかし、「デバッグを人にやらせるな」との罵声を受けるかもしれません。
手提鞄あたっしゅ、[MrAtassyu]

Name: よもやま
[URL]
かけだし(1,184 ポイント)
Date: 2018年1月10日(水) 10:35
No: 7
(OFFLINE)

 Re: [Unity]自動車の動力系一式をプログラムでシミュレートする方法

実現に際しては
1.astah community
2.Freemind
などのツールも使ってクラス構成や頭の中にあるイメージを整理してみるのもいいかもしれません。

Name: KIMI
[URL]
ぴよぴよ(521 ポイント)
Date: 2018年1月10日(水) 23:03
No: 8
(OFFLINE)

 Re: [Unity]自動車の動力系一式をプログラムでシミュレートする方法

>>あたっしゅさん
5000円で買うのはアセットといって、Unity上で使えるライブラリのようなものです。
物自体はいろいろな種類があり、軽く探した限り一番安いもので50ドル、約5000円でした。

本に関しては内容があれば5000円でも買わないことはないですが、5000円を本にポンとつぎ込めるほどには裕福ではないので、内容をある程度読んで、満足したうえで購入したいと思っているため、今のところ購入に踏み込んだ本はありません。
近所にそういった本が置いてある本屋がなく、中古本屋に頼っているというのもありますので、近いうちに大きな本屋に行くことがあれば探してみます。

英語の本は、日本語がなければ最悪読んでもいいです。
意訳程度には理解できますし、電子工作をしたりするときはよく海外のサイトを読んだりします。


>>よもやまさん
そうですね…。今実験で使っている車はFR車なのですが、理想はすべての駆動方式です。
ただそこに関してはプログラム数行でどうとでも変えられるので、あまり考えていません。
駆動方式のシミュレートではなくて、エンジンの出力、クラッチによる抵抗、損失等を簡易的に計算できるプログラムの考え方が、頭が固いため思いつかず、質問させていただいた次第です。


>>あたっしゅさん
恥ずかしながら今のところデバッグできるような段階まで行ってないです。
プログラムの考え方の時点で躓いてます。


>>よもやまさん
そういうツールがあるんですね…知りませんでした。
FreeMindに関しては今のところOneNoteでまとめているので使うことはないかと思いますが、astah communityはソフトの仕様などを比べたうえで類似のソフトなどを導入してみようかと思います。
ありがとうございます。

Name: よもやま
[URL]
かけだし(1,184 ポイント)
Date: 2018年1月11日(木) 10:31
No: 9
(OFFLINE)

 Re: [Unity]自動車の動力系一式をプログラムでシミュレートする方法

少し本題とずれるかもしれませんが
現在作成されているプログラムの構成を見つめなおす際
ソースコードからモジュールやクラス構成のドキュメント(HTML,RTFなど)を作成するツールを紹介しておきます。
Doxygen
Graphviz
Doxygenに関してはソースコード上のコメントをJavadocタイプなどの様式に合わせることにより
関数の説明や引数、戻り値の情報も収集してもらえます。


Return to C言語何でも質問掲示板

オンラインデータ

このフォーラムを閲覧中のユーザー: なし & ゲスト[10人]