Gazebo Harmonic سے ملو
وقت: 60 منٹ | لایه: L1 (دستی بنیاد) | ٹیر: 1 (کلاؤڈ)
ڈیجیٹل ٹوئن ایک تصور ہے۔ ایک سمیلیٹر وہ ٹول ہے جو اس تصور کو حقیقت میں بدلتا ہے۔ دنیا بھر میں پیشہ ور روبوٹکس کے لیے، وہ سمیلیٹر Gazebo ہے۔
Gazebo یہ ہے:
- اوپن سورس: استعمال کرنے کے لیے مفت، کمیونٹی سے چلنے والا، جسے NASA، DARPA، یونیورسٹیوں نے بھروسہ کیا ہے
- فزکس سے درست: حقیقی کشش ثقل، رگڑ، ٹکراؤ، سینسر فزکس
- ROS 2 انٹیگریٹڈ: آپ کا ROS 2 کوڈ ورچوئل روبوٹس کو بالکل اسی طرح کنٹرول کرتا ہے جیسے وہ فزیکل روبوٹس کو کنٹرول کرتا ہے
- انڈسٹری معیار: دنیا بھر میں سب سے زیادہ استعمال ہونے والا روبوٹکس سمیلیٹر
یہ سبق آپ کو Gazebo Harmonic (جدید ورژن، جسے gz-sim بھی کہا جاتا ہے)، یہ کیسے کام کرتا ہے، اور TheConstruct کلاؤڈ ماحول کے ذریعے اس تک کیسے رسائی حاصل کی جائے، سے متعارف کراتا ہے۔
Gazebo کیوں؟
Gazebo کو استعمال کرنے کا طریقہ جاننے سے پہلے، یہ سمجھیں کہ یہ انڈسٹری کا انتخاب کیوں ہے۔
Gazebo ایکو سسٹم
Gazebo کا آغاز 2002 میں روبوٹ آپریٹنگ سسٹم (ROS) پراجیکٹ کے حصے کے طور پر ہوا۔ دو دہائیوں سے زیادہ عرصے میں، یہ دنیا بھر میں تعلیمی روبوٹکس، کمرشل روبوٹکس، اور تحقیقی اداروں کے لیے معیار کا سمیلیٹر بن گیا۔
Gazebo استعمال کرنے والی تنظیمیں:
- NASA (مریخ روور سمولیشن، قمری مشن)
- DARPA (روبوٹکس مقابلے کی سمولیشن)
- بوسٹن ڈائنامکس (ڈائنامکس تحقیق)
- یونیورسٹی روبوٹکس لیبز (دنیا بھر میں)
- روبوٹکس اسٹارٹ اپس (زیادہ تر Gazebo استعمال کرتے ہیں)
اس کی اہمیت: اگر آپ Gazebo سیکھتے ہیں، تو آپ ان ٹولز کے ساتھ سیکھتے ہیں جو پیشہ ور انجینئرز استعمال کرتے ہیں۔
Gazebo بمقابلہ حریف
دیگر سمیلیٹر موجود ہیں (Unity, Unreal, CoppeliaSim, MuJoCo)۔ Gazebo کے فوائد:
| خصوصیت | Gazebo | Unity | Unreal | اہمیت |
|---|---|---|---|---|
| لاگت | مفت | فریمیئم | فریمیئم | تعلیمی بجٹ مفت کو ترجیح دیتے ہیں |
| ROS 2 انٹیگریشن | مقامی (Native) | پلگ ان | پلگ ان | ROS 2 روبوٹکس معیار ہے |
| فزکس کی درستگی | اعلیٰ | درمیانی | درمیانی | Sim-to-real ٹرانسفر کے لیے درست فزکس ضروری ہے |
| اوپن سورس | ہاں | نہیں | نہیں | شفافیت، کمیونٹی تعاون |
| Linux سپورٹ | بہترین | اچھا | مناسب | زیادہ تر روبوٹکس کا کام Linux پر ہوتا ہے |
Gazebo ہر لحاظ سے "بہتر" نہیں ہے—Unity ویژولائزیشن میں بہترین ہے، Unreal حقیقت پسندی میں—لیکن روبوٹکس + ROS 2 ڈویلپمنٹ کے لیے، Gazebo قدرتی انتخاب ہے۔
Gazebo Harmonic فن تعمیر (Architecture)
Gazebo کے ڈیزائن کو سمجھنا اسے مؤثر طریقے سے استعمال کرنے میں مدد کرتا ہے۔
کلائنٹ-سرور ماڈل
Gazebo ایک کلائنٹ-سرور فن تعمیر استعمال کرتا ہے:
Server (gz-sim)
- فزکس کی سمولیشن کرتا ہے
- روبوٹ کی حالت (state) کو اپ ڈیٹ کرتا ہے
- ROS 2 پیغامات پر کارروائی کرتا ہے
- پلگ ان چلاتا ہے
- دنیا کی حالت کو محفوظ کرتا ہے
|
| TCP/IP (نیٹ ورک مواصلات)
|
Clients
- gz-gui (گرافیکل انٹرفیس)
- ROS 2 نوڈز (آپ کا کوڈ)
- بیرونی ٹولز (ریکارڈنگ، ویژولائزیشن)
یہ ڈیزائن کیوں؟
- ذمہ داریوں کی علیحدگی: فزکس کمپیوٹیشن ویژولائزیشن سے الگ
- نیٹ ورک شفافیت: سرور اور کلائنٹس مختلف مشینوں پر چل سکتے ہیں
- متعدد کلائنٹس: ایک فزکس انجن متعدد ویژولائزیشن کلائنٹس کو فراہم کر سکتا ہے
- ریموٹ سمولیشن: سرور کلاؤڈ میں، کلائنٹ آپ کے لیپ ٹاپ پر
آپ کے لیے، اس کا مطلب ہے:
- سمولیشن سرور TheConstruct کلاؤڈ پر چلتا ہے
- آپ اپنے ویب براؤزر کے ذریعے اس سے جڑتے ہیں
- آپ کا ROS 2 کوڈ نیٹ ورک پیغامات کے ذریعے سرور کے ساتھ بات چیت کرتا ہے
- ویژولائزیشن آپ کے براؤزر میں ظاہر ہوتی ہے
Gazebo سرور (gz-sim)
سرور فزکس کمپیوٹیشن کو سنبھالتا ہے:
- دنیا لوڈ کریں: SDF (Simulation Description Format) فائلوں کو پارس کرنا جو روبوٹس اور ماحول کی وضاحت کرتی ہیں
- پلگ ان چلائیں: فعالیت شامل کرنے والے سمیلیٹر پلگ ان لوڈ کریں
- فزکس کی سمولیشن کریں: ہر ٹائم سٹیپ پر پوزیشن، رفتار، قوتوں کو اپ ڈیٹ کریں
- پیغامات پر کارروائی کریں: کنٹرول کوڈ سے ROS 2 پیغامات وصول کریں
- حالت اپ ڈیٹ کریں: سینسر ڈیٹا کو ROS 2 نوڈز پر واپس بھیجیں
- مواصلات: ویژولائزیشن کلائنٹس کو دنیا کی حالت بھیجیں
سرور مسلسل سمولیشن لوپ چلاتا ہے، عام طور پر 1000 Hz پر (ایک سیکنڈ میں 1000 فزکس اپ ڈیٹس)۔
Gazebo GUI کلائنٹ (gz-gui)
GUI کلائنٹ ویژولائزیشن فراہم کرتا ہے:
- 3D رینڈرنگ: روبوٹس، ماحول، اور سینسر ڈیٹا دکھائیں
- تعامل (Interaction): اشیاء کو منتخب کرنے کے لیے کلک کریں، حرکت دینے کے لیے گھسیٹیں (drag)
- انٹرو اسپیکشن: جوائنٹ کی حالتیں، سینسر ریڈنگز، دنیا کی خصوصیات کا معائنہ کریں
- سمولیشن کنٹرول: سمولیشن کو چلائیں/روکیں، رفتار بڑھائیں/کم کریں
- کیمرہ کنٹرول: منظر کو گھمائیں، زوم کریں، پین کریں
آپ کے لیے:
- آپ TheConstruct پر اپنے براؤزر کے ذریعے اس تک رسائی حاصل کرتے ہیں
- کسی انسٹالیشن کی ضرورت نہیں (تمام کمپیوٹیشن کلاؤڈ میں ہوتی ہے)
پلگ انز: توسیع کا نظام (Extensibility System)
Gazebo کی طاقت پلگ انز سے آتی ہے۔ ایک پلگ ان وہ کوڈ ہے جو سمیلیٹر کو بڑھاتا ہے:
سینسر پلگ انز: کیمرے، LIDAR، IMU، فورس سینسرز کی سمولیشن کرتے ہیں
- ورچوئل تصاویر، پوائنٹ کلاؤڈز، ایکسلریشن ڈیٹا کیپچر کرتے ہیں
- ROS 2 ٹاپکس پر شائع کرتے ہیں
ایکچویٹر پلگ انز: موٹرز اور گرپرز کو کنٹرول کرتے ہیں
- موٹر کمانڈز کے لیے ROS 2 ٹاپکس کو سبسکرائب کرتے ہیں
- سمولیشن میں جوائنٹ پوزیشنز کو اپ ڈیٹ کرتے ہیں
سسٹم پلگ انز: حسب ضرورت رویے
- کنٹرولرز، AI ایجنٹس، ٹیسٹ منظرنامے نافذ کرتے ہیں
- سمولیشن کے اندر من مانی (arbitrary) کوڈ چلاتے ہیں
مثال پلگ ان فلو:
آپ کا ROS 2 کوڈ Gazebo سرور
| |
|--- موٹر کمانڈ شائع کرتا ہے --->|
| فزکس اپ ڈیٹ
| (پلگ ان کمانڈ پر کارروائی کرتا ہے)
| موٹر حرکت کرتی ہے
|<--- سینسر ڈیٹا شائع کرتا ہے ----|
| |
سینسر پلگ ان نئی موٹر پوزیشن کو کیپچر کرتا ہے اور اسے ROS 2 ٹاپک کے طور پر شائع کرتا ہے جسے آپ کا کوڈ پڑھتا ہے۔
Gazebo اور ROS 2 انٹیگریشن
Gazebo اور ROS 2 کے درمیان پل شفاف ہے:
یہ کیسے کام کرتا ہے
- آپ کا ROS 2 کوڈ موٹر کمانڈ کو ٹاپک
/cmd_velپر شائع کرتا ہے - Gazebo پلگ ان
/cmd_velکو سبسکرائب کرتا ہے - پلگ ان سمولیشن کو اپ ڈیٹ کرتا ہے - روبوٹ کو حرکت دیتا ہے
- سینسر پلگ ان روبوٹ کی نئی حالت کیپچر کرتا ہے
- پلگ ان ROS 2 ٹاپک
/odom(اوڈومیٹری) پر شائع کرتا ہے - آپ کا ROS 2 کوڈ
/odomکو سبسکرائب کرتا ہے اور حالت پڑھتا ہے
آپ کے نقطہ نظر سے، یہ ایک فزیکل روبوٹ کو کنٹرول کرنے جیسا ہی ہے:
- آپ
/cmd_velپر کمانڈز شائع کرتے ہیں - آپ
/odomسے سینسر ڈیٹا پڑھتے ہیں - چاہے اینڈ پوائنٹ فزیکل روبوٹ ہو یا Gazebo، یہ شفاف ہوتا ہے
یہ ROS 2 ایبسٹریکشن لیئر کی طاقت ہے۔ ایک ہی کوڈ سمولیشن اور حقیقت میں کام کرتا ہے۔
TheConstruct پر Gazebo تک رسائی
TheConstruct (theconstructsim.com) ایک کلاؤڈ روبوٹکس پلیٹ فارم ہے جو Gazebo اور ROS 2 تک مفت اور ادا شدہ رسائی فراہم کرتا ہے۔
ٹیر 1 راستہ (کلاؤڈ): TheConstruct
- سائن اپ کریں: theconstructsim.com پر جائیں اور ایک اکاؤنٹ بنائیں (مفت ٹیر دستیاب ہے)
- ماحول لانچ کریں: ایک نیا ROSject (TheConstruct کی طرف سے کلاؤڈ ROS 2 ماحول کی اصطلاح) بنائیں
- Gazebo Harmonic منتخب کریں: Gazebo Harmonic امیج کا انتخاب کریں
- براؤزر کے ذریعے رسائی: TheConstruct ایک براؤزر پر مبنی IDE اور Gazebo GUI فراہم کرتا ہے
- roslaunch چلائیں: مقامی تنصیب کے بغیر Gazebo سمولیشنز کو فعال کریں
آپ کے لیے فوائد:
- تنصیب کی ضرورت نہیں
- تمام کمپیوٹیشن کلاؤڈ میں
- کسی بھی ڈیوائس سے براؤزر کے ذریعے رسائی
- پہلے سے ترتیب شدہ ROS 2 + Gazebo ماحول
- سیکھنے کے لیے مفت ٹیر کافی ہے
آپ کیا دیکھیں گے
جب آپ TheConstruct پر Gazebo لانچ کرتے ہیں، تو آپ دیکھیں گے:
مرکزی ویو پورٹ:
- روبوٹ اور ماحول کا 3D ویژولائزیشن
- دنیا کے کوآرڈینیٹس دکھانے والی گرڈ
- ایک ساتھ متعدد روبوٹس ظاہر ہو سکتے ہیں
سائیڈ بار پینلز:
- سمولیشن: چلائیں/روکیں کنٹرولز، دنیا کی خصوصیات
- اینٹیٹیز (Entities): تمام اشیاء (روبوٹس، ماڈلز، لائٹس) کی ٹری
- انسپکٹر: منتخب اشیاء کی خصوصیات (پوزیشن، رفتار، ماس)
- ٹرمینل: ڈیبگنگ کے لیے کمانڈ لائن تک رسائی
Gazebo کی بنیادی باتیں: آپ کی پہلی سمولیشن
جب آپ روبوٹ کے ساتھ Gazebo دنیا لانچ کرتے ہیں تو یہ ہوتا ہے:
مرحلہ 1: دنیا کی فائل لوڈ کریں
ایک .sdf فائل (Simulation Description Format) وضاحت کرتی ہے:
<!-- مثال کے طور پر سادہ SDF -->
<sdf version="1.6">
<world name="default">
<!-- نیچے کی طرف اشارہ کرتی ہوئی کشش ثقل -->
<gravity>0 0 -9.81</gravity>
<!-- گراؤنڈ پلین -->
<model name="ground_plane">
<link name="link">
<collision><geometry><plane/></geometry></collision>
<visual><geometry><plane/></geometry></visual>
</link>
</model>
<!-- روبوٹ ماڈل (URDF سے لوڈ کیا گیا) -->
<model name="my_robot">
<pose>0 0 1 0 0 0</pose>
<include>
<uri>model://my_robot/my_robot.urdf</uri>
</include>
</model>
</world>
</sdf>
سرور اس فائل کو پارس کرتا ہے، گراؤنڈ بناتا ہے، روبوٹ کو لوڈ کرتا ہے۔
مرحلہ 2: ROS 2 برج شروع کریں
پلگ انز ROS 2 ٹاپکس کو سبسکرائب کرتے ہیں:
/cmd_vel: آپ کے ROS 2 کوڈ سے حرکت کے احکامات وصول کرتا ہے/odom: روبوٹ کی اوڈومیٹری (پوزیشن، رفتار) شائع کرتا ہے/scan: LIDAR ڈیٹا شائع کرتا ہے/camera/image_raw: کیمرے کی تصاویر شائع کرتا ہے
آپ کا ROS 2 کوڈ سینسر ٹاپکس کو سبسکرائب کرتا ہے اور کمانڈ ٹاپکس کو شائع کرتا ہے۔
مرحلہ 3: سمولیشن لوپ چلائیں
سرور مسلسل فزکس کو اپ ڈیٹ کرتا ہے:
ہر ٹائم سٹیپ کے لیے (ایک سیکنڈ میں 1000 بار):
1. ROS 2 ٹاپکس سے پیغامات وصول کریں
2. کنٹرول کمانڈز سے قوتوں/ٹارک کو اپ ڈیٹ کریں
3. نئی پوزیشنیں، رفتاریں شمار کریں (فزکس ریاضی)
4. ٹکراؤ چیک کریں
5. سینسر آؤٹ پٹ کو اپ ڈیٹ کریں
6. ROS 2 ٹاپکس پر شائع کریں
7. ویژولائزیشن رینڈر کریں (GUI کلائنٹ کو بھیجیں)
ہر قدم تقریباً 1 ملی سیکنڈ کا سمولٹڈ وقت ہوتا ہے۔
مرحلہ 4: ویژولائز اور تعامل کریں
GUI کلائنٹ نتیجہ دکھاتا ہے۔ آپ دیکھتے ہیں:
- آپ کے ROS 2 کمانڈز کے جواب میں روبوٹ حرکت کر رہا ہے
- سینسر ڈیٹا حقیقی وقت میں بہہ رہا ہے
- ٹکراؤ روبوٹ کو دیواروں سے گزرنے سے روک رہے ہیں
- کشش ثقل اشیاء کو نیچے کھینچ رہی ہے
اہم تصورات کا خلاصہ
| تصور | مطلب | مثال |
|---|---|---|
| دنیا (World) | مکمل سمولیشن ماحول (گراؤنڈ، روبوٹس، اشیاء) | warehouse_simulation.sdf |
| ماڈل (Model) | دنیا میں انفرادی شے (روبوٹ، رکاوٹ، لینڈ مارک) | my_robot, ground_plane |
| لنک (Link) | ماڈل کے اندر سخت جسم (لچک نہیں) | robot_arm_base, robot_arm_link1 |
| جوائنٹ (Joint) | لنکس کے درمیان کنکشن (حرکت کی اجازت دیتا ہے) | robot_arm_joint1 (گھومنے والا جوائنٹ) |
| پلگ ان (Plugin) | سمیلیٹر کو بڑھانے والا کوڈ (سینسرز، کنٹرولرز) | sensor_plugin, control_plugin |
| SDF | XML فارمیٹ جو دنیاؤں اور ماڈلز کی وضاحت کرتا ہے | جیومیٹری، فزکس، جوائنٹس کی وضاحت کرتا ہے |
| URDF | روبوٹ ڈھانچے کے لیے XML فارمیٹ (انسان کے پڑھنے کے قابل) | SDF کا متبادل، عام طور پر استعمال ہوتا ہے |
AI کے ساتھ کوشش کریں
سیٹ اپ: ChatGPT (chat.openai.com) یا اپنے پسندیدہ AI ٹول کو کھولیں اور Gazebo اور روبوٹکس سمولیشن کو دریافت کریں۔
پرامپٹ سیٹ 1 (بنیادی):
Gazebo کیا ہے اور روبوٹکس کمپنیاں اسے کیوں استعمال کرتی ہیں؟
اس کا Unity یا CoppeliaSim جیسے دیگر روبوٹکس سمیلیٹروں سے موازنہ کریں۔
پرامپٹ سیٹ 2 (انٹرمیڈیٹ):
Gazebo کے کلائنٹ-سرور فن تعمیر کی وضاحت کریں۔
یہ ڈیزائن روبوٹکس سمولیشن کے لیے کیوں مفید ہے؟
پرامپٹ سیٹ 3 (ایڈوانسڈ):
میں روبوٹ کے بازو کو کنٹرول کرنے کے لیے ROS 2 کوڈ لکھ رہا ہوں۔
اگر روبوٹ Gazebo سمولیشن میں ہے بمقابلہ فزیکل روبوٹ میں تو کوڈ کیسے مختلف ہوگا؟
پلگ ان سسٹم کا کیا کردار ہے؟
متوقع نتائج: آپ کو یہ سمجھ آنا چاہیے کہ:
- Gazebo انڈسٹری کا معیار اوپن سورس روبوٹکس سمیلیٹر ہے
- اس کا کلائنٹ-سرور فن تعمیر فزکس کو ویژولائزیشن سے الگ کرتا ہے
- ROS 2 انٹیگریشن سمولیشن کو شفاف بناتی ہے (ایک ہی کوڈ فزیکل اور ورچوئل روبوٹس کے لیے کام کرتا ہے)
- TheConstruct کلاؤڈ مقامی تنصیب کے بغیر Gazebo کو قابل رسائی بناتا ہے
ہاتھ سے کرنے والا اگلا قدم: باب 9 میں، آپ روبوٹ کی تفصیلات کی فائلیں (URDF) لکھیں گے اور سمولیشن دنیا بنائیں گے۔ باب 12 میں، آپ اصل ROS 2 کوڈ کو Gazebo سے جوڑیں گے۔