วันอังคารที่ 25 พฤศจิกายน พ.ศ. 2557

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

byob-wheel-and-track
หลังจากที่รู้แนวทางการสร้างหุ่นยนต์โดยคร่าว ๆ กันแล้ว เรามาลงลึกในแต่ละขั้นตอนกันดีกว่า ในส่วนของการโจทย์และการหาความต้องการของระบบนั้น น่าจะขึ้นกับผู้สร้างหุ่นยนต์และสถานการณ์ซะมากกว่า ดังนั้นจะขอลงลึกในส่วนของการออกแบบระบบโดยคร่าวเลยแล้วกัน ในส่วนของการออกแบบระบบหุ่นยนต์โดยคร่าวนั้น หากเราได้เคยพบเห็นหุ่นยนต์แบบต่าง ๆ มาก่อน เราก็อาจจะใช้แบบหุ่นยนต์เหล่านั้นเป็นข้อมูลอ้างอิงในการออกแบบหุ่นยนต์ของเราเอง ซึ่งจะทำให้เราออกแบบได้เร็วขึ้น ไม่ต้องออกแบบใหม่ทั้งหมดในสิ่งที่มีคนอื่นแก้ปัญหานั้น ๆ ไว้แล้ว (don’t re-invent the wheel) แต่ก็อย่ายึดติดกับแบบที่คนอื่นเคยทำมา เราสามารถออกแบบหุ่นยนต์แบบใหม่ ๆ เองก็ได้ BYOB ครั้งนี่เลยจะขอแนะนำตัวอย่างหุ่นยนต์เคลื่อนที่โดยใช้ล้อและสายพาน
ก่อนอื่น จะขอแนะนำคำศัพท์เกี่ยวกับรูปแบบการเคลื่อนที่เล็กน้อย
  • holonomic locomotion คือหุ่นยนต์ที่มีองศาอิสระที่ควบคุมได้ (controllable degree of freedom) เท่ากับองศาอิสระทั้งหมดของหุ่นยนต์ (total degree of freedom) หุ่นยนต์ที่เป็น holonomic จะสามารถเคลื่อนที่ไปยังทิศทางใด ๆ ก็ได้ตามใจชอบ
  • non-holonomic locomotion คือหุ่นยนต์ที่มีองศาอิสระที่ควบคุมได้ (controllable degree of freedom) น้อยกว่าองศาอิสระทั้งหมดของหุ่นยนต์ (total degree of freedom) หุ่นยนต์ที่เป็น non-holonomic จะไม่สามารถเคลื่อนที่ไปยังทิศทางใด ๆ ก็ได้ตามใจชอบ จะต้องยึกยักหน่อย ตัวอย่างเช่น รถยนต์ อยู่บนระนาบ 2 มิติ จะมีองศาอิสระทั้งหมด 3 องศา คือ การเคลื่อนที่ตามแนว X, Y และองศาของการหมุนรอบตัว รถยนต์มีองศาอิสระที่ควบคุมได้แค่ 2 องศา คือ การเคลื่อนที่ไปหน้า-หลัง และองศาการเลี้ยว ดังนั้นรถยนต์ไม่สามารถเคลื่อนที่ไปในทิศใด ๆ ที่ต้องการได้ตามใจชอบ แต่อาจจะต้องเลี้ยวยึกยักไปมาหลายรอบ เช่น ตอนจอดรถแบบขนาน จะต้องเดินหน้า ถอยหลังหลายรอบ ถ้ารถสามารถเคลื่อนที่แนวซ้าย-ขวาได้ด้วย (เป็น holonomic) ก็จะจอดได้ง่ายขึ้นเยอะ
holonomic VS non-holonomic
holonomic VS non-holonomic
ตัวอย่างระบบขับเคลื่อนหุ่นยนต์ที่ใช้ล้อและสายพาน
Differential drive
เป็นรูปแบบการเคลื่อนที่ด้วยล้อที่ง่ายที่สุด คือ มีล้อ 2 ล้อ ล้อซ้าย และล้อขวา ถ้าต้องการเคลื่อนที่ไปข้างหน้าตรง ๆ ก็หมุนล้อซ้ายและขวาไปทางเดียวกันด้วยความเร็วเท่ากัน ถอยหลังตรง ๆ ก็หมุนล้อซ้ายและขวาถอยหลังทั้งคู่ ถ้าอยากเลี้ยวซ้ายก็หมุนล้อขวาไปข้างหน้าให้เร็วกว่าล้อซ้าย อยากเลี้ยวขวาก็หมุนล้อซ้ายไปข้างหน้าให้เร็วกว่าล้อขวา หรือจะหมุนตัวอยู่กับที่ก็ได้ ก็ให้หมุนล้อข้างหนึ่งไปข้างหน้า และล้ออีกข้างหมุนกลับหลังด้วยความเร็วเท่ากัน จะเห็นได้ว่าการขับเคลื่อนแบบ differential drive นั้น ไม่สามารถเคลื่อนที่ไปทิศใด ๆ ได้ตามต้องการในทันที ต้องทำการเลี้ยว หมุนตัวก่อน ดังนั้น differential drive จึงเป็นการเคลื่อนที่แบบ non-holonomic
diff-drive
differential drive
ตัวอย่าง

