วันอังคารที่ 16 ธันวาคม พ.ศ. 2557

โปรแกรม (Software) สำหรับเขียนคำสั่ง

Lego Mindstorms Education NXT

โปรแกรม Lego Mindstorms Education NXT หรือ NXT-G Education เป็นโปรแกรมที่ใช้งานง่ายและ สะดวกสำหรับตั้งแต่นักเรียนจนถึงระดับผู้เชี่ยวชาญ โปรแกรม Lego Mindstorms Education NXT เป็นโปรแกรมที่ใช้ไอคอนเป็นหลัก โดยที่นักเรียนสามารถลากและวางไอคอนต่างๆ เพื่อสร้างโปรแกรมบังคับหุ่นยนต์ทำงานตามเงื่อนไขต่างๆ ได้
โปรแกรม Lego Mindstorms Education NXT
โปรแกรม Lego Mindstorms Education NXT ยังมีส่วนที่เรียกว่า Robot Educator ซึ่งประกอบไปด้วยตัวอย่างแบบของหุ่นยนต์และตัวอย่างโปรแกรมต่าง ๆ ที่จะช่วยให้ครูและนักเรียน ได้เริ่มต้นการเขียนโปรแกรมให้กับหุ่นยนต์ได้

โปรแกรมอื่นๆ

นอกจากนี้การเขียนโปรแกรมบนหุ่นยนต์ NXT สามารถใช้โปรแกรมอื่นๆ ได้อีกด้วย เช่น
  • RoboLab 2.9 - เขียนโปรแกรมโดยลากบล๊อกคำสั่งต่างๆ มาเชื่อมต่อกัน
  • RobotC - เขียนโปรแกรมควบคุมหุ่นยนต์โดยใช้ภาษา C

แขนหุ่นยนต์

byob-robot-arm
** บทความนี้เป็นส่วนหนึ่งของบทความชุด Build Your Own Bot แนะนำการสร้างหุ่นยนต์ด้วยตัวเอง **
หลังจากที่ได้รู้จักกับหุ่นยนต์เคลื่อนที่ (mobile robot) ไปแล้ว เรามาทำความรู้จักกับหุ่นยนต์อีกประเภทหนึ่ง คือ แขนหุ่นยนต์ (robot arm, manipulator) กัน แขนหุ่นยนต์ คือ หุ่นยนต์ที่สามารถหยิบ จับ เคลื่อนย้าย มีปฎิสัมพันธ์กับสิ่งของได้ในพื้นที่การทำงาน (working space) ของมัน แต่ไม่สามารถทำงานนอก working space ได้
ก่อนอื่นมาดูคำศัพท์บางคำเกี่ยวกับแขนหุ่นยนต์ก่อน
  • degrees of freedom หรือ องศาอิสระ คือ จำนวนแกน/ทิศทางที่สามารถเคลื่อนที่ได้ ถ้าเปรียบเทียบกับความสามารถในการเคลื่อนที่บนโลกสามมิติของเราก็จะมีการเคลื่อนที่ 3 แกน ขึ้น-ลง, ซ้าย-ขวา, หน้า-หลัง และการหมุนอีก 3 แกน เช่น
    • แขนหุ่นยนต์ที่เคลื่อนที่ได้ในระนาบ และไม่สามารถปรับมุมการหมุนได้ จะมี 2 degrees of freedom
    • แขนหุ่นยนต์ที่เคลื่อนที่ได้ในสามมิติ แต่ไม่สามารถปรับมุมการเอียงของปลายแขนได้จะมี 3 degrees of freedom
    • แขนหุ่นยนต์ที่เคลื่อนที่ได้ในสามมิติ และควบคุมการหมุนของปลายแขนได้รอบทิศทาง ก็จะมี 6 degrees of freedom
    • หุ่นยนต์ที่มีมากกว่า 6 degrees of freedom คือ หุ่นยนต์ที่สามารถเคลื่อนปลายแขนไปยังตำแหน่งใด ๆ ในสามมิติ และควบคุมการหมุนของปลายแขนได้รอบทิศ ได้มากกว่า 1 ท่าทางเพื่อให้ได้ตำแหน่งปลายแขนตำแหน่งเดียวกัน (เช่น แขนคนมี 7 degrees of freedom เราสามารถขยับแขนได้หลายท่า โดยที่ปลายมือเราอยู่ที่เดิม)
  • workspace คือ พื้นที่การทำงานที่ปลายแขนหุ่นยนต์สามารถเคลื่อนที่ไปได้
  • link โครงสร้างแขนแต่ละท่อน
  • joint ข้อต่อ แบ่งตามความสามารถในการเคลื่อนที่เป็น
    • active joint คือ ข้อต่อที่มีต้นกำลังติดตั้งอยู่ สามารถควบคุมการเคลื่อนที่ได้
    • passive joint คือ ข้อต่อที่ไม่มีต้นกำลังติดตั้งอยู่ ไม่สามารถควบคุมการเคลื่อนที่ได้ การเคลื่อนที่จะเป็นไปตามการเคลื่อนที่ของข้อต่ออื่น ๆ ที่เชื่อมโยงถึงกัน
      หรือแบ่งตามรูปแบบการเคลื่อนที่เป็น
    • revolute joint คือ ข้อต่อที่หมุนได้ (1 degree of freedom)
    • prismatic joint คือ ข้อต่อที่เคลื่อนที่เข้า-ออกเป็นแนวเส้น (1 degree of freedom)
    • screw joint คือ ข้อต่อที่หมุนและเคลื่อนที่เข้า-ออกสัมพันธ์กัน (1 degree of freedom)
    • spherical joint คือ ข้อต่อที่หมุนได้รอบ (2 degrees of freedom)
  • base คือ link แรกสุดที่ถูกยึดอยู่กับที่
  • wrist คือ ข้อต่อที่ไม่ทำให้เกิดการเคลื่อนที่ในสามมิติ แต่ทำให้เกิดการหมุน มักไว้เป็นข้อต่อสุดท้ายที่ปลายแขน
  • end-effector คือ อุปกรณ์ที่ติดตั้งไว้ที่ปลายแขนเพื่อใช้ทำงาน อาจจะเป็นมือจับ ตัวดูดสูญญากาศ สว่าน เป็นต้น
