యూనిట్ 2 / 9

రోబోటిక్స్ మరియు మోషన్ కంట్రోల్‌లో ఆర్టిఫిషియల్ ఇంటెలిజెన్స్

లాభాలు:

  • AI సహాయంతో ఫార్వర్డ్/ఇన్వర్స్ కైనమాటిక్స్ మరియు ట్రాజెక్టరీ ప్లానింగ్ సమస్యలను సెటప్ చేయగల మరియు పరిష్కరించగల సామర్థ్యం
  • ప్రాంప్ట్‌కు సందర్భోచితంగా రోబోట్ ఉమ్మడి పరిమితులు, వేగం మరియు త్వరణం పరిమితులను ఇవ్వడం ద్వారా సురక్షితమైన కక్ష్యను ఉత్పత్తి చేయగల సామర్థ్యం
  • AI ద్వారా ఉత్పత్తి చేయబడిన కైనమాటిక్ మరియు పథం అవుట్‌పుట్‌ను సంఖ్యాపరంగా మరియు భౌతికంగా ధృవీకరించగల సామర్థ్యం

రోబోట్ చేయి చివర ఉన్న గ్రిప్పర్‌ను నిర్దిష్ట దిశలో అంతరిక్షంలో ఒక నిర్దిష్ట బిందువుకు తీసుకురావడం; ఇది సరళంగా అనిపిస్తుంది, కానీ దాని వెనుక గతి సమీకరణాలు, ఉమ్మడి పరిమితులు, ఏకవచనాలు మరియు పథ ప్రణాళిక ఉన్నాయి. ఇక్కడ, మెకాట్రానిక్స్ ఇంజనీర్ త్రికోణమితి, సరళ బీజగణితం మరియు నియంత్రణ సిద్ధాంతాన్ని కలిపి ఉపయోగిస్తాడు. ఈ ప్రక్రియలో ఆర్టిఫిషియల్ ఇంటెలిజెన్స్ ఒక శక్తివంతమైన సహాయం: ఇది ఫార్వర్డ్ కైనమాటిక్స్ సమీకరణాలను ఏర్పాటు చేయగలదు, విలోమ కైనమాటిక్స్ కోసం పరిష్కార విధానాలను సూచించగలదు, వేగం/త్వరణ పరిమితుల ప్రకారం పథాన్ని పారామితి చేస్తుంది. అయితే, రోబోటిక్స్ అనేది మెకాట్రానిక్స్‌లో అత్యధిక భౌతిక ప్రమాదం ఉన్న ప్రాంతాలలో ఒకటి; AI ద్వారా రూపొందించబడిన యాంగిల్ సీక్వెన్స్ ధృవీకరణ లేకుండా రోబోట్‌కు పంపబడితే, చేయి దానికదే, పర్యావరణం లేదా ఆపరేటర్‌ను తాకవచ్చు. ఈ యూనిట్‌లో AIతో కైనమాటిక్స్ మరియు ట్రాజెక్టరీ ప్లానింగ్‌ను ఎలా సెటప్ చేయాలో మరియు వెరిఫై చేయాలో చూద్దాం.

ఫార్వర్డ్ మరియు ఇన్వర్స్ కైనమాటిక్స్

ఫార్వర్డ్ కైనమాటిక్స్ (FK): జాయింట్ కోణాలు తెలిసినట్లయితే ఎండ్-ఎఫెక్టర్ యొక్క స్థానం మరియు విన్యాసాన్ని కనుగొనడం. ఒకే ఒక పరిష్కారం ఉంది, ఇది ప్రత్యక్షమైనది.

విలోమ కైనమాటిక్స్ (IK): ముగింపు ఫంక్షన్ యొక్క కావలసిన స్థానం తెలిసినట్లయితే, దీనిని అందించే ఉమ్మడి కోణాలను కనుగొనడం. ఇది సాధారణంగా ఒకటి కంటే ఎక్కువ పరిష్కారాలను కలిగి ఉంటుంది (మోచేతి పైకి/క్రిందికి వంటిది), కొన్నిసార్లు దీనికి పరిష్కారాలు లేవు (అన్ రీచబుల్ పాయింట్), కొన్నిసార్లు ఇది అనంతమైన పరిష్కారాలను కలిగి ఉంటుంది (ఏకత్వం).

భావన

ఇన్పుట్

అవుట్పుట్

పరిష్కారాల సంఖ్య

ఫార్వర్డ్ కైనమాటిక్స్

ఉమ్మడి కోణాలు

విపరీతమైన స్థానం/విన్యాసం

సింగిల్

విలోమ గతిశాస్త్రం

