ਲਾਭ:
- ਏ.ਆਈ. ਦੀ ਮਦਦ ਨਾਲ ਅੱਗੇ/ਉਲਟ ਕਾਇਨਮੈਟਿਕਸ ਅਤੇ ਟ੍ਰੈਜੈਕਟਰੀ ਪਲੈਨਿੰਗ ਸਮੱਸਿਆਵਾਂ ਨੂੰ ਸਥਾਪਤ ਕਰਨ ਅਤੇ ਹੱਲ ਕਰਨ ਦੀ ਸਮਰੱਥਾ
- ਪ੍ਰੋਂਪਟ ਦੇ ਸੰਦਰਭ ਵਜੋਂ ਰੋਬੋਟ ਦੀਆਂ ਸਾਂਝੀਆਂ ਸੀਮਾਵਾਂ, ਗਤੀ ਅਤੇ ਪ੍ਰਵੇਗ ਦੀਆਂ ਰੁਕਾਵਟਾਂ ਦੇ ਕੇ ਸੁਰੱਖਿਅਤ ਔਰਬਿਟ ਪੈਦਾ ਕਰਨ ਦੀ ਸਮਰੱਥਾ
- ਏਆਈ ਦੁਆਰਾ ਤਿਆਰ ਕੀਤੇ ਗਤੀਸ਼ੀਲ ਅਤੇ ਟ੍ਰੈਜੈਕਟਰੀ ਆਉਟਪੁੱਟ ਨੂੰ ਸੰਖਿਆਤਮਕ ਅਤੇ ਸਰੀਰਕ ਤੌਰ 'ਤੇ ਪ੍ਰਮਾਣਿਤ ਕਰਨ ਦੀ ਸਮਰੱਥਾ
ਰੋਬੋਟ ਬਾਂਹ ਦੇ ਸਿਰੇ 'ਤੇ ਗ੍ਰਿਪਰ ਨੂੰ ਸਪੇਸ ਦੇ ਇੱਕ ਖਾਸ ਬਿੰਦੂ ਤੱਕ, ਇੱਕ ਖਾਸ ਸਥਿਤੀ ਵਿੱਚ ਲਿਆਉਣਾ; ਇਹ ਸਧਾਰਨ ਜਾਪਦਾ ਹੈ, ਪਰ ਇਸਦੇ ਪਿੱਛੇ ਕਿਨੇਮੈਟਿਕ ਸਮੀਕਰਨਾਂ, ਸੰਯੁਕਤ ਸੀਮਾਵਾਂ, ਇਕਵਚਨਤਾ ਅਤੇ ਟ੍ਰੈਜੈਕਟਰੀ ਪਲੈਨਿੰਗ ਹਨ। ਇੱਥੇ, ਮੇਕਾਟ੍ਰੋਨਿਕਸ ਇੰਜੀਨੀਅਰ ਤਿਕੋਣਮਿਤੀ, ਰੇਖਿਕ ਅਲਜਬਰੇ ਅਤੇ ਕੰਟਰੋਲ ਥਿਊਰੀ ਨੂੰ ਇਕੱਠੇ ਵਰਤਦਾ ਹੈ। ਆਰਟੀਫੀਸ਼ੀਅਲ ਇੰਟੈਲੀਜੈਂਸ ਇਸ ਪ੍ਰਕਿਰਿਆ ਵਿੱਚ ਇੱਕ ਸ਼ਕਤੀਸ਼ਾਲੀ ਸਹਾਇਤਾ ਹੈ: ਇਹ ਅੱਗੇ ਕਿਨੇਮੈਟਿਕਸ ਸਮੀਕਰਨਾਂ ਨੂੰ ਸਥਾਪਿਤ ਕਰ ਸਕਦੀ ਹੈ, ਉਲਟ ਕਿਨੇਮੈਟਿਕਸ ਲਈ ਹੱਲ ਪਹੁੰਚਾਂ ਦਾ ਸੁਝਾਅ ਦੇ ਸਕਦੀ ਹੈ, ਵੇਗ/ਪ੍ਰਵੇਗ ਸੀਮਾਵਾਂ ਦੇ ਅਨੁਸਾਰ ਇੱਕ ਟ੍ਰੈਜੈਕਟਰੀ ਨੂੰ ਪੈਰਾਮੀਟਰਾਈਜ਼ ਕਰ ਸਕਦੀ ਹੈ। ਹਾਲਾਂਕਿ, ਰੋਬੋਟਿਕਸ ਮੈਕੈਟ੍ਰੋਨਿਕਸ ਵਿੱਚ ਸਭ ਤੋਂ ਵੱਧ ਸਰੀਰਕ ਜੋਖਮ ਵਾਲੇ ਖੇਤਰਾਂ ਵਿੱਚੋਂ ਇੱਕ ਹੈ; ਜੇਕਰ 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 = cos_t2, cos_t2. 1.0) # ਸੰਖਿਆਤਮਕ ਸੁਰੱਖਿਆ t2 = np.arccos(cos_t2) # ਕੂਹਣੀ ਹੇਠਾਂ t1 = np.arctan2(y, x) - np.arctan2(L2*np.sin(t2), L1 + L2*np.cos(t2)) ਵਾਪਸੀ np.degree(s_dgrees) , Value.dgrees(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 ਨੂੰ ਸਪਸ਼ਟ ਤੌਰ 'ਤੇ "ਐਕਸੈਸਬਿਲਟੀ ਕੰਟਰੋਲ ਜੋੜੋ ਅਤੇ ਆਰਕੋਸ ਇਨਪੁਟ ਨੂੰ ਕਲਿੱਪ ਤੱਕ ਸੀਮਤ ਕਰੋ" ਲਈ ਕਹੋ। ਇਹ ਦੋ ਲਾਈਨਾਂ ਚੁੱਪ ਦੀਆਂ ਗਲਤੀਆਂ ਨੂੰ ਰੋਕਦੀਆਂ ਹਨ ਜੋ ਖੇਤਰ ਵਿੱਚ ਸਭ ਤੋਂ ਵੱਧ ਸਿਰਦਰਦ ਦਾ ਕਾਰਨ ਬਣਦੀਆਂ ਹਨ।
ਸੰਯੁਕਤ ਸੀਮਾਵਾਂ, ਇਕਵਚਨਤਾ ਅਤੇ ਕਈ ਹੱਲ
ਇੱਕ ਅਸਲੀ ਰੋਬੋਟ ਦੇ ਹਰੇਕ ਜੋੜ ਵਿੱਚ ਇੱਕ ਕੋਣ ਸੀਮਾ (ਉਦਾਹਰਨ ਲਈ -170° ਤੋਂ +170°), ਇੱਕ ਗਤੀ ਸੀਮਾ, ਅਤੇ ਇੱਕ ਪ੍ਰਵੇਗ ਸੀਮਾ ਹੁੰਦੀ ਹੈ। ਭਾਵੇਂ IK ਗਣਿਤਿਕ ਤੌਰ 'ਤੇ ਵੈਧ ਕੋਣ ਦਿੰਦਾ ਹੈ, ਇਸਦੀ ਵਰਤੋਂ ਨਹੀਂ ਕੀਤੀ ਜਾ ਸਕਦੀ ਜੇਕਰ ਉਹ ਕੋਣ ਜੋੜ ਦੀ ਭੌਤਿਕ ਸੀਮਾ ਤੋਂ ਬਾਹਰ ਹੈ। ਇਸ ਤੋਂ ਇਲਾਵਾ, ਰੋਬੋਟ ਕੁਝ ਸੰਰਚਨਾਵਾਂ ਵਿੱਚ ਇਕਸਾਰਤਾ ਵਿੱਚ ਡਿੱਗਦਾ ਹੈ: ਦੋ ਧੁਰੇ ਇਕਸਾਰ ਹੁੰਦੇ ਹਨ, ਇੱਕ ਡਿਗਰੀ ਦੀ ਆਜ਼ਾਦੀ ਖਤਮ ਹੋ ਜਾਂਦੀ ਹੈ, ਅਤੇ ਸੰਯੁਕਤ ਵੇਗ ਇੱਕ ਛੋਟੀ ਟਿਪ ਅੰਦੋਲਨ ਲਈ ਅਨੰਤਤਾ ਵੱਲ ਜਾਣ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰਦੇ ਹਨ।
ਇਸ ਲਈ ਇਕੱਲੇ ਐਚਆਰ ਹੱਲ ਕਾਫ਼ੀ ਨਹੀਂ ਹੈ; ਹਰ ਹੱਲ ਨੂੰ ਇੱਕ ਸਵੀਕਾਰਯੋਗਤਾ ਫਿਲਟਰ ਪਾਸ ਕਰਨਾ ਚਾਹੀਦਾ ਹੈ:
def solution_gecerli_mi(acilar_deg, limits_deg): """ਦਰਦ: [t1,t2,...], ਸੀਮਾਵਾਂ: [(min,max),...]""" ਦਰਦ ਲਈ, (amin, amax) in zip(acilar_deg, limits_deg): ਜੇਕਰ ਨਹੀਂ (amine <= pain <= amax): False} ਵਿੱਚ ਵਾਪਸੀ: False}} deg ({amine},{amax}) ਨੂੰ ਛੱਡ ਕੇ "ਵਾਪਸੀ ਸਹੀ, "ਠੀਕ ਹੈ" ਸੀਮਾ = [(-170, 170), (-120, 120)]ਪ੍ਰਿੰਟ(ਕੋਜ਼ਮ_ਵੈਲਿਡ_ਮੀ([0.0, 90.0], ਸੀਮਾਵਾਂ)) # (ਸੱਚਾ, 'ਠੀਕ ਹੈ')ਪ੍ਰਿੰਟ(ਕੋਜ਼ਮ_ਵੈਧ_0,0,0,0,5) ਪ੍ਰਿੰਟ। (ਗਲਤ, 'ਸੰਯੁਕਤ ਸੀਮਾ ਵੱਧ ਗਈ...')
AI IK ਦਾ "ਗਣਿਤਿਕ" ਹੱਲ ਦੇ ਸਕਦਾ ਹੈ; ਪਰ ਸੰਯੁਕਤ ਸੀਮਾਵਾਂ ਅਤੇ ਇਕਵਚਨਤਾ ਤੋਂ ਬਚਣਾ ਤੁਹਾਡੇ ਸਿਸਟਮ ਲਈ ਖਾਸ ਹਨ ਅਤੇ ਪ੍ਰੋਂਪਟ ਦੇ ਸੰਦਰਭ ਵਜੋਂ ਦਿੱਤਾ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ।
ਔਰਬਿਟ ਪਲੈਨਿੰਗ
ਰੋਬੋਟ ਨੂੰ ਬਿੰਦੂ A ਤੋਂ ਬਿੰਦੂ B ਤੱਕ ਪ੍ਰਾਪਤ ਕਰਨਾ ਦੋ ਕੋਣਾਂ ਦੇ ਵਿਚਕਾਰ ਇੱਕ ਸਿੱਧੀ ਰੇਖਾ ਖਿੱਚਣ ਬਾਰੇ ਨਹੀਂ ਹੈ। ਅਚਾਨਕ ਗਤੀ ਤਬਦੀਲੀ ਮਕੈਨੀਕਲ ਸਦਮਾ ਅਤੇ ਵਾਈਬ੍ਰੇਸ਼ਨ ਪੈਦਾ ਕਰਦੀ ਹੈ। ਇਸ ਦੀ ਬਜਾਏ, ਨਰਮ ਪ੍ਰੋਫਾਈਲਾਂ ਦੀ ਵਰਤੋਂ ਕੀਤੀ ਜਾਂਦੀ ਹੈ: ਟ੍ਰੈਪੀਜ਼ੋਇਡਲ ਵੇਲੋਸਿਟੀ ਪ੍ਰੋਫਾਈਲ (ਸਥਿਰ ਪ੍ਰਵੇਗ–ਸਥਿਰ ਗਤੀ–ਸਥਿਰ ਗਿਰਾਵਟ) ਜਾਂ S-ਕਰਵ (ਸਮੁਦਰ, ਜਿੱਥੇ ਪ੍ਰਵੇਗ ਵੀ ਸੀਮਤ ਹੈ)। AI ਨੂੰ ਜਨਰੇਟ ਟ੍ਰੈਜੈਕਟਰੀ ਬਣਾਉਂਦੇ ਸਮੇਂ, ਤੁਹਾਨੂੰ ਟੀਚਾ, ਮਿਆਦ ਅਤੇ ਰੁਕਾਵਟਾਂ ਦੇਣੀ ਚਾਹੀਦੀ ਹੈ।
npdef trapez_yorunge(q0, q1, v_max, a_max, dt=0.01) ਦੇ ਤੌਰ 'ਤੇ numpy ਆਯਾਤ ਕਰੋ: """ਇੱਕ ਸਿੰਗਲ ਜੁਆਇੰਟ ਲਈ ਟ੍ਰੈਪੀਜ਼ੋਇਡਲ ਵੇਗ ਪ੍ਰੋਫਾਈਲ। ਸਥਿਤੀ ਐਰੇ ਵਾਪਸ ਕੀਤਾ ਜਾਂਦਾ ਹੈ।""" ਦੂਰੀ = abs(q1 - q0) ਦਿਸ਼ਾ = np.sign (max / q1) = qpe_s_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_conspeed other: v_max v_peak = v_max T = 2 * t_accelerate + t_constant t = np.arange(0, T, dt) # ... ਹਰੇਕ ਟੀ ਲਈ ਸਥਿਤੀ ਗਣਨਾ (ਪ੍ਰਵੇਗ/ਸਥਿਰ/ਸਥਿਰਤਾ ਪੜਾਵਾਂ ਦੇ ਅਧਾਰ ਤੇ) ਵਾਪਸੀ t, T, v_peak, ਮਿਆਦ, vz = trapezoidal,(9.0.0. v_max=60.0, a_max=120.0)ਪ੍ਰਿੰਟ(f"ਕੁੱਲ ਅਵਧੀ: {ਅਵਧੀ:.3f} s, ਸਿਖਰ ਗਤੀ: {vz:.1f} deg/s")
ਇੱਥੇ ਤਰਕ ਜਾਂਚ ਇਹ ਹੈ: ਜੇਕਰ ਦੂਰੀ ਛੋਟੀ ਹੈ, ਤਾਂ ਮੋਟਰ ਕਦੇ ਵੀ v_max ਤੱਕ ਨਹੀਂ ਪਹੁੰਚੇਗੀ ਅਤੇ ਪ੍ਰੋਫਾਈਲ ਟ੍ਰੈਪੀਜ਼ੋਇਡਲ ਤੋਂ ਤਿਕੋਣੀ ਵਿੱਚ ਬਦਲ ਜਾਵੇਗੀ। ਜੇਕਰ AI ਇਸ ਸ਼ਰਤ ਨੂੰ ਖੁੰਝਾਉਂਦਾ ਹੈ, ਤਾਂ ਛੋਟੀਆਂ ਹਰਕਤਾਂ ਲਈ ਗਲਤ ਅਵਧੀ ਦੀ ਗਣਨਾ ਕੀਤੀ ਜਾਵੇਗੀ। ਤੁਸੀਂ ਕਿਸੇ ਜਾਣੇ-ਪਛਾਣੇ ਮੁੱਲ (ਉਦਾਹਰਨ ਲਈ, ਬਹੁਤ ਘੱਟ ਦੂਰੀ) ਨਾਲ ਕੋਡ ਦੀ ਜਾਂਚ ਕਰਕੇ ਇਸਦੀ ਪੁਸ਼ਟੀ ਕਰ ਸਕਦੇ ਹੋ।
ਕਮਜ਼ੋਰ ਪ੍ਰੋਂਪਟ / ਮਜ਼ਬੂਤ ਪ੍ਰੋਂਪਟ
ਕਮਜ਼ੋਰ:"ਇੱਕ ਟ੍ਰੈਜੈਕਟਰੀ ਲਿਖੋ ਜੋ ਰੋਬੋਟ ਦੀ ਬਾਂਹ ਨੂੰ A ਤੋਂ B ਤੱਕ ਲੈ ਜਾਵੇ।"(ਕੋਈ ਰੁਕਾਵਟ ਨਹੀਂ: ਗਤੀ ਸੀਮਾ? ਪ੍ਰਵੇਗ? ਸੰਯੁਕਤ ਸਪੇਸਿੰਗ? ਅੰਨ੍ਹੇ ਆਉਟਪੁੱਟ।)STRONG:"6-ਧੁਰੇ ਵਾਲੇ ਰੋਬੋਟ ਲਈ ਸੰਯੁਕਤ ਸਪੇਸ ਵਿੱਚ ਇੱਕ ਬਿੰਦੂ-ਤੋਂ-ਪੁਆਇੰਟ ਟ੍ਰੈਜੈਕਟਰੀ ਤਿਆਰ ਕਰੋ। ਹਰੇਕ ਜੋੜ ਲਈ ਗਤੀ ਸੀਮਾ 90 ਡਿਗਰੀ / 20 ਡਿਗਰੀ ਹੈ, ਐਕਸਲ 201 ਡਿਗਰੀ ਹੈ, ਕੋਣ ਦੀ ਰੇਂਜ ਟੇਬਲ ਵਿੱਚ ਦਿੱਤੀ ਗਈ ਹੈ, ਜੇਕਰ ਦੂਰੀ ਛੋਟੀ ਹੈ, ਤਾਂ ਇੱਕ ਤਿਕੋਣੀ ਪ੍ਰੋਫਾਈਲ ਵਿੱਚ ਆਉਟਪੁੱਟ ਇੱਕ ਵੈਰੀਫਿਕੇਸ਼ਨ ਫੰਕਸ਼ਨ ਹੈ ਜੋ ਇਹ ਜਾਂਚਦਾ ਹੈ ਕਿ ਇਹ ਸੰਯੁਕਤ ਸੀਮਾਵਾਂ ਤੋਂ ਵੱਧ ਨਹੀਂ ਹੈ: {{ਸਾਰਣੀ}}।
ਪੁਸ਼ਟੀਕਰਨ: ਸਿਮੂਲੇਸ਼ਨ ਤੋਂ ਰੋਬੋਟ ਤੱਕ
ਰੋਬੋਟ 'ਤੇ ਜਾਣ ਤੋਂ ਪਹਿਲਾਂ AI ਦੁਆਰਾ ਤਿਆਰ ਕੀਤੇ ਟ੍ਰੈਜੈਕਟਰੀ ਨੂੰ ਇਸ ਕ੍ਰਮ ਵਿੱਚ ਪ੍ਰਮਾਣਿਤ ਕੀਤਾ ਜਾਂਦਾ ਹੈ:
- ਸੰਖਿਆਤਮਕ: ਕੀ ਹਰੇਕ ਕਦਮ ਦਾ ਸੰਯੁਕਤ ਕੋਣ, ਗਤੀ ਅਤੇ ਪ੍ਰਵੇਗ ਸੀਮਾਵਾਂ ਦੇ ਅੰਦਰ ਹੈ?
- ਟੱਕਰ: ਟ੍ਰੈਜੈਕਟਰੀ ਦੇ ਨਾਲ, ਕੀ ਬਾਂਹ ਆਪਣੇ ਆਪ ਜਾਂ ਵਾਤਾਵਰਣ ਨਾਲ ਟਕਰਾਉਂਦੀ ਹੈ (ਜੇ ਸੰਭਵ ਹੋਵੇ ਤਾਂ ਕਲਪਨਾ ਕਰੋ/ਸਿਮੂਲੇਟ ਕਰੋ)?
- ਇਕਵਚਨਤਾ: ਕੀ ਔਰਬਿਟ ਇੱਕ ਸਿੰਗਲਰਿਟੀ ਖੇਤਰ ਵਿੱਚੋਂ ਲੰਘਦਾ ਹੈ (ਕੀ ਜੈਕੋਬੀਅਨ ਨਿਰਧਾਰਕ ਜ਼ੀਰੋ ਤੱਕ ਪਹੁੰਚਦਾ ਹੈ)?
- ਹੌਲੀ ਹਾਰਡਵੇਅਰ ਟੈਸਟ: ਰੋਬੋਟ ਨੂੰ ਘੱਟ ਸਪੀਡ (ਜਿਵੇਂ ਕਿ 10%) 'ਤੇ ਸੰਚਾਲਿਤ ਕਰੋ ਅਤੇ ਦ੍ਰਿਸ਼ਟੀਗਤ ਤੌਰ 'ਤੇ ਇਸ ਦੀ ਨਿਗਰਾਨੀ ਕਰੋ।
- ਹੌਲੀ-ਹੌਲੀ ਗਤੀ ਵਿੱਚ ਵਾਧਾ: ਇੱਕ ਵਾਰ ਜਦੋਂ ਹਰ ਚੀਜ਼ ਦੀ ਪੁਸ਼ਟੀ ਹੋ ਜਾਂਦੀ ਹੈ, ਤਾਂ ਗਤੀ ਕਦਮ ਦਰ ਕਦਮ ਨਾਮਾਤਰ ਮੁੱਲ ਤੱਕ ਵਧਦੀ ਹੈ।
ਸਾਵਧਾਨ: ਪਹਿਲੀ ਵਾਰ ਇੱਕ ਨਵੇਂ ਟ੍ਰੈਜੈਕਟਰੀ ਨਾਲ ਰੋਬੋਟ ਸ਼ੁਰੂ ਕਰਨ ਵੇਲੇ, ਸਪੀਡ ਓਵਰਰਾਈਡ ਹਮੇਸ਼ਾ ਘੱਟ ਹੋਣੀ ਚਾਹੀਦੀ ਹੈ ਅਤੇ ਈ-ਸਟਾਪ ਉਪਲਬਧ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ। ਭਾਵੇਂ AI ਆਉਟਪੁੱਟ "ਗਣਿਤਿਕ ਤੌਰ 'ਤੇ ਸਹੀ ਹੈ," ਭੌਤਿਕ ਸੈਟਅਪ ਵਿੱਚ ਇੱਕ ਆਫਸੈੱਟ, ਰਿਵਰਸ ਐਕਸਿਸ, ਜਾਂ ਕੇਬਲ ਸਨੈਗ ਸਿਰਫ ਹੌਲੀ ਟੈਸਟਿੰਗ ਨਾਲ ਪ੍ਰਗਟ ਕੀਤਾ ਜਾਵੇਗਾ।
ਮਿੰਨੀ ਕੇਸ
ਆਟੋਮੇਸ਼ਨ ਇੰਜੀਨੀਅਰ Ece ਇੱਕ ਪਿਕ-ਐਂਡ-ਪਲੇਸ ਐਪਲੀਕੇਸ਼ਨ ਲਈ ਸੰਯੁਕਤ ਥਾਂ ਵਿੱਚ ਟ੍ਰੈਜੈਕਟਰੀ ਕੋਡ ਲਈ AI ਨੂੰ ਪੁੱਛਦਾ ਹੈ। AI ਇੱਕ ਟ੍ਰੈਪੀਜ਼ੋਇਡਲ ਪ੍ਰੋਫਾਈਲ ਬਣਾਉਂਦਾ ਹੈ, ਪਰ ਜਦੋਂ Ece ਇੱਕ ਛੋਟੀ-ਦੂਰੀ ਦੀ ਚਾਲ ਦੀ ਜਾਂਚ ਕਰਦੀ ਹੈ, ਤਾਂ ਉਹ ਦੇਖਦੀ ਹੈ ਕਿ ਸਮਾਂ ਨਕਾਰਾਤਮਕ ਹੈ: ਕੋਡ ਨੇ ਤਿਕੋਣੀ ਪ੍ਰੋਫਾਈਲ ਕੇਸ ਨੂੰ ਨਹੀਂ ਸੰਭਾਲਿਆ ਜਿੱਥੇ v_max ਤੱਕ ਪਹੁੰਚ ਨਹੀਂ ਕੀਤੀ ਜਾ ਸਕਦੀ। Ece ਪ੍ਰੋਂਪਟ ਨੂੰ "ਜੇ ਦੂਰੀ ਛੋਟੀ ਹੈ, ਤਿਕੋਣੀ ਪ੍ਰੋਫਾਈਲ ਵਿੱਚ ਡਿੱਗੋ" ਦੱਸ ਕੇ ਇਸਨੂੰ ਠੀਕ ਕਰਦਾ ਹੈ। ਇਹ ਫਿਰ AI ਦੁਆਰਾ ਦਿੱਤੇ ਗਏ ਸੰਯੁਕਤ ਕੋਣਾਂ ਨੂੰ ਇਸਦੇ ਪ੍ਰਮਾਣਿਕਤਾ ਫੰਕਸ਼ਨ ਦੁਆਰਾ ਇਸਦੀ ਆਪਣੀ ਸੀਮਾ ਸਾਰਣੀ ਦੇ ਵਿਰੁੱਧ ਚਲਾਉਂਦਾ ਹੈ ਅਤੇ ਪਾਇਆ ਜਾਂਦਾ ਹੈ ਕਿ ਸੰਯੁਕਤ 5 ਇੱਕ ਬਿੰਦੂ 'ਤੇ +125° ਚਾਹੁੰਦਾ ਸੀ, ਜਦੋਂ ਕਿ ਸੀਮਾ +120° ਸੀ। ਉਹ ਟ੍ਰੈਜੈਕਟਰੀ ਨੂੰ ਬਦਲਦਾ ਹੈ ਅਤੇ ਇਸ ਦੀ ਨਿਗਰਾਨੀ ਕਰਦਾ ਹੈ, ਇਸ ਵਾਰ ਰੋਬੋਟ ਨੂੰ 10% ਦੀ ਗਤੀ ਨਾਲ ਚਲਾ ਰਿਹਾ ਹੈ। ਪਹਿਲੇ ਗੇੜ ਵਿੱਚ, ਉਹ ਦੇਖਦਾ ਹੈ ਕਿ ਗ੍ਰਿੱਪਰ ਟੇਬਲ ਦੇ ਬਹੁਤ ਨੇੜੇ ਆ ਰਿਹਾ ਹੈ ਅਤੇ Z ਆਫਸੈੱਟ ਨੂੰ ਠੀਕ ਕਰਦਾ ਹੈ। ਏਆਈ ਨੇ ਮਿੰਟਾਂ ਵਿੱਚ ਇੱਕ ਕਾਰਜਕਾਰੀ ਰੂਪਰੇਖਾ ਵਾਪਸ ਕਰ ਦਿੱਤੀ; ਪਰ ਤਿੰਨ ਵੱਖਰੀਆਂ ਪ੍ਰਮਾਣਿਕਤਾਵਾਂ (ਤਿਕੋਣੀ ਪ੍ਰੋਫਾਈਲ, ਸੰਯੁਕਤ ਸੀਮਾ, ਹੌਲੀ ਟੈਸਟ) ਨੇ ਤਿੰਨ ਵੱਖਰੀਆਂ ਅਸਲ ਸਮੱਸਿਆਵਾਂ ਫੜੀਆਂ।
ਆਮ ਗਲਤੀਆਂ
- ਸੰਯੁਕਤ ਸੀਮਾਵਾਂ ਅਤੇ ਪਹੁੰਚਯੋਗਤਾ ਨਿਯੰਤਰਣ ਦੇ ਬਿਨਾਂ IK ਹੱਲ ਦੀ ਵਰਤੋਂ ਕਰਨਾ।
- arccos/arcsin ਐਂਟਰੀਆਂ ਨੂੰ ਕਲਿਪ ਨਹੀਂ ਕਰਨਾ ਪਰ ਰਾਉਂਡਿੰਗ ਗਲਤੀ ਦੇ ਮਾਮਲੇ ਵਿੱਚ NaN ਤਿਆਰ ਕਰਨਾ।
- ਗਤੀ/ਪ੍ਰਵੇਗ ਨੂੰ ਸੀਮਤ ਕੀਤੇ ਬਿਨਾਂ ਅਤੇ ਮਕੈਨੀਕਲ ਸਦਮਾ ਪੈਦਾ ਕੀਤੇ ਬਿਨਾਂ ਔਰਬਿਟ ਦੀ ਬੇਨਤੀ ਕਰਨਾ।
- ਸਿੰਗਲਰਿਟੀ ਜ਼ੋਨਾਂ ਨੂੰ ਨਜ਼ਰਅੰਦਾਜ਼ ਕਰਨਾ ਅਤੇ ਸੰਯੁਕਤ ਗਤੀ ਨੂੰ ਅਸਮਾਨੀ ਚੜ੍ਹਨ ਦੇਣਾ।
- ਥੋੜੀ ਦੂਰੀ ਵਿੱਚ ਟ੍ਰੈਪੀਜ਼ੋਇਡਲ-ਤਿਕੋਣੀ ਪ੍ਰੋਫਾਈਲ ਤਬਦੀਲੀ ਨੂੰ ਛੱਡਣਾ ਅਤੇ ਗਲਤ ਸਮੇਂ ਦੀ ਗਣਨਾ ਕਰਨਾ।
- ਪੂਰੀ ਗਤੀ ਤੇ ਅਤੇ ਬਿਨਾਂ ਈ-ਸਟਾਪ ਐਕਸੈਸ ਦੇ ਪਹਿਲੇ ਔਰਬਿਟਲ ਟੈਸਟ ਦਾ ਆਯੋਜਨ ਕਰਨਾ।
ਸੰਖੇਪ ਵਿੱਚ
- ਫਾਰਵਰਡ ਕਿਨੇਮੈਟਿਕਸ ਦਾ ਇੱਕ ਸਿੰਗਲ ਹੱਲ ਹੈ; ਉਲਟ ਕਿਨੇਮੈਟਿਕਸ ਕਈ, ਗੈਰ-ਮੌਜੂਦ ਜਾਂ ਅਨੰਤ ਹੱਲ ਪੈਦਾ ਕਰ ਸਕਦੇ ਹਨ।
- IK ਹੱਲ ਜ਼ਰੂਰੀ ਤੌਰ 'ਤੇ ਸੰਯੁਕਤ ਸੀਮਾਵਾਂ, ਪਹੁੰਚਯੋਗਤਾ ਅਤੇ ਇਕਵਚਨਤਾ ਦੇ ਰੂਪ ਵਿੱਚ ਫਿਲਟਰ ਕੀਤੇ ਜਾਂਦੇ ਹਨ।
- ਟ੍ਰੈਜੈਕਟਰੀ ਯੋਜਨਾ; ਇਹ ਨਰਮ, ਸੀਮਾ-ਅਨੁਕੂਲ ਪ੍ਰੋਫਾਈਲਾਂ ਦੀ ਵਰਤੋਂ ਕਰਦਾ ਹੈ ਜਿਵੇਂ ਕਿ ਟ੍ਰੈਪੀਜ਼ੋਇਡਲ ਜਾਂ ਐਸ-ਕਰਵ।
- ਛੋਟੀ ਦੂਰੀ 'ਤੇ ਪ੍ਰੋਫਾਈਲ ਟ੍ਰੈਪੇਜ਼ੋਇਡਲ ਤੋਂ ਤਿਕੋਣੀ ਤੱਕ ਬਦਲਦਾ ਹੈ; ਇਸ ਨੂੰ ਕੋਡ ਵਿੱਚ ਸੰਭਾਲਿਆ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ।
- AI ਗਣਿਤ ਨੂੰ ਤੇਜ਼ ਕਰਦਾ ਹੈ; ਸੀਮਾਵਾਂ ਅਤੇ ਭੌਤਿਕ ਸਥਾਪਨਾ ਸੰਦਰਭ ਪ੍ਰੋਂਪਟ ਵਿੱਚ ਦਾਖਲ ਹੋਣੇ ਚਾਹੀਦੇ ਹਨ।
- ਨਵਾਂ ਟ੍ਰੈਜੈਕਟਰੀ ਹਮੇਸ਼ਾ ਘੱਟ ਗਤੀ ਅਨੁਪਾਤ ਅਤੇ ਪਹੁੰਚਯੋਗ ਈ-ਸਟਾਪ ਨਾਲ ਪਹਿਲੀ ਵਾਰ ਚਲਾਇਆ ਜਾਂਦਾ ਹੈ।
ਐਪਲੀਕੇਸ਼ਨ ਦਾ ਕੰਮ
ਦੋ- ਜਾਂ ਤਿੰਨ-ਸੰਯੁਕਤ ਬਾਂਹ ਮਾਡਲ ਚੁਣੋ (ਅਸਲ ਜਾਂ ਕਾਲਪਨਿਕ ਲਿੰਕ ਲੰਬਾਈ ਅਤੇ ਸੰਯੁਕਤ ਸੀਮਾਵਾਂ ਦੇ ਨਾਲ)। AI ਨੂੰ ਇਸ ਸੰਦਰਭ ਦੇ ਨਾਲ ਇੱਕ ਉਲਟ ਕਿਨੇਮੈਟਿਕਸ ਫੰਕਸ਼ਨ ਅਤੇ ਇੱਕ ਟ੍ਰੈਜੈਕਟਰੀ ਪਲੈਨਰ ਤਿਆਰ ਕਰੋ। ਫਿਰ: (1) ਕਿਸੇ ਜਾਣੇ-ਪਛਾਣੇ ਟੀਚੇ ਨਾਲ IK ਆਉਟਪੁੱਟ ਦੀ ਦਸਤੀ ਤਸਦੀਕ ਕਰੋ (ਕੀ ਤੁਸੀਂ ਕੋਣਾਂ ਨੂੰ ਪਿੱਛੇ ਰੱਖਦੇ ਹੋ ਅਤੇ FK ਵਾਂਗ ਉਸੇ ਬਿੰਦੂ 'ਤੇ ਵਾਪਸ ਆਉਂਦੇ ਹੋ), (2) ਜਾਂਚ ਕਰੋ ਕਿ ਕੋਡ ਉਹਨਾਂ ਨੂੰ ਘੱਟੋ-ਘੱਟ ਇੱਕ ਪਹੁੰਚਯੋਗ ਬਿੰਦੂ ਅਤੇ ਟੀਚੇ ਤੋਂ ਵੱਧ ਇੱਕ ਸੰਯੁਕਤ ਸੀਮਾ ਦੇ ਕੇ ਕੈਪਚਰ ਕਰਦਾ ਹੈ, (3) ਜਾਂਚ ਕਰੋ ਕਿ ਥੋੜ੍ਹੀ ਦੂਰੀ 'ਤੇ ਔਰਬਿਟਲ ਸਮਾਂ ਵਾਜਬ ਨਿਕਲਦਾ ਹੈ। ਲਿਖੋ ਕਿ ਤੁਸੀਂ ਕੋਡ ਦੇ ਪਹਿਲੇ ਸੰਸਕਰਣ ਵਿੱਚ ਕਿੰਨੀ ਪ੍ਰਮਾਣਿਕਤਾ ਸਮੱਸਿਆਵਾਂ ਲੱਭੀਆਂ ਅਤੇ ਹਰ ਇੱਕ ਨੂੰ ਕਿਹੜੀ ਪਰਤ ਨੇ ਫੜਿਆ ਹੈ।