สารบัญ:
- ขั้นตอนที่ 1: ทำไมต้องใช้หน่วยวัดแรงเฉื่อย ?
- ขั้นตอนที่ 2: จะใช้ BNO055 สำหรับการแปล 2D ได้อย่างไร ?
- ขั้นตอนที่ 3: จุดฮาร์ดแวร์ของ Vue
- ขั้นตอนที่ 4: มันทำงานอย่างไร ?
- ขั้นตอนที่ 5: สถาปัตยกรรมและซอฟต์แวร์
- ขั้นตอนที่ 6: ฉันเรียนรู้อะไร ?
วีดีโอ: วิธีการใช้หน่วยวัดแรงเฉื่อย: 6 ขั้นตอน
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:03
บริบท:
ฉันกำลังสร้างหุ่นยนต์เพื่อความสนุกสนาน ซึ่งฉันต้องการย้ายเข้าไปอยู่ในบ้านอย่างอิสระ
เป็นงานที่ยาวนานและฉันกำลังทำทีละขั้นตอน
ฉันได้เผยแพร่ 2 ผู้สอนในหัวข้อนั้นแล้ว:
- หนึ่งเกี่ยวกับการทำเครื่องเข้ารหัสล้อ
- หนึ่งเกี่ยวกับการเชื่อมต่อ wifi
หุ่นยนต์ของฉันถูกขับเคลื่อนด้วยมอเตอร์กระแสตรง 2 ตัวด้วยความช่วยเหลือของตัวเข้ารหัสล้อที่ทำที่บ้านของฉัน
ฉันกำลังปรับปรุงการควบคุมการเคลื่อนที่และได้ใช้เวลากับไจโรสโคป มาตรความเร่ง และ IMU มาบ้างแล้ว ฉันยินดีที่จะแบ่งปันประสบการณ์นี้
คุณต้องการทราบข้อมูลเพิ่มเติมเกี่ยวกับการแปลเป็นภาษาท้องถิ่น ? นี่คือบทความเกี่ยวกับวิธีการรวมปัญญาประดิษฐ์และอัลตราซาวนด์เพื่อกำหนดตำแหน่งหุ่นยนต์
ขั้นตอนที่ 1: ทำไมต้องใช้หน่วยวัดแรงเฉื่อย ?
เหตุใดฉันจึงใช้ IMU
เหตุผลแรกคือถ้าตัวเข้ารหัสล้อมีความแม่นยำเพียงพอที่จะควบคุมการเคลื่อนที่ในแนวตรง แม้หลังจากปรับจูนแล้ว ฉันก็ไม่สามารถได้รับความแม่นยำในการหมุนที่น้อยกว่า +- 5 องศา และนั่นก็ไม่เพียงพอ
ดังนั้นฉันจึงลองใช้เซ็นเซอร์ที่แตกต่างกัน 2 ตัว ประการแรก ฉันใช้เครื่องวัดค่าความเข้มข้นของสนามแม่เหล็ก (LSM303D) หลักการนั้นง่าย: ก่อนการหมุนจะได้ทิศทางทิศเหนือ ให้คำนวณเป้าหมายและปรับการเคลื่อนที่จนกว่าจะถึงเป้าหมาย มันดีกว่าด้วยตัวเข้ารหัสเล็กน้อย แต่มีการกระจายตัวมากเกินไป หลังจากนั้นฉันก็ลองใช้ไจโรสโคป (L3GD20) หลักการคือเพียงการรวมความเร็วในการหมุนที่เซ็นเซอร์ให้มาเพื่อคำนวณการหมุน และมันก็ใช้ได้ดี สามารถควบคุมการหมุนได้ที่ +-1 องศา
อย่างไรก็ตาม ฉันอยากลองใช้ IMU บ้าง ฉันเลือกส่วนประกอบ BNO055 ฉันใช้เวลาสักครู่เพื่อทำความเข้าใจและทดสอบ IMU นี้ ในตอนท้าย ฉันตัดสินใจเลือกเซ็นเซอร์นี้ด้วยเหตุผลดังต่อไปนี้
- ฉันสามารถควบคุมการหมุนได้เช่นเดียวกับ L3GD20
- ตรวจพบการหมุนเล็กน้อยเมื่อเคลื่อนที่ตรง
- ฉันต้องการทิศทางทิศเหนือสำหรับการแปลหุ่นยนต์และการปรับเทียบเข็มทิศของ BNO055 นั้นง่ายมาก
ขั้นตอนที่ 2: จะใช้ BNO055 สำหรับการแปล 2D ได้อย่างไร ?
BNO055 IMU เป็นเซ็นเซอร์อัจฉริยะ 9 แกนของ Bosch ที่สามารถให้การวางแนวที่แน่นอน
แผ่นข้อมูลมีเอกสารฉบับสมบูรณ์ เป็นส่วนประกอบไฮเทค เป็นผลิตภัณฑ์ที่ค่อนข้างซับซ้อน และฉันใช้เวลาหลายชั่วโมงเพื่อเรียนรู้วิธีการทำงานและลองใช้วิธีต่างๆ ในการใช้งาน
ฉันคิดว่าการแบ่งปันประสบการณ์นี้อาจเป็นประโยชน์
ประการแรก ฉันใช้ห้องสมุด Adafruit ซึ่งมีเครื่องมือที่ดีในการสอบเทียบและค้นหาเซ็นเซอร์
ในตอนท้ายและหลังจากการทดสอบมากมาย ฉันตัดสินใจ
- ใช้ห้องสมุด Adafruit เพื่อบันทึกการสอบเทียบเท่านั้น
- ใช้ 3 โหมดที่เป็นไปได้ทั้งหมดของ BNO055 (NDOF, IMU, Compss)
- อุทิศ Arduino Nano เพื่อคำนวณการโลคัลไลเซชั่นตาม BNO055 mesurments
ขั้นตอนที่ 3: จุดฮาร์ดแวร์ของ Vue
BNO055 เป็นส่วนประกอบ I2C ดังนั้นจึงต้องใช้แหล่งจ่ายไฟ SDA และ SCL เพื่อสื่อสาร
เพียงดูแลแรงดันไฟฟ้า Vdd ตามสินค้าที่คุณซื้อ ชิป Bosch ทำงานในช่วง: 2.4V ถึง 3.6V และคุณสามารถหาส่วนประกอบ 3.3v และ 5v
ไม่มีปัญหาในการเชื่อมต่อ Nano และ BNO055
- BNO055 ขับเคลื่อนโดย Nano
- SDA & SCL เชื่อมต่อกับตัวต้านทานแบบดึงขึ้น 2 x 2k
- 3 LED เชื่อมต่อกับ Nano สำหรับการวินิจฉัย (พร้อมตัวต้านทาน)
- ตัวเชื่อมต่อ 2 ตัวที่ใช้กำหนดโหมดหลังจากการบู๊ต
- 1 ตัวเชื่อมต่อไปยัง BNO (Gnd, Vdd, Sda, Scl, Int)
- 1 ตัวเชื่อมต่อต่อ Robot/Mega (+9V, Gnd, sda, Scl, Pin11, Pin12)
บัดกรีนิดหน่อยก็เท่านั้น !
ขั้นตอนที่ 4: มันทำงานอย่างไร ?
จากจุดสื่อสารของ vue:
- นาโนคือต้นแบบบัส I2C
- Robot/Mega และ BNO055 เป็นทาสของ I2C
- นาโนอ่านทะเบียน BNO055 อย่างถาวร
- Robot/Mega ขึ้นสัญญาณตัวเลขเพื่อขอคำจาก Nano
จากจุดคำนวณของ vue: Nano รวมกับ BNO055 การส่งมอบ
- ส่วนหัวของเข็มทิศ (ใช้สำหรับการแปลเป็นภาษาท้องถิ่น)
- หัวเรื่องที่เกี่ยวข้อง (ใช้เพื่อควบคุมการหมุน)
- ส่วนหัวและตำแหน่งที่แน่นอน (ใช้เพื่อควบคุมการเคลื่อนไหว)
จากจุดทำงานของ vue: The Nano:
- จัดการการสอบเทียบ BNO055
- จัดการพารามิเตอร์และคำสั่ง BNO055
ระบบย่อย Nano & BNO055:
- คำนวณสำหรับหุ่นยนต์แต่ละตัวล้อที่มุ่งหน้าและโลคัลไลเซชันแบบสัมบูรณ์ (ด้วยตัวคูณมาตราส่วน)
- คำนวณทิศทางที่สัมพันธ์กันระหว่างการหมุนของหุ่นยนต์
ขั้นตอนที่ 5: สถาปัตยกรรมและซอฟต์แวร์
ซอฟต์แวร์หลักทำงานบน Arduino Nano
- สถาปัตยกรรมขึ้นอยู่กับการสื่อสาร I2C
- ฉันเลือกที่จะอุทิศนาโนเนื่องจากความจริงที่ว่า Atmega ที่ควบคุมหุ่นยนต์นั้นค่อนข้างโหลดแล้วและสถาปัตยกรรมนี้ทำให้ง่ายต่อการนำกลับมาใช้ใหม่ในที่อื่น
- Nano อ่านการลงทะเบียน BNO055 คำนวณและจัดเก็บส่วนหัวและการแปลเป็นภาษาท้องถิ่นในการลงทะเบียนของตัวเอง
- Arduino Atmega ที่รันโค้ดหุ่นยนต์ ส่งข้อมูลตัวเข้ารหัสล้อไปยัง Nano และอ่านส่วนหัวและโลคัลไลเซชันภายในรีจิสเตอร์ Nano
มีรหัสย่อย (นาโน) อยู่ที่นี่บน GitHub
เครื่องมือสอบเทียบ Adafruit หากอยู่ใน GitHub (การสอบเทียบจะถูกเก็บไว้ใน eeproom)
ขั้นตอนที่ 6: ฉันเรียนรู้อะไร ?
เกี่ยวกับ I2C
ประการแรกฉันพยายามมี 2 มาสเตอร์ (Arduino) และ 1 ทาส (เซ็นเซอร์) บนบัสเดียวกัน แต่ในตอนท้ายมันเป็นไปได้และง่ายที่สุดในการตั้งค่าเฉพาะ Nano เป็นมาสเตอร์และใช้การเชื่อมต่อ GPIO ระหว่าง 2 Arduinos เพื่อ "ขอโทเค็น".
เกี่ยวกับ BNO055 สำหรับการวางแนว 2D
ฉันสามารถจดจ่อกับโหมดการวิ่งที่แตกต่างกันได้ 3 โหมด: NDOF (รวมไจโรสโคป มาตรความเร่ง และเข็มทิศ) เมื่อหุ่นยนต์ไม่ได้ใช้งาน, IMU (รวมไจโรสโคป มาตรความเร่ง) เมื่อหุ่นยนต์เคลื่อนที่และเข็มทิศระหว่างขั้นตอนการแปลเป็นภาษาท้องถิ่น การสลับระหว่างโหมดเหล่านี้ทำได้ง่ายและรวดเร็ว
เพื่อลดขนาดโค้ดและรักษาความเป็นไปได้ที่จะใช้ BNO055 อินเตอร์รัปต์เพื่อตรวจจับการชนกัน ฉันไม่ต้องการใช้ไลบรารี Adafruit และทำด้วยตัวเอง
แนะนำ:
การออกแบบเกมในการสะบัดใน 5 ขั้นตอน: 5 ขั้นตอน
การออกแบบเกมในการสะบัดใน 5 ขั้นตอน: การตวัดเป็นวิธีง่ายๆ ในการสร้างเกม โดยเฉพาะอย่างยิ่งเกมปริศนา นิยายภาพ หรือเกมผจญภัย
การตรวจจับใบหน้าบน Raspberry Pi 4B ใน 3 ขั้นตอน: 3 ขั้นตอน
การตรวจจับใบหน้าบน Raspberry Pi 4B ใน 3 ขั้นตอน: ในคำแนะนำนี้ เราจะทำการตรวจจับใบหน้าบน Raspberry Pi 4 ด้วย Shunya O/S โดยใช้ Shunyaface Library Shunyaface เป็นห้องสมุดจดจำใบหน้า/ตรวจจับใบหน้า โปรเจ็กต์นี้มีจุดมุ่งหมายเพื่อให้เกิดความเร็วในการตรวจจับและจดจำได้เร็วที่สุดด้วย
วิธีการติดตั้งปลั๊กอินใน WordPress ใน 3 ขั้นตอน: 3 ขั้นตอน
วิธีการติดตั้งปลั๊กอินใน WordPress ใน 3 ขั้นตอน: ในบทช่วยสอนนี้ ฉันจะแสดงขั้นตอนสำคัญในการติดตั้งปลั๊กอิน WordPress ให้กับเว็บไซต์ของคุณ โดยทั่วไป คุณสามารถติดตั้งปลั๊กอินได้สองวิธี วิธีแรกคือผ่าน ftp หรือผ่าน cpanel แต่ฉันจะไม่แสดงมันเพราะมันสอดคล้องกับ
การลอยแบบอะคูสติกด้วย Arduino Uno ทีละขั้นตอน (8 ขั้นตอน): 8 ขั้นตอน
การลอยแบบอะคูสติกด้วย Arduino Uno ทีละขั้นตอน (8 ขั้นตอน): ตัวแปลงสัญญาณเสียงล้ำเสียง L298N Dc ตัวเมียอะแดปเตอร์จ่ายไฟพร้อมขา DC ตัวผู้ Arduino UNOBreadboardวิธีการทำงาน: ก่อนอื่น คุณอัปโหลดรหัสไปยัง Arduino Uno (เป็นไมโครคอนโทรลเลอร์ที่ติดตั้งดิจิตอล และพอร์ตแอนะล็อกเพื่อแปลงรหัส (C++)
เครื่อง Rube Goldberg 11 ขั้นตอน: 8 ขั้นตอน
เครื่อง 11 Step Rube Goldberg: โครงการนี้เป็นเครื่อง 11 Step Rube Goldberg ซึ่งออกแบบมาเพื่อสร้างงานง่ายๆ ในรูปแบบที่ซับซ้อน งานของโครงการนี้คือการจับสบู่ก้อนหนึ่ง