วันอังคารที่ 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 แนะนำการสร้างหุ่นยนต์ด้วยตัวเอง **

ไม่มีความคิดเห็น:

แสดงความคิดเห็น