విపరీతమైన స్థానం/విన్యాసం

ఉమ్మడి కోణాలు

బహుళ/ఏదీ/అనంతం

రెండు-జాయింట్ ప్లానర్ ఆర్మ్ కోసం, విలోమ కైనమాటిక్స్‌ను AIలో సెటప్ చేయవచ్చు మరియు క్రింది విధంగా మాన్యువల్‌గా ధృవీకరించవచ్చు:

npdef inverse_kinematik_2r(x, y, L1, L2) వలె numpyని దిగుమతి చేయండి: """2-జాయింట్ ప్లానార్ ఆర్మ్ కోసం IK. రేడియన్‌లలో కోణాలను చూపుతుంది (ఎల్బో-డౌన్ సొల్యూషన్).""" r2 = x**2 + y**2 # యాక్సెసిబిలిటీ చెక్: వర్క్‌స్పేస్‌లో పాయింట్ ఉందా? అయితే np.sqrt(r2) > (L1 + L2) లేదా np.sqrt(r2) < abs(L1 - L2): విలువను పెంచండి -1.0, 1.0) # సంఖ్యా భద్రత t2 = np.arccos(cos_t2) # elbow down t1 = np.arctan2(y, x) - np.arctan2(L2*np.sin(t2), L1 + L2*np.cos(nt.1)grees(nt.2)) np.degrees(t2)# ధ్రువీకరణ: L1=L2=1, లక్ష్యం (1,1) -> అంచనా t2=90 డిగ్రీల ప్రింట్ (inverse_kinematik_2r(1.0, 1.0, 1.0, 1.0)) # ~ (0.0, 90.0)

AI తరచుగా దాటవేసే కీలకమైన పంక్తులు ఇక్కడ ఉన్నాయి: రీచ్‌బిలిటీ చెక్ (వర్క్‌స్పేస్‌లోని పాయింట్) మరియు `np.clip` (రౌండింగ్ లోపం కారణంగా ఆర్కోస్ ఇన్‌పుట్ ±1 కంటే ఎక్కువ కాకుండా నిరోధిస్తుంది). ఈ రెండు రక్షణలు లేకుండా, కోడ్ NaNని ఉత్పత్తి చేస్తుంది లేదా చెల్లని పాయింట్ వద్ద క్రాష్ అవుతుంది.

చిట్కా: IK రిజల్యూషన్ కోసం అడుగుతున్నప్పుడు, "యాక్సెసిబిలిటీ కంట్రోల్‌ని జోడించి, ఆర్కోస్ ఇన్‌పుట్‌ను క్లిప్‌కి పరిమితం చేయమని" AIకి స్పష్టంగా చెప్పండి. ఈ రెండు పంక్తులు ఫీల్డ్‌లో చాలా తలనొప్పికి కారణమయ్యే నిశ్శబ్ద దోషాలను నివారిస్తాయి.

జాయింట్ లిమిట్స్, సింగులారిటీ మరియు మల్టిపుల్ సొల్యూషన్స్

నిజమైన రోబోట్ యొక్క ప్రతి ఉమ్మడి కోణ పరిధి (ఉదా. -170° నుండి +170°), వేగ పరిమితి మరియు త్వరణ పరిమితిని కలిగి ఉంటుంది. IK గణితశాస్త్రపరంగా చెల్లుబాటు అయ్యే కోణాన్ని ఇచ్చినప్పటికీ, ఆ కోణం ఉమ్మడి భౌతిక పరిధికి వెలుపల ఉన్నట్లయితే అది ఉపయోగించబడదు. అదనంగా, రోబోట్ కొన్ని కాన్ఫిగరేషన్‌లలో ఏకవచనంలోకి వస్తుంది: రెండు అక్షాలు సమలేఖనం చేయబడ్డాయి, ఒక డిగ్రీ స్వేచ్ఛ పోతుంది మరియు ఉమ్మడి వేగాలు చిన్న చిట్కా కదలిక కోసం అనంతం వరకు వెళ్ళడానికి ప్రయత్నిస్తాయి.

అందుకే HR సొల్యూషన్ ఒక్కటే సరిపోదు; ప్రతి పరిష్కారం తప్పనిసరిగా ఆమోదయోగ్యమైన ఫిల్టర్‌ను పాస్ చేయాలి:

