Skip to main content

ٹرٹل سم ایکشن میں

آپ کے پاس ایک کام کرنے والا ROS 2 ماحول ہے۔ اب آئیے دیکھتے ہیں کہ ROS 2 کچھ قابلِ مشاہدہ کرتا ہے۔

Turtlesim (ٹرٹل سم) ایک سادہ 2D روبوٹ سمیلیٹر ہے جو ROS 2 میں بنا ہوا ہے۔ آپ اسے لانچ کریں گے، اسے اپنے کی بورڈ سے کنٹرول کریں گے، اور نوڈز کے درمیان ڈیٹا کے بہاؤ کو دیکھیں گے۔ اس سبق کے اختتام تک، آپ کو اس بات کی گہری سمجھ آ جائے گی کہ ROS 2 متعدد عملوں (processes) کو کیسے مربوط کرتا ہے۔

مدت: 60 منٹ | ہارڈ ویئر ٹائر: ٹائر 1 (VNC کے ساتھ کلاؤڈ ROS 2 یا GUI کے ساتھ مقامی)


ٹرٹل سم کیا ہے؟

Turtlesim ایک کم سے کم روبوٹ سمیلیٹر ہے جو ہر ROS 2 انسٹالیشن کے ساتھ آتا ہے۔ یہ سمولیٹ کرتا ہے:

  • ایک 2D کینوس پر ایک کچھوا (روبوٹ)
  • رفتار کے احکامات (آگے بڑھنا/گھومنا)
  • اڈومیٹری (پوزیشن کی رائے)
  • سروسز (اسپان کرنا/ختم کرنا/دوبارہ ترتیب دینا)

اسے اپنا پہلا روبوٹ سمجھیں۔ یہ بہت شاندار نہیں ہے، لیکن یہ ہر بنیادی ROS 2 تصور کو ظاہر کرتا ہے: نوڈز، ٹاپکس، سروسز، اور میسجنگ۔


ٹرمینل سیٹ اپ (دونوں راستوں کے لیے)

کچھ بھی لانچ کرنے سے پہلے، یقینی بنائیں کہ آپ نے دو ٹرمینل کھول رکھے ہیں:

کلاؤڈ پاتھ کے لیے (دی کنسٹرکٹ)

  1. Open Shell پر کلک کریں (ایک نیا ٹرمینل بناتا ہے)
  2. دوبارہ Open Shell پر کلک کریں (دوسرا ٹرمینل بناتا ہے)
  3. اب آپ کے پاس دو ٹرمینل ایک دوسرے کے ساتھ ہیں۔

مقامی پاتھ کے لیے (اوبنٹو/WSL)

  1. اپنا پہلا ٹرمینل کھولیں: Ctrl+Alt+T یا ایک ٹرمینل ایپ کھولیں
  2. دوسرا ٹرمینل کھولیں: نئی ونڈو میں یہی طریقہ استعمال کریں۔
  3. دونوں کو سورس کریں: ہر ٹرمینل میں، چلائیں source ~/.bashrc (اگر آپ نے اسے سبق 3.1 میں سیٹ اپ کیا تھا)

مرحلہ 1: ٹرٹل سم نوڈ لانچ کریں

ٹرمینل 1 میں، چلائیں:

ros2 run turtlesim turtlesim_node

کیا ہوتا ہے:

ٹرمینل آؤٹ پٹ:

[INFO] [launch]: Default logging verbosity is set to INFO
[INFO] [turtlesim_node-1]: process started with pid [1234]

ایک نئی ونڈو کھلتی ہے جس میں مرکز میں ایک پیلے کچھوے کے ساتھ ایک نیلا کینوس دکھایا جاتا ہے۔

اسے چلتا رہنے دیں (ٹرمینل 1 کو بند نہ کریں)۔


مرحلہ 2: کی بورڈ ٹیلی اوپ لانچ کریں (کنٹرول)

ٹرمینل 2 میں، چلائیں:

ros2 run turtlesim turtle_teleop_key

ٹرمینل آؤٹ پٹ:

This node takes keypresses on stdin and publishes them
as Twist messages on the 'turtle1/cmd_vel' topic.
---------------------------
Reading from keyboard
Use arrow keys to move the turtle.
Press 'q' to quit.

اب آپ کچھوے کو کنٹرول کرنے کے لیے تیار ہیں۔


مرحلہ 3: کچھوے کو کنٹرول کریں

ٹرمینل 2 میں (جہاں کی بورڈ ٹیلی اوپ چل رہا ہے)، کیز دبائیں:

  • ↑ (اوپر کا تیر): کچھوا آگے بڑھتا ہے
  • ↓ (نیچے کا تیر): کچھوا پیچھے جاتا ہے
  • ← (بائیں کا تیر): کچھوا بائیں مڑتا ہے
  • → (دائیں کا تیر): کچھوا دائیں مڑتا ہے

