مین مواد پر جائیں

ڈائنامکس کے بنیادی اصول

Intermediate40 minBefore this:Forward and inverse kinematics · Newton’s laws · NumPy

ایک روبوٹ آرم 2 kg کا وزن سیدھا باہر کی طرف پکڑے ہوئے ہے۔ اسے کوئی نہیں ہلا رہا، پھر بھی شولڈر (کاندھے) کی موٹر سخت محنت کر رہی ہے اور گرم ہو رہی ہے۔ اب آرم تیزی سے گھومتی ہے اور البو (کوہنی) کی موٹر اچانک جدوجہد کرنے لگتی ہے حالانکہ وزن نہیں بدلا۔ کائنیمیٹکس (Kinematics) ان میں سے کسی بات کی وضاحت نہیں کر سکتی۔ ڈائنامکس (Dynamics) کر سکتی ہے: یہ آپ کی موٹرز کے تیار کردہ ٹارکس (torques) کو حاصل ہونے والی حرکت سے جوڑتی ہے، اور آپ کو بتاتی ہے کہ کون سی موٹر خریدنی ہے۔

You will be able to

  • وضاحت کریں کہ ریجڈ باڈی ڈائنامکس (rigid-body dynamics) کائنیمیٹکس میں کیا اضافہ کرتی ہے اور الفاظ میں Newton-Euler اور Lagrange کے طریقوں کو بیان کریں۔
  • مینیپولیٹر مساوات M(q)q¨+C(q,q˙)q˙+g(q)=τM(q)\ddot q + C(q,\dot q)\dot q + g(q) = \tau کو لفظ بہ لفظ پڑھیں۔
  • NumPy میں 2-لنک آرم کے لیے ماس میٹرکس، کوریولس (Coriolis) اور گریویٹی کی اصطلاحات کا حساب لگائیں۔
  • فارورڈ اور انورس ڈائنامکس کا استعمال کریں، اور جوائنٹ ٹارک کی حدوں کے خلاف کسی حرکت کو چیک کریں۔

ڈائنامکس ہی کیوں؟​

ڈائنامکساس بات کا مطالعہ کہ فورسز اور ٹارکس ماس اور انرشیا کو مدنظر رکھتے ہوئے حرکت کا باعث کیسے بنتے ہیں دو عملی سوالات کے جواب دیتی ہے۔

  • انورس ڈائنامکس (Inverse dynamics): میری مطلوبہ حرکت (پوزیشنز، ویلوسٹیز، ایکسلریشنز) کے پیش نظر، مجھے کن جوائنٹ ٹارکس کی ضرورت ہے؟ کنٹرول کے لیے، موٹرز کا سائز طے کرنے کے لیے، اور یہ چیک کرنے کے لیے استعمال ہوتا ہے کہ آیا منصوبہ قابل عمل ہے۔
  • فارورڈ ڈائنامکس (Forward dynamics): میرے لاگو کردہ ٹارکس کے پیش نظر، روبوٹ کیسے حرکت کرے گا؟ ہر فزکس سمیلیٹر کے ذریعہ استعمال کیا جاتا ہے، بشمول سیمولیشن ماڈیول والے۔

دونوں ایک ہی مساوات سے آتے ہیں۔ اس سے ملنے سے پہلے، ظاہر ہونے والی فورسز کے لیے بصیرت بنائیں۔

Newton-Euler بصیرت​

جسم کے لیے نیوٹن کا قانون F=maF = ma ہے۔ اس کا گھومتا ہوا جڑواں، یولر کا قانون، τ=Iα\tau = I\alpha ہے (ٹارک روٹیشنل انرشیا ضرب اینگولر ایکسلریشن کے برابر ہے)۔ مومنٹ آف انرشیاماس کا گھومنے والا بدل: دیے گئے محور کے گرد کسی شے کی گھومنے کی رفتار کو بدلنا کتنا مشکل ہے (moment of inertia) II ماس اور محور سے اس کے فاصلے دونوں پر منحصر ہوتا ہے۔ ایک لمبی آرم کو گھمانا شولڈر کے قریب رکھے گئے اسی ماس کے مقابلے میں کہیں زیادہ مشکل ہے۔