def solution_gecerli_mi(acilar_deg, limits_deg): """నొప్పులు: [t1,t2,...], పరిమితులు: [(min,max),...]""" నొప్పికి, (అమిన్, అమాక్స్) జిప్‌లో(acilar_deg, limits_deg): కాకపోతే (అమీన్ <= నొప్పి <= అమాక్స్ పరిమితిని మించి): {pain:.1f} deg ({amine},{amax}) తప్ప" రిటర్న్ ట్రూ, "OK"పరిమితులు = [(-170, 170), (-120, 120)]print(cozum_valid_mi([0.0, 90.0], limits)) # (True, 'OK')print.0 150.0], పరిమితులు)) # (తప్పు, 'ఉమ్మడి పరిమితి మించిపోయింది...')

AI IK యొక్క "గణిత" పరిష్కారాన్ని ఇవ్వగలదు; కానీ ఉమ్మడి పరిమితులు మరియు ఏకత్వ ఎగవేత మీ సిస్టమ్‌కు ప్రత్యేకమైనవి మరియు తప్పనిసరిగా ప్రాంప్ట్‌కు సందర్భోచితంగా ఇవ్వాలి.

కక్ష్య ప్రణాళిక

పాయింట్ A నుండి పాయింట్ B వరకు రోబోట్‌ను పొందడం అనేది రెండు కోణాల మధ్య సరళ రేఖను గీయడం కాదు. ఆకస్మిక వేగం మార్పు యాంత్రిక షాక్ మరియు వైబ్రేషన్‌ను సృష్టిస్తుంది. బదులుగా, మృదువైన ప్రొఫైల్‌లు ఉపయోగించబడతాయి: ట్రాపెజోయిడల్ వెలాసిటీ ప్రొఫైల్ (స్థిరమైన త్వరణం-స్థిరమైన వేగం-స్థిరమైన క్షీణత) లేదా S-కర్వ్ (మృదువైనది, ఇక్కడ త్వరణం కూడా పరిమితం). AI ఒక పథాన్ని రూపొందించేటప్పుడు, మీరు తప్పనిసరిగా లక్ష్యం, వ్యవధి మరియు పరిమితులను ఇవ్వాలి.

