การคาลิเบรทด้วย Arduino IDE

การคาลิเบรทเป็นสิ่งสำคัญในการทำงานของหุ่นยนต์

หุ่นยนต์ที่ประกอบไว้ล่วงหน้าจะติดตั้งขาไว้อย่างถูกต้อง แต่ไม่มีการคาลิเบรทแบบละเอียด

ตรวจสอบให้แน่ใจว่าคุณได้อัปโหลดเฟิร์มแวร์ฟังก์ชันหลักของ OpenCat Main function firmware ก่อนทำการคาลิเบรท

การเข้าสู่โหมดการ calibrate ต้องมีการเตรียมการดังต่อไปนี้:

1. วงจรเซอร์โวทั้งหมดเชื่อมต่อกับเมนบอร์ด

2. แบตเตอรี่ชาร์จเต็มแล้ว

3. เชื่อมต่ออะแดปเตอร์ USB adapter และสื่อสารตามปกติ

หากคุณกำลังสร้างหุ่นยนต์ด้วยชุดที่ยังไม่ได้ประกอบ อย่าติดตั้งส่วนประกอบส่วนหัวและส่วนขาจนกว่าจะได้รับการ calibrate คุณจะต้องติดตั้งแบตเตอรี่และกดปุ่มบนแบตเตอรี่ค้างไว้เพื่อจ่ายไฟให้กับหุ่นยนต์

การ calibrate มี 4 ขั้นตอน:

1.เขียนค่าคงที่ไปยัง Nyboard (สำหรับเฟิร์มแวร์ 1.0 เท่านั้น)

2.เปิดหุ่นยนต์ด้วยแบตเตอรี่ ปล่อยให้เซอร์โวหมุนได้อย่างอิสระจนถึงมุมศูนย์/สถานะการ calibration

3. แนบส่วนต่าง ๆ ของร่างกายเข้ากับเซอร์โว

4. ปรับออฟเซ็ตอย่างละเอียดบน serial monitor

ตรรกะเบื้องหลังการ logic behind calibration สามารถพบได้ใน OpenCat forum หลักการเหมือนกันสำหรับ Nybble และ Bittle

1. Write constants

ขั้นตอนนี้ใช้สำหรับเฟิร์มแวร์ 1.0 เท่านั้น

1.1. มีค่าคงที่ 3 ประเภทที่จะบันทึกลงใน NyBoard

  1. Assembly-related เช่น การแม็ปข้อต่อ ทิศทางการหมุน และพินเซ็นเซอร์ ค่อนข้างคงที่และส่วนใหญ่กำหนดไว้ใน OpenCat.h และเก็บไว้ใช้กับหุ่นยนต์ในอนาคต

  2. พารามิเตอร์ที่เกี่ยวข้องกับการ Calibration เช่น MPU6050 offsets และการแก้ไขข้อต่อ มีการวัดตามเวลาจริงและบันทึกไว้ใน onboard EEPROM ต้องตั้งค่าเพียงครั้งเดียว

  3. ข้อมูลที่เกี่ยวข้องกับทักษะ เช่น ท่าทาง การเดิน และพฤติกรรมที่ตั้งโปรแกรมไว้ล่วงหน้า ส่วนใหญ่กำหนดไว้ใน InstinctNybble.h / InstinctBittle.h คุณสามารถเพิ่มทักษะที่กำหนดเองได้เช่นกัน

1.2. Upload and run WriteInstinct.ino

บทบาทของ WriteInstinct.ino คือการเขียนค่าคงที่ลงบนบอร์ดหรือ I2C EEPROM และบันทึกค่าการ calibration จะถูกเขียนทับโดย OpenCat.ino ในภายหลัง

คุณต้องเปลี่ยน * on#define NyBoard_V*_* ใน OpenCat.h เพื่อให้ตรงกับเวอร์ชันของ NyBoard หมายเลขเวอร์ชันสามารถพบได้บนเมนบอร์ดใกล้กับโลโก้บริษัท

ก่อนอัปโหลด sketch ตรวจสอบให้แน่ใจว่าได้ปิดหน้าต่างที่เปิดอยู่ทั้งหมดของ serial monitor มิฉะนั้น serial port อาจถูกใช้งานและ sketch จะไม่ถูกอัปโหลด