Newton-Euler طریقہ ان دونوں قوانین کو لنک بہ لنک لاگو کرتا ہے۔ ایک فارورڈ پاس بیس سے شروع ہوتا ہے اور باہر کی طرف کام کرتا ہے، ہر لنک کی ویلوسٹی اور ایکسلریشن کا حساب لگاتا ہے۔ ایک بیک ورڈ پاس ہینڈ سے شروع ہوتا ہے اور اندر کی طرف کام کرتا ہے، اس فورس اور ٹارک کا حساب لگاتا ہے جو ہر جوائنٹ کو اس حرکت کو پیدا کرنے اور اس سے آگے کے لنکس کو لے جانے کے لیے فراہم کرنا چاہیے۔ یہ موثر ہے، جوائنٹس کی تعداد کے متناسب وقت میں چلتا ہے، اور یہی زیادہ تر ریئل ٹائم ڈائنامکس لائبریریاں استعمال کرتی ہیں۔

Lagrange طریقہ توانائی سے انہی مساواتوں تک پہنچتا ہے۔ کائنیٹک انرجی KK اور پوٹینشل انرجی UU لکھیں، L=K−UL = K - U بنائیں، اور ڈیریویٹو فارمولا لاگو کریں۔ یہ چھوٹی آرمز کے لیے صاف ستھری علامتی (symbolic) مساواتیں دیتا ہے، یہی وجہ ہے کہ ہم اسے یہاں ہاتھ سے استعمال کرتے ہیں۔

مینیپولیٹر مساوات (manipulator equation)​

کسی بھی سیریل آرم کے لیے نتیجہ کی شکل ایک جیسی ہوتی ہے:

M(q) q¨+C(q,q˙) q˙+g(q)=τM(q)\,\ddot q + C(q,\dot q)\,\dot q + g(q) = \tau

ہر اصطلاح کا ایک مطلب ہے جسے آپ محسوس کر سکتے ہیں۔

  • M(q) q¨M(q)\,\ddot q: انرشیا (inertia)۔ MM ماس میٹرکسایک متناسب، مثبت-مستقل میٹرکس جو آرم کے موثر انرشیا کی وضاحت کرتا ہے جیسا کہ ہر جوائنٹ پر دیکھا جاتا ہے، جو آرم کی ساخت (posture) پر منحصر ہوتا ہے ہے۔ یہ پوزیشن کے ساتھ بدلتا ہے: ایک پھیلی ہوئی آرم میں مڑی ہوئی آرم کے مقابلے میں شولڈر کے گرد زیادہ انرشیا ہوتا ہے۔
  • C(q,q˙) q˙C(q,\dot q)\,\dot q: ویلوسٹی پر منحصر فورسز۔ سینٹری فیوگل فورسز (ایک گھومتا ہوا لنک باہر کی طرف اڑنا چاہتا ہے) اور کوریولس فورسز (ایک جوائنٹ کا جھولنا دوسرے پر دباؤ ڈالتا ہے)۔ وہ رفتار کے مربع کے ساتھ بڑھتے ہیں۔
  • g(q)g(q): گریویٹی (gravity)۔ آرم کو ساکت رکھنے کے لیے ضروری ٹارک۔ یہ پوسچر پر منحصر ہے لیکن رفتار پر نہیں۔
  • τ\tau: جوائنٹ ٹارکس جو آپ کی موٹرز فراہم کرتی ہیں۔ (حقیقی آرمز میں جوائنٹ فرکشن بھی ہوتی ہے، جسے ہم وضاحت کے لیے چھوڑ رہے ہیں)۔

ایک 2-لنک آرم، اعداد و شمار کے ساتھ​

عمودی پلین (vertical plane) میں حرکت کرنے والی ایک پلینر آرم لیں، جس میں لنک ماسز m1m_1، m2m_2، لمبائیاں l1l_1، l2l_2، سینٹر آف ماس کا ہر جوائنٹ سے فاصلہ lc1l_{c1}، lc2l_{c2}، اور ان مراکز کے گرد انرشیا I1I_1، I2I_2 ہیں۔ جوائنٹ اینگلز کو افقی (horizontal) سے ناپا جاتا ہے۔ Lagrange طریقہ استعمال کرتے ہوئے، اجزاء ہیں

M(q)=[m11m12m12m22]M(q) = \begin{bmatrix} m_{11} & m_{12} \\ m_{12} & m_{22} \end{bmatrix}

جہاں

