یونٹ 2 / 9

روبوٹکس اور موشن کنٹرول میں مصنوعی ذہانت

فائدہ:

  • اے آئی کی مدد سے فارورڈ/انورس کائینیٹکس اور ٹریکٹری پلاننگ کے مسائل کو ترتیب دینے اور حل کرنے کی صلاحیت
  • روبوٹ کی مشترکہ حدود، رفتار اور سرعت کی رکاوٹوں کو پرامپٹ کے تناظر میں دے کر محفوظ مدار پیدا کرنے کی صلاحیت
  • عددی اور جسمانی طور پر AI کے ذریعہ تیار کردہ کینیمیٹک اور ٹریجیکٹری آؤٹ پٹ کی تصدیق کرنے کی صلاحیت

روبوٹ کے بازو کے آخر میں گریپر کو خلا کے ایک خاص مقام تک، ایک مخصوص سمت میں لانا؛ یہ آسان لگتا ہے، لیکن اس کے پیچھے حرکیاتی مساوات، مشترکہ حدود، انفرادیت اور رفتار کی منصوبہ بندی موجود ہے۔ یہاں، میکاٹرونکس انجینئر مثلثیات، لکیری الجبرا اور کنٹرول تھیوری کو ایک ساتھ استعمال کرتا ہے۔ مصنوعی ذہانت اس عمل میں ایک طاقتور مدد ہے: یہ فارورڈ کائیمیٹکس کی مساوات قائم کر سکتی ہے، الٹا حرکیات کے لیے حل کے طریقے تجویز کر سکتی ہے، رفتار/سرعت کی رکاوٹوں کے مطابق ایک رفتار کو پیرامیٹرائز کر سکتی ہے۔ تاہم، روبوٹکس میکاٹرونکس کے شعبوں میں سے ایک ہے جس میں سب سے زیادہ جسمانی خطرہ ہے۔ اگر AI کی طرف سے تیار کردہ زاویہ ترتیب کو بغیر تصدیق کے روبوٹ کو بھیجا جاتا ہے، تو بازو خود، ماحول یا آپریٹر کو مار سکتا ہے۔ اس یونٹ میں ہم دیکھیں گے کہ AI کے ساتھ کائینیٹکس اور ٹریجیکٹری پلاننگ کو کیسے ترتیب دیا جائے اور اس کی تصدیق کی جائے۔

فارورڈ اور انورس کائینیٹکس

فارورڈ کنیمیٹکس (FK): اگر مشترکہ زاویہ معلوم ہوں تو اختتامی اثر کرنے والے کی پوزیشن اور واقفیت کا پتہ لگانا۔ اس کا ایک ہی حل ہے، وہ براہ راست ہے۔

الٹا کائینیٹکس (IK): اگر اختتامی فنکشن کی مطلوبہ پوزیشن معلوم ہو تو مشترکہ زاویوں کو تلاش کرنا جو یہ فراہم کرے گا۔ اس میں عام طور پر ایک سے زیادہ حل ہوتے ہیں (جیسے کہنی اوپر/نیچے)، بعض اوقات اس میں کوئی حل نہیں ہوتا ہے (قابل رسائی نقطہ)، بعض اوقات اس میں لامحدود حل ہوتے ہیں (واحدیت)۔

تصور

ان پٹ

آؤٹ پٹ

حل کی تعداد

آگے کائیمیٹکس

مشترکہ زاویہ

انتہائی پوزیشن / واقفیت

اکیلا

الٹا حرکیات

انتہائی پوزیشن / واقفیت

مشترکہ زاویہ

متعدد/کوئی نہیں/لامحدود

دو مشترکہ پلانر بازو کے لیے، الٹا کائینیٹکس AI میں ترتیب دیا جا سکتا ہے اور دستی طور پر اس کی تصدیق درج ذیل ہے:

numpy کو npdef inverse_kinematik_2r(x, y, L1, L2) کے طور پر درآمد کریں: """IK برائے 2-جوائنٹ پلانر بازو۔ ریڈینز میں زاویہ لوٹاتا ہے (کہنی سے نیچے کا حل)۔""" r2 = x**2 + y**2 # ایکسیسبیلٹی چیک: کیا کام کی جگہ میں نقطہ ہے؟ اگر np.sqrt(r2) > (L1 + L2) یا np.sqrt(r2) < abs(L1 - L2): raise ValueError("پوائنٹ قابل رسائی کام کرنے کی جگہ سے باہر ہے") cos_t2 = (r2 - L1**2 - L2**2) / (2 * L1 * L2) cos_t2, cos_t2 = cos_t. 1.0) # عددی حفاظت t2 = np.arccos(cos_t2) # کہنی نیچے t1 = np.arctan2(y, x) - np.arctan2(L2*np.sin(t2), L1 + L2*np.cos(t2)) واپسی L1=L2=1، ہدف (1,1) -> متوقع t2=90 ڈگری اسپرنٹ(الٹا_کائنمیٹک_2r(1.0, 1.0, 1.0, 1.0)) # ~ (0.0, 90.0)

