Skip to main content

باب 5: کمیونیکیشن میں مہارت

آپ نے pub/sub (پبلش/سبسکرائب) میں مہارت حاصل کر لی ہے۔ اب وقت ہے کہ آپ اپنے ٹول کٹ کو وسعت دیں۔ ROS 2 میں صرف مسلسل ڈیٹا اسٹریمز سے کہیں زیادہ پیشکشیں ہیں۔ کبھی کبھی آپ کو request/response (درخواست/جواب) کمیونیکیشن کی ضرورت ہوتی ہے (جیسے کسی فنکشن کو کال کرنا)، اور کبھی کبھی آپ کو custom message types (اپنی مرضی کے میسج کی اقسام) کی ضرورت ہوتی ہے (کیونکہ String اور Int64 ہمیشہ کافی نہیں ہوتے)۔

اس باب میں، آپ سروس سرورز اور کلائنٹس لکھیں گے، اپنی میسج کی اقسام ڈیزائن کریں گے، اور ان ڈیزائن پیٹرنز کو سیکھیں گے جو یہ طے کرتے ہیں کہ مختلف منظرناموں کے لیے ٹاپکس استعمال کرنے ہیں یا سروسز۔ آپ دو مزید دوبارہ استعمال کے قابل مہارتیں (reusable skills) بنائیں گے جو ایڈوانس ROS 2 سسٹمز پر لاگو ہوتی ہیں۔

مدت: 4 اسباق، کل 4 گھنٹے تہہ کی تقسیم (Layer Breakdown): L2: 50%، L3: 40%، L4: 10% (spec-first ڈیزائن کا تعارف) ہارڈ ویئر ٹائر: ٹائر 1 (Cloud ROS 2) پہلے سے درکار علم (Prerequisites): باب 4 (پبلشر/سبسکرائبر پیٹرنز) دوبارہ استعمال کے قابل مہارتیں جو بنائی گئیں: ros2-service-pattern, ros2-custom-interfaces

سیکھنے کے مقاصد

اس باب کے اختتام تک، آپ اس قابل ہو جائیں گے کہ:

  • درخواستوں پر کارروائی کرنے اور جوابات واپس کرنے والے سروس سرورز لکھ سکیں
  • درخواستیں بھیجنے اور جوابات سنبھالنے والے سروس کلائنٹس لکھ سکیں
  • اپنی مرضی کے میسج کی اقسام (.msg فائلیں) اور سروس کی تعریفیں (.srv فائلیں) ڈیزائن کر سکیں
  • کمیونیکیشن کی ضروریات کی بنیاد پر ٹاپکس اور سروسز کے درمیان انتخاب کر سکیں
  • ڈیزائن کے تبادلے (trade-offs) کو سمجھ سکیں (synchronous بمقابلہ asynchronous، قابل اعتماد بمقابلہ تیز)
  • اپنی مرضی کے میسج کی اقسام کے لیے دوبارہ استعمال کے قابل انٹرفیس پیکیجز بنا سکیں

اسباق

سبق 5.1: سروس سرور لکھنا (60 منٹ)

ایک نوڈ بنائیں جو ایک سروس کو نافذ (implement) کرے۔ ایک سروس ایک فنکشن کال کی طرح ہے: کلائنٹ ایک درخواست بھیجتا ہے، سرور اس پر کارروائی کرتا ہے، اور ایک جواب واپس کرتا ہے۔ یہ کمانڈز، کنفیگریشن میں تبدیلیوں، اور ایک بار کے اعمال (one-time actions) کے لیے مفید ہے۔

بنیادی تصورات:

  • سروس پیٹرن (request/response، synchronous RPC-like کمیونیکیشن)
  • سروس سرور بنانا (create_service)
  • سروس کال بیکس

سبق 5.2: سروس کلائنٹ لکھنا (60 منٹ)

ایک نوڈ بنائیں جو سبق 5.1 کی سروس کو کال کرے۔ کامیاب جوابات اور غلطی کے معاملات (جیسے سروس دستیاب نہیں، ٹائم آؤٹ) دونوں کو سنبھالیں۔

بنیادی تصورات:

  • سروس کلائنٹ بنانا (create_client)
  • Async/sync درخواست کو سنبھالنا
  • غلطی سے بحالی کے پیٹرنز (Error recovery patterns)

سبق 5.3: کسٹم میسجز اور سروسز (60 منٹ)

بنے بنائے میسج کی اقسام استعمال کرنا بند کریں۔ اپنی مرضی کے میسجز کے لیے اپنی .msg فائلیں بنائیں (جیسے RobotStatus جس میں پوزیشن، ویلاسٹی، بیٹری لیول ہو) اور اپنی مرضی کی سروسز کے لیے .srv فائلیں۔

بنیادی تصورات:

  • .msg فائل فارمیٹ (انٹرفیس کی تعریفیں)
  • .srv فائل فارمیٹ (درخواست/جواب کا ڈھانچہ)
  • انٹرفیس پیکیجز بنانا
  • نوڈز میں کسٹم اقسام کا استعمال

سبق 5.4: ڈیزائن پیٹرنز (60 منٹ)

نفاذ (implementation) سے آگے بڑھیں۔ ٹاپکس اور سروسز کے درمیان انتخاب کے لیے فیصلہ سازی کا فریم ورک سیکھیں، اور کوڈ لکھنے سے پہلے چھوٹے-چھوٹے اسپیسیفیکیشنز لکھیں۔ یہ اسپیک-ڈریون سوچ کا آپ کا تعارف ہے۔