npdef trapez_yorunge(q0, q1, v_max, a_max, dt=0.01) వలె numpyని దిగుమతి చేయండి: """ఒకే ఉమ్మడి కోసం ట్రాపెజోయిడల్ వేగం ప్రొఫైల్. స్థాన శ్రేణి తిరిగి ఇవ్వబడింది."" దూరం = abs(q1 - q0) దిశ = np.qpe_sign (q1t_sign/) a_max దూరం_వేగం = 0.5 * a_max * t_speed**2 అయితే 2 * దూరం_వేగం > దూరం: # త్రిభుజాకార ప్రొఫైల్ (v_max చేరుకోలేనిది) t_speed = np.sqrt(దూరం / a_max) t_constant = 0.0 v_peaked else: t_tmax_peaked = 2 * దూరం_వేగం) / v_max v_peak = v_max T = 2 * t_accelerate + t_constant t = np.arange(0, T, dt) # ... ప్రతి tకి స్థానం గణన (త్వరణం/స్థిరమైన/తరుగుదల దశల ఆధారంగా) రిటర్న్ t, T, v_peak, v_peak, v_peak trapezoidal_trajectory(0.0, 90.0, v_max=60.0, a_max=120.0)print(f"మొత్తం వ్యవధి: {duration:.3f} s, గరిష్ట వేగం: {vz:.1f} deg/s")

ఇక్కడ లాజిక్ చెక్ ఇది: దూరం తక్కువగా ఉంటే, మోటారు ఎప్పటికీ v_maxని చేరుకోదు మరియు ప్రొఫైల్ ట్రాపెజోయిడల్ నుండి త్రిభుజాకారానికి మారుతుంది. AI ఈ పరిస్థితిని కోల్పోతే, చిన్న కదలికల కోసం తప్పు వ్యవధి లెక్కించబడుతుంది. మీరు తెలిసిన విలువతో కోడ్‌ని పరీక్షించడం ద్వారా దీన్ని ధృవీకరించవచ్చు (ఉదాహరణకు, చాలా తక్కువ దూరం).

బలహీనమైన ప్రాంప్ట్ / బలమైన ప్రాంప్ట్

బలహీనం:"రోబోట్ చేతిని A నుండి Bకి తీసుకెళ్లే పథాన్ని వ్రాయండి."(అడ్డం లేదు: వేగ పరిమితి? త్వరణం? జాయింట్ స్పేసింగ్? బ్లైండ్ అవుట్‌పుట్.)STRONG:"6-యాక్సిస్ రోబోట్ కోసం జాయింట్ స్పేస్‌లో పాయింట్-టు-పాయింట్ పథాన్ని రూపొందించండి. ప్రతి జాయింట్‌కు వేగ పరిమితి 90 డిగ్రీలు ^ పరిమితి 18 డిగ్రీలు, ట్రపెజోయిడల్ వేగ ప్రొఫైల్‌ను ఉపయోగించండి, దూరం తక్కువగా ఉంటే, ప్రతి జాయింట్ యొక్క అవుట్‌పుట్ జాయింట్ పరిమితులను మించకుండా తనిఖీ చేసే ధృవీకరణ ఫంక్షన్‌ను కూడా రాయండి.

ధృవీకరణ: అనుకరణ నుండి రోబోట్ వరకు

రోబోట్‌కి వెళ్లే ముందు AI ద్వారా రూపొందించబడిన పథం ఈ క్రమంలో ధృవీకరించబడుతుంది:

  1. సంఖ్యాపరంగా: ప్రతి అడుగు ఉమ్మడి కోణం, వేగం మరియు త్వరణం పరిమితుల్లో ఉన్నాయా?
  2. తాకిడి: పథం వెంట, చేయి దానితో లేదా పర్యావరణంతో ఢీకొందా (వీలైతే దృశ్యమానం/అనుకరణ చేయండి)?
  3. ఏకత్వం: కక్ష్య ఏకత్వ ప్రాంతం గుండా వెళుతుందా (జాకోబియన్ డిటర్మినెంట్ సున్నాకి చేరుకుంటుందా)?
  4. స్లో హార్డ్‌వేర్ పరీక్ష: రోబోట్‌ను తక్కువ వేగంతో (ఉదా. 10%) ఆపరేట్ చేయండి మరియు దానిని దృశ్యమానంగా పర్యవేక్షించండి.
  5. క్రమంగా వేగం పెరుగుదల: ప్రతిదీ ధృవీకరించబడిన తర్వాత, వేగం నామమాత్ర విలువకు దశలవారీగా పెరుగుతుంది.
హెచ్చరిక: మొదటి సారి కొత్త పథంతో రోబోట్‌ను ప్రారంభించినప్పుడు, వేగం ఓవర్‌రైడ్ ఎల్లప్పుడూ తక్కువగా ఉండాలి మరియు E-స్టాప్ అందుబాటులో ఉండాలి. AI అవుట్‌పుట్ “గణితశాస్త్రపరంగా సరైనది” అయినప్పటికీ, ఫిజికల్ సెటప్‌లో ఆఫ్‌సెట్, రివర్స్ యాక్సిస్ లేదా కేబుల్ స్నాగ్ నెమ్మది పరీక్షతో మాత్రమే వెల్లడి అవుతుంది.

మినీ కేసు

ఆటోమేషన్ ఇంజనీర్ Ece పిక్-అండ్-ప్లేస్ అప్లికేషన్ కోసం జాయింట్ స్పేస్‌లో ట్రాజెక్టరీ కోడ్ కోసం AIని అడుగుతాడు. AI ఒక ట్రాపెజోయిడల్ ప్రొఫైల్‌ను ఉత్పత్తి చేస్తుంది, కానీ Ece స్వల్ప-దూర కదలికను పరీక్షించినప్పుడు, సమయం ప్రతికూలంగా ఉందని ఆమె చూస్తుంది: v_maxని చేరుకోలేని త్రిభుజాకార ప్రొఫైల్ కేసును కోడ్ నిర్వహించలేదు. Ece "దూరం తక్కువగా ఉంటే, త్రిభుజాకార ప్రొఫైల్‌లో పడండి" అని ప్రాంప్ట్ చెప్పడం ద్వారా దీన్ని సరిచేస్తుంది. ఇది AI అందించిన ఉమ్మడి కోణాలను దాని స్వంత పరిమితి పట్టికకు వ్యతిరేకంగా దాని ధ్రువీకరణ ఫంక్షన్ ద్వారా అమలు చేస్తుంది మరియు ఉమ్మడి 5 ఒక సమయంలో +125 ° కావాలని కనుగొంటుంది, అయితే పరిమితి +120 °. అతను పథాన్ని మళ్లీ ప్లాన్ చేసి దానిని పర్యవేక్షిస్తాడు, ఈసారి రోబోట్‌ను 10% వేగంతో నడుపుతున్నాడు. మొదటి రౌండ్‌లో, అతను గ్రిప్పర్ టేబుల్‌కి చాలా దగ్గరగా ఉండడాన్ని చూసి Z ఆఫ్‌సెట్‌ను సరిదిద్దాడు. AI నిమిషాల్లో పని తీరును అందించింది; కానీ మూడు వేర్వేరు ధ్రువీకరణలు (త్రిభుజాకార ప్రొఫైల్, ఉమ్మడి పరిమితి, స్లో టెస్ట్) మూడు వేర్వేరు వాస్తవ సమస్యలను పట్టుకున్నాయి.

సాధారణ తప్పులు

  • ఉమ్మడి పరిమితులు మరియు ప్రాప్యత నియంత్రణ లేకుండా IK పరిష్కారాన్ని ఉపయోగించడం.
  • ఆర్కోస్/ఆర్క్‌సిన్ ఎంట్రీలను క్లిప్ చేయడం లేదు కానీ రౌండింగ్ లోపం ఉన్నట్లయితే NaNని ఉత్పత్తి చేస్తుంది.
  • వేగం/త్వరణాన్ని పరిమితం చేయకుండా మరియు మెకానికల్ షాక్‌ని సృష్టించకుండా కక్ష్యను అభ్యర్థించడం.
  • సింగులారిటీ జోన్‌లను విస్మరించడం మరియు ఉమ్మడి వేగం ఆకాశాన్ని తాకేలా చేయడం.
  • ట్రాపెజోయిడల్-త్రిభుజాకార ప్రొఫైల్ పరివర్తనను తక్కువ దూరం నుండి దాటవేయడం మరియు తప్పు సమయాన్ని లెక్కించడం.
  • పూర్తి వేగంతో మరియు E-స్టాప్ యాక్సెస్ లేకుండా మొదటి కక్ష్య పరీక్షను నిర్వహించడం.

సారాంశంలో

  • ఫార్వర్డ్ కైనమాటిక్స్ ఒకే పరిష్కారాన్ని కలిగి ఉంటుంది; విలోమ కైనమాటిక్స్ బహుళ, ఉనికిలో లేని లేదా అనంతమైన పరిష్కారాలను ఉత్పత్తి చేయగలదు.
  • IK పరిష్కారాలు తప్పనిసరిగా ఉమ్మడి పరిమితులు, యాక్సెసిబిలిటీ మరియు ఏకత్వం పరంగా ఫిల్టర్ చేయబడతాయి.
  • పథ ప్రణాళిక; ఇది ట్రాపెజోయిడల్ లేదా S-కర్వ్ వంటి మృదువైన, పరిమితి-అనుకూల ప్రొఫైల్‌లను ఉపయోగిస్తుంది.
  • తక్కువ దూరం వద్ద ప్రొఫైల్ ట్రాపజోయిడల్ నుండి త్రిభుజాకారానికి మారుతుంది; ఇది కోడ్‌లో నిర్వహించబడాలి.
  • AI గణితాన్ని వేగవంతం చేస్తుంది; పరిమితులు మరియు భౌతిక సంస్థాపన సందర్భం ప్రాంప్ట్‌లో నమోదు చేయాలి.
  • కొత్త పథం ఎల్లప్పుడూ తక్కువ వేగం నిష్పత్తి మరియు యాక్సెస్ చేయగల E-స్టాప్‌తో మొదటిసారిగా అమలు చేయబడుతుంది.

అప్లికేషన్ టాస్క్

రెండు లేదా మూడు-జాయింట్ ఆర్మ్ మోడల్‌ను ఎంచుకోండి (నిజమైన లేదా ఊహాత్మక లింక్ పొడవులు మరియు ఉమ్మడి పరిమితులతో). ఈ సందర్భంతో AI ఒక విలోమ కైనమాటిక్స్ ఫంక్షన్‌ను మరియు ట్రాజెక్టరీ ప్లానర్‌ను రూపొందించేలా చేయండి. అప్పుడు: (1) తెలిసిన లక్ష్యంతో IK అవుట్‌పుట్‌ను మాన్యువల్‌గా ధృవీకరించండి (మీరు కోణాలను వెనక్కి పెట్టి FK వలె అదే పాయింట్‌కి తిరిగి వస్తారా), (2) కనీసం ఒక ప్రాప్యత చేయలేని పాయింట్ మరియు లక్ష్యాన్ని మించిన ఒక ఉమ్మడి పరిమితిని ఇవ్వడం ద్వారా కోడ్ వాటిని క్యాప్చర్ చేస్తుందో లేదో పరీక్షించండి, (3) తక్కువ దూరం వద్ద కక్ష్య సమయం సహేతుకమైనదిగా మారుతుందో లేదో తనిఖీ చేయండి. కోడ్ యొక్క మొదటి సంస్కరణలో మీరు ఎన్ని ధృవీకరణ సమస్యలను కనుగొన్నారు మరియు ప్రతి ఒక్కటి ఏ పొరను పట్టుకున్నారో వ్రాయండి.