یہ کوشش کریں:

  1. کئی بار دبائیں → کچھوا آگے ایک لکیر کھینچتا ہے
  2. ← ← ← دبائیں → کچھوا بائیں گھومتا ہے
  3. دبائیں → کچھوا نئی سمت میں بڑھتا ہے
  4. ایک شکل بنانا جاری رکھیں (مربع، اسپرل، جو بھی ہو)

کیا ہو رہا ہے:

  • آپ کی کی پریس ٹیلی اوپ عمل میں جاتی ہیں
  • ٹیلی اوپ انہیں ROS 2 Twist پیغامات (رفتار کے احکامات) میں تبدیل کرتا ہے
  • یہ پیغامات /turtle1/cmd_vel ٹاپک پر شائع ہوتے ہیں
  • ٹرٹل سم اس ٹاپک کو سبسکرائب کرتا ہے
  • ٹرٹل سم رفتار وصول کرتا ہے، کچھوے کی پوزیشن کو اپ ڈیٹ کرتا ہے
  • کینوس کچھوے کو نئی جگہ پر دوبارہ بناتا ہے

آپ ROS 2 کو ایکشن میں دیکھ رہے ہیں: عمل A (ٹیلی اوپ) → ٹاپک → عمل B (ٹرٹل سم)


بہاؤ کو سمجھنا

میں تصور کرتا ہوں کہ کیا ہو رہا ہے:

┌─────────────────────────────────────────────────────┐
│ آپ کا کمپیوٹر / کلاؤڈ │
├─────────────────────────────────────────────────────┤
│ │
│ ٹرمینل 1 ٹاپک کینوس │
│ ┌──────────────┐ (میسج بس) ┌──────┐ │
│ │ turtlesim │←────────────────────────│ Pose │ │
│ │ نوڈ │ /turtle1/odometry │ X,Y │ │
│ │ │ │ θ │ │
│ └──────────────┘←────────────────────────│ │ │
│ ↑ /turtle1/cmd_vel │ │ │
│ │ (Twist: linear,angular) └──────┘ │
│ │ │
│ │ │
│ ٹرمینل 2 │
│ ┌──────────────┐ │
│ │ teleop_key │─────────┐ │
│ │ (کی بورڈ │ │ │
│ │ پڑھتا ہے) │ Twist پیغامات شائع کرتا ہے │
│ └──────────────┘ messages │
│ ↑ │
│ │ │
│ آپ کا │
│ کی بورڈ │
│ │
└─────────────────────────────────────────────────────┘

اہم بصیرت: ٹیلی اوپ عمل براہ راست کچھوے کو کنٹرول نہیں کرتا۔ اس کے بجائے، یہ رفتار کے پیغامات شائع کرتا ہے۔ ٹرٹل سم ان پیغامات کے لیے سنتا ہے اور ان پر عمل کرتا ہے۔ یہ پبلش/سبسکرائب پیٹرن ہے—ROS 2 کی بنیاد۔


مرحلہ 4: آر کیو ٹی گراف کے ساتھ تصور کریں

ایک تیسرا ٹرمینل کھولیں (پہلے دو کو چلتا رکھیں):

ros2 run rqt_graph rqt_graph

ایک ونڈو کھلتی ہے جو نوڈز اور ٹاپکس کا ایک بصری گراف دکھاتی ہے۔

آپ کو دیکھنا چاہیے:

      ┌──────────────┐
│ /teleop_key │
└────────┬─────┘

/turtle1/cmd_vel (Twist)


┌──────────────┐
│ /turtlesim │
└──────────────┘

لیجنڈ:

  • مستطیل: نوڈز (عمل)
  • لائنیں: ٹاپک کنکشن
  • سمت: تیر ڈیٹا کے بہاؤ کو دکھاتے ہیں (پبلشر → ٹاپک → سبسکرائبر)

گراف دیکھتے ہوئے کی بورڈ کیز دبانے کی کوشش کریں۔ گراف اینیمیٹ نہیں ہوتا، لیکن آپ ساخت دیکھ سکتے ہیں: ٹیلی اوپ شائع کرتا ہے، ٹرٹل سم سبسکرائب کرتا ہے۔


ہاتھ سے کام کرنے کا چیلنج: ایک مربع بنائیں

صرف کی بورڈ ایرو کیز کا استعمال کرتے ہوئے، ٹرٹل سم میں ایک مربع بنائیں۔

ترکیب:

  1. تقریباً 3-4 سیکنڈ تک آگے بڑھیں (↑)
  2. 90 ڈگری گھومنے کے لیے بائیں مڑیں (تقریباً) (←)
  3. دوبارہ آگے بڑھیں
  4. 4 بار دہرائیں

آپ کیا سیکھتے ہیں: آپ گسپیٹ (discrete) اعمال کے ذریعے ایک روبوٹ کو کنٹرول کر رہے ہیں۔ ٹائمنگ غیر درست ہے (اس پر منحصر ہے کہ آپ کتنی تیزی سے کیز دباتے ہیں)، لیکن آپ دیکھتے ہیں کہ رفتار کے احکامات پوزیشن میں کیسے جمع ہوتے ہیں۔


یہ کیوں اہم ہے