Skid steer
เรียกได้ว่าเป็นญาติกับ differential drive ใช้หลักการเดียวกันเรื่องการหมุนล้อเดินหน้า ถอยหลังเพื่อเคลื่อนที่และเลี้ยว ต่างกันตรงที่ skid steer จะใช้เรียกกับหุ่นยนต์ที่ใช้มากกว่า 2 ล้อ เช่น 4, 6, 8, … ล้อ และตีนตะขาบ เนื่องจากในหุ่นยนต์ที่มีล้อมาก ๆ หรือสายพานตีนตะขาบ เวลาเลี้ยวหรือหมุนตัว จะเกิดลื่นไถล (slip) บนล้อเทียบกับพื้น แน่นอนว่าการ slip นี้ทำให้ skid steer ใช้พลังงานในการเลี้ยวเยอะกว่า differential drive แต่ด้วยล้อที่มากกว่า มีพื้นที่สัมผัสพื้นมากกว่า ก็ทำให้มีแรงขับเคลื่อนมากกว่า
skid steer
skid steer
การเคลื่อนที่ของล้อ (หมุนตามแนวล้อ) ที่ไม่สัมพันธ์กับการเคลื่อนที่ของหน้าสัมผัสล้อ (หมุนตามการหมุนของหุ่นยนต์) ทำให้เกิดการไถลที่ของล้อ
การเคลื่อนที่ของล้อ (หมุนตามแนวล้อ) ที่ไม่สัมพันธ์กับการเคลื่อนที่ของหน้าสัมผัสล้อ (หมุนตามการหมุนของหุ่นยนต์) ทำให้เกิดการไถลที่ล้อ
ตัวอย่าง
Ackermann steering
ชื่อฟังดูยาก แต่จริง ๆ มันคือการเคลื่อนที่แบบรถยนต์นั่นเอง คือ มีล้อขับเคลื่อนและล้อเลี้ยว (ล้อเลี้ยวอาจจะเป็นล้อเดียวกับล้อขับเคลื่อนก็ได้ ในกรณีนี้จะต้องมีล้อหมุนอิสระคอยประคองด้วย เหมือนรถขับเคลื่อนล้อหน้า) คือเวลาเลี้ยวจะทำการหมุนล้อเลี้ยวให้ตั้งฉากกับเส้นที่ลากไปสู่จุดศูนย์กลางการเลี้ยว เพื่อทำให้ล้อทุกล้อเคลื่อนที่ไปตามเส้นโค้งของการเคลื่อนที่โดยไม่มีการ slip การที่ต้องหมุนล้อไปมาเพื่อเลี้ยว ทำให้ไม่สามารถเปลี่ยนทิศการเคลื่อนที่ไปทิศใด ๆ ตามต้องการได้ทันที ทำให้ Ackermann steering เป็น non-holonomic
ackermann steering
ackermann steering
Articulate drive
คล้าย ๆ กับ Ackermann steering แต่จะหมุนล้อเลี้ยวไปด้วยกันทั้งชุด ตัวอย่างเช่น หุ่นยนต์ตีนตะขาบหลายท่อน articulate drive เป็น non-holonomic
articulate drive
articulate drive
ตัวอย่าง
Synchro drive
เป็นการขับเคลื่อนที่ล้อทุกล้อหมุนด้วยความเร็วเท่ากัน และมีกลไกลงบังคับเลี้ยวล้อทุกล้อไปในทิศต่าง ๆ พร้อมกัน ทำให้สามารถเคลื่อนที่ไปยังทิศใด ๆ ก็ได้ (แต่ต้องรอหมุนล้อแป๊บนึง) แต่ synchro drive จะไม่สามรถหมุนเลี้ยวรอบตัวเองได้ synchro drive เป็น semi-holonomic (คือ เกือบ ๆ จะเป็น holonomic คือ เคลื่อนที่ไปทิศใด ๆ ก็ได้ ไม่ต้องหมุนเลี้ยว แต่ไม่สามารถเปลี่ยนทิศได้ทันทีทันใด ต้องรอหมุนล้อก่อน)
synchro drive
synchro drive
ตัวอย่าง
Swerve drive
เป็นญาติกับ synchro drive ต่างกันตรงที่ล้อทุกล้อของ swirl drive สามารถหมุนเลี้ยวได้เป็นอิสระต่อกัน ทำให้เคลื่อนที่ไปทิศใด ๆ ก็ได้ และหมุนรอบตัวเองได้ swervel drive เป็น semi-holonomic
swirl drive
swirl drive
ตัวอย่าง
Singularity drive
อันนี้อาจจะไม่ค่อยเคยเห็นกัน จริง ๆ การเคลื่อนที่แบบนี้ถูกคิดค้นขึ้นมานานแล้ว แต่ไม่ค่อยเป็นที่นิยม หลัง ๆ นี้เริ่มมีคนนำมาใช้ใหม่ เป็นการเคลื่อนที่ที่เข้าใจยากซักหน่อย คือ จะใช้ล้อทรงส่วนของทรงกลม หมุนให้การหมุนตั้งฉากกับพื้น จุดที่ล้อสัมผัสกับพื้นจะมีความเร็วเป็นศูนย์ ถ้าต้องการเคลื่อนที่ไปทิศทางใด ก็เอียงล้อ ทำให้จุดที่ล้อสัมผัสกับพื้นมีความเร็วไม่เป็นศูนย์ การเอียงล้อทรงกลมไปยังทิศต่าง ๆ ทำให้เกิดแรงผลักบนพื้นในทิศต่าง ๆ ทำให้ singularity drive สามารถเคลื่อนที่ไปยังทิศใด ๆ ก็ได้ (แต่ต้องรอเอียงล้อสักเล็กน้อย) ทำให้ singularity drive เป็น semi-holonomic
singularity drive
singularity drive
ตัวอย่าง
Omni drive
ล้อของ omni drive จะพิเศษคือ มี roller อยู่รอบ ๆ ล้อ ในทิศทางการหมุนที่ตั้งฉากกับการหมุนของล้อ omni drive ต้องใช้ล้ออย่างน้อย 3 ล้อ วางทำมุมกัน เนื่องจากในแต่ละล้อมี roller อยู่ จึงเกิดการเคลื่อนที่ได้ 2 แกนพร้อม ๆ กันในแต่ละล้อ คือ ตามแนวการหมุนของล้อ และตามแนวการหมุนของ roller เมื่อต้องการเคลื่อนที่ไปยังทิศใด ๆ ก็สามารถแตกความเร็วการเคลื่อนที่เข้าแนวการเคลื่อนที่ของล้อและของ roller ได้เสมอ ทำให้ omni drive สามารถเคลื่อนที่ไปยังทิศใด ๆ ก็ได้ เป็น holonomic การเคลื่อนที่ของ omni drive จะต้องมีสมการที่เรียกว่า Jacobian/Inverse-jacobian matrix เพื่อแปลงความเร็วของหุ่นยนต์ ไปสู่ความเร็วของล้อแต่ละล้อ
omni drive
omni drive
ตัวอย่าง
Mecanum drive
เป็นญาติกับ omni drive ต่างกันตรงที่ roller บนล้อไม่วางตั้งฉากกับล้อ แต่จะวางทำมุมกัน ส่วนมากจะทำมุม 45 องศา และล้อสามารถวางตัวขนานกันได้ตามปกติ ไม่ต้องวางทำมุมกัน การเคลื่อนที่ก็ใช้หลักการเดียวกับ omni drive จึงต้องมี Jacobian/Inverse-jacobian matrix ในการคำนวณความเร็วล้อเช่นกัน แต่สมการจะง่ายกว่า mecanum drive เป็น holonomic
mecanum drive
mecanum drive
ตัวอย่าง
ยาวละ ขอตัดจบตอนแต่เพียงเท่านี้ก่อนดีกว่า คราวหน้าเรามาต่อกับการเคลื่อนที่แบบอื่น ๆ กัน

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

