ROS คืออะไร ?

        ก่อนจะเริ่มศึกษาเรียนรู้เกี่ยวกับพื้นฐาน ROS นั้น เราจะต้องรู้ก่อนว่า ROS  เป็น Software framework ดังนั้น เราจึงจำเป็นที่จะต้องรู้วิธีการเขียนโปรแกรมเพื่อจะได้ทำความเข้าใจได้อย่างถูกต้อง แม้ว่าเราจะสามารถเขียนโปรแกรมใน ROS ได้หลายภาษา แต่ในคอร์สพื้นฐานนี้ผมจะเน้นที่ภาษา Python เป็นหลัก ถ้ายังใช้ภาษา Python ไม่เป็นอาจจะทำให้อ่าน Code ไม่เข้าใจได้ แต่อย่างไรก็ตามภาษา Python นั้นเป็นภาษาที่เรียนรู้ได้ง่าย และสามารถหาอ่านได้ตามเว็บไซต์ทั่วไปได้เลย หรือจะเป็นเว็บไซต์หลัก https://www.python.org/

        ROS จะทำงานอยู่บน Ubuntu Linux ดังนั้นถ้าจะให้ดี เราควรจะต้องศึกษาเกี่ยวกับพื้นฐานคำสั่งต่างๆบน Linux ด้วย อย่างเช่นระบบ Filesystem, Bash command shell หรือพวกสิทธิ์ Permission ต่างๆ

        การใช้ ROS นั้นไม่จำเป็นที่จะต้องมีความรู้พื้นฐานทางด้านหุ่นยนต์ แต่ถ้ารู้ก็จะช่วยทำให้เข้าใจมากยิ่งขึ้น อย่างเช่น Coordinate transforms, Kinematic chains แต่ในคอร์สนี้ ผมก็จะไม่ได้ลงลึกมาก เนื่องจากเป็นเพียงพื้นฐานเท่านั้น สำหรับใครที่ต้องการรู้ สามารถหาอ่านเพิ่มเติมได้ หรือรอผมในคอร์สหน้า

มาเริ่มกันเลย ROS คืออะไร ?

        Robot Operating System (ROS) เป็นโอเพนซอร์ซเฟรมเวิร์คสำหรับเขียน หรือพัฒนาซอฟต์แวร์ที่เกี่ยวข้องกับหุ่นยนต์ เปรียบเสมือนเป็น OS ของหุ่นยนต์ ที่มีส่วนติดต่อกับอุปกรณ์ ไดรเวอร์อุปกรณ์ เครื่องมือที่หลากหลาย และไลบรารี่ต่างๆ ที่ช่วยทำให้เราสามารถสร้างหุ่นยนต์ที่มีความซับซ้อนได้ง่ายขึ้น

        ROS นี้เริ่มพัฒนาตั้งแต่ปี 2007 โดย Dr.Morgan Quigley ที่แลป Stanford Artificial Intelligence จากนั้นบริษัทหุ่นยนต์ของ US ชื่อว่า Willow Garage ก็ได้มาพัฒนาต่อจนสำเร็จเป็น ROS 1.0 ในปี 2010  ROS รุ่นแรกมีชื่อว่า BoxTurtle และพัฒนาเรื่อยมาจนถึงปัจจุบัน ROS Melodic ที่ใช้กับ Ubuntu 18.04