یہاں اہم لائنیں وہ ہیں جہاں AI اکثر چھوڑ دیتا ہے: رسائی کی جانچ (ورک اسپیس میں نقطہ ہے) اور `np.clip` (راؤنڈنگ کی خرابی کی وجہ سے آرکوس ان پٹ کو ±1 سے آگے جانے سے روکتا ہے)۔ ان دو تحفظات کے بغیر، کوڈ NaN پیدا کرے گا یا غلط مقام پر کریش کرے گا۔

ٹپ: جب IK ریزولوشن طلب کریں تو، واضح طور پر AI کو بتائیں کہ "ایکسیسبیلٹی کنٹرول شامل کریں اور arccos ان پٹ کو کلپ تک محدود کریں"۔ یہ دونوں لائنیں ان خاموش غلطیوں کو روکتی ہیں جو میدان میں سب سے زیادہ سر درد کا باعث بنتی ہیں۔

مشترکہ حدود، یکسانیت اور متعدد حل

ایک حقیقی روبوٹ کے ہر جوڑ میں زاویہ کی حد ہوتی ہے (مثال کے طور پر -170° سے +170°)، رفتار کی حد، اور سرعت کی حد۔ یہاں تک کہ اگر IK ریاضی کے اعتبار سے درست زاویہ دیتا ہے، تو اسے استعمال نہیں کیا جا سکتا اگر وہ زاویہ جوائنٹ کی طبعی حد سے باہر ہو۔ مزید برآں، روبوٹ کچھ کنفیگریشنز میں یکسانیت میں آتا ہے: دو محور سیدھے ہوتے ہیں، ایک ڈگری کی آزادی ختم ہو جاتی ہے، اور مشترکہ رفتار ایک چھوٹی ٹپ حرکت کے لیے لامحدودیت پر جانے کی کوشش کرتی ہے۔

اسی لیے صرف HR حل کافی نہیں ہے۔ ہر حل کو ایک قابل قبول فلٹر پاس کرنا چاہیے:

def solution_gecerli_mi(acilar_deg, limits_deg): """درد: [t1,t2,...], limits: [(min,max),...]""" درد کے لیے, (amin, amax) in zip(acilar_deg, limits_deg): اگر نہیں تو (amine <= درد <= amax): واپسی: False}: واپس deg ({amine},{amax}) سوائے" واپسی True, "OK" limits = [(-170, 170), (-120, 120)]print(cozum_valid_mi([0.0, 90.0], limits)) # (True, 'OK')print(cozum_valid_mi, 0limit,0mi) #5. (جھوٹا، 'مشترکہ حد سے تجاوز کر گیا...')

AI IK کا "ریاضی" حل دے سکتا ہے۔ لیکن مشترکہ حدود اور یکسانیت سے بچنا آپ کے سسٹم کے لیے مخصوص ہیں اور اسے فوری طور پر سیاق و سباق کے طور پر دیا جانا چاہیے۔

مداری منصوبہ بندی

روبوٹ کو پوائنٹ A سے پوائنٹ B تک پہنچانا دو زاویوں کے درمیان سیدھی لکیر کھینچنے کے بارے میں نہیں ہے۔ اچانک رفتار میں تبدیلی مکینیکل جھٹکا اور کمپن پیدا کرتی ہے۔ اس کے بجائے، نرم پروفائلز استعمال کیے جاتے ہیں: trapezoidal velocity profile (مستقل ایکسلریشن–مستقل رفتار–مستقل کمی) یا S-curve (ہموار، جہاں ایکسلریشن بھی محدود ہے)۔ AI کو ایک رفتار پیدا کرتے وقت، آپ کو ہدف، دورانیہ اور رکاوٹیں دینی چاہئیں۔

