ปัญหาจลศาสตร์ผกผันสามารถแก้ไขได้อย่างไร?


20

จลนศาสตร์ไปข้างหน้าของแขนหุ่นยนต์สามารถแก้ไขได้อย่างง่ายดาย เราสามารถเป็นตัวแทนของแต่ละข้อต่อโดยใช้เมทริกซ์การแปลงDenavit – Hartenberg

ตัวอย่างเช่นถ้าข้อต่อเป็นตัวกระตุ้นเชิงเส้นอาจมีเมทริกซ์การแปลง:ith

Ti=[10000100001di0001] โดยที่ความยาวส่วนขยายถูกกำหนดโดยdi

ในขณะที่การเชื่อมโยงหมุนอาจจะ:

Ti=[100L0cosαisinαi00sinαicosαi00001]โดยที่คือ angle และคือความยาวของลิงก์LαL

จากนั้นเราจะสามารถหาตำแหน่งและทิศทางของ effector ท้ายที่สุดโดยการคูณเมทริกซ์ทุกการเปลี่ยนแปลง:{t_i}Ti

คำถามคือเราจะแก้ปัญหาที่ตรงกันข้ามได้อย่างไร

ศาสตร์สำหรับที่ต้องการตำแหน่งสิ้นสุด effectorหาพารามิเตอร์ ,ดังกล่าวว่าM มีวิธีการใดในการแก้สมการนี้MdiαiTi=M

คำตอบ:


11

ย้อนกลับไปในวันที่ฉันเรียนรู้ทำให้สิ่งนี้เป็นไปตามที่ฉันไปฉันใช้การไล่ระดับสีอย่างง่ายต่อไปนี้เพื่อแก้ปัญหา IK

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

โดยทั่วไปแล้วสิ่งนี้เรียกว่าการไล่ระดับสีไล่ตามหรือตามเขาไป ลองนึกภาพแขนหุ่นยนต์ที่มีอิสระสองระดับ:

IK

หมุนร่วมเล็กน้อยย้ายจุดสิ้นสุดในทิศทาง หมุนร่วมBเล็กน้อยย้ายจุดสิ้นสุดในทิศทางข ทั้งสองอย่างนี้เคลื่อนที่เราเข้าใกล้เป้าหมายได้ในปริมาณเท่ากันดังนั้นเราควรหมุนข้อต่อทั้งสองด้วยความเร็วเท่ากัน

หากเราต้องพล็อตกราฟของระยะทางไปยังเป้าหมายกับมุมร่วมมันจะมีลักษณะเช่นนี้:

IK

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

นี่ไม่ใช่วิธีเดียวที่จะแก้ปัญหาจลศาสตร์ผกผันได้ แน่นอนว่ามันไม่ใช่วิธีที่ดีที่สุดเช่นกัน

ข้อดี:

  • มันเป็นแนวคิดที่เรียบง่ายดีมากถ้าคุณเพิ่งเรียนรู้สิ่งนี้
  • เป็นเรื่องง่ายที่จะนำไปใช้แม้ว่าภาพการฝึกอบรม Denavit – Hartenberg จะทำให้คุณตกใจ
  • เป็นเรื่องทั่วไปมากที่ช่วยให้คุณใช้ข้อต่อทุกชนิด: แบบหมุนเชิงเส้นอย่างอื่นตราบใดที่คุณสามารถประเมินว่ามันทำให้จุดสิ้นสุดเคลื่อนที่อย่างไร
  • มันทำงานได้ดีแม้ว่าจะมีวิธีแก้ปัญหาไม่มากหรือน้อยก็ตาม

จุดด้อย:

  • ช้าใช้การวนซ้ำหลายครั้งเพื่อค้นหาวิธีแก้ปัญหา อย่างไรก็ตามมันก็โอเคถ้าคุณสามารถให้แขนจริงติดตามความคืบหน้าของอัลกอริทึมตามที่คำนวณได้
  • มันสามารถติดอยู่ในท้องถิ่นขนาดเล็ก IE อาจไม่พบทางออกที่ดีที่สุดหากพบวิธีที่ดีพอ

มีรายละเอียดเพิ่มเติมเกี่ยวกับเรื่องนี้ในเว็บไซต์เก่ามากของฉันคือพื้นผิวแสงที่มาเด้งสนุกหน้าสมาร์ทและยืดดูดี


3

มีวิธีแก้ไขปัญหานี้มากมายที่มุ่งเน้นไปที่จาโคเมทเมทริกซ์ สไลด์โชว์นี้ครอบคลุมวิธีการของจาโคเบียนและยังกล่าวถึงวิธีการประสานงานแบบวงกลมซึ่งฉันไม่คุ้นเคยด้วย

มีมากมายเหลือเฟือของทรัพยากรที่มีในเรื่อง - ถ้าคุณถาม google สำหรับ"ผกผันจลนศาสตร์จาโคเบียน"

นอกจากนี้ตรวจสอบบทที่ 5.3 ของเอกสารประกอบการบรรยายจากเอ็มไอทีเปิดหลักสูตรเบื้องต้นหุ่นยนต์


1