แขนหุ่นยนต์แบ่งเป็น 2 ประเภทหลัก ๆ ได้แก่
แขนหุ่นยนต์โครงสร้างอนุกรม (serial link manipulator)
เป็นแขนหุ่นยนต์ที่มีข้อต่อที่มีต้นกำลังขับเคลื่อนต่อกันไปเรื่อย ๆ แบบอนุกรม ตัวอย่างแขนหุ่นยนต์โครงสร้างอนุกรม เช่น
  • Cartesian robot arm เป็นแขนกลที่เคลื่อนที่บนแกนตั้งฉากกัน 3 แกน คือ ขึ้น -ลง, ซ้าย – ขวา, หน้า – หลัง
  • Cylindrical robot arm เป็นแขนกลที่เคลื่อนที่ในพื้นที่ทรงกระบอก คือ ขึ้น – ลง, เข้า – ออก ตามแนวรัศมี, หมุนรอบแกน
  • Spherical robot arm เป็นแขนกลที่เคลื่อนที่ในพื้นที่ทรงกลม คือ หมุนซ้าย – ขวา, หมุนขึ้น – ลง, เลื่อนเข้า – ออกตามแนวรัศมี
  • Scara robot arm เป็นแขนกลที่เคลื่อนที่มีแกนหมุน 2 แกนขนานกัน เพื่อเคลื่อนที่ได้บนระนาบ และอีกแกนสำหรับขึ้น – ลง
  • Articulate robot arm เป็นแขนกลที่เคลื่อนที่ในพื้นที่ค่อนข้างเป็นทรงกลม คล้ายในพวกรถขุด/แบคโฮ คือ หมุนซ้าย – ขวา, และมีแกนหมุนอีก 2 แกนที่ขนานกันเพื่อเคลื่อนที่ในระนาบแนวดิ่ง
  • Anthropomorphic arm เป็นแขนกลที่มีลักษณะแบบแขนมนุษย์ คือ มีไหลที่หมุนได้ 2 แกน ซ้าย – ขวา, บน – ล่าง มีแกนหมุนรอบตัวเองที่โครงสร้างแกนแรก และมีแกนหมุนที่ข้อศอก
ข้อดี
  • มีพื้นที่การทำงานกว้าง เพราะข้อต่อต่อกันออกไปเรื่อย ๆ
  • การคำนวณการควบคุมค่อนข้างง่าย ตรงไปตรงมา เพียงแค่นำ transformation matrix ของแต่ละแกนคูณกันไปเรื่อย ๆ (รายละเอียดจะมาอธิบายนลงลึกในครั้งถัด ๆ ไป)