numpy کو npdef trapez_yorunge کے طور پر درآمد کریں فاصلہ_اسپیڈ = 0.5 * a_زیادہ سے زیادہ * t_speed** 2 اگر 2 * فاصلہ_رفتار > فاصلہ: # مثلث پروفائل (v_زیادہ سے زیادہ قابل رسائی نہیں) t_speed = np.sqrt(فاصلہ / a_max) t_constant = 0.0 v_peak = a_max * t_speed else: t_conspeed = (t_conspeed else) v_max v_peak = v_max T = 2 * t_accelerate + t_constant t = np.arange(0, T, dt) # ... ہر t کے لئے پوزیشن کا حساب کتاب (سرعت/مستقل/تزلزل کے مراحل پر مبنی) واپسی t, T, v_peak, دورانیہ, vz = trapezoidal,0 (trapezoidal0.0. v_max=60.0, a_max=120.0)print(f"کل دورانیہ: {دورانیہ:.3f} s، چوٹی کی رفتار: {vz:.1f} deg/s")

یہاں منطقی جانچ یہ ہے: اگر فاصلہ کم ہے، تو موٹر کبھی بھی v_max تک نہیں پہنچے گی اور پروفائل trapezoidal سے مثلث میں بدل جائے گا۔ اگر AI اس شرط سے محروم ہوجاتا ہے، تو مختصر حرکت کے لیے غلط دورانیہ کا حساب لگایا جائے گا۔ آپ معلوم قدر (مثال کے طور پر، بہت کم فاصلہ) کے ساتھ کوڈ کی جانچ کر کے اس کی تصدیق کر سکتے ہیں۔

کمزور پرامپٹ / مضبوط اشارہ

کمزور:"ایک رفتار لکھیں جو روبوٹ کے بازو کو A سے B تک لے جائے۔"(کوئی رکاوٹ نہیں: رفتار کی حد؟ سرعت؟ جوائنٹ اسپیسنگ؟ بلائنڈ آؤٹ پٹ۔)STRONG:"6 محور والے روبوٹ کے لیے مشترکہ جگہ میں ایک پوائنٹ ٹو پوائنٹ ٹریجیکٹری بنائیں۔ ہر جوائنٹ کے لیے رفتار کی حد 90 ڈگری ہے، رفتار کی حد 20 ڈگری/20 ڈگری ہے زاویہ کی حد ٹیبل میں دی گئی ہے، اگر فاصلہ کم ہے تو، ہر جوائنٹ کا آؤٹ پٹ ایک تصدیقی فنکشن ہے جو یہ چیک کرتا ہے کہ یہ جوائنٹ کی حد سے زیادہ نہیں ہے: {{ٹیبل}}۔

توثیق: نقلی سے روبوٹ تک

روبوٹ پر جانے سے پہلے AI کے ذریعہ تیار کردہ رفتار کی اس ترتیب سے تصدیق کی جاتی ہے:

  1. عددی: کیا ہر قدم کا مشترکہ زاویہ، رفتار اور سرعت حدود میں ہے؟
  2. تصادم: رفتار کے ساتھ ساتھ، کیا بازو خود سے ٹکراتا ہے یا ماحول سے (اگر ممکن ہو تو تصور کریں / نقل کریں)؟
  3. یکسانیت: کیا مدار انفرادیت والے علاقے سے گزرتا ہے (کیا جیکوبیان کا تعین صفر تک پہنچتا ہے)؟
  4. سست ہارڈ ویئر ٹیسٹ: روبوٹ کو کم رفتار سے چلائیں (مثلاً 10%) اور اسے بصری طور پر مانیٹر کریں۔
  5. بتدریج رفتار میں اضافہ: ایک بار جب ہر چیز کی تصدیق ہو جاتی ہے، رفتار قدم بہ قدم برائے نام تک بڑھ جاتی ہے۔
احتیاط: پہلی بار ایک نئی رفتار کے ساتھ روبوٹ شروع کرتے وقت، رفتار اوور رائیڈ ہمیشہ کم ہونی چاہیے اور ای اسٹاپ دستیاب ہونا چاہیے۔ یہاں تک کہ اگر AI آؤٹ پٹ "ریاضی طور پر درست" ہے، تو جسمانی سیٹ اپ میں ایک آفسیٹ، ریورس ایکسس، یا کیبل سنیگ صرف سست جانچ کے ساتھ ہی سامنے آئے گا۔

منی کیس

