آپ کا ورک اسٹیشن سرنگ کے ذریعے ROS 1 master تک پہنچتا ہے اور پھر بھی موضوعات کی فہرست خالی دکھاتا ہے۔ یہ نمونہ عام ہے کیونکہ master رجسٹریشن اور موضوع کی منتقلی دو مختلف گفتگو ہیں، اور master سے صرف پہلی گزرتی ہے۔ نیچے دی گئی چیک لسٹ دوسری گفتگو سے گزرتی ہے: وہ آخری نقطہ جو ناشر اعلان کرتا ہے، وہ پتہ جہاں سبسکرائبر کو پہنچنا چاہیے، اور وہ اجازت جو دونوں کو بات کرنے دیتی ہے۔ یہاں سب کچھ صرف پرانے ROS 1 کے لیے ہے، جس کی Noetic معاونت کی مدت مئی 2025 میں ختم ہوئی۔

مرحلہ 1: ثابت کریں کہ master کنکشن موضوع کا کنکشن نہیں ہے

کیا کام کرتا ہے اور کیا نہیں، اسے الگ کر کے شروع کریں۔ کامیاب rostopic list ثابت کرتا ہے کہ آپ کی شیل master کے XMLRPC پورٹ تک پہنچ سکتی ہے اور master موضوعات جانتا ہے؛ یہ نہیں بتاتا کہ سبسکرائبر ناشر تک پہنچ سکتا ہے یا نہیں۔ نیچے دیے گئے تین حکم اس فرق کو نمایاں کرتے ہیں، اور سب صرف پڑھنے کے لیے ہیں۔

echo "$ROS_MASTER_URI"
rostopic list
rostopic info /chatter

rostopic info کا آؤٹ پٹ ناشر کے نوڈ URI کا نام لیتا ہے، جو ناشر کے میزبان پر XMLRPC پتہ ہے۔ یہی وہ پتہ ہے جسے آپ کا سبسکرائبر آگے کال کرے گا، اس لیے سبسکرائبر جہاں بھی چلے وہاں سے یہ قابل رسائی ہونا چاہیے۔ اگر یہ ایسے انٹرفیس کی طرف اشارہ کرتا ہے جو صرف روبوٹ کے اپنے LAN پر موجود ہے، تو master کی تلاش کامیاب ہوتی ہے اور ڈیٹا کبھی نہیں پہنچتا۔

مرحلہ 2: اعلان شدہ آخری نقطہ خود نوڈ سے پڑھیں

ROS 1 اپنی اعلان شدہ میزبان شناخت ROS_IP یا ROS_HOSTNAME سے چنتا ہے جب ان میں سے کوئی ایک سیٹ ہو، ورنہ میزبان کے اپنے نام کی تحلیل پر لوٹ جاتا ہے۔ واقعی شروع کیے گئے عمل کا ماحول دیکھیں، کیونکہ systemd یونٹ، کنٹینر یا دوسرا ٹرمینل آپ کی جانچ جس شیل میں چلی اس سے مختلف قدر رکھ سکتا ہے۔

echo "$ROS_IP" "$ROS_HOSTNAME"
rosnode info /talker
getent hosts robot-host

میزبان نام کا اعلان صرف اسی وقت کام کرتا ہے جب ہر ساتھی اس نام کو مطلوبہ قابل رسائی پتے پر تحلیل کرے۔ اگر یہ نام صرف روبوٹ کے اپنے نیٹ ورک کے اندر تحلیل ہوتا ہے، تو سرنگ کے دوسری طرف کے ورک اسٹیشن کے پاس اسے استعمال کرنے کا کوئی راستہ نہیں، اور کوئی DNS لاحقہ نہ دھکیلنے والا VPN اس تفاوت کو مزید خراب کرتا ہے۔ جب ٹوپولوجی روٹ کی گئی ہو تو ROS_IP کو سرنگ کے پتے پر سیٹ کرنا چھوٹی تبدیلی ہے۔ آپ جو بھی منتخب کریں، اسے دونوں سروں کے لیے درج کریں، کیونکہ شناخت پر متفق نہ ہونے والے ناشر اور سبسکرائبر گفت و شنید کریں گے اور پھر جڑ نہیں سکیں گے۔