ข้อเสีย
  • ความแข็งแรงต่ำ เพราะมีลักษณะเป็นโครงสร้างยื่นยาวออกไปจากฐาน
  • ความเที่ยงตรง (precision) ต่ำ เพราะความคลาดเคลื่อนจะสะสมเพิ่มขึ้นตามลำดับของข้อต่อ
  • เคลื่อนที่ช้า เพราะการติดตั้งต้นกำลังไปที่แต่ละข้อต่อทำให้แขนมีมวลมาก
  • ออกแรงได้น้อย เพราะโครงสร้างไม่แข็งแรงมาก และการติดต้นกำลังที่มีกำลังมากก็จะมีน้ำหนักมากตาม
แขนหุ่นยนต์โครงสร้างขนาน (parallel link manipulator)
เป็นแขนหุ่นยนต์ที่มีข้อต่อที่มีต้นกำลังขับเคลื่อนหลายตัวอยู่บริเวณฐานและมีโครงสร้างข้อต่อจากต้นกำลังแต่ละตัวไปยังปลายแขนเป็นโครงสร้างแบบปิดเป็นวงรอบ ตัวอย่างแขนหุ่นยนต์โครงสร้างขนาน เช่น
  • Delta robot
  • Rostock delta robot
  • Stewart platform
ข้อดี
  • ความแข็งแรงสูง เพราะเป็นโครงสร้างแบบปิด
  • ความเที่ยงตรง (precision) สูง เพราะปลายแขนต่อมายังต้นกำลังทุกตัวที่ฐาน
  • เคลื่อนที่เร็ว เพราะมวลส่วนใหญ่อยู่ที่ฐาน ปลายแขนจึงมีมวลน้อย
  • ออกแรงได้มาก เพราะต้นกำลังทุกตัวช่วยกันออกแรง
ข้อเสีย
  • พื้นที่การทำงานแคบ
  • มีความซับซ้อนในการคำนวนการควบคุม
การเปรียบเทียบข้อดี – ข้อเสีย กล่าวถึงหุ่นยนต์โดยทั่วไป แต่ก็มีงานวิจัยจำนวนมากที่พยายามแก้ไขข้อเสียแต่ละข้อในหุ่นยนต์แต่ละแบบ เช่น
WAM arm เป็น serial link manipulator ที่ย้ายต้นกำลังทั้งหมดมาอยู่ที่ฐาน แล้วขับเคลื่อนผ่านสายเคเบิล ทำให้แขนมีมวลต่ำ เคลื่อนที่ได้เร็ว
ยังมีแขนหุ่นยนต์อีกมากมายหลายแบบ การจะสร้างแขนหุ่นยนต์ขึ้นมาก็ต้องคำนึงถึงงานที่จะทำ เช่น รูปแบบการเคลื่อนที่ ตำแหน่งต้น ตำแหน่งปลายอยู่ที่ไหน ต้องเคลื่อนที่เป็นเส้นตรงรึเปล่า หรือเป็นเส้นโค้ง ต้องหมุนปลายแขนได้ด้วยรึเปล่า พื้นที่การทำงานมีลักษณะแบบใด ใหญ่ขนาดไหน งานที่จะทำต้องการความแม่นยำขนาดไหน ต้องออกแรงเยอะขนาดไหน เป็นต้น

หุ่นยนต์บิน ว่ายน้ำ และอื่นๆ

byob-flying-swimming
** บทความนี้เป็นส่วนหนึ่งของบทความชุด Build Your Own Bot แนะนำการสร้างหุ่นยนต์ด้วยตัวเอง **
หลังจากที่ได้พบกับหุ่นยนต์เคลื่อนที่บนพื้นมาแล้ว คราวนี้เรามาดูหุ่นยนต์ที่บินบนอากาศและหุ่นยนต์ใต้น้ำกันบ้าง
หุ่นยนต์ที่บินได้/อากาศยานไร้คนขับ (UAV) สามารถบินข้ามสิ่งกีดขวางที่หุ่นยนต์บนพื้นอาจหลบเลี่ยงไม่ได้ ทำให้มีพื้นที่ทำการมากขึ้น แต่การบินย่อมใช้พลังงานมาก รูปแบบของหุ่นยนต์บินได้มีหลัก ๆ ดังนี้
  • Fixed wing (อากาศยานปีกตรึง) หุ่นยนต์แบบนี้ใช้การสร้างแรงยก (lift force) ด้วยปีก โดยอาศัยหลักการของแบร์นูลี (Bernoulli’s principle) คือ อากาศที่เคลื่อนที่เร็วกว่าจะมีความดันต่ำกว่าอากาศที่เคลื่อนที่ช้า ปีกจะมีลักษณะโค้งด้านบนทำให้อากาศด้านบนเคลื่อนที่เร็วกว่า จึงเกิดแรงยกที่ด้านล่างของปีก ตัวอย่างเช่น เครื่องบินทั่วไป Predator drone
    MQ-1 Predator
    General Atomics Predator
  • Rotating wing (อากาศยานปีกหมุน) หุ่นยนต์แบบนี้สร้างแรกยกด้วยการหมุนใบพัดเพื่อผลักมวลอากาศลงด้านล่าง แรงปฏิกิริยาที่อากาศทำกับใบพัดจึงเป็นแรกยกตัวหุ่นยนต์ขึ้น ตัวอย่างเช่น เฮลิคอปเตอร์ AR Drone quadrotor