آٹومیشن انجینئر Ece AI سے پک اینڈ پلیس ایپلی کیشن کے لیے مشترکہ جگہ میں ایک ٹریجیکٹری کوڈ طلب کرتا ہے۔ AI ایک trapezoidal پروفائل تیار کرتا ہے، لیکن جب Ece ایک مختصر فاصلے کے اقدام کی جانچ کرتا ہے، تو وہ دیکھتی ہے کہ وقت منفی ہے: کوڈ نے سہ رخی پروفائل کیس کو ہینڈل نہیں کیا جہاں v_max تک نہیں پہنچا جا سکتا۔ Ece اس کو فوری طور پر بتا کر درست کرتا ہے "اگر فاصلہ کم ہے تو مثلث پروفائل میں گریں"۔ اس کے بعد یہ AI کی طرف سے دیے گئے مشترکہ زاویوں کو اپنی توثیق کے فنکشن کے ذریعے اس کی اپنی حد ٹیبل کے خلاف چلاتا ہے اور پتہ چلتا ہے کہ جوائنٹ 5 ایک موقع پر +125° چاہتا تھا، جب کہ حد +120° تھی۔ وہ رفتار کا دوبارہ منصوبہ بناتا ہے اور اس کی نگرانی کرتا ہے، اس بار روبوٹ کو 10% رفتار سے چلا رہا ہے۔ پہلے راؤنڈ میں، وہ دیکھتا ہے کہ گرپر میز کے بہت قریب آ رہا ہے اور Z آفسیٹ کو درست کرتا ہے۔ AI نے منٹوں میں ورکنگ آؤٹ لائن واپس کردی۔ لیکن تین الگ الگ توثیق (مثلث پروفائل، مشترکہ حد، سست ٹیسٹ) نے تین الگ الگ حقیقی مسائل کو پکڑ لیا۔

عام غلطیاں

  • مشترکہ حدود اور رسائی کے کنٹرول کے بغیر IK حل کا استعمال۔
  • arccos/arcsin اندراجات کو تراشنا نہیں بلکہ راؤنڈنگ کی خرابی کی صورت میں NaN تیار کرنا۔
  • رفتار/سرعت کو محدود کیے بغیر مدار کی درخواست کرنا اور مکینیکل جھٹکا پیدا کرنا۔
  • سنگولریٹی زونز کو نظر انداز کرنا اور جوائنٹ اسپیڈ کو آسمان چھونے دینا۔
  • مختصر فاصلے میں trapezoidal-triangular پروفائل کی منتقلی کو چھوڑنا اور غلط وقت کا حساب لگانا۔
  • پوری رفتار سے اور ای اسٹاپ رسائی کے بغیر پہلا مداری ٹیسٹ کرنا۔

خلاصہ میں

  • فارورڈ کائینیٹکس کا ایک ہی حل ہے۔ الٹا حرکیات متعدد، غیر موجود یا لامحدود حل پیدا کر سکتی ہے۔
  • IK حل لازمی طور پر مشترکہ حدود، رسائی اور انفرادیت کے لحاظ سے فلٹر کیے جاتے ہیں۔
  • رفتار کی منصوبہ بندی؛ یہ نرم، حد سے مطابقت رکھنے والے پروفائلز کا استعمال کرتا ہے جیسے trapezoidal یا S-curve۔
  • مختصر فاصلے پر پروفائل trapezoidal سے مثلث میں بدل جاتا ہے۔ یہ کوڈ میں ہینڈل کیا جانا چاہئے.
  • AI ریاضی کو تیز کرتا ہے۔ حدود اور جسمانی تنصیب کا سیاق و سباق پرامپٹ میں داخل ہونا چاہیے۔
  • نئی رفتار ہمیشہ پہلی بار کم رفتار کے تناسب اور قابل رسائی ای اسٹاپ کے ساتھ چلائی جاتی ہے۔

درخواست کا کام

دو یا تین مشترکہ بازو کا ماڈل منتخب کریں (حقیقی یا خیالی لنک کی لمبائی اور مشترکہ حدود کے ساتھ)۔ AI کو اس سیاق و سباق کے ساتھ ایک الٹا کائینیٹکس فنکشن اور ایک ٹریجیکٹری پلانر تیار کرنے کو کہیں۔ پھر: (1) ایک معلوم ہدف کے ساتھ دستی طور پر IK آؤٹ پٹ کی تصدیق کریں (کیا آپ زاویوں کو واپس رکھتے ہیں اور FK کے طور پر اسی نقطہ پر واپس آتے ہیں)، (2) جانچیں کہ کوڈ انہیں کم از کم ایک ناقابل رسائی نقطہ اور ہدف سے زیادہ ایک مشترکہ حد دے کر پکڑتا ہے، (3) چیک کریں کہ تھوڑی دوری پر مداری وقت مناسب نکلا ہے۔ لکھیں کہ کوڈ کے پہلے ورژن میں آپ کو توثیق کے کتنے مسائل ملے اور ہر ایک کو کس پرت نے پکڑا۔