ขั้นตอนการสร้างหุ่นยนต์

byob-build-step
หลังจากที่เราได้รู้คร่าว ๆ แล้วว่าจะสร้างหุ่นยนต์ซักตัวจะต้องเจอกับอะไรบ้าง คราวนี้จะขอแนะนำแนวทางการสร้างหุ่นยนต์ขึ้นมา ขั้นตอนที่จะกล่าวต่อไปเป็นแค่คำแนะนำ ไม่ได้เป็นคัมภีร์ ไม่ได้เป็นกฎเกณฑ์ตายตัว เริ่มกันเลยดีกว่า
  1. ตั้งโจทย์ขึ้นมาว่าเราจะสร้างหุ่นยนต์ไปทำอะไร ให้มันไปเปิดไฟให้เรา ให้มันไปหยิบของให้ ไปสำรวจท่อระบายน้ำ หรือถ้าจะสร้างหุ่นยนต์ไปแข่งขัน กติกาการแข่งขันก็เป็นโจทย์นั่นเอง
  2. หาความต้องการของระบบ จากโจทย์ที่ได้ในข้อก่อนหน้า เรามาแยกเป็นข้อ ๆ ว่าหุ่นยนต์ต้องทำอะไรได้บ้าง ตัวอย่างความต้องการของหุ่นยนต์บริการในร้านอาหาร เช่น
    • ขนาดไม่เกินเส้นผ่านศูนย์กลาง 60 เซนติเมตร สูงไม่เกิน 150 เซนติเมตร
    • บรรทุกของได้ 10 กิโลกรัม เคลื่อนที่บนทางลาดชันไม่เกิน 10 องศาได้ด้วยความเร็ว 1 เมตรต่อวินาที
    • มีแหล่งพลังงานในตัว ทำงานได้อย่างน้อย 2 ชั่วโมง
    • ตรวจจับสิ่งกีดขวางได้ และหยุดการเคลื่อนที่ก่อนชนสิ่งกีดขวาง
    • ระบุตำแหน่งตัวเองในร้านอาหารได้
    • เคลื่อนที่ไปยังตำแหน่งต่าง ๆ ในร้านอาหารได้เองอัตโนมัติ
    • สั่งงานได้จาก joystick ไร้สาย
    • มีไฟแสดงสถานะแบตเตอรี่
  3. หลังจากตีโจทย์เป็นความต้องการเป็นข้อ ๆ แล้ว เราก็มาออกแบบระบบโดยคร่าว ๆ ที่สามารถตอบความต้องการแต่ละข้อนั้นได้ เช่น ต้องเคลื่อนที่ไปได้ไกล ๆ จะต้องทำเป็น mobile robot บริเวณที่เคลื่อนที่เป็นพื้นเรียบใช้ล้อธรรมดาก็ได้ ไม่ต้องใช้ตีนตะขาบ ไม่ต้องใส่ระบบกันสะเทือน จะต้องหยิบของต้องมีกลไกแขน หยิบจากที่หนึ่งไปอีกทีโดยไม่สนใจทิศทางของของที่หยิบ สามารถใช้แขนที่มีองศาอิสระแค่ 3 องศาก็ได้ ไม่ต้องทำถึง 6 องศาอิสระ หุ่นยนต์ต้องเคลื่อนที่จะมีสายส่งพลังงานไปไม่ได้ ต้องใช้แหล่งพลังงานในตัวเอง ก็เลือกใช้พลังงานจากแบตเตอรี่ ต้องมองหาสิ่งของที่มีสีที่กำหนดอาจจะใช้กล้องหรือเซนเซอร์สี เป็นต้น
    ตัวอย่างการออกแบบระบบคร่าว ๆ ของหุ่นยนต์บริการ
    ตัวอย่างการออกแบบระบบคร่าว ๆ ของหุ่นยนต์บริการ
  4. พอได้แบบของหุ่นยนต์คร่าว ๆ แล้ว เราก็มาเลือกหาของที่ต้องใช้ เริ่มจากของที่ทำเองไม่ได้และต้องซื้อ หาของเหล่านั้นให้ได้ก่อน แล้วค่อยเลือก/ออกแบบส่วนอื่น เพราะถ้าออกแบบส่วนอื่นจนหมดแล้ว ของที่ต้องซื้อไม่มีที่ตรงความต้องการก็ทำไม่ได้ ของเหล่านี้ก็เช่น มอเตอร์ เซนเซอร์ต่าง ๆ ไมโครคอนโทรลเลอร์ แบตเตอรี่ เป็นต้น ถ้าเราออกแบบกลไกจนเสร็จแล้วค่อยเลือกมอเตอร์อาจจะพบว่ามอเตอร์ที่มีขาย ไม่มีตัวไหนที่มีแรงเท่าที่ต้องการ สิ่งที่ต้องคำนึงถึงตอนเลือกของก็เช่น อุปกรณ์ต้นกำลังให้กำลังเท่าที่ต้องการ เซนเซอร์ให้ข้อมูลประเภทที่ต้องการ ลักษณะที่ต้องการ (ดิจิตอล อนาล็อก บัสแบบไหน) อุปกรณ์ต่าง ๆ ใช้แรงดันไฟฟ้าเท่าใด แหล่งพลังงานเพียงพอที่ต้องการ ไมโครคอนโทรลเลอร์ที่ใช้มีพอร์ตต่าง ๆ ที่ต้องการใช้เพียงพอ เป็นต้น
    ซ้าย - ตัวอย่างข้อมูลของมอเตอร์, ขวา - ระยะการตรวจจับด้วยอินฟราเรดของเซนเซอร์รุ่นต่าง ๆ
    ซ้าย – ตัวอย่างข้อมูลของมอเตอร์, ขวา – ระยะการตรวจจับด้วยอินฟราเรดของเซนเซอร์รุ่นต่าง ๆ
  5. ถ้าระบบย่อยบางระบบเราไม่คุ้นเคย ไม่เคยทำแบบนั้นมาก่อน อาจทำต้นแบบ (prototype) แยกเฉพาะส่วน เพื่อทดสอบแนวคิดของส่วนนั้น ๆ ไปก่อน เช่น กลไกแบบประหลาด หรือวิธีการตรวจวัดแบบแปลก ๆ เป็นต้น
    ต้นแบบกลไก ทำขึ้นจากแผ่นพลาสติกลูกฟูก
    ต้นแบบกลไก ทำขึ้นจากแผ่นพลาสติกลูกฟูก
  6. เมื่อได้แบบคร่าว ๆ ของหุ่นยนต์และอุปกรณ์สำคัญ ๆ แล้ว ก็ลงมือออกแบบรายละเอียดตัวหุ่นยนต์ เช่น ยึดจับอุปกรณ์ต้นกำลังอย่างไร กลไกเป็นอย่างไร โครงสร้างหุ่นยนต์เป็นอย่างไร ระบบอิเล็กทรอนิกส์เป็นอย่างไร โครงสร้างโปรแกรมควบคุมเป็นอย่างไร ระบบสื่อสาร/ควบคุมหุ่นยนต์เป็นอย่างไร เป็นต้น
    ตัวอย่างการวาดแบบหุ่นยนต์ปีนกำแพง
    ตัวอย่างการวาดแบบหุ่นยนต์ปีนกำแพง
  7. ได้เวลามือเลอะ ขึ้นรูปชิ้นงานโครงสร้าง ต่อวงจรไฟฟ้า เขียนโปรแกรมควบคุมหุ่นยนต์
  8. ทดสอบ แก้ไข ปรับปรุง ไม่มีอะไรใช้ได้มาครั้งแรกที่ทำเสร็จ เก่งแค่ไหนก็พลาดได้ เราจึงต้องทดสอบว่าหุ่นยนต์ทำงานได้ตามต้องการหรือไม่ ผิดที่อะไร กลไกผิด วงจรผิด หรือโปรแกรมผิด ถ้าเราค่อย ๆ สร้างแล้วทดสอบเป็นส่วน ๆ ย่อยๆ เราก็จะตรวจพบและแก้ไขข้อผิดพลาดได้ง่ายกว่าการทำให้เสร็จทั้งหมดแล้วทดสอบทีเดียว จะแยกยากว่าผิดที่ส่วนไหน
  9. เมื่อสร้างหุ่นยนต์เสร็จ หุ่นยนต์ทำงานได้ดั่งใจ รับรองว่าเราสนุกและภูมิใจกับความสำเร็จนั้นแน่นอน :D
