দুটি বিস্তৃত পদ্ধতি আছে:
- বিশ্লেষণাত্মক সমাধানগুলি, একটি শেষ-এফেক্টর পোজ দেওয়া, সরাসরি যৌথ স্থানাঙ্কগুলি গণনা করুন। সাধারণভাবে সমাধানটি অনন্য নয়, সুতরাং আপনি সম্ভাব্য যৌথ স্থানাঙ্কের একটি সেট গণনা করতে পারেন। কিছু রোবটকে তার পরিবেশে (বা নিজেই) জিনিসগুলি আঘাত করতে পারে বা আপনার কাজটি আপনাকে কোনও নির্দিষ্ট সমাধান চয়ন করতে সহায়তা করতে পারে, যেমন। আপনি কনুইটিকে উপরে (বা নীচে), বা রোবটটির হাতটি তার কাণ্ডের বামে (বা ডানদিকে) রাখতে পছন্দ করতে পারেন। সাধারণভাবে বিশ্লেষণাত্মক সমাধান পাওয়ার ক্ষেত্রে বাধা রয়েছে, 6-অক্ষের রোবটের জন্য, একটি গোলাকার কব্জি (সমস্ত অক্ষকে ছেদ করা) ধরে নেওয়া হয়। বিভিন্ন ধরণের রোবটের বিশ্লেষণাত্মক সমাধানগুলি কয়েক দশক ধরে গণনা করা হয়েছে এবং আপনি সম্ভবত একটি কাগজ খুঁজে পেতে পারেন যা আপনার রোবোটের জন্য একটি সমাধান দেয়।
- অন্যান্য উত্তরগুলিতে বর্ণিত সংখ্যাসূচক সমাধানগুলি সামনের দিকের গতিবিধি সঠিক সমাধান না দেওয়া পর্যন্ত যৌথ স্থানাঙ্কগুলি সামঞ্জস্য করতে একটি অনুকূলকরণ পদ্ধতির ব্যবহার করে। আবার, এটিতে একটি বিশাল সাহিত্য এবং প্রচুর সফ্টওয়্যার রয়েছে।
ম্যাটল্যাবের জন্য আমার রোবোটিক্স সরঞ্জাম বাক্স ব্যবহার করে, আমি ডানাভিট-হার্টেনবার্গ পরামিতিগুলি ব্যবহার করে একটি সুপরিচিত 6-অক্ষের রোবটের একটি মডেল তৈরি করেছি
>> 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
এবং ভয়েলা, আমাদের মূল যৌথ স্থানাঙ্ক রয়েছে।
সংখ্যাগত সমাধান
>> 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
যা এখন একটি উত্তর দেয় তবে এটি বিশ্লেষণাত্মক সমাধানের চেয়ে আলাদা। যদিও এটি ঠিক আছে, যেহেতু আইকে সমস্যার একাধিক সমাধান রয়েছে। আমরা সমাধানটি ফরওয়ার্ড কাইমেটিকস গণনা করে যাচাই করতে পারি
>> 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
এবং যা আমরা যে রূপান্তরটি দিয়ে শুরু করেছি (এটি এটি) একইরূপে এটি পরীক্ষা করা।
অন্যান্য উৎস: