Bagaimana cara mencegah roda mobil raycast tergelincir ke samping?

11

Saya telah menulis mesin fisika mobil yang tidak realistis sebagai latihan pembelajaran, menggunakan artikel ini sebagai referensi.

Saya memiliki mobil yang bertabrakan dengan benar dengan medan dan menerapkan gaya suspensi yang benar untuk setiap roda. Masalah saya berikutnya adalah mencegah gerakan lateral roda. Sebagai contoh, jika saya menjatuhkan mobil saya di lereng, itu akan meluncur miring ke bawah lereng dan kemudian tidak pernah berhenti meluncur ke samping (karena tidak ada gesekan dalam bentuk apa pun).

Artikel yang ditautkan mengatakan bahwa "kekuatan samping" harus diterapkan, dikombinasikan dengan kekuatan ke depan, tetapi ia membahas bagaimana kekuatan samping itu dihitung.

Mengingat info tabrakan untuk setiap roda (persimpangan normal, dll.) Dan informasi tentang bodi kaku mobil, bagaimana saya bisa menghitung gaya samping yang sesuai untuk diterapkan pada bodi kaku untuk mencegah gerakan menyamping?

Kazade
sumber

Jawaban:

10

Kekuatan samping itu adalah komponen horizontal normal jalan sehubungan dengan gerakan maju mobil. Jalan dibelokkan seperti yang Anda diskusikan untuk memfasilitasi menikung dengan kecepatan lebih tinggi tanpa terbang keluar jalur dari momentum yang mendorongnya ke sudut luar. Perbankan mendorong kembali ke arah ban tidak berputar bebas dan mudah-mudahan bisa menolak; jika perbankan cukup curam, pusat gravitasi cukup tinggi atau kecepatan cukup lambat, mobil itu sendiri akan bertindak sebagai roda dan hanya berguling.

Ban memiliki jangkauan kemudi terbatas. Pasukan yang bertindak tegak lurus terhadap sumbu longitudinal (depan ke belakang) dilawan sebagian karena ban tidak akan berputar seperti itu. Anda dapat menghitung gaya yang bekerja menyamping terhadap jalan dari gravitasi dan kecepatan maju dan kemudian menghitung kekuatan yang tersisa setelah ban menggosok sebagian dari gesekan ini. Jika kekuatan yang tersisa cukup hebat untuk mengatasi kekuatan yang mendorong mobil ke jalan, mobil akan meluncur / tergelincir.

Berikut ini menggambarkan hal ini dan dibahas di sini (dengan dan tanpa gesekan) :

   https://upload.wikimedia.org/wikipedia/commons/thumb/5/5b/Banked_turn.svg/375px-Banked_turn.svg.png

Gaya yang bekerja secara horizontal adalah hal yang menarik di sini. Saat istirahat (hanya gaya yang bekerja karena gravitasi), mobil tidak akan meluncur menuruni lereng yang berjalan tegak lurus kecuali jika koefisien gesekannya sangat rendah ( misalnya jalan es).

Andon M. Coleman
sumber
7

Jawaban Andon tidak cukup memberi saya solusi, tetapi itu jelas menempatkan saya di jalur yang benar!

Begitu saya mulai berpikir roda berada di pesawat mereka sendiri (yang normal adalah vektor mencuat dari pusat - saya akan menyebut ini sebagai roda "normal"). Saya menyadari kekuatan samping hanyalah vektor yang diperlukan untuk 'dorong' kecepatan mobil ke pesawat ini. Vektor ini hanyalah roda "normal" dikalikan dengan skalar yang merupakan produk titik antara kecepatan dan "normal".

Inilah kode yang saya tentukan yang berfungsi dengan sempurna:

            // Now calculate the side force. Get the linear velocity
            auto vel = car->body()->linear_velocity();
            auto side_force = car->wheel_right_axis(i, closest_normal);

            // Find the length of the vector necessary to nullify the horizontal movement
            auto dot = kmVec3Dot(&vel, &side_force);

            // Scale the right vector to that length
            kmVec3Scale(&side_force, &side_force, -dot);

Dalam kode di atas, "proximity_normal" adalah normal dari medan roda bertabrakan dengan yang digunakan sebagai vektor 'atas' ketika menghitung roda "normal".

Kazade
sumber
2
Ya, saya tidak benar-benar berpikir itu akan memberi Anda jawaban yang Anda butuhkan, tetapi itu terlalu lama untuk dimasukkan ke dalam komentar;)
Andon M. Coleman