ครั้งต่อ ๆ ไปเราจะมาลงรายละเอียดในแต่ละขั้นตอนว่าเราจะทำมันอย่างไร ติดตามกันนะครับ
** บทความนี้เป็นส่วนหนึ่งของบทความชุด Build Your Own Bot แนะนำการสร้างหุ่นยนต์ด้วยตัวเอง **

ผ่าหุ่นยนต์ดูไส้ใน

byob-robot-component
Build Your Own Bot ตอนที่ 3 มาแล้วครับ คราวนี้เราจะใกล้ความจริงกับการสร้างหุ่นยนต์กันซักที เรามาดูกันว่า จะสร้างหุ่นยนต์ซักตัว มีองค์ประกอบอะไรที่เราต้องเข้าไปยุ่งด้วยบ้าง เช่นเดียวกับตอนที่แล้วที่ได้ทำการแบ่งประเภทของหุ่นยนต์ไป องค์ประกอบของหุ่นยนต์ก็แตกต่างกันไปตามแต่ชนิดของหุ่นยนต์ และยังสามารถแบ่งในรูปแบบอื่น ๆ ได้ตามแต่ผู้แบ่งจะอยากแบ่ง
ส่วนประกอบของหุ่นยนต์ (ตามที่ผมอยากจะแบ่ง) ได้แก่
  1. โครงสร้างและกลไก โครงสร้างของหุ่นยนต์เป็นส่วนที่ยึดส่วนต่าง ๆ ของหุ่นยนต์ไว้ด้วยกัน และ/หรือ เพื่อส่งกำลังไปตามส่วนต่าง ๆ ของหุ่นยนต์ ถึงแม้ว่าจะใช้คำว่าโครงสร้าง แต่ก็ไม่จำเป็นต้องเป็นโครง อาจจะเป็นแผ่น ก้อน ก็ได้ และก็ไม่จำเป็นต้องมีลักษณะแข็ง อาจจะมีโครงสร้างอ่อนนิ่มก็ได้ ขึ้นกับจุดประสงค์การออกแบบและวัสดุที่ใช้
    A) โครงสร้างและกลไกของหุ่นยนต์ตามแบบของ Theo Jansen สร้างด้วยโครงแข็ง, B) โครงสร้างหุ่นยนต์สร้างด้วยแผ่นโลหะ, C) แขนหุ่นยนต์งวงช้างของ Festo เป็นโครงสร้างอ่อนนิ่ม
    A) โครงสร้างและกลไกของหุ่นยนต์ตามแบบของ Theo Jansen สร้างด้วยโครงแข็ง, B) โครงสร้างหุ่นยนต์สร้างด้วยแผ่นโลหะ, C) แขนหุ่นยนต์งวงช้างของ Festo เป็นโครงสร้างอ่อนนิ่ม
  2. ต้นกำลัง (actuator) ขึ้นชื่อว่าหุ่นยนต์ ก็ต้องมีความสามารถในการเคลื่อนไหว ต้นกำเนิดการเคลื่อนไหวมาจากอุปกรณ์ต้นกำลัง ซึ่งมีหลายประเภท เช่น มอเตอร์ไฟฟ้า โซลินอยด์ไฟฟ้า (solenoid) โลหะจำรูป (shape memory alloy) โพลีเมอร์เปลี่ยนรูปได้ (electroactive polymer) กระบอกลม (pneumatic cylinder actuator) เป็นต้น
    A) DC motor, B) solenoid, C) shape memory alloy, D) electroactive polymer, E) กระบอกลม
    A) DC motor, B) solenoid, C) shape memory alloy, D) electroactive polymer, E) กระบอกลม
  3. อุปกรณ์ตรวจวัด (sensor) หุ่นยนต์ต่างจากเครื่องจักรทั่ว ๆ ไปตรงที่มันมีความสามารถในการรับรู้สภาพต่าง ๆ ทำให้หุ่นยนต์ทำงานได้ฉลาด อุปกรณ์ตรวจวัดก็มีมากมายไม่แพ้ต้นกำลัง เช่น เซนเซอร์ตรวจวัดการเข้าใกล้ (proximity sensor) เซนเซอร์แสง กล้อง เซนเซอร์วัดระยะ (range finder) เซนเซอร์วัดการหมุนของเพลา (encoder) เป็นต้น
    A) proximity sensor แบบต่าง ๆ, B) กล้อง, C) เซนเซอร์แสง, D) เซนเซอร์วัดระยะ Sharp IR range finder, E) encoder
    A) proximity sensor แบบต่าง ๆ, B) กล้อง, C) เซนเซอร์แสง, D) เซนเซอร์วัดระยะ Sharp IR range finder, E) encoder
  4. แหล่งพลังงาน หุ่นยนต์จะทำงานได้ต้องมีแหล่งพลังงานซึ่งมีหลายประเภทอีกเช่นกัน เช่น พลังงานไฟฟ้า พลังงานเชื้อเพลิงพลังงานชีวภาพ พลังงานจากอากาศอัด เป็นต้น
  5. ระบบอิเล็กทรอนิกส์ ถึงแม้ต้นกำลังและแหล่งพลังงานจะมีหลายรูปแบบ แต่ส่วนมากจะเป็นอุปกรณ์ไฟฟ้า หรือถ้าไม่ใช่ไฟฟ้าก็ยังจะต้องมีระบบไฟฟ้าไปควบคุมอยู่ดี ดังนั้นระบบอิเล็กทรอนิกส์จึงเป็นส่วนประกอบสำคัญอีกอย่างในหุ่นยนต์ที่ทำหน้าที่ติดต่อสื่อสาร รับสัญญาณตรวจวัดเข้ามา ส่งสัญญาณควบคุมออกไป
    A) บอร์ดไมโครคอนโทรลเลอร์ Arduino, B) วงจรควบคุมมอเตอร์ของ Maxon
    A) บอร์ดไมโครคอนโทรลเลอร์ Arduino, B) วงจรควบคุมมอเตอร์ของ Maxon
  6. ระบบควบคุม (control) เมื่อมีต้นกำลังแล้ว มีอุปกรณ์ตรวจวัดแล้ว มีระบบอิเล็กทรอนิกส์แล้ว ระบบควบคุมมีหน้าที่ควบคุมให้ต้นกำลังทำงานตามที่ต้องการ เช่น หมุนมอเตอร์ไปที่มุมต่าง ๆ ความเร็วต่าง ๆ แรงต่าง ๆ หรือดันกระบอกลมไปที่ระยะต่าง ๆ เป็นต้น
  7. ปัญญาประดิษฐ์ (artificial intelligence) ถือว่าเป็นขั้นสูงกว่าระบบควบคุมก็ว่าได้ หุ่นยนต์จะรู้ได้อย่างไรว่าต้องควบคุมกลไกต่าง ๆ ให้ทำงานแบบไหน นั่นคือหน้าที่ของปัญญาประดิษฐ์ที่จะต้องนำข้อมูลจากอุปกรณ์ตรวจวัดมาคิด คำนวณ วิเคราะห์ ตัดสินใจว่าหุ่นยนต์จะต้องทำอะไร เช่น จะหยิบของจากที่หนึ่งไปอีกที่หนึ่งก็จะต้องวิเคราะห์ว่าของที่จะหยิบอยู่ตรงไหน หน้าตาเป็นอย่างไร จะเอื้อมมือไปทิศไหน จะจับอย่างไร จับได้แล้วจะย้ายไปทิศไหน วางท่าไหน อย่างไร เป็นต้น
    ปัญญาประดิษฐ์ของรถอัตโนมัติวิเคราะห์ข้อมูลจากเซนเซอร์ต่าง ๆ เพื่อวางแผนการเคลื่อนที่
    ปัญญาประดิษฐ์ของรถอัตโนมัติวิเคราะห์ข้อมูลจากเซนเซอร์ต่าง ๆ เพื่อวางแผนการเคลื่อนที่
  8. ส่วนติดต่อผู้ใช้งาน (user interface) ตราบใดที่หุ่นยนต์ยังไม่ครองโลก ยังไงซะหุ่นยนต์ก็ต้องมีปฏิสัมพันธ์กับมนุษย์ ไม่ว่าจะเป็นตอนหุ่นยนต์ทำงานให้มนุษย์ หรือแม้กระทั่งตอนที่ผู้ควบคุมโปรแกรมให้หุ่นยนต์ทำงานตามที่ต้องการ
    A) แป้นควบคุมหุ่นยนต์ (teaching pendant), B) ชุดควบคุมหุ่นยนต์กู้ภัย iRobot, C) หุ่นยนต์ Baxter
    A) แป้นควบคุมหุ่นยนต์ (teaching pendant), B) ชุดควบคุมหุ่นยนต์กู้ภัย iRobot, C) หุ่นยนต์ Baxter