یہ سبق ROS 2 کی بنیادی بصیرت کو ظاہر کرتا ہے:

  1. ماڈیولرٹی: ٹیلی اوپ اور ٹرٹل سم آزاد عمل ہیں
  2. مواصلات: وہ ٹاپکس (پب/سب) کے ذریعے مربوط ہوتے ہیں
  3. ڈی کپلنگ: ٹرٹل سم کو ٹیلی اوپ کے بارے میں نہیں معلوم؛ یہ صرف پیغامات سنتا ہے
  4. قابل توسیع: آپ ایک مختلف عمل لکھ سکتے ہیں جو /turtle1/cmd_vel پر شائع ہوتا ہے، اور ٹرٹل سم اسی طرح جواب دے گا

یہی وجہ ہے کہ ROS 2 طاقتور ہے: آزاد، دوبارہ استعمال کے قابل اجزاء کو جوڑ کر پیچیدہ نظام بنائیں۔


صفائی

جب آپ کی کھوج مکمل ہو جائے:

  1. ٹرمینل 2 (ٹیلی اوپ) میں: باہر نکلنے کے لیے q دبائیں
  2. ٹرمینل 1 (ٹرٹل سم) میں: روکنے کے لیے Ctrl+C دبائیں
  3. اختیاری: ٹرمینل 3 (آر کیو ٹی گراف) میں: ونڈو بند کر دیں۔

تمام نوڈز صاف ستھرا رک جاتے ہیں۔


AI کے ساتھ کوشش کریں

سیٹ اپ: اپنے ٹرٹل سم کو چلتا رکھیں (ٹرمینل 1 اور 2)، اور اپنی AI ٹول کو دوسری ونڈو میں کھولیں۔

پرامپٹ 1 (آرکیٹیکچر کو سمجھنا):

اپنے AI سے پوچھیں:

In ROS 2, the teleop process publishes to /turtle1/cmd_vel,
and turtlesim subscribes to the same topic.

Explain why the teleop process doesn't need to know the details
of how turtlesim is implemented. How does ROS 2 enable this decoupling?

متوقع بصیرت: پبلش/سبسکرائب پیٹرن براہ راست فنکشن کالز سے بہتر ہے۔ یہ ذہنی ماڈل باب 4 کے لیے اہم ہے جب آپ اپنے نوڈز لکھیں گے۔


پرامپٹ 2 (قابلیت):

اپنے AI سے پوچھیں:

Right now, only turtlesim subscribes to /turtle1/cmd_vel.
What if I wrote a second node that ALSO subscribed to the same topic?
Would both nodes receive the velocity commands?
What would be the benefit or problem of that design?

آپ کیا سیکھتے ہیں: ROS 2 میں، ایک ٹاپک کے متعدد سبسکرائبر ہو سکتے ہیں۔ AI استعمال کے معاملات (لاگنگ، اضافی، سمولیشن + حقیقی روبوٹ سوئچنگ) یا احتیاطی تدابیر (جو آپ باب 4 میں دیکھیں گے) کا مشورہ دے سکتا ہے۔


پرامپٹ 3 (توسیع):

اپنے AI سے پوچھیں:

Turtlesim publishes odometry (position updates) on /turtle1/odometry.
Currently, nothing subscribes to that.

If I wrote a new node that subscribed to odometry and printed
"Turtle is at position X, Y", how would it receive data?
Would it get every position update, or would it miss some?

آپ کیا سیکھتے ہیں: متعدد سبسکرائبر ایک ٹاپک کو سن سکتے ہیں، اور ROS 2 میسج روٹنگ کو سنبھالتا ہے۔ AI بفرنگ/کیو کی گہرائی کا ذکر کر سکتا ہے، جس کا آپ کو باب 4 میں سامنا ہوگا۔


اگلے سبق سے پہلے چیک پوائنٹ

سبق 3.3 پر آگے بڑھنے سے پہلے، تصدیق کریں کہ آپ سمجھتے ہیں:

  • ٹرٹل سم ایک نوڈ ہے (ROS منطق چلانے والا عمل)
  • ٹیلی اوپ ایک مختلف نوڈ ہے جو کی بورڈ ان پٹ کو پیغامات کے طور پر شائع کرتا ہے
  • وہ ایک ٹاپک (/turtle1/cmd_vel) کے ذریعے بات چیت کرتے ہیں
  • آر کیو ٹی گراف نے بصری طور پر نوڈ-ٹاپک ڈھانچہ دکھایا
  • دونوں نوڈز آزادانہ طور پر چلتے ہیں—ٹیلی اوپ براہ راست ٹرٹل سم فنکشنز کو کال نہیں کرتا

اگر تمام چیک باکس واضح ہیں، تو آپ سبق 3.3 کے لیے تیار ہیں، جہاں آپ CLI ٹولز کا استعمال کرتے ہوئے سسٹم میں تمام ٹاپکس اور سروسز کو دریافت کریں گے۔


اگلا سبق: → سبق 3.3: نوڈز اور ٹاپکس (CLI ایکسپلوریشن)