નફો:
- 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): raise ValueError("પોઇન્ટ સુલભ કામ કરવાની જગ્યાની બહાર છે") cos_t2 = (r2 - L1**2 - L2**2) / (2 * L1 * L2) cos_t2, cos_t2 = (2 * L1 * L2) cos_t. 1.0) # સંખ્યાત્મક સુરક્ષા t2 = np.arccos(cos_t2) # elbow down t1 = np.arctan2(y, x) - np.arctan2(L2*np.sin(t2), L1 + L2*np.cos(t2)) રીટર્ન np.degree(s)(Valdgrees)#t. 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 ને સ્પષ્ટપણે કહો કે "ઍક્સેસિબિલિટી કંટ્રોલ ઉમેરો અને આર્કોસ ઇનપુટને ક્લિપમાં મર્યાદિત કરો". આ બે લીટીઓ મૌન ભૂલોને અટકાવે છે જે ક્ષેત્રમાં સૌથી વધુ માથાનો દુખાવો કરે છે.
સંયુક્ત મર્યાદાઓ, એકલતા અને બહુવિધ ઉકેલો
વાસ્તવિક રોબોટના દરેક સાંધામાં ખૂણોની શ્રેણી (દા.ત. -170° થી +170°), ઝડપ મર્યાદા અને પ્રવેગક મર્યાદા હોય છે. જો IK ગાણિતિક રીતે માન્ય કોણ આપે તો પણ, જો તે કોણ સંયુક્તની ભૌતિક શ્રેણીની બહાર હોય તો તેનો ઉપયોગ કરી શકાતો નથી. વધુમાં, રોબોટ કેટલીક રૂપરેખાંકનોમાં એકલતામાં આવે છે: બે અક્ષો સંરેખિત થાય છે, એક ડિગ્રીની સ્વતંત્રતા ખોવાઈ જાય છે, અને સંયુક્ત વેગ નાની ટીપ ચળવળ માટે અનંત સુધી જવાનો પ્રયાસ કરે છે.
એટલા માટે એકલા એચઆર સોલ્યુશન પૂરતું નથી; દરેક ઉકેલે સ્વીકાર્યતા ફિલ્ટર પસાર કરવું આવશ્યક છે:
def solution_gecerli_mi(acilar_deg, limits_deg): """pains: [t1,t2,...], મર્યાદા: [(min,max),...]""" પીડા માટે, (amin, amax) in zip(acilar_deg, limits_deg): જો નહિં (amine <= pain <= amax): રીટર્ન False}: JP: {101}માટે. deg ({amine},{amax}) સિવાય" રીટર્ન ટ્રુ, "ઓકે" મર્યાદા = [(-170, 170), (-120, 120)]પ્રિન્ટ(કોઝમ_વૈલીડ_મી([0.0, 90.0], મર્યાદા)) # (સાચું, 'ઓકે')પ્રિન્ટ(કોઝમ_વૈલીડ_0, #0મી, 5.0મી) (ખોટું, 'સંયુક્ત મર્યાદા ઓળંગી...')
AI IK નો "ગાણિતિક" ઉકેલ આપી શકે છે; પરંતુ સંયુક્ત મર્યાદા અને એકલતા અવગણના તમારી સિસ્ટમ માટે વિશિષ્ટ છે અને પ્રોમ્પ્ટના સંદર્ભ તરીકે આપવામાં આવવી જોઈએ.
ભ્રમણકક્ષા આયોજન
બિંદુ A થી બિંદુ B સુધી રોબોટ મેળવવો એ બે ખૂણા વચ્ચે સીધી રેખા દોરવા વિશે નથી. અચાનક ગતિમાં ફેરફાર યાંત્રિક આંચકો અને કંપન બનાવે છે. તેના બદલે, નરમ રૂપરેખાઓનો ઉપયોગ કરવામાં આવે છે: ટ્રેપેઝોઇડલ વેગ પ્રોફાઇલ (સતત પ્રવેગક-સતત ગતિ-સતત મંદી) અથવા એસ-વળાંક (સરળ, જ્યાં પ્રવેગક પણ મર્યાદિત છે). AI ને જનરેટ કરતી વખતે, તમારે લક્ષ્ય, અવધિ અને મર્યાદાઓ આપવી પડશે.
npdef trapez_yorunge(q0, q1, v_max, a_max, dt=0.01) તરીકે numpy આયાત કરો: """એક જ સંયુક્ત માટે ટ્રેપેઝોઇડલ વેગ પ્રોફાઇલ. પોઝિશન એરે પરત કરવામાં આવે છે.""" અંતર = abs(q1 - q0) દિશા = np.sign (q1 - max_1) = np.sign (q1 - max_1) અંતર_ગતિ = 0.5 * a_max * t_speed**2 જો 2 * અંતર_સ્પીડ > અંતર: # ત્રિકોણાકાર પ્રોફાઇલ (v_max પહોંચી શકાય તેવું નથી) t_speed = np.sqrt(અંતર / a_max) t_constant = 0.0 v_peak = a_max * t_speed else: * t_conspeed = /d_speed = * 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,00 (trapezoidal.0.) v_max=60.0, a_max=120.0)પ્રિન્ટ(f"કુલ અવધિ: {અવધિ:.3f} s, ટોચની ઝડપ: {vz:.1f} deg/s")
અહીં તર્ક તપાસ આ છે: જો અંતર ઓછું હોય, તો મોટર ક્યારેય v_max સુધી પહોંચશે નહીં અને પ્રોફાઇલ ટ્રેપેઝોઇડલથી ત્રિકોણાકારમાં ફેરવાશે. જો AI આ સ્થિતિ ચૂકી જાય, તો ટૂંકી હિલચાલ માટે ખોટી અવધિની ગણતરી કરવામાં આવશે. તમે જાણીતા મૂલ્ય (ઉદાહરણ તરીકે, ખૂબ ટૂંકા અંતર) સાથે કોડનું પરીક્ષણ કરીને આ ચકાસી શકો છો.
નબળા પ્રોમ્પ્ટ / મજબૂત પ્રોમ્પ્ટ
નબળું:"રોબોટ હાથને A થી B સુધી લઈ જતો માર્ગ લખો."(કોઈ અવરોધ નથી: ગતિ મર્યાદા? પ્રવેગક? સંયુક્ત અંતર? અંધ આઉટપુટ.)STRONG:"6-અક્ષ રોબોટ માટે સંયુક્ત જગ્યામાં બિંદુ-થી-બિંદુ માર્ગ બનાવો. દરેક સંયુક્ત માટે ગતિ મર્યાદા 90 deg^1g/80 છે, ઝડપ મર્યાદા 90 ડિગ્રી છે. કોષ્ટકમાં કોણની શ્રેણી આપવામાં આવી છે, જો અંતર ટૂંકું હોય, તો ત્રિકોણાકાર પ્રોફાઇલમાં આવે છે તે એક વેરિફિકેશન ફંક્શન પણ લખે છે જે તપાસે છે કે તે સંયુક્ત મર્યાદાથી વધુ નથી: {{table}}
ચકાસણી: સિમ્યુલેશનથી રોબોટ સુધી
રોબોટ પર જતા પહેલા AI દ્વારા જનરેટ થયેલ માર્ગની ચકાસણી આ ક્રમમાં કરવામાં આવે છે:
- સંખ્યાત્મક: શું દરેક પગલાનો સંયુક્ત કોણ, ગતિ અને પ્રવેગ મર્યાદામાં છે?
- અથડામણ: બોલ સાથે, શું હાથ પોતાની સાથે અથવા પર્યાવરણ સાથે અથડાય છે (જો શક્ય હોય તો વિઝ્યુઅલાઈઝ/સિમ્યુલેટ કરો)?
- એકલતા: શું ભ્રમણકક્ષા એકલતા પ્રદેશમાંથી પસાર થાય છે (શું જેકોબિયન નિર્ણાયક શૂન્ય સુધી પહોંચે છે)?
- ધીમો હાર્ડવેર ટેસ્ટ: રોબોટને ઓછી ઝડપે ચલાવો (દા.ત. 10%) અને તેને દૃષ્ટિની રીતે મોનિટર કરો.
- ક્રમિક ગતિમાં વધારો: એકવાર બધું ચકાસવામાં આવે તે પછી, ઝડપ નજીવા મૂલ્ય સુધી સ્ટેપ બાય સ્ટેપ વધે છે.
સાવધાન: જ્યારે પ્રથમ વખત નવા માર્ગ સાથે રોબોટ શરૂ કરો, ત્યારે સ્પીડ ઓવરરાઈડ હંમેશા ઓછી હોવી જોઈએ અને ઈ-સ્ટોપ ઉપલબ્ધ હોવો જોઈએ. જો AI આઉટપુટ "ગાણિતિક રીતે સાચું" હોય, તો પણ ભૌતિક સેટઅપમાં ઑફસેટ, રિવર્સ એક્સિસ અથવા કેબલ સ્નેગ માત્ર ધીમા પરીક્ષણ સાથે જ જાહેર કરવામાં આવશે.
મીની કેસ
ઓટોમેશન એન્જિનિયર Ece એ એઆઈને પસંદ-અને-સ્થાન એપ્લિકેશન માટે સંયુક્ત જગ્યામાં ટ્રેજેક્ટરી કોડ માટે પૂછે છે. AI ટ્રેપેઝોઇડલ પ્રોફાઇલ બનાવે છે, પરંતુ જ્યારે Ece ટૂંકા-અંતરની ચાલનું પરીક્ષણ કરે છે, ત્યારે તેણી જુએ છે કે સમય નકારાત્મક છે: કોડ ત્રિકોણાકાર પ્રોફાઇલ કેસને હેન્ડલ કરતું નથી જ્યાં v_max સુધી પહોંચી શકાતું નથી. Ece પ્રોમ્પ્ટને "જો અંતર ઓછું હોય, તો ત્રિકોણાકાર રૂપરેખામાં પડો" કહીને આ સુધારે છે. તે પછી AI દ્વારા આપવામાં આવેલા સંયુક્ત ખૂણાઓને તેની પોતાની મર્યાદા કોષ્ટકની વિરુદ્ધ માન્યતા કાર્ય દ્વારા ચલાવે છે અને શોધે છે કે સંયુક્ત 5 એક સમયે +125° ઇચ્છે છે, જ્યારે મર્યાદા +120° હતી. તે માર્ગને ફરીથી ગોઠવે છે અને તેનું નિરીક્ષણ કરે છે, આ વખતે 10% ઝડપે રોબોટ ચલાવે છે. પ્રથમ રાઉન્ડમાં, તે જુએ છે કે ગ્રિપર ટેબલની ખૂબ નજીક આવી રહ્યું છે અને Z ઑફસેટને સુધારે છે. AI એ મિનિટોમાં કાર્યકારી રૂપરેખા પરત કરી; પરંતુ ત્રણ અલગ-અલગ માન્યતાઓ (ત્રિકોણાકાર પ્રોફાઇલ, સંયુક્ત મર્યાદા, ધીમી કસોટી) એ ત્રણ અલગ-અલગ વાસ્તવિક સમસ્યાઓ પકડી.
સામાન્ય ભૂલો
- સંયુક્ત મર્યાદા અને સુલભતા નિયંત્રણ વિના IK સોલ્યુશનનો ઉપયોગ કરવો.
- આર્કોસ/આર્કસિન એન્ટ્રીઓને ક્લિપિંગ નહીં પરંતુ રાઉન્ડિંગ ભૂલના કિસ્સામાં NaN બનાવવું.
- ગતિ/પ્રવેગને મર્યાદિત કર્યા વિના અને યાંત્રિક આંચકો બનાવ્યા વિના ભ્રમણકક્ષાની વિનંતી કરવી.
- સિન્ગ્યુલારિટી ઝોનને અવગણવું અને સંયુક્ત ગતિને આસમાને પહોંચવા દો.
- ટૂંકા અંતરમાં ટ્રેપેઝોઇડલ-ત્રિકોણાકાર પ્રોફાઇલ સંક્રમણને છોડવું અને ખોટા સમયની ગણતરી કરવી.
- સંપૂર્ણ ઝડપે અને ઇ-સ્ટોપ એક્સેસ વિના પ્રથમ ઓર્બિટલ ટેસ્ટનું સંચાલન કરવું.
સારાંશમાં
- ફોરવર્ડ ગતિશાસ્ત્રમાં એક જ ઉકેલ છે; વ્યસ્ત ગતિશાસ્ત્ર બહુવિધ, અવિદ્યમાન અથવા અનંત ઉકેલો ઉત્પન્ન કરી શકે છે.
- IK સોલ્યુશન્સ આવશ્યકપણે સંયુક્ત મર્યાદા, સુલભતા અને એકલતાના સંદર્ભમાં ફિલ્ટર કરવામાં આવે છે.
- માર્ગ આયોજન; તે નરમ, મર્યાદા-સુસંગત પ્રોફાઇલ્સનો ઉપયોગ કરે છે જેમ કે ટ્રેપેઝોઇડલ અથવા એસ-કર્વ.
- ટૂંકા અંતરે પ્રોફાઇલ ટ્રેપેઝોઇડલથી ત્રિકોણાકારમાં બદલાય છે; આ કોડમાં નિયંત્રિત થવું જોઈએ.
- AI ગણિતને વેગ આપે છે; મર્યાદા અને ભૌતિક સ્થાપન સંદર્ભ પ્રોમ્પ્ટમાં દાખલ થવો જોઈએ.
- નવો માર્ગ હંમેશા નીચા સ્પીડ રેશિયો અને સુલભ ઇ-સ્ટોપ સાથે પ્રથમ વખત ચલાવવામાં આવે છે.
એપ્લિકેશન કાર્ય
બે અથવા ત્રણ-સંયુક્ત હાથનું મોડલ પસંદ કરો (વાસ્તવિક અથવા કાલ્પનિક લિંક લંબાઈ અને સંયુક્ત મર્યાદા સાથે). AI ને આ સંદર્ભ સાથે એક વ્યસ્ત ગતિશાસ્ત્ર કાર્ય અને ટ્રેજેક્ટરી પ્લાનર જનરેટ કરવા દો. પછી: (1) મેન્યુઅલી IK આઉટપુટને જાણીતા લક્ષ્ય સાથે ચકાસો (શું તમે ખૂણાને પાછળ મૂકો છો અને FK જેવા જ બિંદુ પર પાછા ફરો છો), (2) ઓછામાં ઓછા એક અગમ્ય બિંદુ અને લક્ષ્ય કરતાં એક સંયુક્ત મર્યાદા આપીને કોડ તેમને કેપ્ચર કરે છે તે પરીક્ષણ કરો, (3) તપાસો કે ટૂંકા અંતરે ભ્રમણકક્ષાનો સમય વાજબી હોવાનું બહાર આવ્યું છે. કોડના પ્રથમ સંસ્કરણમાં તમને કેટલી માન્યતા સમસ્યાઓ મળી અને દરેકને કયા સ્તરે પકડ્યો તે લખો.