ardrone
Parrot AR Drone
  • Flapping wing หุ่นยนต์ลักษณะนี้ใช้การสร้างแรงยกในลักษณะที่สัตว์ตามธรรมชาติใช้ คือการกระพือปีกเพื่อผลักมวลอากาศลงด้านล่าง (รูปแบบการเคลื่อนที่ของปีกยังมีผลในการสร้างแรงยกในรูปแบบอื่นด้วย เช่น อากาศหมุนวนใต้ปีก) ตัวอย่างเช่น หุ่นยนต์นก หุ่นยนต์ผึ้ง
Festo SmartBird
Festo SmartBird
robobee
Harvard RoboBees
  • Lighter than air หุ่นยนต์ลักษณะนี้ใช้แรงยกจากสสารที่เบากว่าอากาศ เช่น ฮีเลียม ไฮโดรเจน บรรจุในบอลลูน ข้อดีคือไม่ต้องใช้พลังงานมากในการสร้างแรงยก แต่ด้วยขนาดที่ใหญ่ทำให้ความคล่องตัวต่ำ
Airship
Airship
ความท้าทายของการสร้างหุ่นยนต์บินได้มีหลายประเด็น เช่น
  • การบินใช้พลังงานเยอะ ต้องเลือกแหล่งพลังงาน บริการจัดการการใช้พลังงานให้ดี ออกแบบหุ่นยนต์ให้มีน้ำหนักเบา
  • เมื่อหุ่นยนต์อยู่ในอากาศ จะมีองศาอิสระครบ 6 องศาอิสระ คือ ขยับได้ 3 ทิศทาง หมุนได้ 3 ทิศทาง การควบคุมหุ่นยนต์ 6 องศาอิสระไม่ง่ายนัก
  • ถ้าบินอยู่แล้วตก จะสร้างความเสียหายได้มาก …
มาต่อกันที่หุ่นยนต์เคลื่อนที่บน/ใต้น้ำ รูปแบบการเคลื่อนที่ของหุ่นยนต์ในน้ำมีหลัก ๆ คือ
  • ใบพัด คล้ายกับอากาศยานปีกหมุน คือใช้การหมุนใบพัดเพื่อผลักมวลน้ำไปทางหนึ่ง แรงปฏิกิริยาจะผลักตัวหุ่นยนต์ไปอีกทางหนึ่ง
Purdue ROV
Purdue ROV
  • ครีบ คล้ายกับ Flapping wing คือการใช้ครีบสะบัดไปมาเพื่อผลักมวลของน้ำ
Robot fish
Robot fish
  • สำหรับหุ่นยนต์ใต้น้ำ การควบคุมการลอยตัว – การดำดิ่ง ทำได้โดยถ่วงน้ำหนักความหนาแน่นของหุ่นยนต์ใกล้เคียงกับความหนาแน่นของน้ำ หุ่นยนต์จะลอยนิ่งในน้ำได้ (โดยประมาณ) และใช้การขับเคลื่อน 2 ลักษณะข้างต้นในการขับเคลื่อนให้ลอยขึ้นหรือดำลง หรืออาจใช้วิธีการอัดน้ำ/อากาศเข้าไปในถังเพื่อปรับเปลี่ยนความหนาแน่นโดยรวมของหุ่นยนต์ คล้ายกับที่ใช้ในกระเพาะปลา หรือเรือดำน้ำ
ถังอากาศในเรือดำน้ำ
ถังอากาศในเรือดำน้ำ
นอกจากการเคลื่อนที่ด้วยล้อ ขา ปีก ครีบ แล้ว ยังมีการเคลื่อนที่ในรูปแบบอื่น ๆ อีกมากมาย เช่น การกระโดด การกลิ้ง การเลื้อยหรือหากการเคลื่อนที่ในรูปแบบใดรูปแบบหนึ่งไม่สามารถตอบโจทย์ได้ การสามารถผสมการเคลื่อนที่หลายรูปแบบมาไว้ในหุ่นยนต์ตัวเดียวกันก็ได้ สุดแต่นักประดิษฐ์จะสร้างสรรค์ขึ้นมา

