# ROS 2 Architecture & Core Concepts (สถาปัตยกรรมและหลักการทำงาน) หลังจากติดตั้งระบบเสร็จสิ้น ในบทนี้เราจะเจาะลึกถึง "ไส้ใน" ของ **ROS 2** เพื่อทำความเข้าใจว่าระบบทำงานอย่างไร ทำไมจึงเสถียรกว่าเวอร์ชันแรก และเทคโนโลยีเบื้องหลังที่ขับเคลื่อนหุ่นยนต์ระดับอุตสาหกรรมคืออะไร ## What is ROS really? (นิยามเชิงลึก) แม้จะชื่อว่า **Robot Operating System** แต่แท้จริงแล้ว ROS คือ **Meta-Operating System** หรือ **Middleware Framework** ที่ทำงานอยู่บนระบบปฏิบัติการหลัก (เช่น Ubuntu, Windows) อีกทีหนึ่ง ### หน้าที่หลักของ ROS (The 4 Pillars) 1. **Plumbing (ระบบท่อส่งข้อมูล):** จัดการการสื่อสารระหว่างชิ้นส่วนต่างๆ (Process Management) เช่น กล้องส่งภาพไปหา AI, AI ส่งคำสั่งไปที่ล้อ โดยที่เราไม่ต้องเขียน Socket หรือ TCP/IP เอง 2. **Tools (เครื่องมือ):** มีโปรแกรมสำหรับดีบักและวิเคราะห์ข้อมูลที่ทรงพลัง เช่น **Rviz2** (3D Visualization), **RQT** (Graph & Plot), **Rosbag** (Data Recording) 3. **Capabilities (ความสามารถ):** มีฟังก์ชันสำเร็จรูปที่ซับซ้อนให้ใช้ฟรี เช่น **Nav2** (ระบบนำทาง), **MoveIt2** (ระบบแขนกล), **SLAM** (การสร้างแผนที่) 4. **Ecosystem (ระบบนิเวศ):** มีชุมชนนักพัฒนาที่ใหญ่ที่สุดในโลก ทำให้มี Driver สำหรับเซนเซอร์แทบทุกรุ่นในท้องตลาด ## ROS 2 Architecture (สถาปัตยกรรมระบบ) โครงสร้างของ ROS 2 ถูกออกแบบมาเป็นชั้นๆ (Layered Architecture) เพื่อให้ยืดหยุ่นและรองรับ Real-time Application ### รายละเอียดแต่ละเลเยอร์ (Layers Breakdown) ```{list-table} :widths: 20 80 :header-rows: 1 * - Layer Name - Description * - **1. User Application** - โค้ดที่เราเขียน (Python/C++) เช่น `my_robot_node.py` หรือระบบนำทาง * - **2. RCL (ROS Client Library)** - ไลบรารีมาตรฐานที่ทำหน้าที่เป็น API ให้ผู้ใช้เรียกงาน เช่น `rclpy` (สำหรับ Python) และ `rclcpp` (สำหรับ C++) ทำหน้าที่แปลงคำสั่งของเราให้ระบบเข้าใจ * - **3. RMW (ROS Middleware Interface)** - **หัวใจสำคัญ:** เป็นตัวกลาง (Abstraction Layer) ที่ทำให้ ROS 2 สามารถเปลี่ยนยี่ห้อของระบบสื่อสาร (DDS) ได้โดยไม่ต้องแก้โค้ดโปรแกรมหลัก * - **4. DDS (Data Distribution Service)** - มาตรฐานการสื่อสารระดับอุตสาหกรรม ทำหน้าที่รับ-ส่งข้อมูลจริงๆ ผ่านระบบเครือข่าย (UDP/IP) * - **5. OS Layer** - ระบบปฏิบัติการพื้นฐาน เช่น Linux, Windows, macOS หรือ RTOS (Real-time OS) ``` ## The Heart of ROS 2: DDS ความเปลี่ยนแปลงที่ใหญ่ที่สุดจาก ROS 1 สู่ ROS 2 คือการนำ **DDS (Data Distribution Service)** มาใช้เป็นมาตรฐานการสื่อสาร ### DDS คืออะไร? **DDS** คือมาตรฐานสากล (Open Standard) สำหรับการสื่อสารข้อมูลแบบ Real-time ที่มีความน่าเชื่อถือสูง นิยมใช้ในระบบการบิน, การทหาร, และโรงงานอุตสาหกรรม ### กลไกการทำงาน (Discovery & Transport) * **Distributed System:** ไม่จำเป็นต้องมี **Master Node** (เหมือน ROS 1) คอมพิวเตอร์ทุกเครื่องในวงแลนสามารถ "ค้นหา" (Discovery) กันเองได้อัตโนมัติผ่านโปรโตคอล Multicast * **Real-time Transport:** ส่งข้อมูลผ่าน **UDP** เป็นหลัก เพื่อความรวดเร็วและรองรับ Quality of Service (QoS) ### ตารางเปรียบเทียบ DDS Vendors (ผู้ให้บริการ) ROS 2 อนุญาตให้เราเลือกใช้ DDS เจ้าไหนก็ได้ (ผ่าน RMW) โดยแต่ละเจ้ามีจุดเด่นต่างกัน: ```{list-table} :widths: 20 30 50 :header-rows: 1 * - Vendor / RMW - Performance - Note * - **Cyclone DDS** (Eclipse) - High / Low Latency - **Default for ROS 2 Jazzy.** เหมาะสำหรับงานทั่วไปและหุ่นยนต์ขนาดเล็ก-กลาง กินทรัพยากรน้อย * - **Fast DDS** (eProsima) - High Throughput - มีฟีเจอร์ปรับแต่งเยอะ เหมาะสำหรับระบบขนาดใหญ่ หรือส่งข้อมูลภาพความละเอียดสูง * - **RTI Connext** (Commercial) - Enterprise Grade - เสถียรที่สุดและรองรับมาตรฐานความปลอดภัยสูง (ใช้ในงานอวกาศ/การแพทย์) แต่มีค่าใช้จ่ายลิขสิทธิ์ ``` ## Quality of Service (QoS) ในระบบเครือข่ายไร้สาย (WiFi) สัญญาณอาจขาดหายได้ **QoS** คือเครื่องมือที่ให้เรา "จูน" พฤติกรรมการส่งข้อมูลให้เหมาะกับสถานการณ์ **ตารางสรุป QoS Policy ที่สำคัญ** ```{list-table} :widths: 20 30 50 :header-rows: 1 * - Policy - Options - Use Case * - **Reliability** - **Reliable:** ส่งให้ถึงแน่นอน (มี ACK)
**Best Effort:** ส่งแล้วส่งเลย (เร็วแต่ข้อมูลอาจหาย) - **Reliable:** ใช้กับคำสั่งควบคุม (ห้ามหาย)
**Best Effort:** ใช้กับภาพจากกล้อง (หายเฟรมเดียวไม่เป็นไร) * - **Durability** - **Volatile:** มาไม่ทันก็อด (ไม่เก็บค่าเก่า)
**Transient Local:** เก็บค่าล่าสุดไว้ให้คนมาทีหลัง - **Volatile:** ข้อมูล Sensor ทั่วไป
**Transient Local:** ใช้กับค่า Config หรือ Map (แผนที่) ที่ต้องโหลดให้ Node ที่เพิ่งตื่น * - **History** - **Keep Last (N):** เก็บ N ค่าล่าสุด
**Keep All:** เก็บทุกค่า - **Keep Last (10):** ค่ามาตรฐาน ป้องกัน RAM เต็ม ``` ## Security (SROS2) ความปลอดภัยเป็นเรื่องใหญ่ใน ROS 2 โดยใช้มาตรฐาน **DDS-Security** ซึ่งประกอบด้วย 3 เสาหลัก (CIA Triad): 1. **Authentication (ระบุตัวตน):** * ใช้ระบบ **PKI (Public Key Infrastructure)** และใบรับรอง **X.509** * หุ่นยนต์ทุกตัวต้องมี "บัตรประจำตัว" (Certificate) ที่ออกโดย CA (Certificate Authority) เท่านั้นจึงจะเข้าร่วมวงสนทนาได้ 2. **Access Control (กำหนดสิทธิ์):** * ใช้ไฟล์ **Permissions** และ **Governance** * กำหนดได้ละเอียดว่า Node A มีสิทธิ์แค่ "อ่าน" Topic นี้ แต่ห้าม "เขียน" 3. **Cryptography (การเข้ารหัส):** * ใช้มาตรฐาน **AES-GCM** ในการเข้ารหัสข้อมูล * แม้จะมีคนดักจับข้อมูล (Sniffing) ในวง WiFi ก็จะอ่านไม่รู้เรื่อง ```{note} **สถานะเริ่มต้น:** ตามปกติ ROS 2 จะปิดระบบ Security ไว้เพื่อความสะดวกในการเรียนรู้ (ใครก็เชื่อมต่อได้) หากต้องการใช้งานจริงในโปรดักส์ ต้องเปิดใช้งานฟีเจอร์ **SROS2** เพื่อสร้าง Key และ Certificate ```