** บทความนี้เป็นส่วนหนึ่งของบทความชุด Build Your Own Bot แนะนำการสร้างหุ่นยนต์ด้วยตัวเอง **

สร้างหุ่นยนต์อะไรดี

BYOB2-robot-type

หลังจากที่เรามีดำริว่าจะสร้างหุ่นยนต์กันแล้ว เราจะสร้างหุ่นยนต์อะไรดีนะ มาดูกันดีกว่าว่าหุ่นยนต์มีแบบไหนบ้าง
  • manipulator หรือแขนกลหุุ่นยนต์ หุ่นยนต์ประเภทนี้เคลื่อนที่ไม่ได้ แต่มีกลไกไว้เคลื่อนไหวปลายแขน ซึ่งอาจจะติดตั้งมือไว้หยิบ จับ ยก ย้าย สิ่งของต่าง ๆ หรือติดเครื่องมือไว้ตัด แต่ง ต่อ เติมชิ้นงานต่าง ๆ หรืออาจจะติดตั้งเซนเซอร์ไว้ตรวจวัดบริเวณต่าง ๆ ของชิ้นงาน
A) แขนกลหุ่นยนต์แบบ 6 องศาอิสระ จาก KUKA, B) แขนหยิบแบบ delta robot จาก ABB, C) เครื่องพิมพ์สามมิติ จาก MakerBot, D) แขนแบบงวงช้าง จาก Festo
  • mobile robot หรือหุ่นยนต์เคลื่อนที่ได้ หุ่นยนต์ประเภทนี้มีกลไกไว้เคลื่อนที่ไปมา ซึ่งอาจจะเป็นล้อ ตีนตะขาบ ขา (2 ขา, 3 ขา, 4 ขา, 6 ขา, 8 ขา, … , 100 ขา) ปีก ใบพัด และอื่น ๆ สุดแต่จะจินตนาการได้
