สารบัญ:
- ขั้นตอนที่ 1: การประกอบยานพาหนะ
- ขั้นตอนที่ 2: การติดตั้งมอเตอร์
- ขั้นตอนที่ 3: การสร้าง Vivado Block Design
- ขั้นตอนที่ 4: การสื่อสารกับ LiDAR
- ขั้นตอนที่ 5: เติมตารางด้วยอุปสรรค
- ขั้นตอนที่ 6: การสื่อสารกับมอเตอร์
- ขั้นตอนที่ 7: การวางแผนเส้นทาง
วีดีโอ: ยานยนต์อัตโนมัติ: 7 ขั้นตอน (พร้อมรูปภาพ)
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:07
โปรเจ็กต์นี้เป็นหุ่นยนต์นำทางอัตโนมัติที่พยายามไปให้ถึงตำแหน่งเป้าหมายโดยหลีกเลี่ยงสิ่งกีดขวางระหว่างทาง หุ่นยนต์จะติดตั้งเซ็นเซอร์ LiDAR เพื่อใช้ตรวจจับวัตถุที่อยู่รอบข้าง เมื่อตรวจพบวัตถุและหุ่นยนต์เคลื่อนที่ไปรอบๆ แผนที่แบบเรียลไทม์จะได้รับการอัปเดต แผนที่จะใช้บันทึกตำแหน่งของสิ่งกีดขวางที่ระบุ ด้วยวิธีนี้ หุ่นยนต์จะไม่พยายามค้นหาเส้นทางที่ล้มเหลวอีกครั้งเพื่อไปยังตำแหน่งเป้าหมาย แต่จะพยายามใช้เส้นทางที่ไม่มีสิ่งกีดขวางหรือเส้นทางที่ยังไม่ได้ตรวจสอบสิ่งกีดขวาง
หุ่นยนต์จะเคลื่อนที่ด้วยล้อขับเคลื่อนด้วยมอเตอร์กระแสตรงสองล้อและล้อเลื่อนสองล้อ มอเตอร์จะติดอยู่ที่ด้านล่างของแท่นกลม มอเตอร์จะถูกควบคุมโดยตัวขับมอเตอร์สองตัว ไดรเวอร์มอเตอร์จะได้รับคำสั่ง PWM จาก Zynq Processor ตัวเข้ารหัสบนมอเตอร์แต่ละตัวทั้งหมดใช้เพื่อติดตามตำแหน่งและทิศทางของยานพาหนะ ทั้งระบบจะใช้แบตเตอรี่ LiPo
ขั้นตอนที่ 1: การประกอบยานพาหนะ
หุ่นยนต์ขับเคลื่อนด้วยมอเตอร์สองตัวที่ติดกับล้อด้านข้าง และจากนั้นได้รับการสนับสนุนเพิ่มเติมโดยล้อเลื่อนสองล้อ ล้อหนึ่งอยู่ด้านหน้าและอีกหนึ่งล้อที่ด้านหลัง แท่นและแท่นยึดมอเตอร์ทำจากอลูมิเนียมแผ่น ซื้อฮับมอเตอร์เพื่อติดล้อเข้ากับมอเตอร์ อย่างไรก็ตาม จำเป็นต้องสร้างข้อต่อกลางแบบกำหนดเองเนื่องจากรูปแบบรูของดุมล้อแตกต่างจากรูปแบบรูของล้อ
มอเตอร์ที่เลือกคือมอเตอร์ DC Port Escap 12V ที่มีตัวเข้ารหัสในตัว มอเตอร์นี้สามารถซื้อได้บนอีเบย์ในราคาที่สมเหตุสมผล (ดู Bill of Materials) ค้นหาคำสำคัญ “12V Escap 16 Coreless Geared DC Motor with Encoders” บน ebay เพื่อค้นหามอเตอร์ มักจะมีผู้ขายจำนวนมากให้เลือก ข้อมูลจำเพาะและพินเอาต์ของมอเตอร์แสดงอยู่ในไดอะแกรมด้านล่าง
การประกอบหุ่นยนต์เริ่มต้นด้วยแบบจำลอง CAD การออกแบบแชสซี โมเดลด้านล่างแสดงมุมมองด้านบนของโปรไฟล์รูปร่าง 2 มิติที่ออกแบบมาสำหรับแชสซี
ขอแนะนำว่าแชสซีได้รับการออกแบบให้เป็น 2Dprofile เพื่อให้สามารถผลิตได้ง่าย เราตัดแผ่นอลูมิเนียมขนาด 12”X12” ให้เป็นรูปร่างของโครงเครื่องโดยใช้เครื่องตัดแบบวอเตอร์เจ็ท แพลตฟอร์มแชสซียังสามารถตัดด้วยเลื่อยวงเดือน
ขั้นตอนที่ 2: การติดตั้งมอเตอร์
ขั้นตอนต่อไปคือการทำให้มอเตอร์เมาท์ ขอแนะนำว่าที่ยึดมอเตอร์ทำจากอลูมิเนียมแผ่นโลหะ 90 องศา เมื่อใช้ส่วนนี้ มอเตอร์สามารถติดตั้งคานเท้าแขนบนด้านหนึ่งของแผ่นโลหะโดยใช้สอง
รู M2 ของมอเตอร์และอีกด้านสามารถยึดเข้ากับแท่นได้ ต้องเจาะรูเข้าไปในแท่นยึดมอเตอร์เพื่อใช้สกรูยึดมอเตอร์เข้ากับแท่นยึดมอเตอร์และแท่นยึดมอเตอร์เข้ากับแท่น ตัวยึดมอเตอร์สามารถเห็นได้ในรูปด้านบน
ถัดไป วาง Pololu Motor Hub (ดู Bill of Materials) บนเพลามอเตอร์และขันให้แน่นด้วยสกรูที่ให้มาและประแจอัลเลน รูปแบบรูของศูนย์กลางมอเตอร์ Pololu ไม่ตรงกับรูปแบบรูของล้อ VEX จึงต้องสร้างข้อต่อกลางแบบกำหนดเอง ขอแนะนำให้ใช้เศษเหล็กแผ่น อลูมิเนียม ที่ใช้ทำแท่นแชสซีเพื่อใช้ทำข้อต่อ รูปแบบรูและขนาดของคู่นี้แสดงในรูปด้านล่าง เส้นผ่านศูนย์กลางและรูปร่างภายนอก (ไม่จำเป็นต้องเป็นวงกลม) ของตัวต่ออะลูมิเนียมแบบกำหนดเองนั้นไม่สำคัญตราบใดที่รูทั้งหมดพอดีกับชิ้นส่วน
ขั้นตอนที่ 3: การสร้าง Vivado Block Design
- เริ่มต้นด้วยการสร้างโครงการ Vivado ใหม่และเลือก Zybo Zynq 7000 Z010 เป็นอุปกรณ์เป้าหมาย
- คลิกถัดไปที่ สร้างการออกแบบบล็อกใหม่ และเพิ่ม Zynq IP ดับเบิลคลิกที่ Zynq IP และนำเข้าการตั้งค่า XPS ที่ให้ไว้สำหรับ Zynq จากนั้นเปิดใช้งาน UART0 ด้วย MIO 10..11 ภายใต้แท็บการกำหนดค่า MIO และตรวจสอบให้แน่ใจว่าได้เปิดใช้งานตัวจับเวลา 0 และตัวจับเวลา Watchdog
- เพิ่ม AXI GPIOS สองตัวในการออกแบบบล็อก สำหรับ GPIO 0 ให้เปิดใช้งานช่องสัญญาณคู่และตั้งค่าทั้งสองเป็นเอาต์พุตทั้งหมด ตั้งค่าความกว้าง GPIO สำหรับช่อง 1 ถึง 4 บิต และสำหรับช่อง 2 ถึง 12 บิต ช่องเหล่านี้จะใช้เพื่อกำหนดทิศทางของมอเตอร์และส่งจำนวนเห็บที่ตัวเข้ารหัสจะวัดไปยังโปรเซสเซอร์ สำหรับ GPIO 1 ให้ตั้งค่าช่องเดียวสำหรับอินพุตทั้งหมดที่มีความกว้างของช่อง 4 บิต จะใช้เพื่อรับข้อมูลจากตัวเข้ารหัส ทำให้พอร์ต GPIO ทั้งหมดภายนอก
- ถัดไปเพิ่มตัวจับเวลา AXI สองตัว สร้างพอร์ต pwm0 บนตัวจับเวลาทั้งสองภายนอก สิ่งเหล่านี้จะเป็น pwms ที่ควบคุมความเร็วที่มอเตอร์หมุน
- ในที่สุดเรียกใช้บล็อกอัตโนมัติและการเชื่อมต่ออัตโนมัติ ตรวจสอบว่าการออกแบบบล็อกที่คุณมีตรงกับการออกแบบที่ให้มา
ขั้นตอนที่ 4: การสื่อสารกับ LiDAR
LiDAR นี้ใช้โปรโตคอล SCIP 2.0 เพื่อสื่อสารผ่าน UART ไฟล์ที่แนบมานี้อธิบายโปรโตคอลทั้งหมด
ในการสื่อสารกับ LiDAR เราจะใช้ UART0 LiDAR ส่งคืนจุดข้อมูล 682 จุด ซึ่งแต่ละจุดแสดงถึงระยะทางไปยังวัตถุที่มุมนั้น LiDAR สแกนทวนเข็มนาฬิกาจาก -30 องศาถึง 210 องศาด้วยขั้นตอน 0.351 องศา
- การสื่อสารทั้งหมดไปยัง LiDAR ทำได้โดยใช้อักขระ ASCI โปรดดูรูปแบบที่ใช้โปรโตคอล SCIP เราเริ่มต้นด้วยการส่งคำสั่ง QT เพื่อเปิด LiDAR จากนั้น เราจะส่งคำสั่ง GS หลายครั้งเพื่อขอ 18 จุดข้อมูลในแต่ละครั้งเพื่อ ft ใน UARTS 64 ไบต์ FIFO ข้อมูลที่ส่งคืนจาก LiDAR จะถูกแยกวิเคราะห์และจัดเก็บไว้ในอาร์เรย์ส่วนกลางของ SCANdata
- แต่ละจุดข้อมูลที่เก็บไว้เป็นข้อมูลที่เข้ารหัส 2 ไบต์ การส่งข้อมูลนี้ไปยังตัวถอดรหัสจะคืนค่าระยะทางเป็นมิลลิเมตร
ในไฟล์ main_av.c คุณจะพบกับฟังก์ชันต่อไปนี้เพื่อสื่อสารกับ LiDAR
sendLIDARcmd(คำสั่ง)
- นี่จะส่งสตริงอินพุตไปยัง LiDAR ผ่าน UART0
recvLIDARdata()
- สิ่งนี้จะได้รับข้อมูลหลังจากส่งคำสั่งไปยัง LiDAR และจัดเก็บข้อมูลใน RECBuffer
ขอข้อมูลระยะทาง()
- ฟังก์ชันนี้จะส่งชุดคำสั่งเพื่อดึงข้อมูลทั้งหมด 682 จุด หลังจากได้รับจุดข้อมูล 18 จุดแต่ละชุดแล้ว parseLIDARinput() จะถูกเรียกให้แยกวิเคราะห์ข้อมูลและจัดเก็บจุดข้อมูลใน SCANdata แบบเพิ่มหน่วย
ขั้นตอนที่ 5: เติมตารางด้วยอุปสรรค
GRID ที่จัดเก็บเป็นอาร์เรย์ 2 มิติโดยมีค่าดัชนีแต่ละค่าแทนตำแหน่ง ข้อมูลที่จัดเก็บในแต่ละดัชนีจะเป็น 0 หรือ 1 ไม่มีสิ่งกีดขวางและอุปสรรคตามลำดับ ระยะตารางเป็นมิลลิเมตรที่แต่ละดัชนีแทนสามารถเปลี่ยนแปลงได้ด้วยคำจำกัดความ GRID_SCALE ในไฟล์ vehicle.h ขนาดของอาร์เรย์ 2 มิติยังสามารถเปลี่ยนแปลงได้เพื่อให้รถสามารถสแกนพื้นที่ที่ใหญ่ขึ้นด้วยการแก้ไขคำจำกัดความ GRID_SIZE
หลังจากสแกนข้อมูลระยะทางชุดใหม่จาก LiDAR updateGrid() จะถูกเรียก การดำเนินการนี้จะวนซ้ำทุกจุดข้อมูลที่จัดเก็บไว้ในอาร์เรย์ SCANdata เพื่อกำหนดว่าดัชนีใดในกริดที่มีอุปสรรค การใช้การวางแนวปัจจุบันของยานพาหนะ เราสามารถกำหนดมุมที่สอดคล้องกับจุดข้อมูลแต่ละจุดได้ ในการพิจารณาว่าคุณมีสิ่งกีดขวางอยู่ที่ใด ให้คูณระยะทางที่สอดคล้องกันด้วยค่า cos/sin ของมุม การเพิ่มค่าทั้งสองนี้ไปยังตำแหน่ง x และ y ปัจจุบันของยานพาหนะจะคืนค่าดัชนีในตารางของสิ่งกีดขวาง การหารระยะทางที่ส่งคืนโดยการดำเนินการนี้ด้วย GRID_SCALE จะทำให้เราสามารถกำหนดระยะห่างของตารางแต่ละดัชนีได้มากน้อยเพียงใด
ภาพด้านบนแสดงสภาพแวดล้อมปัจจุบันของยานพาหนะและผลกริด
ขั้นตอนที่ 6: การสื่อสารกับมอเตอร์
ในการสื่อสารกับมอเตอร์ เราเริ่มต้นด้วยการเริ่มต้น GPIO เพื่อควบคุมคือทิศทางที่มอเตอร์หมุน จากนั้นการเขียนโดยตรงไปยังที่อยู่ฐานของ PWM ใน AXI Timer ช่วยให้เราสามารถตั้งค่าสิ่งต่างๆ เช่น คาบและวัฏจักรหน้าที่ซึ่งควบคุมได้โดยตรง ความเร็วมอเตอร์หมุนที่
ขั้นตอนที่ 7: การวางแผนเส้นทาง
ที่จะดำเนินการในอนาคตอันใกล้นี้
การใช้ฟังก์ชันกริดและมอเตอร์ที่อธิบายไว้ก่อนหน้านี้ เป็นเรื่องง่ายมากที่จะใช้อัลกอริทึม เช่น A* ขณะที่รถเคลื่อนที่ มันจะทำการสแกนพื้นที่โดยรอบต่อไปและตัดสินว่าเส้นทางนั้นยังใช้ได้อยู่หรือไม่
แนะนำ:
DIY 37 Leds เกมรูเล็ต Arduino: 3 ขั้นตอน (พร้อมรูปภาพ)
DIY 37 Leds เกมรูเล็ต Arduino: รูเล็ตเป็นเกมคาสิโนที่ตั้งชื่อตามคำภาษาฝรั่งเศสหมายถึงวงล้อเล็ก
หมวกนิรภัย Covid ส่วนที่ 1: บทนำสู่ Tinkercad Circuits!: 20 ขั้นตอน (พร้อมรูปภาพ)
Covid Safety Helmet ตอนที่ 1: บทนำสู่ Tinkercad Circuits!: สวัสดีเพื่อน ๆ ในชุดสองตอนนี้ เราจะเรียนรู้วิธีใช้วงจรของ Tinkercad - เครื่องมือที่สนุก ทรงพลัง และให้ความรู้สำหรับการเรียนรู้เกี่ยวกับวิธีการทำงานของวงจร! หนึ่งในวิธีที่ดีที่สุดในการเรียนรู้คือการทำ ดังนั้น อันดับแรก เราจะออกแบบโครงการของเราเอง: th
Bolt - DIY Wireless Charging Night Clock (6 ขั้นตอน): 6 ขั้นตอน (พร้อมรูปภาพ)
Bolt - DIY Wireless Charging Night Clock (6 ขั้นตอน): การชาร์จแบบเหนี่ยวนำ (เรียกอีกอย่างว่าการชาร์จแบบไร้สายหรือการชาร์จแบบไร้สาย) เป็นการถ่ายโอนพลังงานแบบไร้สาย ใช้การเหนี่ยวนำแม่เหล็กไฟฟ้าเพื่อจ่ายกระแสไฟฟ้าให้กับอุปกรณ์พกพา แอปพลิเคชั่นที่พบบ่อยที่สุดคือ Qi Wireless Charging st
4 ขั้นตอน Digital Sequencer: 19 ขั้นตอน (พร้อมรูปภาพ)
4 ขั้นตอน Digital Sequencer: CPE 133, Cal Poly San Luis Obispo ผู้สร้างโปรเจ็กต์: Jayson Johnston และ Bjorn Nelson ในอุตสาหกรรมเพลงในปัจจุบัน ซึ่งเป็นหนึ่งใน “instruments” เป็นเครื่องสังเคราะห์เสียงดิจิตอล ดนตรีทุกประเภท ตั้งแต่ฮิปฮอป ป๊อป และอีฟ
ป้ายโฆษณาแบบพกพาราคาถูกเพียง 10 ขั้นตอน!!: 13 ขั้นตอน (พร้อมรูปภาพ)
ป้ายโฆษณาแบบพกพาราคาถูกเพียง 10 ขั้นตอน!!: ทำป้ายโฆษณาแบบพกพาราคาถูกด้วยตัวเอง ด้วยป้ายนี้ คุณสามารถแสดงข้อความหรือโลโก้ของคุณได้ทุกที่ทั่วทั้งเมือง คำแนะนำนี้เป็นการตอบสนองต่อ/ปรับปรุง/เปลี่ยนแปลงของ: https://www.instructables.com/id/Low-Cost-Illuminated-