اگر اعلان شدہ URI ایسا پتہ استعمال کرتا ہے جہاں کوئی ساتھی روٹ نہیں کر سکتا، تو یہیں رک جائیں۔ غلط انٹرفیس پر تحلیل ہونے والے نام کو کوئی فائر وال کام درست نہیں کرے گا۔

مرحلہ 3: اعلان شدہ پتہ قابل تحلیل اور روٹ شدہ بنائیں

URI ہاتھ میں لے کر، رسائی روبوٹ سے نہیں بلکہ سبسکرائبر کے میزبان سے جانچیں۔ TCPROS پورٹ گفت و شنید کے دوران چنا جاتا ہے، اس لیے مفید ابتدائی جانچ XMLRPC پورٹ ہے اور مفید بعد کی جانچ قائم شدہ ساکٹ ہے۔ صرف ایک سمت میں موجود راستہ روٹ شدہ VPNs میں عام خرابی ہے، اور واپسی کا راستہ جانے والے راستے جتنا ہی اہم ہے۔

ip route get 10.70.0.2
nc -vz 10.70.0.2 33911
ss -tnp dst 10.70.0.2

روٹ شدہ TUN انٹرفیس روبوٹ کا Ethernet حصہ بڑھائے بغیر یہ IP گفتگو لے کر جاتا ہے، جو عام طور پر دور دراز آپریٹر چاہتا ہے۔ اگر اسٹیک میں کوئی چیز اس کے بجائے براڈکاسٹ یا multicast پر منحصر ہو، تو اس ضرورت کو الگ سے جانچنا ہوگا؛ ایک آلے کو مطمئن کرنے کے لیے سرنگ کو TAP میں بدلنا ہر شریک کے لیے نیٹ ورک وسیع کرتا ہے۔

اگر راستہ یا واپسی کا راستہ نہ ہو تو یہیں رک جائیں۔ اپنے میزبان پر جواب دینے والا لیکن ورک اسٹیشن سے ناقابل رسائی ناشر روٹنگ کا مسئلہ رکھتا ہے، ROS کا مسئلہ نہیں۔

مرحلہ 4: ساتھیوں کی گفتگو کی اجازت دیں اور ایک موضوع دیکھیں

صرف وہ پورٹ کھولیں جو طے شدہ گفتگو کو درکار ہیں، اور ہر قاعدے کو اعلان شدہ شرکا تک محدود رکھیں۔ master کا سننے والا موضوع کے پے لوڈ کے لیے ریلے نہیں ہے، اس لیے صرف اسے اجازت دینے سے ناشر کا آخری نقطہ بند ہی رہتا ہے۔ ROS سننے والوں کو عوامی انٹرنیٹ پر بے نقاب کرنے کے بجائے نجی VPN کی سرحد پر رکھیں۔

rostopic hz /chatter
rostopic echo -n1 /chatter
rosnode ping /talker

اصل ناشر سے اصل سبسکرائبر تک ایک بے ضرر موضوع دیکھیں اور اعلان شدہ آخری نقطہ اور جواب کے راستے دونوں کی تصدیق کریں۔ ایک پیغام ثابت کرتا ہے کہ راستہ کام کرتا ہے؛ مستقل رفتار ثابت کرتی ہے کہ وہ کھلا رہتا ہے۔ ایکچوایٹر کنٹرول اور حفاظتی جانچیں اس صرف نیٹ ورک جانچ سے باہر رکھیں، کیونکہ کام کرنے والا موضوع کام کرنے والے روبوٹ کی تصدیق نہیں ہے۔ آپ نے جو ROS ورژن اور آخری نقطوں کا جوڑا دیکھا اسے درج کریں، تاکہ اگلا شخص ٹوپولوجی کی تبدیلی کو رجعت سے الگ پہچان سکے۔

چیک لسٹ اس وقت مکمل ہوتی ہے جب اعلان شدہ URI سبسکرائبر سے قابل رسائی ہو، طے شدہ پورٹ صرف اسی ساتھی کے لیے کھلا ہو، ایک اعلان شدہ موضوع بہہ رہا ہو، اور دونوں میزبانوں کے لیے ماحول کی اقدار درج ہوں۔ پرانے ROS 1 کو اس شعبے میں اصلاحات نہیں ملیں گی، اس لیے ریکارڈ ہی وہ حصہ ہے جو لوگوں کے بدلنے کے بعد بھی کام کرتا رہتا ہے۔

متعلقہ مضامین