m11=m1lc12+m2(l12+lc22+2l1lc2cos⁡q2)+I1+I2m12=m2(lc22+l1lc2cos⁡q2)+I2m22=m2lc22+I2\begin{aligned} m_{11} &= m_1 l_{c1}^2 + m_2\bigl(l_1^2 + l_{c2}^2 + 2 l_1 l_{c2}\cos q_2\bigr) + I_1 + I_2 \\ m_{12} &= m_2\bigl(l_{c2}^2 + l_1 l_{c2}\cos q_2\bigr) + I_2 \\ m_{22} &= m_2 l_{c2}^2 + I_2 \end{aligned}

اور، h=−m2l1lc2sin⁡q2h = -m_2 l_1 l_{c2}\sin q_2 کی تعریف کرتے ہوئے،

C(q,q˙)=[hq˙2h(q˙1+q˙2)−hq˙10],g(q)=[(m1lc1+m2l1) gcos⁡q1+m2lc2 gcos⁡(q1+q2)m2lc2 gcos⁡(q1+q2)]C(q,\dot q) = \begin{bmatrix} h\dot q_2 & h(\dot q_1 + \dot q_2) \\ -h\dot q_1 & 0 \end{bmatrix}, \qquad g(q) = \begin{bmatrix} (m_1 l_{c1} + m_2 l_1)\,g\cos q_1 + m_2 l_{c2}\,g\cos(q_1+q_2) \\ m_2 l_{c2}\,g\cos(q_1+q_2) \end{bmatrix}

تین مشاہدات۔ MM متناسب (symmetric) ہے۔ اس کی آف-ڈائیگونل اصطلاح جوائنٹس کو آپس میں جوڑتی ہے: جوائنٹ 2 کو تیز کرنے کے لیے جوائنٹ 1 پر ٹارک کی ضرورت ہوتی ہے۔ اور gg سب سے بڑا ہوتا ہے جب آرم افقی ہو (cos⁡0=1\cos 0 = 1) اور صفر ہوتا ہے جب یہ سیدھی اوپر یا نیچے کی طرف ہو۔

dynamics.py
import numpy as np

m1, m2 = 2.0, 1.5 # link masses (kg)
l1, l2 = 0.4, 0.3 # link lengths (m)
lc1, lc2 = l1 / 2, l2 / 2 # centre of mass at the middle of each rod
I1 = m1 * l1**2 / 12 # thin-rod inertia about the centre
I2 = m2 * l2**2 / 12
G = 9.81


def mass_matrix(q):
c2 = np.cos(q[1])
m11 = m1 * lc1**2 + m2 * (l1**2 + lc2**2 + 2 * l1 * lc2 * c2) + I1 + I2
m12 = m2 * (lc2**2 + l1 * lc2 * c2) + I2
m22 = m2 * lc2**2 + I2
return np.array([[m11, m12], [m12, m22]])


def coriolis(q, qd):
h = -m2 * l1 * lc2 * np.sin(q[1])
return np.array([[h * qd[1], h * (qd[0] + qd[1])],
[-h * qd[0], 0.0]])


def gravity(q):
g1 = (m1 * lc1 + m2 * l1) * G * np.cos(q[0]) + m2 * lc2 * G * np.cos(q[0] + q[1])
g2 = m2 * lc2 * G * np.cos(q[0] + q[1])
return np.array([g1, g2])


def inverse_dynamics(q, qd, qdd):
"""Torques needed to produce acceleration qdd at state (q, qd)."""
return mass_matrix(q) @ qdd + coriolis(q, qd) @ qd + gravity(q)


def forward_dynamics(q, qd, tau):
"""Acceleration produced by torques tau at state (q, qd)."""
return np.linalg.solve(mass_matrix(q), tau - coriolis(q, qd) @ qd - gravity(q))


if __name__ == "__main__":
q = np.array([0.5, 0.8])
qd = np.array([1.0, -0.5])
qdd = np.array([2.0, 1.0])

tau = inverse_dynamics(q, qd, qdd)
print("torques needed:", np.round(tau, 3), "N·m")
print("forward dynamics recovers qdd:", np.allclose(forward_dynamics(q, qd, tau), qdd))

print("holding torque, arm horizontal:", np.round(gravity(np.array([0.0, 0.0])), 3), "N·m")
print("mass matrix eigenvalues (all > 0):", np.round(np.linalg.eigvalsh(mass_matrix(q)), 4))

راؤنڈ ٹرپ، انورس پھر فارورڈ ڈائنامکس، ایک ہی ایکسلریشن واپس کرنا کسی بھی ڈائنامکس کوڈ کے لیے ایک مفید سیلف ٹیسٹ ہے جو آپ لکھتے یا امپورٹ کرتے ہیں۔

