สารบัญ:
- ขั้นตอนที่ 1: แรงบันดาลใจ
- ขั้นตอนที่ 2: เครื่องมือและชิ้นส่วน
- ขั้นตอนที่ 3: การออกแบบระดับสูง
- ขั้นตอนที่ 4: ฮาร์ดแวร์
- ขั้นตอนที่ 5: อุปกรณ์อิเล็กทรอนิกส์
- ขั้นตอนที่ 6: ซอฟต์แวร์
- ขั้นตอนที่ 7: บูรณาการ
- ขั้นตอนที่ 8: ผลลัพธ์
- ขั้นตอนที่ 9: ทรัพยากร
วีดีโอ: Raspberry Pi Laser Scanner: 9 ขั้นตอน (พร้อมรูปภาพ)
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:04
Laser Scanner เป็นอุปกรณ์ระบบฝังตัวของ Raspberry Pi ที่สามารถแปลงวัตถุให้เป็นดิจิทัลเป็นไฟล์.obj mesh เพื่อทำสำเนาโดยใช้การพิมพ์ 3 มิติ อุปกรณ์นี้ทำได้โดยใช้เลเซอร์เส้นและ PiCam ในตัวเพื่อทำการมองเห็นด้วยคอมพิวเตอร์ เลเซอร์อยู่ในตำแหน่งเอียง 45 องศาจากเลเซอร์ และฉายเส้นสีแดงสดบนชิ้นแนวตั้งชิ้นเดียวของวัตถุ กล้องตรวจจับระยะห่างของสไลซ์จากจุดศูนย์กลางเพื่อให้เป็นเมชสไลซ์ วัตถุถูกหมุนบนถาดที่หมุนได้ และกระบวนการจะทำซ้ำจนกว่าจะสแกนวัตถุทั้งหมด ไฟล์.obj ที่สร้างขึ้นจะถูกส่งไปยังผู้ใช้ในท้ายที่สุด ทำให้ระบบเป็นแบบสแตนด์อโลนและฝังตัวอย่างสมบูรณ์
คำแนะนำนี้จะอธิบายวิธีการสร้างอุปกรณ์ ผลลัพธ์บางส่วน และขั้นตอนในอนาคต
ขั้นตอนที่ 1: แรงบันดาลใจ
ในฐานะที่เป็นนักประดิษฐ์ตัวยง ฉันทำงานด้านการพิมพ์ 3 มิติและการสร้างแบบจำลองที่แข็งแกร่งมาหลายปีแล้ว ฉันได้ทำงานกับเครื่องมือสร้างต้นแบบที่แตกต่างกันมากมายตั้งแต่เราเตอร์ CNC ไปจนถึงเครื่องตัดเลเซอร์ไปจนถึงเครื่องพิมพ์ 3 มิติ อุปกรณ์หนึ่งที่ผู้ผลิตในพื้นที่ของฉันยังไม่ได้ซื้อคือเครื่องสแกน 3 มิติ และฉันสามารถบอกคุณได้ว่าทำไมถึงต้องซื้อ
อันที่ถูกกว่า (ไม่กี่ร้อยเหรียญ) ไม่น่าเชื่อถือ ต้องการเงื่อนไขที่สมบูรณ์แบบ และยังคงให้ผลลัพธ์ที่ค่อนข้างโทรม อันราคาแพงนั้น… ก็แพง มีราคาสูงถึงหลายพันดอลลาร์ ทำให้ฟังก์ชั่นของมันไม่คุ้มในหลายกรณี ยิ่งไปกว่านั้น หลายครั้งที่ฉันไม่เลือกใช้การวัดและออกแบบแบบจำลองตั้งแต่เริ่มต้น มากกว่าที่จะจัดการกับพื้นผิวที่สร้างขึ้นจากการสแกน
ด้วยเหตุนี้ ฉันต้องการสร้างเครื่องสแกนแบบสแตนด์อโลนราคาประหยัดเพื่อดูว่าฉันสามารถสแกนวัตถุโดยใช้ส่วนประกอบจากชั้นวางได้ดีเพียงใด
หลังจากทำการวิจัยแล้ว ฉันพบว่าเครื่องสแกน 3D จำนวนมากใช้แพลตฟอร์มที่หมุนได้ จากนั้นจึงใช้เซ็นเซอร์ต่างๆ ที่หลากหลายเพื่อวัดระยะห่างจากจุดศูนย์กลางเพื่อสร้างแบบจำลองการหมุน หลายตัวใช้กล้องคู่แบบเดียวกับ Kinect ในที่สุดฉันก็สะดุดกับ Yscanner ซึ่งเป็นเครื่องสแกนความละเอียดต่ำที่ใช้เลเซอร์ เมื่อพิจารณาจากความเรียบง่ายและความเป็นไปได้ เทคนิคเลเซอร์นี้ ซึ่งเลเซอร์จะฉายแสงชดเชยเมื่อเทียบกับกล้องเพื่อวัดระยะห่างจากจุดศูนย์กลาง ดูเหมือนเป็นเส้นทางที่ชัดเจนไปข้างหน้า
ขั้นตอนที่ 2: เครื่องมือและชิ้นส่วน
อะไหล่:
- ราสเบอร์รี่ Pi $35.00
- กล้อง Raspberry Pi V2 $30.00
- ไฟ LED ตัวต้านทานและสายไฟ
- เส้นใยการพิมพ์ 3 มิติ
- แผ่นไม้ 12x12x0.125 แผ่น
- ฮาร์ดแวร์ M3
- สเต็ปเปอร์มอเตอร์ - $14
- เลเซอร์เส้น - $8
- ไดรเวอร์ LN298 สเต็ปเปอร์มอเตอร์ - $2.65
- ปุ่มกดโลหะ - $5
เครื่องมือ:
- หัวแร้ง
- เครื่องตัดเลเซอร์
- เครื่องพิมพ์ 3 มิติ
- ไขควง
- คีม
ขั้นตอนที่ 3: การออกแบบระดับสูง
องค์ประกอบหลักในการออกแบบนี้คือเลเซอร์เส้นที่ฉายบนชิ้นแนวตั้งของวัตถุ การฉายภาพนี้สามารถจับภาพได้บน picamera แก้ไขเปอร์สเปคทีฟ แล้วกรองออกก่อนการประมวลผลภาพ ในการประมวลผลภาพ สามารถรวบรวมระยะห่างระหว่างแต่ละส่วนของเส้นจากจุดศูนย์กลางของวัตถุได้ ในพิกัดแนวรัศมี รูปภาพนี้จะให้ผลทั้งองค์ประกอบ r และ z มิติที่สาม Θ ทำได้โดยการหมุนวัตถุเป็นชิ้นใหม่ แนวคิดนี้แสดงในรูปแรก
ในการดำเนินการตามที่อธิบายไว้ข้างต้น ฉันใช้ Raspberry Pi เป็นหน่วยประมวลผลกลางของเรา ฉันติดสเต็ปเปอร์มอเตอร์และไดรเวอร์มอเตอร์เข้ากับ Pi ซึ่งขับเคลื่อนโดยแหล่งจ่ายไฟ 5V ภายนอกและควบคุมโดยพิน GPIO ของ Pi วางเลเซอร์เส้นบนสาย 3.3 V บน Pi และติด PiCam เข้ากับอินพุตของกล้องบน Pi สุดท้าย มีการติดตั้งปุ่มแบบดึงลงอย่างง่าย และไฟ LED แสดงสถานะเพื่อระบุให้ผู้ใช้ทราบว่าระบบอยู่ในสถานะใด ระบบทั้งหมดจะสรุปไว้ในแผนภาพบล็อกของระบบ
ตั้งแต่เริ่มแรก ได้มีการวางแผนว่าจะจัดวางอุปกรณ์อิเล็กทรอนิกส์ในกล่องตัดด้วยเลเซอร์ที่ยึดร่วมกับ T-slots และฮาร์ดแวร์ M3 อุปกรณ์อิเล็กทรอนิกส์จะถูกซ่อนจากสายตาในช่องด้านล่างและฝาปิดจะช่วยให้เข้าถึงตำแหน่งวัตถุบนถาดหมุนได้ง่าย ฝาปิดนี้จำเป็นเพื่อลดปริมาณแสงที่รั่วไหลเข้าสู่ระบบ เนื่องจากแสงภายนอกนี้สามารถสร้างสัญญาณรบกวนในการสแกนครั้งสุดท้าย
ขั้นตอนที่ 4: ฮาร์ดแวร์
ตามที่เห็นด้านบน ก่อนที่ฉันจะเริ่มตัดด้วยเลเซอร์หรือการพิมพ์ 3 มิติ ฉันใช้ Autodesk Fusion 360 เพื่อสร้างแบบจำลอง 3 มิติโดยละเอียดของการออกแบบของเรา โดยภาพรวมแล้ว อุปกรณ์นี้เป็นกล่องธรรมดาที่มีฝาปิดพร้อมบานพับตัดด้วยเลเซอร์ อุปกรณ์มี 2 ชั้นหลัก ได้แก่ เตียงอิเล็กทรอนิกส์และเตียงหลัก โดยมีรูสำหรับวางสายไฟระหว่างสองชั้น
กล่องส่วนใหญ่ของเราผลิตขึ้นด้วยเครื่องตัดเลเซอร์ โดยมีการออกแบบที่ผลิตใน Fusion 360 และตัดด้วยเครื่องตัดเลเซอร์ Epilog Zing 40 W การออกแบบของเราแสดงในรูปด้านบน จากซ้ายบนไปทางขวา ชิ้นส่วนคือเตียงหลัก เตียงอิเล็กทรอนิกส์ ชิ้นส่วนสำหรับฝา 2 ชิ้น ชิ้นหลัง ชิ้นหน้า และชิ้นด้านข้าง 2 ชิ้น ในเตียงหลัก มีช่องเจาะหลักสามช่อง: ช่องแรกสำหรับติดตั้งสเต็ปเปอร์มอเตอร์ ช่องหนึ่งสำหรับกำหนดเส้นทางสายไฟจากเลเซอร์ และอีกช่องสำหรับกำหนดเส้นทางสายเคเบิลกว้างของ PiCam ชิ้นส่วนเตียงมีรูสำหรับยึด Pi, เขียงหั่นขนม และตัวขับมอเตอร์ และช่องเจาะขนาดใหญ่เพื่อเข้าถึงสเต็ปเปอร์มอเตอร์ ฝายึดติดกันเป็นชิ้นสามเหลี่ยมที่เห็นด้านบน และบานพับเป็นแบบอัดรีดอย่างง่ายที่มีความกว้างของเส้นผ่านศูนย์กลางของรูของแผงด้านข้าง ชิ้นส่วนด้านหลังและชิ้นส่วนด้านข้างด้านใดด้านหนึ่งมีช่องด้านข้างเพื่อให้สามารถเข้าถึงพอร์ตของ Pi (HDMI, USB, Ethernet, Power) ได้อย่างง่ายดาย ด้านหน้าเป็นชิ้นส่วนที่เรียบง่าย ซึ่งในที่สุดฉันก็เจาะรูด้วยสว่านมือเพื่อยึดปุ่มและไฟ LED ตามที่เห็นในทุกชิ้นส่วน ชิ้นส่วนของเรายึดเข้าด้วยกันโดยฮาร์ดแวร์ M3 โดยใช้ T-Joints และสล็อต นี่เป็นวิธีการจับชิ้นงานที่ตัดด้วยเลเซอร์ในมุมฉากและปลอดภัย ครีบของชิ้นส่วนต่างๆ เรียงกันกับช่องของชิ้นส่วนอื่นๆ และการตัดรูปตัว t บนขอบทำให้มีที่ว่างสำหรับน็อต M3 ที่จะติดเข้าไปโดยไม่ต้องหมุน ซึ่งช่วยให้เราใช้สกรู M3 เพื่อล็อคชิ้นส่วนต่างๆ เข้าด้วยกันโดยมีพื้นที่ขยับเพียงเล็กน้อยโดยไม่ต้องประกอบให้ถาวร
ฉันเลือกที่จะทำชิ้นงานส่วนใหญ่ของเราด้วยเครื่องตัดเลเซอร์เนื่องจากความเร็วและความง่ายของมัน อย่างไรก็ตาม ฉันยังต้องพิมพ์ 3D บางชิ้นเนื่องจากเรขาคณิต 3D ของพวกเขาที่จะสร้างได้ยากขึ้นบนเครื่องตัด ชิ้นแรกคือที่ใส่สายเลเซอร์ ชิ้นนี้จะต้องติดตั้งบนเตียงหลักที่ 45 องศาจากมุมมองของกล้องและมีรูเพื่อให้เลเซอร์สามารถใส่แรงเสียดทานเข้าไปได้พอดี ฉันยังต้องสร้างที่ยึดมอเตอร์ด้วยเพราะเพลาของมอเตอร์นั้นยาวมาก แรงเสียดทานของตัวยึดพอดีกับชิ้นส่วนที่ตัดด้วยเลเซอร์และลดระดับระนาบที่มอเตอร์ติดอยู่เพื่อให้แท่นหมุนถูกล้างออกด้วยเตียงหลัก
ขั้นตอนที่ 5: อุปกรณ์อิเล็กทรอนิกส์
ฮาร์ดแวร์การเดินสายของโปรเจ็กต์นี้ง่ายมาก เนื่องจากเครื่องสแกน 3 มิติไม่ต้องการอุปกรณ์ต่อพ่วงมากเกินไป มอเตอร์ ปุ่ม LED เลเซอร์ และกล้องจำเป็นต้องเชื่อมต่อกับ Pi ดังที่แสดงไว้ ฉันแน่ใจว่าได้เชื่อมต่อตัวต้านทานแบบอนุกรมกับพินแต่ละตัวที่เราใช้เพื่อป้องกันพิน หนึ่งพิน GPIO ใช้สำหรับควบคุมไฟ LED แสดงสถานะ ซึ่งจะสว่างขึ้นเมื่ออุปกรณ์พร้อมใช้งาน และพัลส์ด้วย PWM เมื่ออุปกรณ์ทำงาน หมุด GPIO อีกอันเชื่อมต่อกับปุ่มแบบดึงขึ้น โดยลงทะเบียนเป็น HIGH เมื่อไม่ได้กดปุ่ม และ LOW เมื่อกดปุ่ม สุดท้ายนี้ ฉันทุ่มเทสี่พิน GPIO เพื่อขับเคลื่อนสเต็ปเปอร์มอเตอร์
เนื่องจากมอเตอร์ของเราต้องก้าวไปในระดับหนึ่งโดยไม่ต้องมีการควบคุมความเร็ว เราจึงเลือกใช้ตัวขับมอเตอร์แบบสเต็ปที่ง่ายกว่า (L298N) ที่เพิ่มเส้นควบคุมเพื่อป้อนเข้าสู่อินพุตของมอเตอร์ เพื่อเรียนรู้เกี่ยวกับวิธีการใช้งานสเต็ปเปอร์มอเตอร์ในระดับต่ำมาก เราได้อ้างอิงทั้งเอกสารข้อมูล L298N และไลบรารี Arduino สเต็ปเปอร์มอเตอร์มีแกนแม่เหล็กพร้อมนิ้วโป้งที่สลับขั้ว สายไฟทั้งสี่ถูกพันไว้เพื่อควบคุมแม่เหล็กไฟฟ้าสองตัวซึ่งแต่ละเส้นส่งกำลังทุกนิ้วที่อยู่ตรงข้ามกันในมอเตอร์ ดังนั้นโดยการเปลี่ยนขั้วของนิ้ว เราสามารถดันสเต็ปเปอร์ได้หนึ่งขั้น ด้วยความรู้เกี่ยวกับวิธีการทำงานของสเต็ปเปอร์จากระดับฮาร์ดแวร์ เราจึงสามารถควบคุมสเต็ปเปอร์ได้ง่ายขึ้นมาก เราเลือกที่จะจ่ายไฟให้กับสเต็ปเปอร์มอเตอร์ของเราจากแหล่งจ่ายไฟ 5V ในห้องแล็บแทนที่จะเป็น Pi เนื่องจากการดึงกระแสไฟสูงสุดที่ประมาณ 0.8 A ซึ่งมากกว่าที่ Pi สามารถจ่ายได้
ขั้นตอนที่ 6: ซอฟต์แวร์
ซอฟต์แวร์สำหรับโครงการนี้สามารถแบ่งออกเป็นสี่องค์ประกอบหลักที่ทำงานร่วมกัน: การประมวลผลภาพ การควบคุมมอเตอร์ การสร้างตาข่าย และฟังก์ชันฝังตัว
โดยสรุปของซอฟต์แวร์ เราสามารถดูที่ตัวเลขแรก ในขณะที่ระบบบูท.bashrc จะเข้าสู่ระบบ Pi โดยอัตโนมัติและเริ่มเรียกใช้โค้ดหลามของเรา ระบบจะเปิดไฟสถานะเพื่อแจ้งให้ผู้ใช้ทราบว่าบูตอย่างถูกต้องแล้วและรอการกดปุ่ม ผู้ใช้สามารถวางสินค้าที่จะสแกนและปิดฝาได้ หลังจากกดปุ่ม ไฟ LED จะกะพริบเพื่อแจ้งให้ผู้ใช้ทราบว่าอุปกรณ์กำลังทำงาน อุปกรณ์จะวนซ้ำระหว่างการประมวลผลภาพและการควบคุมมอเตอร์จนกว่าการหมุนจะเสร็จสิ้นและรวบรวมข้อมูลวัตถุทั้งหมด สุดท้าย ตาข่ายจะถูกสร้างขึ้นและไฟล์จะถูกส่งไปยังอีเมลที่เลือกไว้ล่วงหน้า การดำเนินการนี้จะเริ่มต้นรอบใหม่ และเครื่องพร้อมที่จะทำการสแกนอีกครั้งด้วยการกดปุ่มเพียงปุ่มเดียว
การประมวลผลภาพ
สิ่งแรกที่นำมาใช้คือการประมวลผลภาพที่ถ่ายเพื่อดึงข้อมูลที่จัดเก็บไว้ในภาพให้อยู่ในรูปแบบที่สามารถใช้สร้างอาร์เรย์ของจุดต่างๆ ในอวกาศได้ ในการทำเช่นนี้ ฉันเริ่มต้นด้วยการถ่ายภาพวัตถุบนแท่นพร้อมกับเสียงพื้นหลังทั้งหมดที่เกิดจากแสงเลเซอร์ที่ส่องไปที่ด้านหลังของกล่องและกระจายออกไป ภาพนี้มีปัญหาหลักสองประการในรูปแบบดิบ อย่างแรก วัตถุถูกมองในมุมที่มีเปอร์สเปคทีฟสูง และอย่างที่สอง มีเสียงรบกวนจากพื้นหลังเป็นจำนวนมาก สิ่งแรกที่ฉันต้องทำคือคำนึงถึงมุมมองนี้ เพราะการใช้ภาพถ่ายตามที่เป็นอยู่จะไม่อนุญาตให้เรากำหนดความสูงของวัตถุที่สม่ำเสมอ ดังที่เห็นในรูปที่สอง ความสูงของรูปร่าง "L" กลับหัวนั้นสม่ำเสมอ อย่างไรก็ตาม เนื่องจากด้านหนึ่งยาวกว่าอีกด้านหนึ่ง จึงมีความสูงต่างกันที่ขอบใกล้กับผู้ชมมากที่สุด
ในการแก้ไขปัญหานี้ ฉันต้องแปลงพื้นที่ทำงานในรูปภาพให้เป็นรูปสี่เหลี่ยมผืนผ้าจากรูปทรงสี่เหลี่ยมคางหมูที่เคยเป็น ในการทำเช่นนี้ ฉันใช้โค้ดที่ได้รับจากลิงก์นี้ ซึ่งเมื่อให้รูปภาพและจุดสี่จุด ครอบตัดรูปภาพระหว่างจุดทั้งสี่และแปลงรูปภาพที่ครอบตัดเพื่อชดเชยเปอร์สเปคทีฟ การแปลงนี้ใช้สี่จุดเพื่อสร้างสี่เหลี่ยมผืนผ้าแทนที่จะเป็นรูปทรงสี่เหลี่ยมคางหมูดังที่เห็นในรูปที่สาม
ปัญหาต่อไปที่ต้องแก้ไขคือเสียงรบกวนจากพื้นหลังในรูปของแสงจากภายนอกและแสงที่สะท้อนด้วยเลเซอร์เอง ในการทำเช่นนี้ ฉันกรองแสงโดยใช้ฟังก์ชัน inRange() ของ OpenCV ฉันตั้งค่าธรณีประตูให้รับแสงสีแดงที่ระดับหนึ่งเท่านั้น เพื่อให้ได้ค่าที่ถูกต้อง ฉันเริ่มต้นด้วยเกณฑ์ผ่อนปรนและเพิ่มระดับธรณีสัณฐานต่อไปจนกว่าแสงเดียวที่หยิบขึ้นมาคือแสงเลเซอร์บนวัตถุที่กำลังสแกน เมื่อได้ภาพนี้แล้ว ฉันพบว่าพิกเซลที่สว่างที่สุดในแต่ละแถว ได้เส้นหนึ่งพิกเซลต่อแถวที่ล้อมรอบด้านซ้ายสุดของเส้นเลเซอร์ จากนั้นแต่ละพิกเซลจะถูกแปลงเป็นจุดยอดในพื้นที่ 3 มิติ และจัดเก็บไว้ในอาร์เรย์ ดังที่อธิบายไว้ในส่วนการสร้างตาข่าย ผลลัพธ์ของขั้นตอนเหล่านี้สามารถเห็นได้ในรูปที่สี่
การควบคุมมอเตอร์
หลังจากที่สามารถประมวลผลภาพเดียวได้สำเร็จเพื่อแยกส่วนของวัตถุ ผมต้องสามารถหมุนวัตถุเพื่อถ่ายภาพใหม่ด้วยมุมที่ต่างออกไป ในการทำเช่นนี้ ฉันควบคุมสเต็ปเปอร์มอเตอร์ด้านล่างแพลตฟอร์มที่วัตถุที่กำลังสแกนตั้งอยู่ ฉันสร้างพื้นฐานของฟังก์ชันสเต็ปปิ้งของเราโดยการสร้างตัวแปรเพื่อติดตามสถานะของมอเตอร์และไมโครสเต็ปปิ้งโดยสลับอินพุตของมอเตอร์ทั้งสี่ตัว
การสร้างตาข่ายเพื่อสร้างเมชจากรูปภาพที่ประมวลผลทั้งหมด อันดับแรก ฉันต้องแปลงพิกเซลสีขาวแต่ละพิกเซลในรูปภาพที่ประมวลผลให้เป็นจุดยอดในพื้นที่ 3 มิติ เนื่องจากฉันกำลังรวบรวมชิ้นส่วนแต่ละชิ้นของวัตถุที่มีความสมมาตรของทรงกระบอก จึงควรเริ่มรวบรวมพิกัดทรงกระบอก สิ่งนี้สมเหตุสมผลเนื่องจากความสูงของรูปภาพสามารถแทนแกน z ระยะห่างจากศูนย์กลางของตารางหมุนสามารถแทนแกน R และการหมุนของสเต็ปเปอร์มอเตอร์สามารถแทนแกนที อย่างไรก็ตาม เนื่องจากฉันจัดเก็บข้อมูลในพิกัดทรงกระบอก ฉันต้องแปลงจุดยอดแต่ละจุดเหล่านี้เป็นพิกัดคาร์ทีเซียน
เมื่อจุดยอดเหล่านี้ถูกสร้างขึ้น พวกเขาจะถูกจัดเก็บไว้ในรายการ และรายการดังกล่าวจะถูกจัดเก็บไว้ในรายการอื่นที่มีรายการจุดยอดที่สร้างขึ้นสำหรับแต่ละภาพที่ถ่าย เมื่อภาพทั้งหมดได้รับการประมวลผลและแปลงเป็นจุดยอดแล้ว ฉันต้องเลือกจุดยอดที่ฉันต้องการให้แสดงในเมชสุดท้าย ฉันต้องการรวมจุดยอดด้านบนและจุดยอดด้านล่าง จากนั้นตามความละเอียดที่ฉันเลือกจำนวนจุดยอดที่เว้นระยะห่างเท่าๆ กันเพื่อใช้สำหรับแต่ละภาพ เนื่องจากไม่ใช่รายการจุดยอดทั้งหมดจะมีความยาวเท่ากัน ฉันจึงต้องทำให้มันเท่ากันด้วยการค้นหารายการที่มีจุดยอดน้อยที่สุดและลบจุดยอดออกจากรายการอื่นๆ ทั้งหมดจนกว่าจะเท่ากันทั้งหมด ด้วยรายการจุดยอดที่สร้างขึ้น ตอนนี้ฉันสามารถ สร้างตาข่าย ฉันเลือกจัดรูปแบบตาข่ายของเราตามมาตรฐานไฟล์.obj เนื่องจากเป็นแบบเรียบง่ายและพิมพ์ได้ 3 มิติ
ฟังก์ชันสมองกลฝังตัว
หลังจากที่อุปกรณ์ใช้งานได้ ฉันขัดเกลามันโดยเพิ่มฟังก์ชันที่ฝังไว้เต็มรูปแบบ นี่หมายถึงการลบคีย์บอร์ด เมาส์ และจอภาพ และส่งไฟล์.obj มาให้เราแบบไร้สายหลังจากเสร็จสิ้นการประมวลผล ในการเริ่มต้น ฉันเปลี่ยนรหัส.bashrc เพื่อเข้าสู่ระบบโดยอัตโนมัติและเปิดโปรแกรม python หลักเมื่อเริ่มต้น ทำได้โดยใช้ sudo raspi-config และเลือก "Console Autologin" และเพิ่มบรรทัด "sudo python /home/pi/finalProject/FINAL.py" ไปที่ /home/pi/.bashrc.นอกจากนี้ ฉันยัง เพิ่มปุ่มและไฟ LED แสดงสถานะสำหรับอินพุตและเอาต์พุตของผู้ใช้ ปุ่มนี้จะให้ผู้ใช้บอกอุปกรณ์ว่าจะเริ่มสแกนเมื่อใด และไฟ LED จะแจ้งสถานะของเครื่องให้ผู้ใช้ทราบ หากไฟ LED เปิดอยู่ แสดงว่าอุปกรณ์พร้อมที่จะเริ่มการสแกนใหม่ หากไฟ LED กะพริบ แสดงว่าอุปกรณ์กำลังสแกนอยู่ หากไฟ LED อยู่ในสำนักงาน แสดงว่าซอฟต์แวร์มีข้อผิดพลาด เรียกร้องให้เริ่มระบบใหม่ สุดท้าย ฉันเปิดใช้งานอุปกรณ์เพื่อส่งไฟล์.obj ทางอีเมล ทำได้โดยใช้ไลบรารี smtplib และอีเมล ความสามารถในการส่งอีเมลนี้ทำให้เรามีวิธีการที่สะดวกและไร้สายมากในการส่งไฟล์ที่สร้างขึ้นไปยังผู้ใช้เพื่อเข้าถึงบนแพลตฟอร์มต่างๆ
ขั้นตอนที่ 7: บูรณาการ
หลังจากผลิตชิ้นส่วนต่างๆ ของอุปกรณ์แล้ว ผมก็ประกอบเข้าด้วยกัน รูปด้านบนแสดงตามลำดับ:
(ก) กล่องประกอบภายนอก
(b) ประกอบกล่องภายในด้วยกล้องและเลเซอร์
(c) มุมมองภายในของเตียงอิเล็กทรอนิกส์
(d) ด้านหลังของ Pi พร้อมการเข้าถึงพอร์ต Pi และอินพุตมอเตอร์ 5V
(จ) ปุ่มกดพร้อมวงแหวน LED และไฟแสดงสถานะที่ด้านหน้าเครื่อง
ขั้นตอนที่ 8: ผลลัพธ์
เครื่องสแกนเลเซอร์ 3 มิติสามารถสแกนวัตถุได้อย่างแม่นยำ คุณสมบัติของออบเจ็กต์นั้นชัดเจนและจดจำได้ง่าย ส่วนต่างๆ นั้นง่ายต่อการพิมพ์ 3 มิติโดยใช้ซอฟต์แวร์สไลซ์ เช่น Repetier ภาพด้านบนแสดงตัวอย่างการสแกนชิ้นไม้และเป็ดยาง
หนึ่งในการค้นพบและความสำเร็จที่ยิ่งใหญ่ที่สุดที่ฉันค้นพบระหว่างการทดสอบคือความสม่ำเสมอของอุปกรณ์ ตลอดการทดลองใช้วัตถุเดียวกันหลายครั้ง เครื่องสแกนสามารถสร้างไฟล์.obj ที่มีความคล้ายคลึงกันมากในแต่ละครั้ง แม้ว่าเราจะเปลี่ยนตำแหน่งของวัตถุเล็กน้อยก็ตาม ตามที่เห็นในการสแกนแยกกันทั้งสาม ภาพจะดูคล้ายกันมาก โดยเก็บรายละเอียดเหมือนกันและมีรายละเอียดเท่ากัน โดยรวมแล้วฉันรู้สึกประทับใจกับความสม่ำเสมอและความทนทานของระบบของเรามาก
ตัวแปรหนึ่งที่ฉันปรับแต่งได้คือความละเอียดของการสแกน เนื่องจากสเต็ปเปอร์มี 400 ขั้น ฉันสามารถเลือกได้ว่าแต่ละ ΔΘ จะใหญ่แค่ไหนเพื่อกำหนดความละเอียดเชิงมุม โดยค่าเริ่มต้น ฉันตั้งค่าความละเอียดเชิงมุมไว้ที่ 20 รอบ ซึ่งหมายความว่าแต่ละเฟรม มอเตอร์จะหมุน 20 ขั้น (400/20 = 20) ตัวเลือกนี้ถูกเลือกโดยคำนึงถึงเวลาเป็นหลัก - การสแกนด้วยวิธีนี้จะใช้เวลาประมาณ 45 วินาที อย่างไรก็ตาม ถ้าฉันต้องการการสแกนคุณภาพสูงกว่านี้มาก ฉันสามารถเพิ่มจำนวนการทำซ้ำได้มากถึง 400 ครั้ง ซึ่งจะทำให้มีจุดมากขึ้นในการสร้างแบบจำลองด้วย ทำให้การสแกนมีรายละเอียดมากขึ้น นอกจากความละเอียดเชิงมุมแล้ว ฉันยังสามารถปรับความละเอียดในแนวตั้ง หรือเลือกจำนวนจุดต่างๆ ที่ฉันเลือกสำรวจตามชิ้นเลเซอร์ได้อีกด้วย สำหรับความสนใจในเวลาใกล้เคียงกัน ฉันได้ตั้งค่าเริ่มต้นไว้ที่ 20 แต่ฉันสามารถเพิ่มเพื่อผลลัพธ์ที่ดีขึ้นได้ ในการเล่นกับพารามิเตอร์เหล่านี้ของความละเอียดเชิงมุมและความละเอียดเชิงพื้นที่ ฉันสามารถรวบรวมผลลัพธ์ของการสแกนต่างๆ ด้านล่างในรูปสุดท้าย ป้ายแต่ละป้ายถูกจัดรูปแบบให้มีความละเอียดเชิงมุม x ความละเอียดเชิงพื้นที่ ตามที่เห็นในการตั้งค่าการสแกนเริ่มต้น คุณสมบัติของเป็ดนั้นสามารถจดจำได้ แต่ไม่มีรายละเอียด อย่างไรก็ตาม เมื่อฉันเพิ่มความละเอียด คุณสมบัติที่แม่นยำของตัวเป็ดก็เริ่มแสดงออกมา ซึ่งรวมถึงตา จะงอยปาก หาง และปีกบนเป็ด ภาพความละเอียดสูงสุดใช้เวลาประมาณ 5 นาทีในการสแกน การได้เห็นความละเอียดที่ทำได้สูงนี้เป็นความสำเร็จที่ยิ่งใหญ่มาก
ข้อจำกัด
แม้ว่าโครงการจะประสบผลสำเร็จ แต่ก็ยังมีข้อจำกัดบางประการในการออกแบบและการใช้งาน การใช้เลเซอร์ทำให้เกิดปัญหามากมายเกี่ยวกับการกระจายแสง วัตถุหลายชิ้นที่ฉันพยายามสแกนที่โปร่งแสง เป็นมันเงา หรือมืดมากได้รับการพิสูจน์ว่ามีปัญหากับการสะท้อนแสงจากพื้นผิว หากวัตถุโปร่งแสง แสงจะถูกดูดกลืนและกระจายตัว ทำให้อ่านชิ้นที่มีเสียงดังมาก ในวัตถุที่แวววาวและมืด แสงอาจถูกสะท้อนหรือถูกดูดกลืนจนยากที่จะหยิบขึ้นมา ยิ่งไปกว่านั้น เนื่องจากฉันใช้กล้องเพื่อจับภาพคุณสมบัติของวัตถุ การตรวจจับของมันถูกจำกัดด้วยแนวสายตา ซึ่งหมายความว่าวัตถุเว้าและมุมแหลมมักจะถูกส่วนอื่นๆ ของวัตถุบดบัง นี่แสดงให้เห็นในตัวอย่างเป็ดยางของเรา เนื่องจากบางครั้งหางจะสูญเสียความโค้งในการสแกน กล้องสามารถตรวจจับได้เฉพาะโครงสร้างพื้นผิวเท่านั้น ซึ่งหมายความว่าไม่สามารถจับภาพรูหรือรูปทรงภายในได้ อย่างไรก็ตาม นี่เป็นปัญหาทั่วไปที่โซลูชันการสแกนอื่นๆ ก็มีเช่นกัน
ขั้นตอนถัดไป
แม้ว่าฉันจะพอใจกับผลลัพธ์ของโครงการของเรา แต่ก็มีบางสิ่งที่สามารถนำมาใช้เพื่อทำให้ดีขึ้นได้ สำหรับผู้เริ่มต้น ในสถานะปัจจุบัน ความละเอียดการสแกนสามารถเปลี่ยนแปลงได้โดยการเปลี่ยนตัวแปรความละเอียดแบบฮาร์ดโค้ดในโค้ดของเราเท่านั้น ในการทำให้โปรเจ็กต์ฝังตัวมากขึ้น อาจมีโพเทนชิออมิเตอร์ความละเอียดรวมอยู่ด้วย เพื่อให้ผู้ใช้สามารถเปลี่ยนความละเอียดได้โดยไม่ต้องเสียบจอภาพและคีย์บอร์ดเข้ากับเครื่องสแกนนอกจากนี้ เครื่องสแกนยังสร้างภาพที่บางครั้งอาจดูขรุขระ ในการแก้ไขปัญหานี้ สามารถใช้เทคนิคการปรับตาข่ายให้เรียบเพื่อขจัดสิ่งผิดปกติและมุมที่รุนแรง สุดท้ายนี้ ฉันพบว่าพิกัดพิกเซลไม่เหมาะกับโลกแห่งความเป็นจริง ตาข่ายที่ฉันสร้างนั้นใหญ่กว่าวัตถุจริง 6 ถึง 7 เท่า ในอนาคตจะเป็นประโยชน์หากใช้วิธีปรับขนาดตาข่ายเพื่อให้มีขนาดที่แม่นยำยิ่งขึ้นกับขนาดจริงของวัตถุ
ขั้นตอนที่ 9: ทรัพยากร
ฉันได้รวมโค้ด ไฟล์ STL สำหรับการพิมพ์ และไฟล์ DXF สำหรับการตัดทั่วทั้งโปรเจ็กต์
รางวัลที่หนึ่งในการประกวด Raspberry Pi 2020
แนะนำ:
LED Cylon Scooter - 80s Larson Scanner: 5 ขั้นตอน (พร้อมรูปภาพ)
LED Cylon Scooter - 80s Larson Scanner: โปรเจ็กต์นี้เป็นการอัปเกรดยุค 80 เป็นสกู๊ตเตอร์ยุค 80 มาก ฉันกำลังวางแถบไฟ LED ไว้ที่กระจังหน้าของ Honda Elite ของแฟนหนุ่ม Smokey เพื่อสร้างเอฟเฟกต์แอนิเมชั่นเครื่องสแกนลาร์สันในขณะที่สอนวิธีการทำ ประสาน วงจรและรหัสถูกรีมิกซ์จาก
IPhone Scanner: 3 ขั้นตอน (พร้อมรูปภาพ)
IPhone Scanner: ฉันจดบันทึกจำนวนมากและจำเป็นต้องสแกนอย่างรวดเร็วเพื่อให้คุณสามารถปรึกษาออนไลน์ได้ เครื่องสแกนใด ๆ ที่ช้าเกินไปที่จะแปลงเป็นดิจิทัลหลายร้อยหน้าของโมลสกินของฉัน การถ่ายภาพที่ดีเป็นทางออกที่ดี ฉันคิดว่าฉันจะใช้ iPhone เพื่อจุดประสงค์นี้
Ciclop 3d Scanner My Way ทีละขั้นตอน: 16 ขั้นตอน (พร้อมรูปภาพ)
Ciclop 3d Scanner My Way ทีละขั้นตอน: สวัสดีทุกคน ฉันจะมาทำความรู้จักกับเครื่องสแกน Ciclop 3D ที่มีชื่อเสียง ทุกขั้นตอนที่อธิบายอย่างดีเกี่ยวกับโปรเจ็กต์ดั้งเดิมนั้นไม่มีอยู่จริง ฉันได้แก้ไขบางอย่างเพื่อทำให้กระบวนการง่ายขึ้นก่อน ฉันพิมพ์ฐานและกว่าฉันจะปรับ PCB ใหม่ แต่ไปต่อ
Desktop CT และ 3D Scanner พร้อม Arduino: 12 ขั้นตอน (พร้อมรูปภาพ)
Desktop CT และ 3D Scanner ด้วย Arduino: การตรวจเอกซเรย์คอมพิวเตอร์ (CT) หรือการตรวจเอกซเรย์คอมพิวเตอร์ (CAT) มักเกี่ยวข้องกับการถ่ายภาพร่างกายเพราะช่วยให้แพทย์สามารถมองเห็นโครงสร้างทางกายวิภาคภายในผู้ป่วยได้โดยไม่ต้องทำศัลยกรรมใดๆ เพื่อสร้างภาพภายในมนุษย์ข
3D Body Scanner โดยใช้กล้อง Raspberry Pi: 8 ขั้นตอน (พร้อมรูปภาพ)
เครื่องสแกนร่างกาย 3 มิติโดยใช้กล้อง Raspberry Pi: สแกนเนอร์ 3 มิตินี้เป็นโครงการความร่วมมือที่ BuildBrighton Makerspace โดยมีเป้าหมายเพื่อทำให้เทคโนโลยีดิจิทัลมีราคาไม่แพงสำหรับกลุ่มชุมชน มีการใช้เครื่องสแกนในอุตสาหกรรมแฟชั่น เพื่อปรับแต่งการออกแบบเสื้อผ้า ในอุตสาหกรรมเกมสำหรับ