ہفتہ 3: ROS 2 کی بنیادیں

ROS 2 آرکیٹیکچر جائزہ
ROS 2 ایک پرتدار آرکیٹیکچر پر تعمیر کیا گیا ہے جو ایپلی کیشن منطق کو مڈل ویئر کی فکروں سے علیحدہ کرتا ہے۔ یہ آرکیٹیکچر کو سمجھنا ہیومنوائڈ روبوٹ سسٹم بنانے کے لئے ضروری ہے۔
بنیادی اجزاء
نوڈس: ROS 2 ایپلی کیشنز کے بنیادی اجزاء ہیں۔ ہر نوڈ ایک آزاد عمل ہے جو ایک مخصوص کام کے لئے ذمہ دار ہے— مثال کے طور پر، ایک نوڈ توازن کا ادراک کرنے کے لئے IMU ڈیٹا پڑھ سکتا ہے، جبکہ دوسرا جوائنٹ ٹریجیکٹریز کا حساب لگاتا ہے۔ نوڈس مڈل ویئر لےئر کے ذریعے بات چیت کرتے ہیں، متعدد کورز یا مشینز پر تقسیم شدہ پروسیسنگ کو فعال کرتے ہیں۔
DDS مڈل ویئر: ROS 2 ڈیٹا ڈسٹری بیوشن سروس (DDS) کو اپنی رابطہ کی پشت کے طور پر استعمال کرتا ہے، جو ROS 1 کے کسٹم TCPROS پروٹوکول کی جگہ لیتا ہے۔ DDS ایک صنعت کا معیار پبلش-سبسکرائب مڈل ویئر ہے جو سروس کی اقسام (QoS) کی ضمانت فراہم کرتا ہے— حقیقی وقت کے روبوٹکس کے لئے اہم ہے۔ جب کسی ہیومنوائڈ کا توازن کنٹرولر فُٹ دباؤ ڈیٹا شائع کرتا ہے، تو DDS یہ یقینی بناتا ہے کہ یہ اہم معلومات گیٹ پلانر تک محدود تاخیر کے ساتھ پہنچے، نیٹ ورک کی بھیڑ کے باوجود۔
ڈسکوری میکنزم: ROS 1 کے roscore ماسٹر نوڈ (ایک سنگل پوائنٹ آف فیلر) کے برعکس، ROS 2 DDS کی خودکار ڈسکوری استعمال کرتا ہے۔ نوڈس نیٹ ورک پر ایک دوسرے کو متحرک طور پر تلاش کرتے ہیں مرکزی تعاون کے بغیر۔ یہ ہم مرتبہ-بہ-ہم مرتبہ آرکیٹیکچر قابل اعتمادی میں بہتری لاتا ہے— اگر ایک نوڈ کریش ہو جاتا ہے، تو دیگر کام جاری رکھتے ہیں۔
کمیونیکیشن نمونے:
- ٹاپکس: اسٹریمنگ ڈیٹا (سینسر ریڈنگز، جوائنٹ اسٹیٹس) کے لئے غیر ہم وقتہ پبلش-سبسکرائب
- سروسز: ایک بار کے سوالات کے لئے ہم وقتہ درخواست-جواب (مثلاً، "اس پوز کے لئے معکوس کنیمیٹکس کا حساب لگائیں")
- ایکشنز: فیڈ بیک کے ساتھ طویل مدتی کام (مثلاً، "2 میٹر آگے چلیں" مسلسل پیشرفت کے اپ ڈیٹس کے ساتھ)
Ubuntu 22.04 پر انسٹالیشن
ROS 2 Humble Hawksbill Ubuntu 22.04 کے لئے طویل المدت سپورٹ (LTS) ریلیز ہے، 2027 تک سپورٹ کیا گیا۔ ایک مکمل انسٹالیشن کے لئے ان اقدامات کو فالو کریں۔
قدم 1: ذرائع سیٹ اپ کریں
# یقینی بنائیں کہ سسٹم تازہ ترین ہے
sudo apt update && sudo apt upgrade -y
# درکار اوزار انسٹال کریں
sudo apt install -y software-properties-common curl
# پیکج کی تصدیق کے لئے ROS 2 GPG کلید شامل کریں
sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key \
-o /usr/share/keyrings/ros-archive-keyring.gpg
# ذرائع کی فہرست میں ROS 2 ریپوزٹری شامل کریں
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] \
http://packages.ros.org/ros2/ubuntu $(. /etc/os-release && echo $UBUNTU_CODENAME) main" \
| sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null
قدم 2: ROS 2 پیکجز انسٹال کریں
# نئی ریپوزٹری شامل کرنے کے بعد پیکج انڈیکس کو اپ ڈیٹ کریں
sudo apt update
# ROS 2 Humble ڈیسک ٹاپ فل (rviz، rqt ٹولز، اور ڈیمو پیکجز شامل ہے) انسٹال کریں
sudo apt install -y ros-humble-desktop
# پیکجز بنانے کے لئے ڈویلپمنٹ ٹولز انسٹال کریں
sudo apt install -y ros-dev-tools
# colcon بلڈ سسٹم انسٹال کریں (catkin کے مقابلے میں تیز ترین متوازی بلڈز)
sudo apt install -y python3-colcon-common-extensions
قدم 3: ماحول کنفیگریشن
# ROS 2 سیٹ اپ اسکرپٹ سورس کریں (ہر نئے ٹرمنل میں ضرورت ہوگی)
source /opt/ros/humble/setup.bash
# خودکار سورسنگ کے لئے bashrc میں شامل کریں
echo "source /opt/ros/humble/setup.bash" >> ~/.bashrc
# ROS ورژن چیک کر کے انسٹالیشن کی تصدیق کریں
printenv | grep ROS_DISTRO
# درست آؤٹ پٹ: ROS_DISTRO=humble
اپنا پہلا ROS 2 ورک سپیس بنائیں
ورک سپیس ROS 2 پیکجز پر مشتمل ایک ڈائریکٹری ہے۔ تجویز کردہ ساخت ماخذ کوڈ (src/) کو تعمیر کے مصنوعات (build/, install/) سے علیحدہ کرتی ہے۔
ورک سپیس کو شروع کریں
# ورک سپیس ڈائریکٹری بنائیں
mkdir -p ~/humanoid_ws/src
cd ~/humanoid_ws
# ورک سپیس شروع کریں (build اور install ڈائریکٹریز تیار کرتا ہے)
colcon build
# یہ build/, install/, اور log/ ذیلی ڈائریکٹریز تیار کرتا ہے
# ورک سپیس اوورلے کو سورس کریں
source install/setup.bash
ورک سپیس اوورلے تصور
ROS 2 ایک "اوورلے" سسٹم استعمال کرتا ہے جہاں آپ کا ورک سپیس بنیادی ROS 2 انسٹالیشن (/opt/ros/humble) کو بڑھاتا ہے۔ جب آپ install/setup.bash کو سورس کرتے ہیں، تو آپ کے ورک سپیس میں پیکجز سسٹم انسٹال شدہ پیکجز پر ترجیح لیتے ہیں۔ یہ آپ کو موجودہ پیکجز کے حسب ضرورت ورژن تیار کرنے کی اجازت دیتا ہے بغیر سسٹم فائلز کو تبدیل کیے۔
ایک پیکج تخلیق کریں
# ماخذ ڈائریکٹری میں جائیں
cd ~/humanoid_ws/src
# ہیومنوائڈ کنٹرول کے لئے Python پیکج تخلیق کریں
ros2 pkg create humanoid_control \
--build-type ament_python \
--dependencies rclpy std_msgs \
--node-name joint_controller
# پیکج ساخت تخلیق ہوئی:
# humanoid_control/
# ├── package.xml # پیکج میٹا ڈیٹا اور انحصار
# ├── setup.py # Python بلڈ کنفیگریشن
# ├── setup.cfg # انسٹالیشن راستے
# └── humanoid_control/
# └── joint_controller.py # خودکار تخلیق شدہ نوڈ ٹیمپلیٹ
تعمیر اور سورس
# ورک سپیس کے جڑ پر واپس جائیں
cd ~/humanoid_ws
# سب لنک انسٹال کے ساتھ تمام پیکجز تعمیر کریں (Python اسکرپٹس میں تبدیلیوں کو دوبارہ تعمیر کی ضرورت نہیں ہوتی)
colcon build --symlink-install
# اپ ڈیٹ کردہ ورک سپیس کو سورس کریں
source install/setup.bash
ROS 2 CLI کی بنیادیں
ros2 کمانڈ لائن ٹول روبوٹ سسٹم کی ڈیبگنگ کے لئے اہم جھانکن اور تعامل کی صلاحیتیں فراہم کرتا ہے۔
نوڈ مینجمنٹ
# تمام چلنے والے نوڈس کو فہرست بند کریں
ros2 node list
# ایک مخصوص نوڈ کے بارے میں تفصیلی معلومات حاصل کریں (ٹاپکس، سروسز، ایکشنز)
ros2 node info /joint_controller
# ایک پیکج سے نوڈ چلائیں
ros2 run humanoid_control joint_controller
ٹاپک آپریشنز
# تمام فعال ٹاپکس کو فہرست بند کریں
ros2 topic list
# ایک ٹاپک کے لئے پیغام کی قسم دکھائیں
ros2 topic info /joint_states
# حقیقی وقت میں پیغامات کو مانیٹر کریں
ros2 topic echo /joint_states
# کمانڈ لائن سے ایک ٹیسٹ پیغام شائع کریں
ros2 topic pub /cmd_vel geometry_msgs/msg/Twist \
"{linear: {x: 0.5, y: 0.0, z: 0.0}, angular: {x: 0.0, y: 0.0, z: 0.1}}"
انٹرفیس انسپکشن
# دستیاب تمام پیغام کی اقسام کو فہرست بند کریں
ros2 interface list
# پیغام کی تعریف دکھائیں (ڈیٹا ساخت کو سمجھنے کے لئے مفید)
ros2 interface show sensor_msgs/msg/JointState
# آؤٹ پٹ فیلڈز دکھاتا ہے: header، name[], position[], velocity[], effort[]
اگلے اقدامات
اب آپ کے پاس ایک کام کرتی ROS 2 انسٹالیشن ہے اور آپ بنیادی آرکیٹیکچر کو سمجھتے ہیں۔ اگلے باب میں، ہفتہ 3: نوڈس اور ٹاپکس، آپ Python نوڈس تخلیق کریں گے جو ٹاپکس کے ذریعے بات چیت کریں گے ایک شبیہہ روبوٹ کو کنٹرول کرنے کے لئے۔ آپ ایک پبلشر نافذ کریں گے جو جوائنٹ کمانڈز بھیجتا ہے اور ایک سبسکرائبر جو روبوٹ اسٹیٹ کی نگرانی کرتا ہے— تمام ROS 2 روبوٹ کنٹرول کی بنیاد۔
مشق ورزش
آگے بڑھنے سے پہلے، اپنی ترتیب کی تصدیق کریں:
- تین ٹرمنلز کھولیں
- ٹرمنل 1 میں:
ros2 run demo_nodes_cpp talkerچلائیں - ٹرمنل 2 میں:
ros2 run demo_nodes_py listenerچلائیں - ٹرمنل 3 میں:
ros2 topic listاورros2 topic echo /chatterچلائیں
آپ کو ٹاکر سے لسٹنر تک پیغامات بہتے ہوئے نظر آنے چاہئیں۔ یہ آپ کی ROS 2 انسٹالیشن کے درست کام کرنے کی تصدیق کرتا ہے۔