گریویٹی کمپنسیشن (Gravity compensation) اور کمپیوٹر ٹارک​

چونکہ اب آپ کے پاس g(q)g(q) اور M(q)M(q) موجود ہیں، آپ آرم کی اپنی ڈائنامکس کو منسوخ کر سکتے ہیں۔ فرض کریں کہ ایک سادہ کنٹرولر ایک مطلوبہ ایکسلریشن aa کا تقاضا کرتا ہے (پوزیشن کی غلطی سے شمار کیا جاتا ہے، جیسا کہ اگلے سبق میں ہے)۔ کمپیوٹڈ-ٹارک (computed-torque) کمانڈ ہے

τ=M(q) a+C(q,q˙) q˙+g(q)\tau = M(q)\,a + C(q,\dot q)\,\dot q + g(q)

اسے مینیپولیٹر مساوات میں لگانے سے q¨=a\ddot q = a ملتا ہے: غیر خطی (nonlinear) آرم اب سادہ، آزاد جوائنٹس کے ڈھیر کی طرح سلوک کرتی ہے جو آپ کی مانگی ہوئی aa کی اطاعت کرتے ہیں۔ اسے فیڈ بیک لینیئرائزیشن (feedback linearisation) کہا جاتا ہے۔ یہ ایک اچھے ماڈل پر منحصر ہے: غلط ماسز کا مطلب ہے نامکمل منسوخی، یہی ایک وجہ ہے کہ حقیقی کنٹرولرز فیڈ بیک کو اوپر رکھتے ہیں۔

ہینڈ (Hand) پر فورسز​

اکثر آپ ہینڈ پر فورس کی پرواہ کرتے ہیں: میز پر اسفنج کو دبانا، دروازے کو دھکیلنا۔ آخری سبق کا جیکوبین (Jacobian) ایک ہینڈ فورس FF کو جوائنٹ ٹارکس میں تبدیل کرتا ہے جو اسے پیدا کرتے ہیں:

τ=J(q)TF\tau = J(q)^{\mathsf T} F

یہ وہی جیکوبین ہے، ٹرانسپوز (transposed)۔ یہ سنگولیریٹیز (singularities) کے بارے میں ایک مفید حقیقت کی وضاحت بھی کرتا ہے: جس سمت میں آرم حرکت نہیں کر سکتی، وہاں ہینڈ فورس کو تقریباً کسی جوائنٹ ٹارک کی ضرورت نہیں ہوتی، کیونکہ سخت سیدھے لنکس بوجھ اٹھاتے ہیں۔ ایک پھیلی ہوئی آرم سختی سے جمی رہ سکتی ہے، لیکن وہ اس سمت میں آہستہ سے حرکت نہیں کر سکتی یا محسوس نہیں کر سکتی۔ یہ تعلق امپیڈینس کنٹرول (impedance control) کی بھی بنیاد ہے جس سے آپ اس ماڈیول کے آخر میں ملیں گے۔

ٹارک کی حدیں اور ان کا کیا مطلب ہے​

ہر موٹر اور گیئر باکس کا ایک پیک ٹارک (peak torque) (مختصر دھماکوں کے لیے) اور کنٹینیوئس ٹارک (continuous torque) (جو یہ بغیر اوور ہیٹ ہوئے لامحدود طور پر فراہم کر سکتا ہے) ہوتا ہے۔ ڈائنامکس آپ کو حرکت کو چلانے سے پہلے ان کے خلاف چیک کرنے دیتی ہے۔

  • اگر صرف ہولڈنگ ٹارک g(q)g(q) کنٹینیوئس ریٹنگ سے تجاوز کر جاتا ہے، تو "ساکت کھڑے رہنے" پر بھی جوائنٹ اوور ہیٹ ہو جائے گا۔
  • تیز حرکات Cq˙C\dot q اور Mq¨M\ddot q کو بڑھاتی ہیں۔ سوئنگ کی رفتار کو دوگنا کرنے سے کوریولس ٹارک تقریباً چار گنا بڑھ جاتا ہے۔
  • ایک پے لوڈ (payload) آخری لنک کے ماس میں اضافہ کرتا ہے۔ بہت سی آرمز ٹارک سے محدود پے لوڈ بنام ریچ (payload versus reach) کے منحنی خطوط کی وضاحت کرتی ہیں: لمبی پہنچ پر زیادہ وزن لے جانے کے لیے شولڈر کے زیادہ ٹارک کی ضرورت ہوتی ہے۔

