ตอนที่ 2: ROS 1 vs ROS 2 แตกต่างกันอย่างไร ควรเริ่มเรียนตัวไหน?

1. 🎯 ตอนที่ 2: ROS 1 vs ROS 2 แตกต่างกันอย่างไร ควรเริ่มเรียนตัวไหน?
สวัสดีครับน้องๆ กลับมาพบกับซีรีส์เจาะลึก ROS กันต่อ! หลังจากตอนที่แล้วพี่ได้เล่าให้ฟังว่า ROS คือฮีโร่ที่มาช่วยชีวิตคนทำหุ่นยนต์ได้อย่างไร วันนี้เราจะมาคุยกันถึงคำถามยอดฮิตที่วิศวกรหน้าใหม่ทุกคนต้องเจอ นั่นคือ “เราควรเริ่มเรียน ROS 1 หรือ ROS 2 ดี?”
บอกเลยว่าวงการหุ่นยนต์กำลังอยู่ในช่วงรอยต่อที่สำคัญมากๆ ถ้าเราเลือกเครื่องมือผิด อาจจะทำให้เสียเวลาเรียนรู้ฟรีได้เลย วันนี้พี่จะพาไปชำแหละสถาปัตยกรรมของทั้งสองเวอร์ชันให้เห็นกันจะๆ ว่าทำไมโลกถึงต้องหมุนไปหา ROS 2 ครับ
2. 📖 เปิดฉาก (The Hook)
ลองจินตนาการถึงโรงงานแห่งหนึ่งที่มีพนักงาน (Node) ทำงานกันหลายแผนก ในยุคของ ROS 1 โรงงานนี้จะมี “ผู้จัดการ” อยู่คนหนึ่ง (เราเรียกเขาว่า roscore หรือ Master) เวลาที่พนักงานแผนกเซ็นเซอร์อยากจะส่งข้อมูลให้แผนกมอเตอร์ พวกเขาคุยกันเองไม่ได้นะ ต้องวิ่งไปถามผู้จัดการก่อนว่า “พี่ๆ แผนกมอเตอร์อยู่ไหน?” พอได้ที่อยู่มา ถึงจะเดินไปส่งข้อมูลกันได้
ฟังดูเป็นระบบดีใช่ไหมครับ? แต่คำถามคือ… ถ้าวันหนึ่งผู้จัดการลาป่วย หรือหัวใจวายกะทันหันล่ะ? คำตอบคือ “พังทั้งโรงงาน” ครับ! ไม่มีใครหาใครเจอ ระบบล่มทันที (Single Point of Failure)
นอกจากปัญหาเรื่องผู้จัดการแล้ว ROS 1 ยังมีข้อจำกัดเรื่องการทำงานแบบ Real-time ที่ไม่แม่นยำพอ ไม่ปลอดภัย (ไม่มีการเข้ารหัส) และทำงานได้ดีแค่บน Ubuntu Linux เท่านั้น นี่แหละครับคือจุดเริ่มต้นของความปวดหัวในระดับอุตสาหกรรมที่ทำให้วิศวกรต้องสร้าง “ROS 2” ขึ้นมา!
3. 🧠 แก่นวิชา (Core Concepts)
การมาถึงของ ROS 2 ไม่ใช่แค่การอัปเดตเวอร์ชันธรรมดา แต่มันคือการ รื้อสร้างใหม่ตั้งแต่รากฐาน (Built from the ground up) โดยมีเป้าหมายเพื่อนำไปใช้ใน “ระดับอุตสาหกรรม” (Production-ready) อย่างแท้จริง มาดูข้อแตกต่างที่เป็นหัวใจหลักกันครับ:
- ลาก่อน Master (No more
roscore): ROS 2 ตัด Master node ทิ้งไปโดยสิ้นเชิง แล้วเปลี่ยนมาใช้เทคโนโลยี DDS (Data Distribution Service) ซึ่งเป็นมาตรฐานระดับอุตสาหกรรม ทำให้ Node ทุกตัวสามารถค้นหากันเองได้แบบ Peer-to-Peer (Automatic Discovery) ต่อให้ Node ตัวนึงพัง ระบบที่เหลือก็ยังทำงานต่อได้สบายๆ - การรองรับ Real-Time: ROS 2 ถูกออกแบบมาให้ทำงานร่วมกับ Real-Time Operating Systems (RTOS) ได้ ทำให้เราสามารถการันตีได้ว่า หุ่นยนต์จะตอบสนองต่อคำสั่งเบรกฉุกเฉินได้ภายในเวลาไม่กี่มิลลิวินาทีเป๊ะๆ ซึ่ง ROS 1 ทำไม่ได้
- ความปลอดภัย (Security): ROS 1 ข้อมูลวิ่งไปมาแบบเปลือยเปล่า (Clear text) ใครดักจับก็เห็นหมด แต่ ROS 2 มี SROS2 (Secure ROS 2) ที่รองรับการทำ Authentication, Encryption และ Access Control ข้อมูลทุกอย่างถูกเข้ารหัสปลอดภัยขั้นสุด
- ใช้ได้ทุก OS (Cross-Platform): ROS 1 รักเดียวใจเดียวกับ Linux แต่ ROS 2 นอกใจไปรองรับทั้ง Windows, macOS และ RTOS ได้แบบ Native แล้วครับ!
เพื่อให้เห็นภาพง่ายขึ้น พี่สรุปเป็นตารางเปรียบเทียบให้ดูกันชัดๆ ครับ:
| คุณสมบัติ (Features) | ROS 1 | ROS 2 |
|---|---|---|
| สถาปัตยกรรม (Architecture) | รวมศูนย์ ต้องมี Master (roscore) | กระจายศูนย์ (Decentralized) ค้นหากันเอง |
| ระบบสื่อสาร (Middleware) | โปรโตคอลเฉพาะตัว (TCPROS / UDPROS) | มาตรฐานอุตสาหกรรม DDS |
| การทำงานแบบ Real-Time | ไม่รองรับอย่างเป็นทางการ | รองรับ 100% (ใช้งานกับ RTOS ได้) |
| ความปลอดภัย (Security) | ไม่มี (ส่งข้อมูลแบบ Clear text) | มีระบบเข้ารหัส (SROS2) |
| ระบบปฏิบัติการ (OS) | หลักๆ คือ Ubuntu Linux | Linux, Windows, macOS, RTOS |
| สถานะปัจจุบัน | End-of-Life (EOL) พฤษภาคม 2025 | ใช้งานจริง มีอัปเดตต่อเนื่อง (เช่น Humble, Jazzy) |