ทำไมถึงควรใช้ ROS ?

  1. ROS is general
            โปรแกรมที่พัฒนาขึ้นมาสามารถนำไปประยุกต์ใช้ได้กับหุ่นยนต์ที่หลากหลาย ไม่ว่าจะเป็น Robotic arms, Drones, Mobile bases เมื่อเราได้เรียนรู้เกี่ยวกับวิธีการติดต่อสื่อสารกันระหว่าง Node  ต่างๆในโปรแกรมแล้ว เราก็สามารถนำไปใช้กับหุ่นยนต์รูปแบบไหนก็ได้ โปรแกรมสามารถนำกลับมาใช้ซ้ำได้โดยไม่ต้องเขียนใหม่หมด

  2. ROS packages for everything
            แพ็กเกจมีเยอะมาก ไม่ว่าเราอยากจะทำอะไร ถ้าลองใช้เวลาค้นหาสักหน่อยก็อาจจะเจอได้ อย่างเช่น แพ็กเกจสำหรับคำนวณ trajectory ของหุ่นยนต์ แพ็กเกจสำหรับใช้จอยสติ๊กควบคุมหุ่นยนต์ แพ็กเกจสร้างแผนที่ในห้องด้วยโดรน ซึ่งแพ็กเกจเหล่านี้พัฒนามาเพื่อหุ่นยนต์โดยเฉพาะ

  3. ROS is language-agnostic
            เราสามารถสื่อสารระหว่าง Python node กับ C++ node ได้อย่างง่ายดาย นั่นหมายความว่าเราสามารถทำงานด้วยกันได้ง่ายมากยิ่งขึ้น ภาษาที่ ROS รองรับหลักๆก็เป็น C++, Python, MATLAB, Java หรือหากสามารถเชื่อมต่อผ่าน Websocket ได้ จะทำให้เราสามารถใช้ภาษาอะไรก็ได้

  4. ROS has great simulation tools
            ในการพัฒนาหุ่นยนต์บางครั้งเราไม่สามารถทดสอบกับหุ่นยนต์จริงได้เสมอไป อย่างเช่นทำหุ่นยนต์โดรน หรือหุ่นยนต์เครื่องบิน เนื่องจากหากโปรแกรมผิดพลาดก็อาจจะทำให้เกิดความเสียหายได้ เราจึงจำเป็นจะต้องใช้งานระบบจำลอง Simulation ซึ่งใน ROS ก็มีเครื่องมือเหล่านี้มาให้เช่น Rviz หรือ Gazebo โดย Gazebo นั้นสามารถกำหนดค่าต่างๆทางฟิสิกส์ได้ เช่นแรงโน้มถ่วง แรงลม หากเราทำให้ใกล้เคียงกับสภาพแวดล้อมของหุ่นยนต์มากเท่าไหร่ ก็จะทำให้เวลาใช้งานหุ่นยนต์จริงได้ใกล้เคียงมากเท่านั้น

  5. You can control multiple robots with ROS
            ROS สามารถทำงานได้กับหลายๆเครื่องในเวลาพร้อมกัน นั่นหมายความว่าเราสามารถทำให้หุ่นยนต์แต่ละตัวมี ระบบของตัวเอง แต่สามารถคุยกับหุ่นยนต์ตัวอื่นได้

  6. ROS is light
            ตัว Core หลักของ ROS นั้นใช้พื้นที่น้อยมาก หากเราติดตั้งเฉพาะตัวหลักนั้นจะใช้เวลาเพียงไม่กี่นาทีเท่านั้น อีกทั้งยังสามารถติดตั้งเข้าไปในพวก embedded computers ได้ อย่างเช่น Raspberry Pi, Nano Pi หรือ Jetson

  7. More and more compatible ROS products
            เมื่อเราต้องการสร้างหุ่นยนต์ เราไม่จำเป็นจะต้องสร้างทุกอย่างขึ้นมาหมด เราควรจะมุ่งเน้นไปทางพัฒนาให้ตรงความต้องการ ดังนั้นเราจึงสามารถที่จะซื้ออุปกรณ์ต่างๆ เข้ามาใส่ตัวหุ่นยนต์ของเราได้ อย่างเช่น Grippers, Controller board หรืออุปกรณ์อื่นๆ ซึ่งจะมีแพ็กเกจ ROS สำหรับอุปกรณ์เหล่านั้นอยู่แล้ว

  8. ROS is an open source project with a permissive license
            ส่วนหนึ่งที่สำคัญที่สุดของ ROS คือ เป็นโอเพนซอร์ซ แพ็กเกจส่วนใหญ่จะเป็น BSD license ซึ่งสามารถดัดแปลง แก้ไข หรือนำไปขายเชิงพาณิชย์ได้ จึงเป็นจุดแข็งที่ทำให้หลายๆบริษัทตัดสินใจปล่อยแพ็กเกจออกมาเป็นโอเพนซอร์ซ

Views
224 Total Views
0 Members Views
224 Public Views
Actions
0 Likes
0 Dislikes
0 Comments
Share on Social Networks
Share Link
Use permanent link to share in social media
Share by mail

Please login to share this webpage by email.