วิธีใดที่แนะนำในการ จำกัด ตำแหน่งควอเทอร์เนียนฐานลอยและความเร็วเชิงมุม

Aug 20 2020

สำหรับวัตถุที่มีฐานลอยการหมุนในตำแหน่งทั่วไปจะแสดงเป็นควอเทอร์เนียน 4 มิติ อย่างไรก็ตามการหมุนในความเร็วทั่วไปยังคงแสดงเป็นเวกเตอร์การหมุนเชิงพื้นที่ 3 มิติ

มีวิธีที่แนะนำในการ จำกัด พวกเขาเช่น backward euler หรือไม่?

prog.AddConstraint(eq(q[t+1], q[t] + h[t] * qd[t+1]))

มันเป็นความเหมาะสมในการแปลงความเร็วเชิงมุมลงในแบบฟอร์ม quaternion เช่นที่นี่ ?

หรืออย่างที่ John T. Betts วางไว้ในวิธีปฏิบัติเพื่อการควบคุมและการประมาณค่าที่เหมาะสมที่สุดโดยใช้การเขียนโปรแกรมแบบไม่เชิงเส้น

คำตอบ

1 HongkaiDai Aug 21 2020 at 00:16

ฉันคิดว่าสำหรับกรณีการใช้งานของคุณคุณต้องการกำหนดข้อ จำกัด การรวมระหว่างจุดอ้างอิงที่อยู่ติดกันในการวางแผน ในกรณีนี้ฉันไม่แนะนำให้ใช้การรวมออยเลอร์q[n] = q[n+1] - qdot[n+1] * dtโดยตรง เหตุผลก็คือควอเทอร์เนียนควรเป็นไปตามข้อจำกัดความยาวของหน่วยเสมอ (กล่าวคือq[n]และq[n+1]ทั้งสองอย่างอยู่บนพื้นผิวของทรงกลมหน่วยใน 4D) ดังนั้นอนุพันธ์ของเวลาqdotจึงอยู่ตามพื้นผิวสัมผัสของทรงกลมหน่วยนี้กล่าวคือq[n+1] - qdot[n+1] * dtอยู่บนพื้นผิวสัมผัสนั้น ไม่มีจุดใด (นอกจากq[n+1]) บนพื้นผิวสัมผัสบนพื้นผิวของวงกลมหน่วย ดังนั้นข้อ จำกัดq[n+1] = q[n] + qdot[n+1] * dtสามารถทำได้ก็ต่อเมื่อdt=0คุณจับคู่กับข้อ จำกัด | q [n] | = | q [n + 1] | = 1. ในภาพคุณสามารถใช้รูปในส่วน "แทนเจนต์เป็นวงกลม" ของhttps://www.toppr.com/guides/maths/circles/tangents-to-the-circle/. ขอให้สังเกตว่าq[n+1] - qdot[n+1] * dtอยู่บนเส้นสัมผัสของทรงกลมและอยู่ในวงกลมเพื่อให้คุณไม่สามารถมีq[n]q[n] = q[n+1] - qdot[n+1] * dt

แต่ฉันขอแนะนำให้พิจารณาเงื่อนไขต่อไปนี้

q[n+1] = q[n] ⊗ Δq

q[n]วอเทอร์เนียนของฐานลอยอยู่ที่nจุดเวย์พอยท์ 'th q[n+1]คือควอเทอร์เนียนของฐานลอยที่n+1จุดเวย์พอยต์ เป็นผลิตภัณฑ์แฮมิลตันที่อยู่ระหว่างสองควอเทอร์เนียนq[n]และΔq. ตรงนี้คุณต้องคำนวณΔqจากความเร็วเชิงมุม

สมมติว่าความเร็วเชิงมุมเฉลี่ยระหว่างจุดเวย์พอยท์ที่ n และ n + 1 คือω∈ℝ³ ซึ่งหมายความว่าฐานลอยหมุนรอบแกนa = ω/|ω|ในอัตรา|ω|ดังนั้น

Δq = [cos(|ω|Δt/2), a*sin(|ω|Δt/2)]

ดู https://en.wikipedia.org/wiki/Quaternions_and_spatial_rotation#Using_quaternion_as_rotations สำหรับคำอธิบายเกี่ยวกับสมการด้านบน

หากคุณใช้ω[n+1]เป็นความเร็วเชิงมุมเฉลี่ยจากจุดอ้างอิงที่ n ถึงจุดอ้างอิง n + 1 (คล้ายกับการใช้ v [n + 1] ในออยเลอร์ถอยหลัง) ข้อ จำกัด ในการรวมของคุณคือ

q[n+1] = q[n] ⊗ [cos(|ω[n+1]|Δt/2), a*sin(|ω[n+1]|Δt/2)]

คุณสามารถใช้ปริมาณอื่นเป็นความเร็วเชิงมุมเฉลี่ยได้เช่น(ω[n] + ω[n+1])/2กัน