คุณต้องหมุนสวิตช์เลื่อนบน NyBoard ไปยัง Arduino แทน RPi!

หลังจากที่คุณอัปโหลด WriteInstinct.ino ผ่าน Arduino IDE ให้เปิด serial monitor

ตรวจสอบให้แน่ใจว่าตั้งค่า serial monito เป็น baud rate 115200 และ no line ending

คุณจะเห็นคำถามหลายข้อ:

Reset all joint calibration? (Y/n)

หากคุณไม่เคย calibrate ข้อต่อ หรือหากคุณต้องการ calibrate เซอร์โวใหม่โดยเริ่มต้นใหม่ ให้พิมพ์ 'Y' กับคำถาม

Do you need to update Instincts? (Y/n)

หากคุณได้แก้ไข Instinct.h ไม่ว่าด้วยวิธีใดก็ตาม คุณควรพิมพ์ 'Y' แม้ว่าจะไม่จำเป็นเสมอไปเมื่อคุณมีความเข้าใจ เกี่ยวกับการจัดการหน่วยความจำแล้ว

Calibrate MPU? (Y/n)

หากคุณไม่เคย calibrate MPU6050 เช่น gyro/accelerometer sensor ให้พิมพ์ 'Y'

บางครั้งโปรแกรมอาจหยุดทำงานในขั้นตอนการเชื่อมต่อ คุณสามารถปิด serial monitor แล้วเปิดใหม่อีกครั้ง หรือกดปุ่มรีเซ็ตบน NyBoard เพื่อรีสตาร์ทโปรแกรม

1.3. Upload OpenCat.ino

คุณต้องอัปโหลด OpenCat.ino เพื่อบันทึกค่าคงที่ล่าสุดและเปิดใช้งานฟังก์ชันสาธิต

2 Enter calibration mode

ตรวจสอบตำแหน่งและทิศทางของเซอร์โวทั้งหมด คุณต้องเสียบเซอร์โวและแบตเตอรี่ภายนอกเข้ากับ NyBoard เพื่อปรับเทียบอย่างถูกต้อง ก่อนที่เราจะติดตั้งชุดประกอบขา เพลาขาออกของเซอร์โวควรอยู่ที่ศูนย์ (ไปที่ตำแหน่งที่เป็นกลางและหยุด)

พิมพ์ 'c' ใน serial monitor เพื่อเข้าสู่โหมดการ calibration ขึ้นอยู่กับทิศทางของเพลาเริ่มต้น บางตัวอาจเดินทางในมุมที่ใหญ่ขึ้นจนกระทั่งหยุดที่จุดกึ่งกลาง จะมีเสียงรบกวนมาจากระบบเกียร์ของเซอร์โว คุณจะเห็นตารางการ calibration ดังต่อไปนี้:

แถวแรกคือ index ของข้อต่อ แถวที่สองคือออฟเซ็ตการ calibration:

ค่าเริ่มต้นคือ "-1" หรือ "0" และควรเปลี่ยนภายหลังการ calibration

เซอร์โวกำลังใช้ potentiometer ใน feedback loop เพื่อควบคุมตำแหน่ง เมื่อตำแหน่งคงที่ พวกเขามักจะสั่นรอบมุมเป้าหมาย อาการสั่นคล้ายพาร์กินสันจะเกิดขึ้นหลังจากใช้งานไปช่วงสั้นๆ จะไม่มีผลกระทบมากนักระหว่างการเคลื่อนไหวต่อเนื่อง เซอร์โวที่ดีกว่าไม่มีปัญหาเหล่านี้อาจมีราคาสูงกว่า 10 เท่า ดังนั้นการเปลี่ยนยูนิตที่จึงเป็นคำตอบที่คุ้มค่ากว่า

3 The rationale for calibration

3.1 เข้าใจสถานะศูนย์และระบบพิกัด