A) หุ่นยนต์ดูดฝุ่น 2 ล้อ iRobot Roomba, B) หุ่นยนต์ 3 ขา Strider, C) หุ่นยนต์ 6 ขา, D) หุ่นยนต์ 6 ล้อ rocker-bogie, E) หุ่นยนต์สำรวจใต้น้ำ, F) อากาศยานไร้คนขับ 4 ใบพัด
  • mobile manipulator หรือแขนกลเคลื่อนที่ได้ ลำพังแขนกลอยู่กับที่อาจทำงานได้ไม่พอกับความต้องการ หรือหุ่นยนต์เคลื่อนที่เฉย ๆ ก็ยังทำอะไรได้ไม่มาก ก็เอาแขนกลมาติดตั้งบนหุ่นยนต์เคลื่อนที่ซะเลย จะได้เคลื่อนที่ไปหยิบจับ ส่องดู สิ่งต่าง ๆ ได้

A) หุ่นยนต์คล้ายมนุษย์ ASIMO, B) แขนหุ่นยนต์บนฐานเคลื่อนที่ได้ KUKA youBot, C) หุ่นยนต์แข่งขันกู้ภัย, D) หุ่นยนต์แข่งขัน RDC

การแบ่งประเภทไม่ได้มีตายตัวแค่แบบที่ยกขึ้นมาเท่านั้น ที่อื่นอาจจะแบ่งแบบอื่นก็ได้
แล้วจะสร้างหุ่นยนต์แบบไหนดี
  • ประเภทที่แบ่งให้ดูข้างต้น แบ่งตามลักษณะการทำงาน ดังนั้นก็ต้องดูว่าเราอยากสร้างหุ่นยนต์เพื่อเอาไปทำอะไร ให้มันวิ่งไปสำรวจนู่นนี่ ก็ต้องเป็น mobile robot หรือถ้าจะให้หยิบจับ ย้ายของในพื้นที่เล็ก ๆ ก็ทำ manipulator
  • พร้อมลุยกับความยากขนาดไหน ความยากขึ้นกับความซับซ้อนของกลไก จำนวนต้นกำลัง จำนวนเซนเซอร์ที่ต้องใช้ การคำนวณทางคณิตศาสตร์ที่ใช้ควบคุมหุ่นยนต์ เช่น หุ่นยนต์วิ่งด้วยล้อ 2 ล้อ ย่อมง่ายกว่าหุ่นยนต์ 6 ขา หรือง่ายกว่าแขนกล 6 ข้อต่อ แต่จะมีความยากอยู่ประมาณเดียวกับหุ่นยนต์ตีนตะขาบ 2 ข้าง หรือแขนกล 2 ข้อต่อ