** บทความนี้เป็นส่วนหนึ่งของบทความชุด Build Your Own Bot แนะนำการสร้างหุ่นยนต์ด้วยตัวเอง **

หุ่นยนต์เคลื่อนที่ด้วยขา

byob-legged-robot

เราได้กล่าวถึงหุ่นยนต์ที่เคลื่อนที่ด้วยล้อและสายพานไปแล้ว แต่ในธรรมชาติไม่มีล้อ เพราะล้อเป็นสิ่งที่มนุษย์ประดิษฐ์ขึ้นเพื่อให้การเคลื่อนที่ในสภาพแวดล้อมที่มนุษย์สร้างขึ้น (ถนน พื้นเรียบ) เป็นไปอย่างมีประสิทธิภาพ แต่เมื่อหุ่นยนต์ต้องเคลื่อนที่ในพื้นที่ขรุขระ เป็นขั้น เป็นหลุมเป็นบ่อ พื้นที่ที่ไม่ได้ถูกสร้างให้เรียบ ล้อเริ่มจะมีปัญหาในการเคลื่อนที่ ทำให้นักพัฒนาหุ่นยนต์เริ่มหันกลับไปมองว่าธรรมชาติจัดการกับเรื่องเหล่านี้อย่างไร ธรรมชาติสร้างให้สัตว์ใช้ขาเดิน
ในการสร้างหุ่นยนต์ที่เคลื่อนที่ด้วยขา มีประเด็นที่เกี่ยวข้อง เช่น
  • จำนวนขา
    • จำนวนขาที่น้อยที่สุดที่จะเคลื่อนที่ได้คือ 1 ขา!! แต่หุ่นยนต์ 1 ขาจะเดินไม่ได้ ต้องกระโดดเอา
    • จำนวนขาที่น้อยที่สุดที่จะก้าวเดินได้คือ 2 ขา คือเดินคล้ายมนุษย์ หุ่นยนต์ 2 ขา เวลายืนอยู่นิ่งจะอยู่ในสภาวะเสถียรภาพเชิงสถิตย์แบบลบ (negative static stability) คือ ถ้าไม่มีอะไรไปรบกวน ก็จะยืนได้ แต่ถ้ามีอะไรไปผลัก หุ่นยนต์จะเริ่มล้ม เพื่อไม่ให้ล้ม หุ่นยนต์จะต้องเริ่มก้าวเดิน
    • จำนวนขาที่น้อยที่สุดที่จะยืนอยู่นิ่งได้โดยมีเสถียรภาพเชิงสถิตย์แบบบวก (positive static stability) คือ ยืนนิ่งได้แม้มีอะไรไปผลัก (ไม่ได้ผลักแรงมากเกินไป) คือ 3 ขา และยืนให้น้ำหนักตกอยู่ในเส้นสมมติบนพื้นที่ลากระหว่างขาทุกขาที่แตะพื้น (support polygon) แต่เมื่อหุ่นยนต์ 3 ขา ก้าวเดิน ก็จะเหลือแค่ 2 ขาที่แตะพื้น ทำให้ support polygon เหลือแค่เส้นตรงที่ลากระหว่างขา 2 ขาที่แตะพื้น ทำให้หุ่นยนต์ไม่อยู่ในเสถียรภาพเชิงสถิตย์อีกต่อไป และเริ่มล้ม ถ้าไม่อยากล้ม ต้องเริ่มก้าวเดิน
      แสดง support polygon ในหุ่นยนต์ที่มีจำนวนขาและท่าทางแตกต่างกัน
      แสดง support polygon ในหุ่นยนต์ที่มีจำนวนขาและท่าทางแตกต่างกัน
    • จำนวนขาที่น้อยที่สุดที่จะเดินได้โดยมีเสถียรภาพเชิงสถิตย์แบบบวก คือ 4 ขา เมื่อเริ่มก้าวเดิน ก็ยังมี 3 ขาที่แตะพื้น หากน้ำหนักของหุ่นยนต์ตกอยู่ใน support polygon ของ 3 ขานั้น หุ่นยนต์ก็จะไม่ล้ม
    • ขายิ่งมากยิ่งมีโอกาสทำให้ Support polygon ใหญ่ เพราะมีขาให้แตะพื้นได้มาก แต่ก็ทำให้กลไกซับซ้อน
  • องศาอิสระ (degree of freedom) เป็นตัวกำหนดความสามารถของการเดินว่าจะสามารถทำท่าทางต่าง ๆ ได้มากขนาดไหน
    • ขา 1 องศาอิสระ เป็นขาที่ง่ายที่สุด มักใช้กลไกในการแปลงการหมุนของมอเตอร์ไปหมุนให้ขาให้เคลื่อนที่โค้งไปข้างหน้าเพื่อก้าวและดันเป็นเส้นตรงไปข้างหลังเพื่อผลักตัวเองไปข้างหน้า ขา 1 องศาอิสระสร้างได้ง่าย แต่ความสามารถจำกัด เพราะระยะการก้าวเดิน (stride length) และ ระยะการยกขา (step length) คงที่  หากมีสิ่งกีดขวางก็จะเป็นอุปสรรคต่อการเดิน
    • ขา 2 องศาอิสระแบบแกว่งขาด้านข้าง สามารถควบคุม stride length และ step length ได้ ทำให้ก้าวข้ามสิ่งกีดขวางได้
    • ขา 2 องศาอิสระแบบมีหัวเข่า ทำให้การยืด ย่อขาทำได้เยอะมาก มี step lenght มาก ทำให้ก้าวข้ามสิ่งกีดขวางได้ดี และเนื่องจากมีขา 2 ท่อนเพื่อควบคุมระยะความสูงของหุ่นยนต์จากพื้น ทำให้การก้าวเดินนิ่มนวล ตัวหุ่นยนต์ไม่ขยับขึ้นลงเยอะ
    • ขา 3 องศาอิสระ เป็นขาที่มีหัวเข่าและแกว่งด้านข้างได้ ก้าวเดินได้เหมือนมนุษย์และสัตว์ทั่วไป ตัวอย่างเช่นหุ่นยนต์ 2 ขาข้างต้น
  • รูปแบบการเดิน มี 2 รูปแบบหลัก ๆ ได้แก่
    • การเดินด้วยเสถียรภาพเชิงสถิตย์ (static stability) คือ การเดินที่ขณะใด ๆ หุ่นยนต์จะอยู่ทรงตัวอยู่ได้อย่างเสถียร น้ำหนักตกลงบนเท้าหรือตกอยู่ใน support polygon ถ้าให้หยุดขณะที่เท้าลอยอยู่กับพื้นก็ยังทรงตัวอยู่ได้ เป็นการเดินที่ช้า
    • การเดินด้วยเสถียรภาพเชิงจลน์ (dynamic stability) คือ การเดินที่ขณะใด ๆ หุ่นยนต์จะมีความเร่ง และใช้ความเร่งนั้นช่วยทรงตัว ไม่สามารถหยุดอยู่กับที่ได้ ต้องเดินไปเรื่อย ๆ เช่น หุ่นยนต์ในวิดีโอหุ่นยนต์กระโดดขาเดียวข้างต้น
  • ท่าทางการเดิน (gait) เช่น เดินช้า เดินเร็ว เดินย่อเข่า การแกว่งเท้า การก้าวขาไหนก่อนหลังเป็นลำดับอย่างไร