بنیادی تصورات:

  • ٹاپک بمقابلہ سروس کے تبادلے (continuous بمقابلہ discrete، async بمقابلہ sync)
  • ڈیزائن پیٹرن کے انتخاب کا فریم ورک
  • اسپیسیفیکیشن-پہلے کا پیش منظر (کوڈ لکھنے سے پہلے ارادے کو لکھیں)

4-تہہ تدریسی طریقہ (4-Layer Teaching Method)

تہہ (Layer)%کیا کور کیا گیا ہے
L1: دستی20%حل شدہ مثالیں، قدم بہ قدم واک تھرو
L2: AI تعاون50%AI غلطی سنبھالنے، ڈیزائن کے فیصلوں، تبادلے کے تجزیے میں مدد کرتا ہے
L3: ذہانت40%دوبارہ استعمال کے قابل پیٹرن کی شناخت، مہارت کی تخلیق، انٹرفیس ڈیزائن کے اصول
L4: اسپیک-ڈریون10%سبق 5.4 کے ڈیزائن کے مشق کے لیے چھوٹے اسپیکس لکھنا (پیش منظر)

یہ باب گہری ڈیزائن سوچ کا تعارف کراتا ہے۔ آپ صرف کوڈ نہیں لکھ رہے ہیں—آپ آرکیٹیکچرل فیصلے کر رہے ہیں۔

ہارڈ ویئر کی ضروریات

کم از کم ٹائر: ٹائر 1 (Cloud ROS 2)

ٹائرسامانآپ کیا کر سکتے ہیں
1لیپ ٹاپ + براؤزرCloud ROS 2 (TheConstruct) مکمل Python + کسٹم انٹرفیس سپورٹ کے ساتھ
2+مقامی ROS 2مکمل صلاحیتوں کے ساتھ مقامی تنصیب

تمام مشقیں کلاؤڈ ROS 2 میں چلتی ہیں۔ کسی خاص ہارڈ ویئر کی ضرورت نہیں۔

پہلے سے درکار علم (Prerequisites)

  • باب 4 (پبلشر/سبسکرائبر پیٹرنز)
  • Python OOP (کلاسز، وراثت/Inheritance)
  • مکمل colcon بلڈ سپورٹ کے ساتھ ROS 2 ماحول

مہارت کا گیٹ (Mastery Gate)

باب 6 پر آگے بڑھنے سے پہلے، آپ اس قابل ہونے چاہئیں کہ:

  • درخواستوں پر کارروائی کرنے اور جوابات واپس کرنے والا سروس سرور نافذ کر سکیں
  • درخواستیں بھیجنے اور کامیابی/ناکامی کو سنبھالنے والا سروس کلائنٹ نافذ کر سکیں
  • اپنی مرضی کی میسج اقسام کے لیے کسٹم .msg فائلیں بنا سکیں
  • اپنی مرضی کی سروس کی تعریفوں کے لیے کسٹم .srv فائلیں بنا سکیں
  • انٹرفیس پیکیجز بنائیں اور نوڈز میں کسٹم اقسام استعمال کریں
  • وضاحت کر سکیں کہ مختلف منظرناموں کے لیے ٹاپکس بمقابلہ سروسز کب استعمال کرنی ہیں
  • نفاذ سے پہلے یہ بیان کرنے کے لیے ایک منی-اسپیک لکھ سکیں کہ آپ کے کمیونیکیشن سسٹم کو کیا کرنا چاہیے

اگر آپ یہ کر سکتے ہیں، تو آپ باب 6 کے لیے تیار ہیں۔


کلیدی پیٹرنز (Key Patterns)

ٹاپک پیٹرن

Publisher → ROS 2 Topic → Subscriber(s)
مسلسل، غیر مطابقت پذیر (asynchronous)، ڈھیلا تعلق (loose coupling)
استعمال کریں: سینسر ڈیٹا، اسٹیٹس اسٹریمز، تیز رفتار اپ ڈیٹس کے لیے

سروس پیٹرن

Client → Service Server → Response
درخواست/جواب، مطابقت پذیر (synchronous)، مضبوط تعلق (tightly coupled)
استعمال کریں: کمانڈز، ایک بار کے اعمال، جب آپ کو تصدیق کی ضرورت ہو

کب کیا منتخب کریں

منظر نامہاستعمال کریںکیوں
"روبوٹ کی پوزیشن مسلسل شائع کریں"Topicمسلسل، تصدیق کی ضرورت نہیں
"روبوٹ کو (x,y) پر جانے کی درخواست کریں"Serviceایک بار کا عمل، تصدیق کی ضرورت ہے
"سینسر ڈیٹا (LIDAR پوائنٹس) اسٹریم کریں"Topicتیز رفتار، متعدد سبسکرائبرز
"روبوٹ کی رفتار کی حد مقرر کریں"Serviceایک بار کی ترتیب، تصدیق کی ضرورت ہے
"روبوٹ کی بیٹری لیول کی نگرانی کریں"Topicمسلسل نگرانی
"ایمرجنسی سٹاپ سگنل"Serviceاہم، فوری جواب کی ضرورت ہے

ان تبادلوں میں مہارت حاصل کریں، اور آپ کے ڈیزائن مؤثر طریقے سے اسکیل ہوں گے۔


نیویگیشن

پچھلا باب: ← باب 4: پہلا کوڈ

اگلا باب: باب 6: سسٹمز بنانا →

ماڈیول کا جائزہ: ← ماڈیول 1 پر واپس جائیں

سبق 5.1 شروع کریں: سروس سرور لکھنا →