หลังจากพิมพ์ 'c' ใน serial monitor โดยเซอร์โวทั้งหมดหมุนไปที่มุมศูนย์ ตอนนี้ติดส่วนหัว หาง และขาที่เตรียมไว้ในส่วนก่อนหน้าเข้ากับลำตัว โดยทั่วไปจะตั้งฉากกับโครงร่างที่เชื่อมโยงกัน ท่าเทียบมาตรฐานแสดงไว้ด้านล่าง:

หากคุณกำลังสร้างหุ่นยนต์จากชุดอุปกรณ์ ให้ติดตั้งส่วนประกอบที่เกี่ยวข้องกับเซอร์โวตามภาพด้านบน และพยายามตรวจสอบให้แน่ใจว่าชิ้นส่วนเหล่านี้ตั้งฉากกัน (ขาท่อนบนตั้งฉากกับลำตัว และขาท่อนล่างตั้งฉากกับ ขาท่อนบน) โปรดดูบทที่เกี่ยวข้องในคู่มือผู้ใช้สำหรับรายละเอียด:

  • Nybble

หมายเหตุ: ใส่ส่วนประกอบที่เกี่ยวข้องกับเซอร์โวโดยตรงในเพลาขาออกของเซอร์โว ห้ามหมุนเพลาขาออกในระหว่างขั้นตอนนี้

การหมุนแขนขาทวนเข็มนาฬิกาจากสถานะศูนย์จะเป็นค่าบวก (เหมือนกับในพิกัดเชิงขั้ว) เมื่อมองจากด้านซ้ายของตัวหุ่นยนต์ การหมุนทวนเข็มนาฬิกาของข้อต่อถูกกำหนดให้เป็นทิศทางบวก

ยกเว้นอย่างเดียวคือมุมเอียงสำหรับหัวของ Nybble เป็นเรื่องปกติที่จะพูดว่า head up เป็นผลมาจากการหมุนตามเข็มนาฬิกา

แต่จากด้านขวาของตัวหุ่นยนต์ ทิศทางการหมุนที่เป็นบวกและลบนั้นตรงกันข้ามกัน

3.2 ช่วงมุมที่ไม่ต่อเนื่อง

หากเราพิจารณาเพลาเซอร์โวอย่างใกล้ชิด เราจะเห็นว่ามีจำนวนฟันจำนวนหนึ่ง มีไว้สำหรับติดแขนเซอร์โว และเพื่อหลีกเลี่ยงการเลื่อนไปตามทิศทางการหมุน ในตัวอย่างเซอร์โวของเรา เฟืองแบ่ง 360 องศาออกเป็น 25 ส่วน แต่ละส่วนมี 14.4 องศา (ออฟเซ็ต -7.2~7.2 องศา) นั่นหมายความว่าเราไม่สามารถติดตั้งในแนวตั้งฉากได้อย่างสมบูรณ์แบบเสมอไป

4 การ calibration อย่างละเอียดโดยใช้ serial monitor

4.1 คำสั่งควบคุมข้อต่อ

คำสั่งสำหรับการ calibration แบบละเอียด (อ้างอิงจาก serial protocol) มีรูปแบบเป็น cIndex Offset. โปรดสังเกตว่ามีช่องว่างระหว่าง cIndex และ Offset หมายเลขข้อต่อของหุ่นยนต์แสดงในภาพด้านล่าง:

ตัวอย่างเช่น :

  • c8 6 หมายถึงให้เซอร์โวตัวที่ 8 มีออฟเซ็ต 6 องศา

  • c0 -4 หมายถึงการให้เซอร์โวตัวที่ 0 (ส่วนหัว) ชดเชย -4 องศา

ความละเอียดของการแก้ไขคือ 1 องศา ไม่ใช้ทศนิยม

หากคุณพบว่าค่าออฟเซ็ตมีค่ามากกว่า 9 แสดงว่าคุณไม่ได้ติดแขนขาที่ใกล้กับสถานะศูนย์ของมันมากที่สุด ซึ่งจะส่งผลให้ช่วงของเซอร์โวที่เข้าถึงได้ลดลงในด้านใดด้านหนึ่ง ถอดแขนขาออกแล้วหมุนด้วยฟันซี่เดียว มันจะส่งผลให้เกิดออฟเซ็ตมีขนาดเล็กลง

