เปลี่ยนการวางแนวโดยใช้แรงบิด


9

สมมติว่าคุณมีวัตถุลอยอยู่ในอวกาศอย่างอิสระ คุณมีเวกเตอร์ที่คุณต้องการให้วัตถุนี้ชี้ไปและเวกเตอร์แทนทิศทางที่กำลังเผชิญอยู่ จากทั้งสองนี้คุณจะได้การหมุน (เมทริกซ์, ควอเทอร์เนียน, อะไรก็ตาม) ที่แสดงถึงการเปลี่ยนแปลงในการปฐมนิเทศเพื่อให้เวกเตอร์สองตัวอยู่ในแนวเดียวกัน

หากคุณมีความสามารถในการใช้แรงบิด (อนุพันธ์ของความเร็วเชิงมุม) กับวัตถุของคุณอะไรคืออัลกอริธึมที่ดีสำหรับการใช้แรงบิดเมื่อเวลาผ่านไปซึ่งจะไม่เกิน / เพิ่มปลายทาง

(ในกรณีนี้มันเป็นยานอวกาศที่ต้องการปรับทิศทางโดยอัตโนมัติในทิศทางของการเดินทางโดยใช้เครื่องขับดัน (Roll) ไม่เกี่ยวข้อง)


คุณกำลังพยายามเพิ่มประสิทธิภาพการใช้เชื้อเพลิง (แรงบิดรวมที่กระทำ) หรือความเร็วหรือไม่? นอกจากนี้เรือเริ่มต้นด้วยความเร็วเชิงมุมศูนย์ที่จุดเริ่มต้นของการดำเนินการนี้หรือไม่?
Justin L.

การปรับความเร็วให้เหมาะสมที่สุดคือการเร่งความเร็วแบบไม่มีที่สิ้นสุดและการปรับให้เหมาะสมสำหรับการใช้เชื้อเพลิงจะต้องมีการเร่งความเร็วเกือบเป็นศูนย์ ดังนั้นในทางปฏิบัติฉันจะใช้การแลกเปลี่ยนที่ดูดี สำหรับการเริ่มต้นความเร็วเชิงมุมหวังว่าฉันจะสามารถรวมมันไว้ในการคำนวณได้อย่างเป็นธรรมชาติ
Karantza

คำตอบ:


4

สามารถจัดการได้เช่นเดียวกับกรณีที่คล้ายกันสำหรับการเร่งความเร็วเชิงเส้น

ข้อเท็จจริงประการแรกที่ควรทราบ: เนื่องจากเรือเริ่มด้วยความเร็วเชิงมุมที่ศูนย์คุณต้องการให้มันจบด้วยความเร็วเชิงมุมที่ศูนย์ซึ่งหมายความว่าการเปลี่ยนแปลงความเร็วทั้งหมดจะต้องเท่ากับศูนย์

จากสิ่งนี้เราจะเห็นได้ว่าการรวมของการเร่งความเร็วในช่วงเวลานั้นต้องเท่ากับศูนย์ - จะต้องมีการเร่งความเร็วเชิงบวก "มาก" เหมือนกับการเร่งความเร็วเชิงลบ

ดังนั้นโซลูชันของคุณไม่ว่าจะเป็นอะไรก็ตามจะต้องถูก จำกัด ด้วยคุณสมบัตินี้: การเร่งความเร็ว "รวม" ไปข้างหน้าและข้างหลังเท่ากับ

นี่คือสิ่งที่รูปร่างของการเร่งความเร็วในช่วงเวลาที่ควรทำตาม:

กราฟแสดงความเร่งเมื่อเวลาผ่านไป

ดูที่นี่มีรูปแบบที่เป็นไปได้มากมายและรูปร่างการเร่งความเร็วของคุณอาจอยู่ใน! ให้เราตั้งสมมติฐานสำหรับรูปร่างของการเร่งความเร็วที่คุณต้องการเพื่อให้คำตอบที่ง่าย / รัดกุม