มีสองแนวทางกว้าง ๆ :

  • โซลูชันการวิเคราะห์ที่ได้รับจากการวางตัวก่อให้เกิดผลโดยตรงคำนวณพิกัดร่วมโดยตรง โดยทั่วไปการแก้ปัญหาจะไม่ซ้ำกันดังนั้นคุณสามารถคำนวณชุดของพิกัดร่วมที่เป็นไปได้ บางคนอาจทำให้หุ่นยนต์ชนกับสิ่งต่าง ๆ ในสภาพแวดล้อม (หรือตัวมันเอง) หรืองานของคุณอาจช่วยให้คุณเลือกวิธีแก้ปัญหาเฉพาะเช่น คุณอาจต้องการข้อศอกขึ้น (หรือลง) หรือหุ่นยนต์ให้แขนไปทางซ้าย (หรือขวา) ของลำตัว โดยทั่วไปมีข้อ จำกัด ในการได้รับโซลูชันการวิเคราะห์สำหรับหุ่นยนต์ 6 แกนจะใช้ข้อมือทรงกลม (แกนตัดทั้งหมด) โซลูชันการวิเคราะห์สำหรับหุ่นยนต์หลายประเภทได้รับการคำนวณมานานหลายทศวรรษและคุณอาจพบกระดาษที่ให้คำตอบสำหรับหุ่นยนต์ของคุณ
  • วิธีแก้ปัญหาตัวเลขดังที่อธิบายไว้ในคำตอบอื่น ๆ ใช้วิธีการปรับให้เหมาะสมเพื่อปรับค่าพิกัดร่วมจนกระทั่งจลศาสตร์การเคลื่อนที่ไปข้างหน้าให้ทางออกที่ถูกต้อง มีวรรณกรรมมากมายเกี่ยวกับเรื่องนี้และซอฟต์แวร์จำนวนมาก

ใช้ Robotics Toolbox ของฉันสำหรับ MATLAB ฉันสร้างแบบจำลองของหุ่นยนต์ 6 แกนที่รู้จักกันดีโดยใช้พารามิเตอร์ Denavit-Hartenberg

>> mdl_puma560
>> p560

p560 = 

Puma 560 [Unimation]:: 6 axis, RRRRRR, stdDH, fastRNE            
 - viscous friction; params of 8/95;                             
+---+-----------+-----------+-----------+-----------+-----------+
| j |     theta |         d |         a |     alpha |    offset |
+---+-----------+-----------+-----------+-----------+-----------+
|  1|         q1|          0|          0|     1.5708|          0|
|  2|         q2|          0|     0.4318|          0|          0|
|  3|         q3|    0.15005|     0.0203|    -1.5708|          0|
|  4|         q4|     0.4318|          0|     1.5708|          0|
|  5|         q5|          0|          0|    -1.5708|          0|
|  6|         q6|          0|          0|          0|          0|
+---+-----------+-----------+-----------+-----------+-----------+

จากนั้นเลือกการประสานงานการสุ่มร่วมกัน

>> q = rand(1,6)
q =
    0.7922    0.9595    0.6557    0.0357    0.8491    0.9340

จากนั้นคำนวณจลศาสตร์การเคลื่อนที่ไปข้างหน้า

>> T = p560.fkine(q)
T = 
   -0.9065    0.0311   -0.4210  -0.02271
    0.2451    0.8507   -0.4649   -0.2367
    0.3437   -0.5247   -0.7788    0.3547
         0         0         0         1

ตอนนี้เราสามารถคำนวณจลศาสตร์ผกผันโดยใช้โซลูชันวิเคราะห์ที่เผยแพร่สำหรับหุ่นยนต์ที่มีข้อต่อ 6 ข้อและข้อมือทรงกลม

>> p560.ikine6s(T)
ans =
    0.7922    0.9595    0.6557    0.0357    0.8491    0.9340

และ voila เรามีพิกัดร่วมดั้งเดิม

วิธีแก้ปัญหาเชิงตัวเลข

>> p560.ikine(T)
Warning: ikine: rejected-step limit 100 exceeded (pose 1), final err 0.63042 
> In SerialLink/ikine (line 244) 
Warning: failed to converge: try a different initial value of joint coordinates 
> In SerialLink/ikine (line 273) 

ans =

     []

ล้มเหลวและนี่เป็นปัญหาที่พบบ่อยเนื่องจากโดยทั่วไปแล้วพวกเขาต้องการวิธีแก้ปัญหาเบื้องต้นที่ดี มาลองกัน

>> p560.ikine(T, 'q0', [1 1 0 0 0 0])
ans =
    0.7922    0.9595    0.6557    0.0357    0.8491    0.9340

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

>> p560.fkine(ans)
ans = 
   -0.9065    0.0311   -0.4210  -0.02271
    0.2451    0.8507   -0.4649   -0.2367
    0.3437   -0.5247   -0.7788    0.3547
         0         0         0         1

และตรวจสอบว่ามันเหมือนกับการแปลงที่เราเริ่มต้นด้วย (ซึ่งก็คือ)

แหล่งข้อมูลอื่น ๆ :

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