ฉันได้รับสิ่งนี้:
มุมระหว่างเวกเตอร์
ก่อนอื่นคุณต้องการมุมระหว่างจุดและไม่ใช่เฉพาะเวกเตอร์หน่วย
AB
( ผ่านการเขียนโปรแกรม Fx ):
θ=math.atan2(Bx−Ax,By−Ay)
มุมรถยอ
ถัดไป (และฉันสงสัยว่านี่เป็นปัญหาของคุณ) คุณต้องลบมุมหันเหของยานพาหนะออกจากการคำนวณคุณ ψθ
หัวเรื่อง vs Yaw
หากคุณกำลังใช้เข็มทิศสำหรับ "มุมหันเห" ของยานพาหนะของคุณนี่อาจเป็นความผิดพลาดของคุณได้เช่นกัน มุ่งหน้าไปและหันเหจะไม่เหมือนกัน ส่วนหัวของเข็มทิศเป็นศูนย์ตามแนวแกนบวกเพิ่มขึ้นเมื่อหมุนตามเข็มนาฬิกา :y
หันเหเป็นศูนย์ตามแนวแกนบวกเพิ่มขึ้นเมื่อหมุนทวนเข็มนาฬิกา :x
90 องศาทับซ้อนกันระหว่างการวัดเหล่านี้รวมกับการเพิ่ม (แทนที่จะลบ) ยานหันเหจากการหันเหที่ต้องการอาจเป็นสาเหตุที่สิ่งต่าง ๆ ทำงานเมื่อเป้าหมายของคุณอยู่ภายใน± 5 °และประพฤติไม่ดีที่± 90 °
การแปลงเป็นคอมโพเนนต์ X และ Y
จากตรงนั้นคุณบอกว่าคุณกำลังแปลงผลลัพธ์นี้เป็นส่วนประกอบและของมันส่งพวกมันไปยังหุ่นยนต์เป็นมุมม้วนและพิช ด้วยการแก้ไขข้างต้นคุณควรได้ผลลัพธ์ที่ต้องการ ณ จุดนี้ อย่างไรก็ตามการทำแผนที่องค์ประกอบเหล่านี้โดยตรงเพื่อเอียงมุมอาจเป็นปัญหาเนื่องจากคุณกำลังพิจารณาถึงความแตกต่างในตำแหน่งเท่านั้นไม่ใช่ความเร็ว (จริงๆแล้วโมเมนตัม) ของยานพาหนะ(θ−ψ)xy
การควบคุมแบบ PID
คุณอาจได้รับการบริการที่ดีที่สุดโดยใช้ลูปควบคุม PID สำหรับม้วนและระดับเสียงของรถยนต์ นั่นคือเมื่อคุณแก้ไขรหัสของคุณและสามารถเข้าถึงเป้าหมายของคุณได้ฉันเดาว่าคุณจะเริ่มแก้ไขปัญหาแทน - แกว่งไปมา PID ที่ปรับแต่งอย่างถูกต้องจะป้องกันไม่ให้เกิดขึ้นในขณะที่ยังช่วยให้คุณสามารถเข้าถึงเป้าหมายได้อย่างรวดเร็ว
แทนที่จะเสียบและเข้ากับ roll and pitch ให้พิจารณาว่าเป็นค่าความผิดพลาดที่ pid และ pitch ที่ยอมรับเป็นอินพุตxy