เช่นเดียวกับกรณีของหุ่นยนต์ที่เคลื่อนที่ด้วยล้อ หุ่นยนต์เคลื่อนที่ด้วยขาก็ไม่ได้มีประสิทธิภาพสูงสุดในทุกสภาพแวดล้อม จึงมีการพัฒนาหุ่นยนต์ที่ใช้ขาเดิน แต่ปลายขาติดล้อ ทำให้เดินก็ได้ วิ่งก็ดี

** บทความนี้เป็นส่วนหนึ่งของบทความชุด Build Your Own Bot แนะนำการสร้างหุ่นยนต์ด้วยตัวเอง **

การเคลื่อนที่บนพื้นด้วยล้อและสายพานตีนตะขาบ ตอนที่ 2

byob-wheel-and-track-2

ความเดิมจากตอนที่แล้วที่ได้แนะนำรูปแบบการเคลื่อนที่ด้วยล้อและสายพาน คราวนี้เรามาต่อดูข้อดีข้อเสียของวิธีต่าง ๆ ที่กล่าวมา และประเด็นอื่น ๆ ของการเคลื่อนที่ด้วยล้อและสายพานกันอีกซักเล็กน้อย ก่อนที่จะไปดูการเคลื่อนที่วิธีอื่น
เราจะเลือกใช้รูปแบบการเคลื่อนที่แบบไหนดี (ขอแนะนำเฉพาะแบบที่เป็นที่นิยม)
หุ่นยนต์ของเราต้องเคลื่อนที่โดยมีข้อจำกัดด้านทิศทางของหุ่นยนต์หรือไม่ เช่น ต้องวิ่งไปด้านข้างแต่หันหน้าเข้าหากำแพง หรือเคลื่อนที่ในที่แคบที่เลี้ยวลำบาก
  1. ถ้าใช่ ใช้การเคลื่อนที่แบบ holonomic ต่อไปเรามาดูว่า เราต้องการให้หุ่นยนต์ฝืนการเคลื่อนที่ในแนวที่ไม่ต้องการได้หรือไม่ เช่น วิ่งบนพื้นเอียงขนานกับพื้นเอียงแล้วไม่ต้องการให้หุ่นยนต์ไหลลงพื้นเอียงได้ง่าย หรือ หุ่นยนต์วิ่งไปข้างหน้าแล้วไม่ต้องการให้ถูกผลักจากด้านข้างได้
    1. ถ้าใช่ ใช้ Swerve drive เนื่องจากการขับเคลื่อนของ Swerve drive จะต้องตั้งมุมล้อให้ตรงแนวการเคลื่อนที่ จึงได้แรงขับเคลื่อนเยอะและไม่สามารถเคลื่อนที่ในแนวอื่นที่ไม่ได้ตั้งมุมล้อไว้ได้ แต่ Swerve drive มีความซับซ้อนมาก แต่ละล้อต้องใช้มอเตอร์ 2 ตัว คือใช้ขับเคลื่อนและใช้หมุนเลี้ยว
    2. ถ้าไม่ใช่ มี 2 แนวทาง คือ
      1. Omni drive สามารถเคลื่อนที่ในทิศต่าง ๆ ได้อย่างรวดเร็ว ตัวล้อขึ้นรูปยากกว่าล้อธรรมดาทั่วไป แต่หาซื้อสำเร็จรูปได้ การวางตัวของล้อทำให้เหมาะสำหรับหุ่นยนต์ทรงกระบอกมากกว่าทรงสี่เหลี่ยม
      2. Mecanum drive จะให้แรงขับเคลื่อนในแนวหน้า หลัง เยอะ แต่การเคลื่อนที่ในแนวซ้าย ขวา จะต้องใช้พลังงานมากกว่า ตัวล้อขึ้นรูปยากกว่าแบบ Omni แต่หาซื้อสำเร็จรูปได้ การวางตัวของล้อทำให้เหมาะสำหรับหุ่นยนต์ทรงสี่เหลี่ยมมากกว่า
  2. ถ้าไม่ใช่ ก็สามารถใช้การเคลื่อนที่แบบ non-holonomic ได้ ต่อไปเราพิจารณาว่า
  3. ต้องการให้หมุนเลี้ยวอยู่กับที่ได้หรือไม่
    1. ถ้าใช่ ต่อไปพิจารณาว่า ต้องการแรงขับเคลื่อนเยอะหรือไม่
      1. ถ้าใช่ ใช้ Skid steer เนื่องจากการใช้สายพานตีนตะขาบหรือล้อหลายล้อจะมีพื้นที่สัมผัสพื้นเยอะ ได้แรงขับเคลื่อนเยอะ แต่ตอนเลี้ยวก็เกิดการลื่นไถล สูญเสียพลังงานไปตอนเลี้ยว ทำให้ต้องใช้กำลังเยอะในการหมุนเลี้ยวรอบตัวเอง
      2. Differential drive กลไกเรียบง่ายที่สุด ใช้พลังงานน้อย แต่โดยลำพัง 2 ล้อจะทรงตัวได้ยาก เพื่อให้ง่ายจะต้องมีล้อประคอง ซึ่งจะทำให้การเคลื่อนที่บนพื้นไม่เรียบอาจติดขัดได้
    2. ถ้าไม่ใช่ ใช้ Ackermann steering เหมือนรถยนต์ ข้อดีคือสามารถเลี้ยวได้โดยไม่มีการลื่นไถล ทำให้ไม่สูญเสียพลังงานในตอนเลี้ยว แต่ตอนเลี้ยวจะต้องใช้พื้นที่มาก