ٹارک کی حدوں کو نظر انداز کرنے والا پلانر ایسا راستہ بنا سکتا ہے جو جیومیٹری کے لحاظ سے بالکل درست ہو اور فزکس کے لحاظ سے ناممکن ہو۔ ٹائم-آپٹیمل ٹریجیکٹری کے طریقے، جیسے کہ ٹائم-آپٹیمل پاتھ پیرامیٹرائزیشن، بالکل اسی وجہ سے ان حدوں کو اسپیڈ پروفائل میں شامل کرتے ہیں۔

Warning

حقیقی آرم پر پہلی بار کسی نئی، تیز رفتار حرکت کو سمیلیٹر میں یا سست ٹرائل کے ساتھ ٹارک اور اسپیڈ کی حدوں کے خلاف چیک کیے بغیر کبھی نہ چلائیں۔ تیز حرکت کے درمیان سیچوریٹ (saturate) ہونے والا جوائنٹ آرم کو طے شدہ راستے سے اچانک ہٹا سکتا ہے۔

عملی لیب (Hands-on lab)​

آپ ایک حرکت کے لیے موٹرز کا سائز طے کریں گے۔

  1. dynamics.py کو محفوظ کریں اور اسے چلائیں۔ تصدیق کریں کہ راؤنڈ ٹرپ True پرنٹ کرتا ہے۔
  2. ایک فنکشن tau_for_trajectory لکھیں جو 2 سیکنڈ کے لیے 100 Hz پر سیمپل کیے گئے جوائنٹ پاتھز q(t)q(t) لیتا ہے، جو q=(0,0)q = (0, 0) سے q=(1.2,0.8)q = (1.2, 0.8) تک ایک ہموار کیوبک پروفائل q(t)=q0+(qf−q0)(3s2−2s3)q(t) = q_0 + (q_f - q_0)(3s^2 - 2s^3) کے ساتھ جاتا ہے جہاں s=t/2s = t/2 ہے۔ تحلیلی طور پر (analytically) یا np.gradient کے ساتھ q˙\dot q اور q¨\ddot q کا حساب لگائیں۔
  3. ہر سیمپل کے لیے، inverse_dynamics کو کال کریں، اور ہر جوائنٹ پر پیک ایبسولیوٹ (peak absolute) ٹارک پرنٹ کریں۔
  4. m2 میں 1.0 کا اضافہ کر کے اور دوبارہ چلا کر 1 kg پے لوڈ شامل کریں۔ شولڈر کا پیک ٹارک کتنا بڑھا؟
  5. فرض کریں کہ شولڈر موٹر کی پیک ریٹنگ 20 N·m ہے۔ کیا آپ کی حرکت اس کا احترام کرتی ہے؟ اگر نہیں، تو حرکت کا وقت لمبا کریں اور دوبارہ چیک کریں۔

آپ کو معلوم ہوگا کہ یہ کام کر گیا جب پے لوڈ کے ساتھ شولڈر کا پیک ٹارک نمایاں طور پر بڑھ جاتا ہے اور جب آپ حرکت کو سست کرتے ہیں تو گر جاتا ہے۔

مشقیں​

ہولڈنگ ٹارکBeginner

2 kg ماس اور 0.5 m لمبائی کی ایک یکساں چھڑ (uniform rod) کو ایک سرے پر موٹر کے ذریعہ افقی طور پر پکڑا جاتا ہے۔ کس سٹیٹک ٹارک کی ضرورت ہے؟

Show solutionHide solution

وزن مرکز پر عمل کرتا ہے، جوائنٹ سے 0.25 m دور، اس لیے τ=mg l/2=2×9.81×0.25≈4.9\tau = m g\, l/2 = 2 \times 9.81 \times 0.25 \approx 4.9 N·m۔ اگر چھڑ سیدھی اوپر کی طرف اشارہ کرتی ہے، تو ٹارک صفر ہو جاتا ہے (رگڑ کو نظر انداز کرتے ہوئے)، کیونکہ وزن کی لکیر جوائنٹ سے گزرتی ہے۔

کون سی اصطلاح غالب ہے؟Intermediate

dynamics.py کا استعمال کرتے ہوئے، q=(0.5,0.8)q = (0.5, 0.8) پر q˙=(0.2,0.1)\dot q = (0.2, 0.1)، q¨=(0.5,0.5)\ddot q = (0.5, 0.5) کے لیے تینوں ٹارک کی شراکتوں کا الگ الگ اندازہ لگائیں، پھر دوبارہ q˙=(3,2)\dot q = (3, 2) کے ساتھ کریں۔ بیان کریں کہ حصص کیسے بدلتے ہیں۔

