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