เช่นเดิม นี่เป็นคำแนะนำทั่วไป ไม่จำเป็นต้องยึดถือตายตัว
การเคลื่อนที่บนพื้น นอกจากเรื่องความคล่องตัวในการเคลื่อนที่และการเลี้ยวนั้น ยังมีประเด็นอื่น ๆ ที่น่าสนใจ เช่น
  • ระบบกันสะเทือน (suspension) ในความเป็นจริงแล้ว suspension ทำหน้าที่มากกว่าแค่กันสะเทือน (ทำให้นั่งรถสบายเวลาเจาะพื้นขรุขระ) แต่ยังช่วยให้ล้อสัมผัสพื้นได้ดีขึ้น การที่ล้อสัมผัสพื้นได้ดีขึ้นทำให้ได้แรงขับเคลื่อนที่ดี และสามารถควบคุมการเคลื่อนที่ได้ดี suspension มีความสำคัญในหุ่นยนต์ที่ต้องเคลื่อนที่บนพื้นขรุขระ หรือมีมากกว่า 3 ล้อ เพื่อทำให้ล้อสัมผัสกับพื้นครบทุกล้อ รูปแบบของ suspension มีหลายแบบ เช่น
    • การใช้กลไกเคลื่อนที่ล้ออิสระต่อกัน เช่น ระบบกันสะเทือนในรถยนต์ มีกลไกเพื่อให้ล้อแต่ละล้อขยับขึ้น-ลงได้เพื่อให้สัมผัสพื้น