เดี๋ยวคราวหน้าเรามาดูกันว่า ถ้าเราเลือกได้แล้วว่าจะสร้างหุ่นยนต์อะไรดี เราจะต้องเจอกับอะไรบ้าง หุ่นยนต์ประกอบด้วยอะไรบ้าง รอติดตามกันนะครับ
** บทความนี้เป็นส่วนหนึ่งของบทความชุด Build Your Own Bot แนะนำการสร้างหุ่นยนต์ด้วยตัวเอง **

มาสร้างหุ่นยนต์กันเถอะ

[Build Your Own Bot] มาสร้างหุ่นยนต์กันเถอะ


BYOB
เป็นความตั้งใจเมื่อนานมาแล้วว่า ทำเว็บเกี่ยวกับหุ่นยนต์ นอกจากข่าวสารแล้ว อยากจะมี tutorial สอนทำหุ่นยนต์ แต่ก็ไม่ได้เริ่มเขียนซักที ช่วงนี้เริ่มมีคนถามเข้ามามากว่าจะเริ่มทำหุ่นยนต์ยังไงดี ขอถือโอกาสนี้เริ่มเขียนเลยแล้วกัน ตั้งใจว่าจะเขียนตอนใหม่ทุก ๆ 2 สัปดาห์ครับ ^_^/
คำถามที่มักได้ยินคือ อยากทำหุ่นยนต์ จะเริ่มอย่างไรดี
หุ่นยนต์เป็นศาสตร์ที่ผสมผสานหลาย ๆ เรื่องเข้าด้วยกัน เช่น ฟิสิกส์ กลศาสตร์ ไฟฟ้า อิเล็กทรอนิกส์ คอมพิวเตอร์ การควบคุม และศิลปะ (ทำหุ่นยนต์ต้องใช้ศิลปะจริง ๆ นะ :)) เป็นต้น กว้างขนาดนี้ หากจะหาหนังสือมาอ่านก็คงอ่านกันไม่หมด และน่าเบื่อด้วย วิธีเริ่มที่ดีที่สุดคือลงมือทำเลย แล้วค่อย ๆ เรียนรู้ไประหว่างการลงมือทำจริง ๆ
แล้วจะเริ่มลงมือทำอย่างไร วิธีหนึ่งคือหาชุดหุ่นยนต์มาทดลองเล่น ซึ่งมีให้เลือกมากมาย เช่น
  • ชุดของเล่นหุ่นยนต์ เช่น LEGO MINDSTORMSVEX Roboticsfischertechnik เด็กเล่นได้ ผู้ใหญ่เล่นดี ออกแบบมาให้เด็กเล่นและเรียนรู้ แต่ก็มีผู้ใหญ่จำนวนมากที่เอามาสร้างนู่นสร้างนี่ หรือแม้กระทั่งเอาไปทำงานวิจัย MINDSTORMS มีคนเล่นเยอะ หาข้อมูลได้ง่าย ตัวโปรแกรมที่ LEGO ออกแบบมาจะใช้คำสั่งเป็นบล็อคมาต่อกัน แต่ก็มีผู้พัฒนาให้สามารถเขียนโปรแกรมด้วยภาษา C ได้ ทำให้ MINDSTORMS สามารถใช้ได้ตั้งแต่ระดับพื้นฐานไปจนถึงขั้นสูง ในไทยจะหาซื้อ MINDSTORMS ได้ง่ายสุด ราคาอยู่ประมาณหมื่นกว่าบาท รองลงมาจะเป็น fischertechnik ชุดหุ่นยนต์ประเภทนี้จะใช้ฝึกการออกแบบโครงสร้างตัวหุ่นยนต์ และลอจิกการทำงานของหุ่นยนต์ได้ ตัวผมเองก็เริ่มเล่นมาจาก MINDSTORMS นี่แหละ

