การพัฒนาหุ่นยนต์ขึ้นมาซักตัวนี้ ต้องใช้อะไรเยอะแยะมากเลย ตั้งแต่ การออกแบบ Hardware มานั่งดูเรื่องของ Static , Dynamics ของหุ่นยนต์ ยังไม่รวมถึงพวก Vision , Sensor , AI , Controlling ในส่วนของ Software . . . . . การจัดการแต่ละส่วนมันไม่ง่ายเลย
ถ้าไม่ได้ออกแบบแยกแต่ละ Module ออกมาให้ดี แถมถ้างานยิ่งซับซ้อนขึ้นมามากๆ การจัดการจะยิ่งปวดหัวและลำบากใจเป็นอย่างยิ่ง
ผู้เขียนก็เป็นคนหนึ่งที่เขียนโปรแกรมหุ่นยนต์ในชนิดที่ทุกอย่างแทบจะอยู่ที่เดียว ไฟล์เดียว ตามบล็อก ด้านล่างที่ผู้เขียนเคยเขียนเอาไว้
การสร้างหุ่นยนต์ ด้วย Araduino
https://codeprojectarduino.blogspot.com/
การสร้างหุ่นยนต์ ด้วย ESP8266
https://nodemcurobot.blogspot.com/
การสร้างหุ่นยนต์ ด้วย ESP32
https://esp32robot.blogspot.com/
การสร้างหุ่นยนต์ ด้วย Raspberry Pi
https://raspberrypi3robot.blogspot.com/
ตัวอย่างเช่น Code ชุดเดิม เราเคยเขียนหุ่นยนต์วิ่งตามเส้นมาแล้ว พอจะต้องมาทำแบบเดิม กับหุ่นยนต์ตัวใหญ่กว่า หรือ ขับเคลื่อน 4 ล้อ
ต้องมานั่งเขียนโปรแกรมควบคุมใหม่อีก แถมไม่พอ ต้องมานั่งแก้ตัวแปรให้ตรงกับ ฐานหุ่นใหม่ที่ซื้อมา
และการที่จะทำให้หุ่นยนต์เรา มีความสามารถที่สูงขึ้น เพื่อที่นำไปใช้งานจริงๆ ได้ยากมาก
หลังจากเขียนการสร้างหุ่นยนต์มาซักสองปี ก็มาพบ Facebook Group หุ่นยนต์ไทยใช้ ROS - Robot Operating System Thailand เห็นว่าน่าสนใจจึงลงมือเริ่มศึกษา ROS
ROS — Robot Operating System แปลเป็นภาษาไทยตรงๆ ก็คือ ระบบปฏิบัติการหุ่นยนต์นั่นเอง แต่จริงๆแล้ว มันไม่ใช่ระบบปฏิบัติการไปซะทีเดียว จริงๆแล้วมันเป็นเหมือน Framework ของ Software หุ่นยนต์ (Framework — ระเบียบวิธีการทำงานของโปรแกรมที่ เมื่อทำตามจะช่วยให้โปรแกรมเป็นระเบียบมากขึ้น ทำงานง่ายขึ้น)
ก่อนที่จะศึกษา ROS เรามาทำความเข้าใจก่อนว่า ROS คืออะไรและมีประโยชน์อย่างไร ทำไมถึงต้องใช้ ROSและทำไมเราถึงต้องศึกษาและเรียนรู้ ROS
ที่มาที่ไป => ROS คือ Framework ของการพัฒนาหุ่นยนต์ ที่ Willow Garage (บริษัทที่วิจัยหุ่นยนต์ ใน USA) คิดขึ้นมา เพื่อใช้กับเจ้า หุ่นยนต์ PR2
ความสามารถของมันก็คือ การแบ่งทุกๆอย่างเป็น Module (หรือจะเรียกย่อยๆว่า Node) Node แต่ละอันจะทำหน้าที่ของมันเองเป็นก้อนๆ ที่มีความยืดหยุ่นสำหรับการเขียนโปรแกรมทางด้านหุ่นยนต์ โดยได้รวบรวมเครื่องมือและไลบรารีไว้เป็นหมวดหมู่
แต่ ROS เราก็แค่เปลี่ยนแค่ Code ในส่วนฐานก็ได้แล้ว
เพราะ ROS จะใช้การติดต่อสื่อสารกับ Node อื่นๆ ด้วยการส่งข้อมูลผ่านส่วนกลางของระบบ ที่ตกลงรูปแบบกันไว้แล้ว (เหลือแค่มาพัฒนาส่วนการแปลข้อมูลให้เป็นไปตาม Hardware , Algorithm ที่ต้องการ)
ใครอยากจะใช้ข้อมูลตัวไหน จะสั่งการอะไร ก็สามารถทำได้โดยง่าย เพราะข้อมูลมันถูกส่งผ่านตัวกลาง จะเรียกใช้อะไร ก็เรียกเลย
ด้วยเหตุผลข้างต้น ROS จึงถูกสร้างขึ้นมาเพื่อส่งเสริมให้นักพัฒนาหุ่นยนต์ได้พัฒนาซอฟต์แวร์ร่วมกัน ตัวอย่างเช่น ห้องปฎิบัติการหนึ่งอาจมีผู้เชียวชาญทางด้านการทำแผนที่ในสถาพแวดล้อมในร่ม และอาจนำไปสู่ระบบการทำแผนที่ อีกกลุ่มหนึ่งอาจมีผู้เชียวชาญในการใช้แผนที่เพื่อนำทาง และกลุ่มอื่น ๆ อาจค้นพบวิธีการทำงานกับการทำงานคอมพิวเตอร์วิชั่นเพื่อตรวจจับวัตถุขนาดเล็กในสภาพที่ยุ่งยาก ROS ได้ถูกออกแบบมาเพื่อให้กลุ่มคนเหล่านี้สามารถที่จะทำงานรวมกันและต่อเติมงานของกันและกันได้
จากที่กล่าวมาข้างต้น เราจึงเห็นประโยชน์ของ ROS ในการที่จะนำมาใช้ในการพัฒนาซอฟต์แวร์สำหรับหุ่นยนต์ โดยเฉพาะผู้ที่สนใจวิทยาการทางด้านหุ่นยนต์ ROS ได้เตรียมไลบรารีและวิธีการที่ใข้ในการเชื่อมต่อกับหุ่นยนต์ที่เราได้สร้างขึ้นมา ด้วยความที่ ROS เป็นโอเพ่นซอร์ส ทำให้เกิดการรวมตัวของนักพัฒนาทางด้านหุ่นยนต์จากทั่วทุกมุมโลก เพื่อสนับสนุนการใช้งาน ROS อย่างกว้างขวาง แกนนำหลักของ ROS คือ Willow Garage
ROS หลักๆตอนนี้ใช้ ภาษา C++ หรือ Python ในการพัฒนาเป็นหลัก และ ROS ต้องการ Computer ระบบ Linux ใดๆ เช่น Ubuntu , Lubuntu , Redhat ซึ่งส่วนใหญ่ก็จะใช้ อูบุนตู (Ubuntu)
...
หมายเหตุ : เรียบเรียงและแก้ไขดัดแปลงจากบทความต้นฉบับด้านล่าง