ตัวอย่างเช่น หากคุณต้องใช้ -9 เป็นค่าการ calibration ให้ถอดขาออก หมุนด้วยฟันซี่เดียวแล้วติดกลับเข้าไปใหม่ ค่าการ calibration ใหม่ควรอยู่ที่ประมาณ 5 หลีกเลี่ยงการหมุนแกนเซอร์โวระหว่างการปรับนี้

ค้นหาค่าออฟเซ็ตที่ดีที่สุดที่สามารถนำแขนขาไปสู่สถานะศูนย์ได้ เป็นกระบวนการลองผิดลองถูก

หลังจากการ calibration อย่าลืมพิมพ์ 's' เพื่อบันทึกค่าออฟเซ็ต มิฉะนั้นจะถูกลืมเมื่อออกจากสถานะการ calibration คุณยังสามารถบันทึกทุกครั้งหลังจากที่คุณทำการ calibration เซอร์โวตัวเดียวเสร็จแล้ว

4.2 Use ‘L’ shaped joint tuner

การสังเกตจะเปลี่ยนมุมมองต่างๆ นั่นเป็นเหตุผลที่เราต้องการอ่านโดยตรงเหนือไม้บรรทัดอ้างอิงเมื่อทำการวัดความยาว

สิ่งสำคัญอย่างยิ่งคือคุณต้องมีมุมมองที่ขนานกันเมื่อปรับเทียบ Bittle ใช้จูนเนอร์ข้อต่อรูปตัว 'L' เป็นข้อมูลอ้างอิงแบบขนานเพื่อหลีกเลี่ยงข้อผิดพลาดในการอ่าน วางปลายบนจูนเนอร์ให้ตรงกับกึ่งกลางของสกรูที่ข้อต่อไหล่และข้อเข่า และรูเล็กๆ ที่ปลายเท้า ดูตามแกนร่วมของศูนย์ สำหรับขาแต่ละข้าง ให้ปรับเทียบเซอร์โวไหล่ (หมายเลข 811) ก่อน จากนั้นจึงปรับเซอร์โวเข่า (หมายเลข 1215) เมื่อปรับเทียบข้อเข่า ให้ใช้ช่องสามเหลี่ยมที่ตรงกันทั้งบนตัวปรับจูนและด้ามเพื่อให้แน่ใจว่าจัดแนวขนานกัน

Nybble

Bittle

4.3 การทดสอบและการตรวจสอบความถูกต้อง

หลังจากการ calibration พิมพ์ ‘d’ หรือ ‘kbalance’ เพื่อตรวจสอบการ calibration มันจะส่งผลให้ Bittle / Nybble ขยับแขนขาอย่างสมมาตรระหว่างสถานะพักและสถานะยืน

คุณอาจต้องทำการ calibration สองถึงสามรอบเพื่อให้ได้สถานะที่เหมาะสมที่สุด

ยกตัวอย่าง Bittle ดังนี้:

4.4 Center of mass

พยายามทำความเข้าใจว่าหุ่นยนต์รักษาสมดุลได้อย่างไรแม้ในขณะเดิน หากคุณกำลังเพิ่มส่วนประกอบใหม่ให้กับหุ่นยนต์ ให้พยายามอย่างเต็มที่เพื่อกระจายน้ำหนักให้สมดุลกับกระดูกสันหลัง คุณอาจต้องเลื่อนที่ใส่แบตเตอรี่ไปมาเพื่อหาจุดที่ดีที่สุดสำหรับการปรับสมดุล เนื่องจากแบตเตอรี่มีน้ำหนักมากกว่าที่ด้านหน้า คุณจึงสามารถใส่แบตเตอรี่กลับด้านเพื่อเลื่อนจุดศูนย์กลางมวลไปทางด้านหลังได้มากขึ้น

คุณอาจต้อง calibrate ใหม่หากมีการเปลี่ยนแปลงจุดศูนย์กลางมวล

โปรดอย่าบังคับให้หุ่นยนต์เพิ่มของหนัก ซึ่งอาจทำให้เซอร์โวติดขัดได้

Last updated