Kontrol pesawat ruang angkasa modular

8

Saya mengembangkan game berbasis fisika dengan pesawat ruang angkasa.

Pesawat ruang angkasa dibangun dari lingkaran yang dihubungkan oleh sambungan. Beberapa lingkaran memiliki mesin terpasang.

Mesin dapat berputar di sekitar pusat lingkaran dan menciptakan daya dorong. Saya ingin dapat menggerakkan kapal ke arah atau memutar titik dengan mengatur rotasi dan dorong untuk masing-masing mesin kapal.

Bagaimana saya dapat menemukan rotasi dan dorongan yang dibutuhkan untuk setiap mesin untuk mencapai ini?

masukkan deskripsi gambar di sini

SSS
sumber
1
Jangan lupa untuk melihat kontrol pid en.wikipedia.org/wiki/PID_controller ini mencegah fluktuasi yang tidak perlu (ketidakstabilan sementara) atau penargetan yang tidak wajar.
huseyin tugrul buyukisik

Jawaban:

6

Mari kita bayangkan situasi sederhana sebuah kapal hanya dengan satu mesin. Untuk memindahkan kapal, kita cukup mengarahkan pendorong menjauh dari arah yang ingin kita tuju, dan mendorong keluar. Itu mendorong kita ke arah yang ingin kita tuju. Tidak mungkin memutar kapal yang hanya terdiri dari satu pendorong.

Mari skala kapal kami ke tiga mesin untuk membuatnya lebih menarik:

masukkan deskripsi gambar di sini

Jika kami ingin memindahkan kapal ini ke atas dan ke kiri, kami hanya mengarahkan semua pendorong kami ke arah yang berlawanan dan menembak:

masukkan deskripsi gambar di sini

Solusi yang sama dengan single thruster yang menangani pergerakan linear.

Tapi bagaimana kalau kita kehilangan pendorong? Kami memiliki muatan yang tidak sama?

masukkan deskripsi gambar di sini

Mengikuti strategi yang sama akan menyebabkan kapal berputar. Dalam banyak situasi, ini sebagian besar tidak dapat dihindari, dan dalam beberapa kasus lebih disukai karena akan mengorientasikan kapal untuk penggunaan yang lebih baik dari pendorong yang tersedia.

Salah satu strategi untuk mengurangi ini adalah pemerataan. Bagi kapal ke sumbu gerakan yang diinginkan:

masukkan deskripsi gambar di sini

Kemudian pastikan sisi kanan dan kiri sama rata. Jika mereka tidak skala output pendorong sampai mereka melakukannya. Ini dengan mudah dapat mengakibatkan tidak ada dorongan yang diterapkan. Terserah Anda untuk memutuskan apakah Anda ingin mendorong keluar menyebabkan rotasi atau memaksa pemain untuk mendesain ulang kapal mereka dengan mengatur ulang pendorong mereka.

Bagaimana dengan rotasi?

Pertanyaan ini menggambarkan gagasan itu dengan sangat baik.

masukkan deskripsi gambar di sini

Anda harus menghitung pusat massa . Kemudian hitung torsi yang disediakan oleh masing-masing pendorong. Beruntung bagi Anda, pendorong Anda berputar, sehingga Anda dapat memutarnya untuk memberikan torsi maksimum. Torsi maksimum akan datang dari sudut kanan ke lengan momen. Menerapkan jumlah torsi akan memutar tubuh di sekitar pusat massa. Anda juga dapat memilih beberapa titik rotasi sewenang-wenang lainnya seperti jembatan kapal.

Jika Anda ingin memastikan bahwa Anda berputar di tempat, Anda dapat mengurangi dorongan pendorong yang akan menyebabkan kapal Anda bergerak secara linear. Anda dapat melakukannya dengan menjumlahkan semua pendorong yang memiliki torsi positif dan semua yang memiliki torsi negatif, lalu bandingkan nilai absolutnya. Grup dengan nilai absolut yang lebih besar harus ditingkatkan untuk mencocokkan dengan nilai absolut dari kelompok lain.

Anda juga dapat menemukan sumber yang sangat membantu di Amit Patel .

masukkan deskripsi gambar di sini

Dia telah melakukan 4 bagian seri pada kapal ruang yang dapat dikonfigurasi di sini: bagian 1 , bagian 2 , bagian 3 , bagian 4

MichaelHouse
sumber
Ada solusi lain (lebih elegan) untuk ini. Namun idealnya, jika pemain menciptakan desain yang bagus, strategi ini harusnya berhasil. Jawaban ini hanya dimaksudkan sebagai titik awal dasar untuk jenis kontrol ini. Ada banyak ruang untuk perbaikan.
MichaelHouse
-5

Saya menyelesaikannya dengan pencarian lokal. Ini bekerja, tetapi kinerjanya hampir buruk. Mungkin lebih baik menggunakan mekanika teoretis tetapi saya tidak mengetahuinya.

SSS
sumber
4
-1, itu jawaban yang sangat samar. Bisakah Anda menjelaskan lebih banyak apa yang sebenarnya Anda lakukan untuk menyelesaikan masalah?
MichaelHouse