LEGO MINDSTORMS (ซ้าย), VEX (กลาง), fischertechnik (ขวา) – ภาพจากเว็บผู้ผลิต

  • ชุดเรียนรู้หุ่นยนต์ควบคุมด้วยไมโครคอนโทรลเลอร์ เช่น ET-Robot ของ ETTRobo-Creator ของ inex หน้าตาความเป็นมิตรจะน้อยกว่าประเภทแรก ชุดประเภทนี้จะเน้นการต่อวงจรกับมอเตอร์และเซนเซอร์ต่าง ๆ ที่เป็นอุปกรณ์อิเล็กทรอนิกส์ทั่วไปที่หาซื้อเพิ่มเติมเองได้ และเขียนโปรแกรมลงไปในไมโครคอนโทรลเลอร์ แต่โครงสร้างของหุ่นยนต์จะค่อนข้างจำกัดตามรูปแบบที่ผู้ผลิตออกแบบมา ระดับความยากจะยากกว่าประเภทแรก ราคาอยู่ในหลักพันบาท ชุดหุ่นยนต์ประเภทนี้จะได้เรียนรู้อิเล็กทรอนิกส์ การโปรแกรมไมโครคอนโทรลเลอร์
ET-Robot (ซ้าย), Robo-Creator (ขวา) – ภาพจากเว็บผู้ผลิต

     หรือไม่งั้นก็ลุยเองเลย หาซื้อไมโครคอนโทรลเลอร์ เซนเซอร์ มอเตอร์ ชุดควบคุมมอเตอร์ สร้างกลไก โครงสร้างเอง ซึ่งบทความต่อ ๆ ไปเราจะเน้นการสร้างหุ่นยนต์ในรูปแบบนี้
หุ่นยนต์ในการแข่งขัน IDC 2007

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