4. 💻 ร่ายมนต์โค้ดและคำสั่ง (Show me the Code)
ความแตกต่างในสถาปัตยกรรม ทำให้การเขียนโค้ดและการรันคำสั่งเปลี่ยนไปด้วย ลองมาดูตัวอย่างการเขียน Node เบื้องต้นด้วยภาษา Python กันครับ
ROS 1 (แบบเก่า - กำลังจะจากไป):
import rospy
from std_msgs.msg import String
# ต้องรัน roscore ใน Terminal แยกต่างหากก่อน ถึงจะรันโค้ดนี้ได้!
rospy.init_node('publisher_node')
pub = rospy.Publisher('topic_name', String, queue_size=10)ROS 2 (แบบใหม่ - ไฉไลและเป็น Object-Oriented กว่าเดิม):
import rclpy
from rclpy.node import Node
from std_msgs.msg import String
# คลาส Node แบบใหม่ สืบทอดจาก rclpy.node.Node
class ModernPublisher(Node):
def __init__(self):
super().__init__('publisher_node')
# โค้ดนี้สามารถรันได้เลย ไม่ต้องมี roscore! หุ่นยนต์หา Topic กันเจอเองผ่าน DDS
self.publisher = self.create_publisher(String, 'topic_name', 10)5. 🛡️ เคล็ดลับจากคัมภีร์ลับ (Under the Hood / Pro-Tips)
ถ้าถามพี่ว่า “ควรเริ่มเรียนตัวไหน?” คำตอบคือ “ROS 2 ทันทีครับ!” เพราะ ROS 1 เวอร์ชันสุดท้าย (Noetic) จะสิ้นสุดการสนับสนุน (End-of-Life) ในเดือนพฤษภาคม ปี 2025 นี้แล้ว บริษัทชั้นนำอย่าง Toyota หรือระบบหุ่นยนต์ขับเคลื่อนอัตโนมัติ ล้วนย้ายมาใช้ ROS 2 กันหมดแล้ว
Pro-Tip สำหรับคนที่ต้องไปจับโปรเจกต์เก่า:
ถ้าน้องเข้าไปทำงานในบริษัทที่เขายังใช้ ROS 1 อยู่ ไม่ต้องตกใจไปครับ ความรู้จาก ROS 2 สามารถนำไปปรับใช้ได้ เพราะ Concept (Node, Topic, Service) ยังเหมือนเดิมเด๊ะ แถมผู้พัฒนาเขายังใจดีสร้าง ros1_bridge มาให้ด้วย! มันคือ Package พิเศษที่ทำหน้าที่เป็นล่ามแปลภาษา ให้ Node ฝั่ง ROS 1 สามารถคุยกับ Node ฝั่ง ROS 2 ได้อย่างไร้รอยต่อ ช่วยให้เราสามารถค่อยๆ ทยอยอัปเกรดระบบทีละส่วนได้อย่างปลอดภัยครับ
6. 🏁 บทสรุป (To be continued…)
การเปลี่ยนผ่านจาก ROS 1 สู่ ROS 2 ถือเป็นการเติบโตครั้งสำคัญที่เปลี่ยน ROS จาก “เครื่องมือทำโปรเจกต์ส่งอาจารย์” ให้กลายเป็น “ซอฟต์แวร์ควบคุมหุ่นยนต์ระดับอุตสาหกรรม” อย่างเต็มตัว การเอา Master ออกแล้วแทนที่ด้วย DDS คือกุญแจสำคัญที่ทำให้ระบบมีความเสถียรและทรงพลัง
ในตอนต่อไป พี่จะพาน้องๆ ไปทำความรู้จักกับการสื่อสารพื้นฐานที่ทรงพลังที่สุดใน ROS 2 นั่นก็คือ Topic และการทำงานแบบ Publisher / Subscriber เตรียมเปิด Terminal แล้วมาทดลองรันโค้ดกันในตอนหน้านะครับ!
ต้องการที่ปรึกษาด้านการออกแบบสถาปัตยกรรมหุ่นยนต์ (Robotics) และระบบ Automation ให้กับองค์กรของคุณ? ทีมงาน WP Solution พร้อมให้บริการออกแบบและพัฒนาซอฟต์แวร์แบบครบวงจร ดูรายละเอียดบริการของเราได้ที่: www.wpsolution2017.com หรือพูดคุยปรึกษาเบื้องต้นได้ที่ Line: wisit.p