เพื่อประโยชน์ของคำตอบง่ายๆฉันจะมีการเร่งความเร็วเป็นหนึ่งในสามสถานะ: ไปข้างหน้าถอยหลังหรือศูนย์ ไปข้างหน้าและข้างหลังจะมีขนาดเท่ากันและสามารถเปลี่ยนสถานะได้ทันที (ไม่มีการเร่งขึ้นทีละน้อย)

คุณสามารถค้นหาการเปลี่ยนแปลงระยะทางสำหรับการเร่งความเร็วที่กำหนดในช่วงเวลาที่กำหนดด้วยสมการนี้:

s = 0.5*a*t^2

ทางออกที่ง่ายที่สุดที่นี่คือการเร่งจนกว่าคุณจะถึงจุดครึ่งทางจากนั้นชะลอตัวลงเหลือ

เราจะใช้Pระยะทางทั้งหมดที่คุณต้องการย้าย:

s = P/2
P/2 = 0.5*a*t^2
P = a*t^2
t^2 = P/a
t = sqrt(P/a)

ดังนั้นโดยทั่วไป:

  1. เร่งความเร็วaเป็นsqrt(P/a)หน่วยของเวลา (หน่วยอิงจากหน่วยของคุณสำหรับการเร่งความเร็ว)
  2. ชะลอตัวลงที่ขนาดเท่ากันในเวลาเดียวกัน

นี่ไม่ใช่ทางออกเดียว มันจะพาคุณไปที่นั่นในเวลาที่รวดเร็วที่สุด ( 2*sqrt(P/a)) แต่ถ้าคุณต้องการรุ่นที่ผ่อนคลายกว่านี้ล่ะ?

ในกรณีนี้คุณสามารถเร่ง 1 / 3rd ของทาง, ชายฝั่งสำหรับ 1 / 3rd และชะลอตัวในส่วนที่สาม หรือ 1 / 4th, ชายฝั่งสำหรับ 1/2, ชะลอตัว 1 / 4th เช่นกัน

หรือบางทีคุณอาจเร่งความเร็วเป็นระยะเวลาหนึ่งแล้วชะลอความเร็วลงบ้าง แต่รอจนกว่าคุณจะไปถึงตำแหน่งที่แน่นอนก่อนที่จะเริ่มชะลอตัวลง


คุณถูกต้องมากเกี่ยวกับกรณีนี้สำหรับการเคลื่อนที่เชิงเส้น ข้อกังวลหลักของฉันคือการใช้อัลกอริธึมแบบนี้กับเอนจินฟิสิกส์ที่ให้ฉันด้วยการควบคุมการเอียง, การขว้างและการหมุนเพื่อให้เกิดแรงบิด แกนเหล่านั้นไม่ใช่มุมฉากเมื่อคุณเริ่มหมุนดังนั้นฉันหวังว่าจะมีทางออกที่ดีกว่า อย่างไรก็ตามวิธีการจับเวลาของคุณยังคงมีผลบังคับใช้
Karantza

อา; ขอโทษฉันต้องไม่เข้าใจคำถามของคุณ ฉันไม่แน่ใจว่าฉันสามารถตอบได้อย่างละเอียดมากขึ้นโดยไม่เห็นรายละเอียดเครื่องยนต์ของคุณ แต่แน่นอนว่ามีวิธีที่จะใช้แรงบิดคงที่ในทิศทางที่คงที่หรือไม่?
Justin L.

ใช่คำตอบของคุณน่าจะใกล้เคียงที่สุด ฉันแก้ไขปัญหาเฉพาะของฉันด้วยการแฮ็กที่ควอเทอร์เนียนจนกว่าฉันจะได้บางอย่างซึ่งอัลกอริทึมเชิงเส้นจะใช้ ขอบคุณ!
Karantza
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.