Show solutionHide solution

mass_matrix(q) @ qdd، coriolis(q, qd) @ qd اور gravity(q) کا الگ الگ حساب لگائیں۔ سست رفتار پر گریویٹی غالب ہوتی ہے اور کوریولس کی اصطلاح بہت چھوٹی ہوتی ہے۔ تیز رفتار پر ویلوسٹیز 15 سے 20 گنا زیادہ ہوتی ہیں، اور چونکہ کوریولس کی اصطلاح ویلوسٹی کے مربع کے ساتھ بڑھتی ہے اس لیے یہ چند سو گنا بڑی ہو جاتی ہے، جبکہ گریویٹی بغیر کسی تبدیلی کے رہتی ہے۔ سبق: گریویٹی سکون اور سست رفتار پر اہم ہے، ویلوسٹی کی اصطلاحات تیز حرکت کے دوران اہم ہوتی ہیں۔

M متناسب اور مثبت-مستقل (positive definite) کیوں ہے؟Advanced

ایک فزیکل وجہ بتائیں کہ M(q)M(q) کی ہر آئگن ویلیو (eigenvalue) کا مثبت ہونا کیوں ضروری ہے۔

Show solutionHide solution

آرم کی کائنیٹک انرجی K=12q˙TM(q) q˙K = \tfrac{1}{2}\dot q^{\mathsf T} M(q)\,\dot q ہے۔ ماس والے جسم کی کسی بھی حقیقی حرکت میں یقینی طور پر مثبت کائنیٹک انرجی ہوتی ہے، اس لیے ہر غیر صفر q˙\dot q کے لیے q˙TMq˙>0\dot q^{\mathsf T}M\dot q > 0 ہوتا ہے۔ یہ پوزیٹو ڈیفینیٹ کی تعریف ہے۔ یہ اس بات کی بھی ضمانت دیتا ہے کہ MM کا انورس ممکن ہے، یہی وجہ ہے کہ فارورڈ ڈائنامکس ہمیشہ q¨\ddot q کے لیے حل کر سکتی ہے۔

اپنی تفہیم کو جانچیں​

1M(q) q̈ + C(q, q̇) q̇ + g(q) = τ میں، کون سی اصطلاح آرم کو گریویٹی کے خلاف ساکت رکھتی ہے؟
2انورس ڈائنامکس (inverse dynamics) کیا ہے؟
3ماس میٹرکس آرم کی ساخت (posture) پر کیوں منحصر ہے؟
4کنٹرولر کے آؤٹ پٹ میں g(q) شامل کرنے کی ایک اچھی وجہ…
0 of 4 answered

Takeaways

  • ڈائنامکس جوائنٹ ٹارکس کو حرکت سے جوڑتی ہے۔ صرف کائنیمیٹکس یہ نہیں بتا سکتی کہ موٹر کو کیا فراہم کرنا چاہیے۔
  • مینیپولیٹر مساوات میں انرشیا، ویلوسٹی پر منحصر، اور گریویٹی کی اصطلاحات کے ساتھ لاگو کردہ ٹارک ہوتا ہے۔
  • انورس ڈائنامکس مطلوبہ حرکت کے لیے ٹارکس دیتی ہے؛ فارورڈ ڈائنامکس ٹارکس سے حرکت دیتی ہے اور سمیلیٹرز کو طاقت فراہم کرتی ہے۔
  • سست حرکات کے لیے گریویٹی عام طور پر سب سے بڑا ٹارک ہوتی ہے؛ ویلوسٹی کی اصطلاحات رفتار کے مربع کے ساتھ بڑھتی ہیں۔
  • ماس میٹرکس متناسب (symmetric) اور مثبت-مستقل (positive definite) ہے، اور پوسچر پر منحصر ہے۔
  • ہارڈ ویئر پر چلانے سے پہلے طے شدہ حرکات کو کنٹینیوئس اور پیک ٹارک کی حدوں کے خلاف چیک کریں۔

پھنس گئے ہیں؟ کورس کے اسسٹنٹ، Rivet سے نیچے دائیں جانب پوچھیں۔

مزید گہرائی میں جائیں​

اگلا: کنٹرول اور PID

Finished the lab and the quiz?

Mark it done to track your progress through the course.