TurtleSim ਨਾਲ PID ਨਿਯੰਤਰਣ
ਸੰਖੇਪ
Move Turtle ਇੱਕ ਸਰਲ ROS ਪਾਇਥਨ ਸਕ੍ਰਿਪਟ ਹੈ ਜੋ ROS ਦੇ TurtleSim ਵਿੱਚ ਟਰਟਲ ਨੂੰ ਨਿਰਧਾਰਤ ਕੋਆਰਡੀਨੇਟ (ਬਿੰਦੂ) ਤੇ ਚਲਾਉਂਦੀ ਹੈ। ਇਹ ਪ੍ਰੋਜੈਕਟ Colorado School of Mines (CSOM) ਵਿੱਚ CSCI473 ਲਈ ਇੱਕ ਕਲਾਸ ਪ੍ਰੋਜੈਕਟ ਵਜੋਂ ਸ਼ੁਰੂ ਹੋਇਆ ਸੀ ਅਤੇ ਬਾਅਦ ਵਿੱਚ ਇਹ ਇੱਕ ਐਸਾ ਪ੍ਰੋਜੈਕਟ ਬਣਿਆ ਜਿਸਨੇ ਮੈਨੂੰ ਸਿੱਖਣ ਵਿੱਚ ਮਦਦ ਕੀਤੀ ਕਿ ਕਿਵੇਂ ਕਲੋਜ਼-ਲੂਪ ਸਿਸਟਮ ਬਣਾਏ ਜਾ ਸਕਦੇ ਹਨ, ਜਿਸ ਗਿਆਨ ਨੂੰ ਮੈਂ CSOM ਦੀ Human Center Robotics (HCR) ਲੈਬ ਵਿੱਚ ਮੇਰੇ ਕੰਮ ਲਈ ਵਰਤਿਆ।
ਪਿਛੋਕੜ
ਕੁਝ ਪੱਠਭੂਮੀ ਲਈ, ROS ਦਾ ਅਰਥ ਹੈ ਰੋਬੋਟ ਓਪਰੇਟਿੰਗ ਸਿਸਟਮ। ROS ਇੱਕ ਖੁੱਲ੍ਹਾ ਸਰੋਤ ਰੋਬੋਟਿਕਸ ਮਿਡਲਵੇਅਰ ਹੈ, ਜੋ ਆਮ ਤੌਰ ‘ਤੇ Ubuntu ਆਪਰੇਟਿੰਗ ਸਿਸਟਮ ਦੇ ਨਾਲ ਜੋੜਿਆ ਜਾਂਦਾ ਹੈ, ਜਿਸਦਾ ਉਦੇਸ਼ ਰੋਬੋਟਿਕ ਸਿਸਟਮ ਦੇ ਸੋਫਟਵੇਅਰ ਕੰਪੋਨੈਂਟ/ਕਲੱਸਟਰਾਂ ਨੂੰ ਬਿਹਤਰ ਢੰਗ ਨਾਲ ਪ੍ਰਬੰਧਤ ਕਰਨਾ ਹੈ। ਤੁਸੀਂ ROS ਦੇ ਅਧਿਕਾਰਿਕ ਵਿਕੀ ਰਾਹੀਂ ਹੋਰ ਜਾਣ ਸਕਦੇ ਹੋ ਕਿ ROS ਕਿਵੇਂ ਵਰਤਣਾ ਹੈ। ROS ਵਿੱਚ ਜੋ ਕੋਡ ਤੁਸੀਂ ਲਿਖਦੇ ਹੋ ਉਹ C++ ਜਾਂ Python ਵਿੱਚ ਹੁੰਦਾ ਹੈ।
TurtleSim ਇੱਕ ਸਧਾਰਣ 2D ਰੋਬੋਟ ਸਮੂਲੇਟਰ ਹੈ ਜੋ ਨਵੇਂ ROS ਉਪਭੋਗਤਾਵਾਂ ਲਈ ROS ਅਤੇ ROS ਪੈਕੇਜਾਂ ਦਾ ਪਰਿਚਯ ਦਿਵਾਉਂਦਾ ਹੈ। TurtleSim ਸਿਰਫ ਇੱਕ ਸਧਾਰਣ 2D ਡਿਸਪਲੇ ਖੋਲ੍ਹਦਾ ਹੈ ਜਿਸ ਵਿੱਚ ਇੱਕ ਟਰਟਲ ਹੁੰਦਾ ਹੈ। ਉਹ ਟਰਟਲ “ਰੋਬੋਟ” ਵਾਂਗ ਕੰਮ ਕਰਦਾ ਹੈ ਅਤੇ ਤੁਸੀਂ ਉਸ “ਰੋਬੋਟ” ਨੂੰ ਸੰਦੈਸ਼ ਭੇਜ ਕੇ ਚਲਣ ਜਾਂ ਮੋੜਨ ਲਈ ਕਹਿ ਸਕਦੇ ਹੋ। ਚਲਾਉਂਦੇ ਸਮੇਂ, TurtleSim ਹਕੀਕਤ ਦੀ ਫਿਜਿਕਸ ਨੂੰ ਸਰਲ ਢੰਗ ਨਾਲ ਨਕਲ ਕਰਨ ਲਈ ਕੁਝ ਯਾਦ੍ਰਚਿਕ ਤਰੁਟੀਆਂ (ਰੈਂਡਮ ਐਰਰ) ਉਤਪੰਨ ਕਰਦਾ ਹੈ।
ROS ਅਤੇ TurtleSim ਕਿਵੇਂ ਹਨ ਇਹ ਜਾਣਦੇ ਹੋਏ, ਮੈਂ ਉਨ੍ਹਾਂ ਨੂੰ ਕਿਉਂ ਵਰਤ ਰਿਹਾ ਸੀ? ਖੈਰ, ਬਸੰਤ 2020 ਵਿੱਚ ਮੈਂ Colorado School of Mines ਵਿੱਚ “Human Centered Robotics” ਨਾਮਕ ਇੱਕ ਕਲਾਸ ਲੈ ਰਿਹਾ ਸੀ ਜੋ ਮੇਰੇ ਅੰਡਰਗ੍ਰੈਜੂਏਟ ਕੰਪਿਊਟਰ ਸਾਇੰਸ ਕੋਰਸ ਲੋਡ ਦਾ ਹਿੱਸਾ ਸੀ। ਇਹ ਕਲਾਸ ਡਾ. Hao Zhang ਨੇ ਪੜ੍ਹਾਈ। ਕਲਾਸ ਵਿੱਚ ਤਿੰਨ ਪ੍ਰੋਜੈਕਟ ਸਨ ਅਤੇ ਪਹਿਲਾ ਪ੍ਰੋਜੈਕਟ ROS ਸੈਟਅੱਪ ਕਰਨ, ROS ਵਰਤਣ ਦੇ ਤਰੀਕੇ ਸਿੱਖਣ, ਅਤੇ ਇੱਕ ਓਪਨ-ਲੂਪ ਜਾਂ ਕਲੋਜ਼-ਲੂਪ ਐਲਗੋਰਿਥਮ ਨੂੰ ਲਾਗੂ ਕਰਨ ‘ਤੇ ਧਿਆਨ ਸੀ ਜੋ TurtleSim ਵਿੱਚ ਟਰਟਲ ਨੂੰ M ਆਕਾਰ ਡਰਾਇੰਗ ਕਰਨ ਲਈ ਕਹਿੰਦਾ ਸੀ। ਅਸਲ ਪ੍ਰੋਜੈਕਟ ਵਰਣਨ ਇੱਥੇ ਵੇਖਿਆ ਜਾ ਸਕਦਾ ਹੈ HERE.
ਜਦੋਂ ਮੈਂ ਉਹ ਕਲਾਸ ਲੈ ਰਿਹਾ ਸੀ, ਤਾਂ ਮੈਂ ਇਹ ਪ੍ਰੋਜੈਕਟ ਇੱਕ ਓਪਨ-ਲੂਪ ਐਲਗੋਰਿਥਮ ਲਾਗੂ ਕਰਕੇ ਪੂਰਾ ਕੀਤਾ। ਇਹ ਹੱਲ ਕੰਮ ਕਰਦਾ ਸੀ ਪਰ ਇਹ ਬਹੁਤ ਹੀ ਠੀਕ ਨਹੀਂ ਸੀ ਅਤੇ ਇੱਕ A ਆਕਾਰ ਡਰਾਇੰਗ ਕੀਤਾ ਜੋ “ਕਾਫ਼ੀ ਚੰਗਾ” ਸੀ ਪਰ “ਸ਼ਾਨਦਾਰ” ਤੋਂ ਕਾਫੀ ਦੂਰ ਸੀ। ਪ੍ਰੋਜੈਕਟ ਨੂੰ ਫਰਵਰੀ 2020 ਦੇ ਦਰਮਿਆਨ ਦੇ ਆਸ-ਪਾਸ ਜਮ੍ਹਾਂ ਕਰਨ ਤੋਂ ਬਾਅਦ, ਮੈਂ ਇਸਨੂੰ ਲਗਭਗ ਇੱਕ ਸਾਲ ਲਈ ਭੁੱਲ ਗਿਆ ਜਦ ਤੱਕ ਲਗਭਗ ਫਰਵਰੀ 2021 ਵਿੱਚ ਨਾ ਸੋਚਿਆ।
ਚੁਣੌਤੀ
ਫਰਵਰੀ 2021 ਵਿੱਚ, ਮੈਨੂੰ Colorado School of Mines ਦੇ Human Centered Robotics (HCR) ਲੈਬ ਵਿੱਚ ਰਿਸਰਚ ਅਸਿਸਟੈਂਟ ਵਜੋਂ ਨੌਕਰੀ ਮਿਲੀ ਜਿੱਥੇ ਮੈਂ ਡਾ. Hao Zhang ਦੇ ਅਧੀਨ ਕੰਮ ਕੀਤਾ। ਲੈਬ ਦਾ ਉਦੇਸ਼ “ਲੰਮੇ ਸਮੇਂ ਤੱਕ ਰੋਬੋਟਾਂ ਨੂੰ ਚਲਾਉਣ ਅਤੇ ਢਾਲਣ ਯੋਗ ਬਨਾਉਣ ਵਾਲੀ ਲਾਈਫਲਾਂਗ ਸਹਯੋਗੀ ਸੁਤੰਤਰਤਾ” ‘ਤੇ ਰਿਸਰਚ ਕਰਨਾ ਹੈ। 9-1-2022 (1 ਸਤੰਬਰ, 2022) ਤੱਕ, ਲੈਬ Colorado School of Mines ਤੋਂ University of Massachusetts Amherst ਵੱਲ ਸਥਾਨਾਂਤਰਿਤ ਹੋ ਚੁੱਕੀ ਹੈ। ਪਰ, ਜਦ ਮੈਂ ਉੱਥੇ ਕੰਮ ਕਰ ਰਿਹਾ ਸੀ ਉਹ ਅਜੇ ਵੀ Colorado ਵਿੱਚ ਸਥਿਤ ਸਨ।
HCR ਲੈਬ ਵਿੱਚ, ਮੈਨੂੰ Triton ਪ੍ਰੋਜੈਕਟ ‘ਤੇ ਕੰਮ ਕਰਨ ਲਈ ਕਿਹਾ ਗਿਆ। Triton ਪ੍ਰੋਜੈਕਟ ਵਿੱਚ ਕਈ, ਦਹਾਕਿਆਂ, ਰੋਬੋਟਾਂ ਨੂੰ Tritons ਕਿਹਾ ਜਾਂਦਾ ਸੀ। Tritons ਤਿਕੋਣਾਕਾਰ ਓਮਨੀ ਵ੍ਹੀਲ ਗਰਾਊਂਡ ਰੋਬੋਟ ਸਨ ਜੋ ਇਸ ਤਰ੍ਹਾਂ ਦਿਖਦੇ ਸਨ:
Tritons ਦੇ ਨਾਲ, OptiTrack ਤੋਂ ਅੱਠ IR ਕੈਮਰੇ ਜ਼ਮੀਨ ਤੋਂ ਕੁਝ ਫੁੱਟ ਉੱਚੇ “ਅਠਕੋਣੀ ਕ੍ਰਮ” ਵਿੱਚ ਵੇਖੇ ਜਾਂਦੇ ਸਨ। ਉਹਨਾਂ ਕੈਮਰਿਆਂ, OptiTrack ਦੇ Motive ਸੌਫਟਵੇਅਰ, Windows 10 ਚਲਾਉਂਦੇ ਇੱਕ PC, ਅਤੇ ROS ਦੀ ਵਰਤੋਂ ਕਰਕੇ; 2 ਮੀਟਰ ਬਾਈ 2 ਮੀਟਰ ਬਾਈ 2 ਮੀਟਰ (x, y, z) ਦਾ ਖੇਤਰ ਬਣਾਇਆ ਜਾਂਦਾ ਹੈ ਜਿੱਥੇ ਮੋਸ਼ਨ ਕੈਪਚਰ ਮਾਰਕਰ ਵਾਲੀਆਂ ਵਸਤਾਂ ਦੀ ਹਕੀਕਤੀ ਦੁਨੀਆ ਵਿੱਚ ਇਕੱਲੀ ਸਥਿਤੀ ਦੀ ਨਿਰਧਾਰਤਾ ਕੀਤੀ ਜਾ ਸਕਦੀ ਹੈ।
Triton ਪ੍ਰੋਜੈਕਟ ਨਾਲ ਮੇਰਾ ਪਹਿਲਾ ਕੰਮ ਉਹਨਾਂ ਸਕ੍ਰਿਪਟਾਂ ਬਣਾਉਣਾ ਸੀ ਜੋ Triton ਰੋਬੋਟ ਨੂੰ ਇੱਕ ਨਿਰਧਾਰਤ ਹਕੀਕਤੀ ਸਥਿਤੀ ਤੱਕ ਲੈ ਕੇ ਜਾਂਦੀਆਂ। ਉਸ ਸਮੇਂ, ਮੈਂ ਇਹ ਹਾਸਲ ਕਰਨ ਦਾ ਤਰੀਕਾ ਨਹੀਂ ਜਾਣਦਾ ਸੀ ਪਰ ਮੈਨੂੰ CSCI473 ਦੇ ਪਹਿਲੇ ਪ੍ਰੋਜੈਕਟ ਦੀ ਯਾਦ ਆਈ ਜਿੱਥੇ ਮੈਨੂੰ ਕਲੋਜ਼-ਲੂਪ ਸਿਸਟਮ ਦਾ ਵਿਚਾਰ ਦਿੱਤਾ ਗਿਆ ਸੀ, ਇਸ ਲਈ ਮੈਂ ਗੰਭੀਰਤਾਪੂਰਵਕ ਕਲੋਜ਼-ਲੂਪ ਸਿਸਟਮ ਅਤੇ ਫੀਡਬੈਕ ਸਿਸਟਮਾਂ ‘ਤੇ ਖੋਜ ਕਰਨੀ ਸ਼ੁਰੂ ਕੀਤੀ।
ਖੋਜ
ਮੇਰੀ ਖੋਜ ਦੇ ਦੌਰਾਨ, ਮੈਨੂੰ AerospaceControlsLab ਵੱਲੋਂ ਇਹ ਸ਼ਾਨਦਾਰ ਵੀਡੀਓ ਮਿਲੀ:
ਇਸ ਵੀਡੀਓ ਵਿੱਚ PID ਸਿਸਟਮ ਦਾ ਵਿਚਾਰ ਦਿਖਾਇਆ ਅਤੇ ਸਮਝਾਇਆ ਗਿਆ। PID ਸਿਸਟਮ ਇੱਕ ਕਲੋਜ਼-ਲੂਪ, ਕੰਟਰੋਲ ਲੂਪ ਪ੍ਰਣਾਲੀ ਹੈ ਜੋ ਹਕੀਕਤ ਦੀ ਦੁਨੀਆ ਤੋਂ ਪ੍ਰਾਪਤ ਡੇਟਾ ਦੇ ਆਧਾਰ ‘ਤੇ ਵਿਸ਼ੇਸ਼ ਆਉਟਪੁੱਟ(ਸ) ਉਤਪੰਨ ਕਰਦੀ ਹੈ। ਬੁਨਿਆਦੀ ਤੌਰ ‘ਤੇ, ਇਹ ਇੱਕ ਫੀਡਬੈਕ ਪ੍ਰਣਾਲੀ ਹੈ ਜੋ ਇੱਛਿਤ ਮੁੱਲ ਅਤੇ ਮਾਪਿਆ ਗਿਆ ਮੁੱਲ ਦਰਮਿਆਨ ਦੇ ਫਰਕ ਦੇ ਆਧਾਰ ‘ਤੇ ਆਪਣਾ ਆਉਟਪੁੱਟ ਠੀਕ ਕਰਦੀ ਹੈ। PID ਕੰਟਰੋਲਰ ਲਈ ਫਾਰਮੂਲਾ ਹੇਠਾਂ ਹੈ:
$$ u(t) = K_p e(t) + K_i \int e(t) dt + K_d \frac{de(t)}{dt} $$
- $u(t)$ ਨਿਯੰਤਰਣ ਸਿਗਨਲ ਹੈ।
- $K_p$, $K_i$, $K_d$ ਅਨੁਕੂਲਨ, ਇੰਟੀਗ੍ਰਲ, ਅਤੇ ਡੈਰੀਵੇਟਿਵ ਗੈਨ ਹਨ।
- $e(t)$ ਤਰੁਟ ਸਿਗਨਲ ਹੈ (ਇੱਛਿਤ ਅਤੇ ਵਾਸਤਵਿਕ ਆਉਟਪੁੱਟ ਦਰਮਿਆਨ ਦਾ ਅੰਤਰ).
- $\int e(t) dt$ ਸਮਾਂ ਦੇ ਨਾਲ ਤਰੁਟ ਦਾ ਇੰਟੀਗ੍ਰਲ ਹੈ।
- $\frac{de(t)}{dt}$ ਤਰੁਟ ਦਾ ਡੈਰੀਵੇਟਿਵ ਹੈ।
ਇਸ ਬਾਰੇ ਹੋਰ ਜਾਣਨ ਲਈ, AerospaceControlsLab ਦੀ ਵੀਡੀਓ ਜਾਂ ਇਸ ਸ਼ਾਨਦਾਰ ਵਿਕੀਪੀਡੀਆ ਲੇਖ ਨੂੰ ਦੇਖੋ ਜਿਸ ਵਿੱਚੋਂ ਇਹ ਫਾਰਮੂਲਾ ਲਿਆ ਗਿਆ ਹੈ।
ਮੇਰੀ ਖੋਜ ਕਰਨ ਅਤੇ ਮੇਰੇ ਚਤੁਰ ਦੋਸਤਾਂ ਅਤੇ ਪ੍ਰੋਫੈਸਰਾਂ ਤੋਂ ਕੁਝ ਮਦਦ ਮਿਲਣ ਤੋਂ ਬਾਅਦ, ਮੈਂ ਨਿਰਣਯ ਕੀਤਾ ਕਿ Triton ਨੂੰ ਕਿਸੇ ਵਿਸ਼ੇਸ਼ ਕੋਆਰਡੀਨੇਟ ਤੱਕ ਪਹੁੰਚਾਉਣ ਲਈ ਇੱਕ ਪ੍ਰੋਪੋਰਸ਼ਨਲ ਕੰਟਰੋਲਰ, P ਕੰਟਰੋਲਰ, ਸਭ ਤੋਂ ਵਧੀਆ ਰਹੇਗਾ।
ਕਿਉਂਕਿ Triton ਇੱਕ ਗਰਾਊਂਡ ਰੋਬੋਟ ਹੈ, ਮੈਨੂੰ ਸਿਰਫ X ਅਤੇ Y ਕੋਆਰਡੀਨੇਟ ਦੀ ਚਿੰਤਾ ਕਰਨ ਦੀ ਲੋੜ ਸੀ। ਇਹ ਜਾਣ ਕੇ, ਮੈਨੂੰ ਫਿਰ ਇਹ ਨਿਰਧਾਰਤ ਕਰਨਾ ਪਿਆ ਕਿ P ਕੰਟਰੋਲਰ(ਸ) ਵਿੱਚ ਕਿਹੜੇ ਇੱਛਿਤ ਮੁੱਲ ਅਤੇ ਮਾਪੇ ਗਏ ਮੁੱਲਾਂ ਨੂੰ ਮਾਪਣਾ ਅਤੇ ਪ੍ਰੋਸੈਸ ਕਰਨਾ ਹੈ। ਆਪਣੀ ਖੋਜ ਵਿੱਚ ਮੈਨੂੰ ROS ਵਿਕੀ ‘ਤੇ ਇਹ ਸ਼ਾਨਦਾਰ ਪੋਸਟ ਮਿਲੀ ਜਿਸਦਾ ਨਾਮ Go to Goal ਸੀ ਜਿੱਥੇ ਉਹਨਾਂ ਨੇ ਹੇਠ ਲਿਖੀਆਂ ਤਰੁਟੀਆਂ ‘ਤੇ ਧਿਆਨ ਦਿੱਤਾ:
- ਦੂਰੀ ਦੀ ਗਲਤੀ: ਇੱਛਿਤ ਸਥਾਨ (X, Y) ਅਤੇ ਮੌਜੂਦਾ ਸਥਾਨ (X, Y) ਦਰਮਿਆਨ ਦੀ ਦੂਰੀ ਦਾ ਫਰਕ।
- ਥੀਟਾ ਗਲਤੀ: ਇੱਛਿਤ ਦਿਸ਼ਾ ਅਤੇ ਮੌਜੂਦਾ ਦਿਸ਼ਾ ਦਰਮਿਆਨ ਦਾ ਫਰਕ।
ਪ੍ਰਸਤਾਵਿਤ ਹੱਲ
ਇਹ ਸਾਰਾ ਜਾਣ ਕੇ, Triton ਨੂੰ ਕਿਸੇ ਵਿਸ਼ੇਸ਼ ਹਕੀਕਤੀ ਕੋਆਰਡੀਨੇਟ ਤੱਕ ਲਿਜਾਣ ਲਈ ਹੱਲ ਇਹ ਹੈ ਕਿ Triton ਦੀ ਮਕਾਨਿਕ ਦੂਰੀ ਗਲਤੀ ਅਤੇ ਲਕੜੀ ਦੇ ਥੀਟਾ ਗਲਤੀ ਲਈ ਇੱਕ ਪ੍ਰੋਪੋਰਸ਼ਨਲ ਕੰਟਰੋਲਰ ਵਰਤਿਆ ਜਾਵੇ, ਜੋ ਟਾਰਗੇਟ ਕੋਆਰਡੀਨੇਟ ਅਤੇ Triton ਦੀ ਮੌਜੂਦਾ ਕੋਆਰਡੀਨੇਟ ਦੇ ਸੰਦਰਭ ਵਿੱਚ ਕੰਮ ਕਰੇ। ਪਰ ਇਸਨੂੰ ਭੌਤਿਕ ਸਿਸਟਮ ਵਿੱਚ ਲਾਗੂ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ, ਮੈਂ ਇਸ ਵਿਚਾਰ ਨੂੰ ਇੱਕ ਸਿਮੂਲੇਸ਼ਨ ਵਿੱਚ ਟੈਸਟ ਕਰਨਾ ਚਾਹਿਆ ਅਤੇ ਉਸ ਸਮੇਂ, ਮੇਰਾ ਮਨਨਾ ਸੀ ਕਿ TurtleSim ਨੂੰ ਸਿਮੂਲੇਸ਼ਨ ਵਜੋਂ ਵਰਤਣਾ ਸਭ ਤੋਂ ਚੰਗਾ ਚੋਣ ਹੈ।
ਸਿਮੂਲੇਸ਼ਨ ਵਿੱਚ ਟੈਸਟਿੰਗ
ਸਿਧਾਂਤਕ ਹੱਲ ਨੂੰ ਰੇਖਾਂਕਿਤ ਕਰਨ ਦੇ ਨਾਲ, ਮੈਂ ਸ਼ੁਰੂਆਤੀ ਤੌਰ ‘ਤੇ ਇਸ ਨੂੰ ਸਿਮੂਲੇਸ਼ਨ ਰਾਹੀਂ ਸਤਿਆਪਿਤ ਕਰਨ ਦਾ ਫੈਸਲਾ ਕੀਤਾ, ਨਾ ਕਿ ਹਕੀਕਤੀ ਦੁਨੀਆ ‘ਚ। ਹਕੀਕਤੀ ਦੁਨੀਆ ਅਕਸਰ ਉਦੋਂ-ਉਦੋਂ ਸ਼ੋਰ ਨਾਲ ਭਰੀ ਹੋਈ ਹੁੰਦੀ ਹੈ ਜੋ ਹੱਲ ਦੀ ਪ੍ਰਭਾਵਸ਼ੀਲਤਾ ਨੂੰ ਮੁਸ਼ਕਲ ਕਰ ਸਕਦੀ ਹੈ ਅਤੇ ਗੈਰ-ਆਵਸ਼ਕ ਸਮੱਸਿਆਵਾਂ ਦਾ ਸਾਹਮਣਾ ਕਰਨਾ ਪੈ ਸਕਦਾ ਹੈ। ਇਸ ਗੱਲ ਨੂੰ ਧਿਆਨ ਵਿੱਚ ਰੱਖਦੇ ਹੋਏ, ਮੈਂ ਆਪਣੇ CSCI473 ਦਾ ਪ੍ਰੋਜੈਕਟ ਮੁੜ ਵੇਖਿਆ ਅਤੇ ਉਸਨੂੰ ਇਸ ਸਿਧਾਂਤਕ ਹੱਲ ਲਈ ਟੈਸਟਿੰਗ ਗਰਾਉਂਡ ਵਜੋਂ ਅਡਾਪਟ ਕੀਤਾ।
ROS Melodic ਤੋਂ ROS Noetic ‘ਤੇ ਪੁਰਾਣੇ ਕੋਡ ਨੂੰ ਅਪਡੇਟ ਕਰਨ ਅਤੇ ਕੁਝ ਆਵਰਤੀ ਸੁਧਾਰਾਂ ਦੇ ਨਾਲ, ਮੈਂ TurtleSim ਵਿੱਚ ਪ੍ਰਸਤਾਵਿਤ ਹੱਲ ਨੂੰ ਕਾਮਯਾਬੀ ਨਾਲ ਚਲਾਇਆ। ਇਸਦੀ ਕਾਰਗੁਜ਼ਾਰੀ ਦੇ ਡੈਮੋਜ਼, ਕੁਝ ઠੰਢਿਆਂ ਟਾਰਗੇਟ ਕੋਆਰਡੀਨੇਟ ਰਾਹਾਂ ਸਮੇਤ, ਇਸ ਬਲੌਗ ਪੋਸਟ ਦੇ ਅੰਤ ਵਿੱਚ ਮਿਲ ਸਕਦੇ ਹਨ। ਇਸ ਸਾਰੇ ਲਈ ਕੋਡ ਇੱਥੇ ਵੇਖਿਆ ਜਾ ਸਕਦਾ ਹੈ HERE.
ਨਤੀਜਾ
ਸੰਖੇਪ ਵਿੱਚ, ਇਸ ਪ੍ਰੋਜੈਕਟ ਰਾਹੀਂ TurtleSim ਦਾ ਟਰਟਲ ਨਿਕੱਲ਼ਾ-ਲੂਪ ਸਿਸਟਮ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਨਿਰਧਾਰਤ ਕੋਆਰਡੀਨੇਟਾਂ ਤੱਕ ਪ੍ਰਭਾਵਸ਼ਾਲੀ ਤਰੀਕੇ ਨਾਲ ਨੈਵੀਗੇਟ ਕਰਦਾ ਹੈ, ਜੋ ਮੇਰੇ ਸ਼ੁਰੂਆਤੀ 2020 ਦੇ ਓਪਨ-ਲੂਪ ਸਿਸਟਮ ਨਾਲੋਂ ਕਾਫ਼ੀ ਵਧੀਅਾ ਪ੍ਰਦਰਸ਼ਨ ਦਿਖਾਉਂਦਾ ਹੈ। ਸਫਲਤਾਪੂਰਵਕ ਟੈਸਟ ਕਰਨ ਮਗਰੋਂ, ਮੈਂ ਇਸ ਹੱਲ ਨੂੰ Triton ਰੋਬੋਟਾਂ ‘ਤੇ ਲਾਗੂ ਕੀਤਾ। ਪਰ ਹਕੀਕਤੀ ਦੁਨੀਆ ਦਾ ਸ਼ੋਰ ਅਣਦੇਖੀਆਂ ਸਮੱਸਿਆਵਾਂ ਪੈਦਾ ਕਰਦਾ ਹੈ ਜਿਸ ਕਰਕੇ ਹਫਤੇ-ਰੰਚਾਂ ਦੀ ਡੀਬੱਗਿੰਗ ਅਤੇ ਅਸਲੀ ਦੁਨੀਆ ਟੈਸਟਿੰਗ ਦੀ ਲੋੜ ਪਈ। ਉਹਨਾਂ ਹਫਤਿਆਂ ਤੋਂ ਬਾਅਦ, ਅਖੀਰਕਾਰ ਮੈਂ Triton ਨੂੰ ਵਿਸ਼ੇਸ਼ ਹਕੀਕਤੀ ਕੋਆਰਡੀਨੇਟ ਤੱਕ ਪਹੁੰਚਾਉਣ ਵਿੱਚ ਸਫਲ ਹੋਇਆ, ਆਖ਼ਿਰਕਾਰ TurtleSim ਵਿੱਚ ਟੈਸਟ ਕੀਤੇ ਗਿਆ ਪ੍ਰਣਾਲੀ ਦਾ ਹੀ ਉਪਯੋਗ ਕਰਕੇ। ਇੱਥੇ ਇੱਕ ਡੈਮੋ ਹੈ ਜਿਸ ਵਿੱਚ Triton TurtleSim ਵਿੱਚ ਟੈਸਟ ਕੀਤੀ ਮੈਥਡ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਵਿਸ਼ੇਸ਼ ਹਕੀਕਤੀ ਕੋਆਰਡੀਨੇਟਾਂ ਵੱਲ ਜਾਂਦਾ ਹੈ:
ਵਿਗਿਆਨਿਕ ਦ੍ਰਿਸ਼ਟੀ ਤੋਂ ਦੇਖਿਆ ਜਾਵੇ ਤਾਂ, ਮੈਂ ਇੱਛਾ ਕਰਦਾ ਹਾਂ ਕਿ ਮੈਂ ਕੋਈ ਐਸਾ ਸਿਮੂਲੇਸ਼ਨ ਵਰਤੀ ਹੁੰਦੀ ਜੋ ਹਕੀਕਤੀ ਦੁਨੀਆ ਦੀ ਫਿਜਿਕਸ ਨੂੰ ਬਿਹਤਰ ਤਰੀਕੇ ਨਾਲ ਨਕਲ ਕਰਦਾ। TurtleSim ਸਿੱਖਣ ਲਈ ਬਹੁਤ ਚੰਗਾ ਹੈ ਪਰ ਹਕੀਕਤੀ ਰੋਬੋਟਿਕ ਆਈਡਿਆਜ਼ ਦੀ ਟੈਸਟਿੰਗ ਲਈ ਇਹ ਉੱਤਮ ਨਹੀਂ ਹੈ। ਉਸ ਸਮੇਂ, ਮੈਨੂੰ ਲੱਗਿਆ ਕਿ ਇਹ ਮੇਰੇ ਸਧਾਰਨ ਉਪਯੋਗ ਕੇਸ ਲਈ ਕਾਫ਼ੀ ਹੋਵੇਗਾ ਪਰ ਬਾਅਦ ਵਿੱਚ ਇਹ ਸਹੀ ਸਾਬਿਤ ਨਹੀਂ ਹੋਇਆ।
ਇਸ ਬਲੌਗ ਪੋਸਟ ਦਾ ਮੁੱਖ ਉਦੇਸ਼ ਇੱਕ ਬੰਦੇ-ਲੂਪ (closed-loop) ਪ੍ਰਣਾਲੀ ਬਣਾਉਣ ਦੀ ਰਾਹ ਦਰਸਾਉਣਾ ਸੀ ਜੋ TurtleSim ਵਿੱਚ ਟਰਟਲ ਅਤੇ ਬਾਅਦ ਵਿੱਚ Triton ਰੋਬੋਟਾਂ ਨੂੰ ਨਿਰਧਾਰਤ ਟਾਰਗੇਟ ਸਥਿਤੀਆਂ (X, Y) ਤੱਕ ਠੀਕ ਤਰੀਕੇ ਨਾਲ ਨੈਵੀਗੇਟ ਕਰਨ ਯੋਗ ਬਣਾਏ। ਮੈਨੂੰ ਲੱਗਦਾ ਹੈ ਕਿ ਇਹ ਉਦੇਸ਼ ਪ੍ਰਾਪਤ ਹੋ ਗਿਆ, ਅਤੇ ਇਹ HCR ਲੈਬ ਵਿੱਚ ਮੇਰੇ ਕੰਮ ਵਿੱਚ ਕੁਝ ਰੁਚੀ ਪੈਦਾ ਕਰਨ ਲਈ ਯੋਗ ਹੋ ਸਕਦਾ ਹੈ। ਇਸਨੂੰ ਧਿਆਨ ਵਿੱਚ ਰੱਖਦੇ ਹੋਏ, ਮੇਰੇ ਕੋਲ HCR ਲੈਬ ਵਿੱਚ ਆਪਣੀ ਕੰਮ ਦੀ ਅਨੁਭਵ ਬਾਰੇ ਹੋਰ ਬਲੌਗ ਪੋਸਟਾਂ ਬਣਾਉਣ ਦੇ ਯੋਜਨਾਵਾਂ ਹਨ…
Moving Turtle (TurtleSim) ਡੈਮੋ
ਇਸ ਵੀਡੀਓ ਵਿੱਚ ਹੇਠ ਲਿਖੇ ਡੈਮੋ ਸ਼ਾਮਲ ਹਨ:
- Cayley Nodal: ਇੱਕ ਸਧਾਰਨ Cayley Nodal ਡਿਜ਼ਾਈਨ
- Circles: ਇੱਕ ਜਾਲ-ਵਾਂਗ ਡਿਜ਼ਾਈਨ
- Inner Circles: “ਗੋਲਾਂ ਦੇ ਅੰਦਰ ਗੋਲ” ਡਿਜ਼ਾਈਨ
- M: ਇੱਕ ਬਹੁਤ ਸਧਾਰਨ M ਡਿਜ਼ਾਈਨ