car-suspension
    • การใช้กลไกเคลื่อนที่ล้อที่ไม่เป็นอิสระต่อกัน เช่น Rocker-bogie ในยานสำรวจดาวอังคาร มีกลไกเชื่อมล้อ 2 ล้อ เมื่อล้อหนึ่งเคลื่อนที่ขึ้น อีกล้อจะเคลื่อนที่ลง
rocker-bogie
    • ล้อที่ยุบได้ แทนที่จะทำให้ล้อเคลื่อนที่ได้ ยังสามารถทำให้ผิวสัมผัสกับล้อเคลื่อนที่แทน เช่น ล้อ Tweel ของ Michelin
tweel
  • การปีนป่าย หากหุ่นยนต์ต้องเคลื่อนที่ในที่ที่มีอุปสรรคขนาดใหญ่จนล้อธรรมดาไม่สามารถปีนข้ามได้ อาจจะต้องมีกลไกเพิ่มเติมช่วยในการปีนป่าย เช่น กลไก flipper ซึ่งเป็นการติดตั้งสายพานตีนตะขาบอีกชุดด้านหน้าหุ่นยนต์ที่สามารถหมุนได้ เพื่อพาดไปบนสิ่งกีดขวาง
packbot
นอกจากการเคลื่อนที่ด้วยล้อและสายพานตีนตะขาบในรูปแบบทั่ว ๆ ไปที่นำเสนอมาแล้ว ยังมีผู้พัฒนาการเคลื่อนที่ด้วยล้อและสายพานตีนตะขาบในรูปแบบอื่น ๆ อีกเพื่อตอบโจทย์ในลักษณะต่าง ๆ เช่น
  • wheel-leg คือลูกผสมระหว่างล้อและขา เนื่องจากล้อเคลื่อนที่ได้ง่าย เร็ว แต่ปีนป่ายไม่ค่อยดี ส่วนขาปีนป่ายได้ดี จึงติดขาเข้าไปที่ล้อ แทนที่จะเป็นล้อกลม ๆ ทำให้ยังเคลื่อนที่ได้เร็ว และปีนป่ายได้ดีขึ้น (แต่ก็ไม่ได้เคลื่อนที่เร็วและราบรื่นเท่าล้อปกติ)
  • omni-track สายพานตีนตะขาบสร้างแรงขับเคลื่อนได้เยอะ แต่เคลื่อนที่แบบ non-holonomic ทำให้ไม่คล่องตัวมาก จึงมีนักวิจัยพัฒนาตีนตะขาบที่เคลื่อนที่ได้รอบทิศทาง
นี่เป็นตัวอย่างของการเคลื่อนที่ด้วยล้อและสายพานตีนตะขาบที่ยกขึ้นมาเป็นแนวทางการออกแบบหุ่นยนต์ น่าจะช่วยให้เห็นภาพคร่าว ๆ และทำให้พอจะเริ่มออกแบบหุ่นยนต์ได้ แต่ถ้าเจอปัญหาที่ท้าทาย ก็อย่าหยุดเพียงแค่หุ่นยนต์ที่เคยมีคนสร้างแล้วเท่านั้น เราก็ยังสามารถออกแบบล้อและสายพานตีนตะขาบแบบอื่นได้อีก

** บทความนี้เป็นส่วนหนึ่งของบทความชุด Build Your Own Bot แนะนำการสร้างหุ่นยนต์ด้วยตัวเอง **