สารบัญ:
- ขั้นตอนที่ 1: จัดหาชิ้นส่วนและวัสดุที่จำเป็น
- ขั้นตอนที่ 2: การกำหนดค่ากล้องและตัวนับ Geiger-Muller
- ขั้นตอนที่ 3: เชื่อมต่อกับ Roomba ของคุณและสร้างรหัสเซ็นเซอร์วัดแสง
- ขั้นตอนที่ 4: สร้างรหัสบัมเปอร์
- ขั้นตอนที่ 5: สร้างรหัสเพื่ออ่านหน้าจอตัวนับ ตีความและถอยห่างจากแหล่งที่มา
- ขั้นตอนที่ 6: สร้างรหัส Cliff Sensor
- ขั้นตอนที่ 7: บทสรุป
วีดีโอ: RADbot: 7 ขั้นตอน
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:05
โครงการโดย Jackson Breakell, Tyler McCubbins และ Jakob Thaler สำหรับ EF 230
บนดาวอังคาร นักบินอวกาศจะต้องเผชิญกับอันตรายต่างๆ ตั้งแต่อุณหภูมิสุดขั้วไปจนถึงพายุฝุ่น อย่างไรก็ตาม ปัจจัยหนึ่งที่มักถูกมองข้ามคืออันตรายจากไอโซโทปรังสีที่ทรงพลังซึ่งอาศัยอยู่บนพื้นผิวของดาวเคราะห์ RADbot ให้ความช่วยเหลือในการสำรวจนักบินอวกาศบนพื้นผิวดาวอังคารโดยระบุตัวอย่างหินที่มีกิจกรรมสูงขณะเดินทาง และยังมีคุณสมบัติด้านความปลอดภัยที่ตั้งโปรแกรมไว้ซึ่งใช้เซ็นเซอร์ตรวจจับหน้าผา เซ็นเซอร์วัดแสง เซ็นเซอร์กันชน และกล้องเพื่อป้องกันไม่ให้หุ่นยนต์เกิดความเสียหาย บนภูมิประเทศดาวอังคารที่ไม่ให้อภัย นอกจากการเตือนนักบินอวกาศถึงอันตรายจากกัมมันตภาพรังสีที่อาจเกิดขึ้นบนพื้นผิวแล้ว คุณลักษณะตำแหน่งตัวอย่างกัมมันตภาพรังสีของหุ่นยนต์ยังสามารถนำมาใช้เป็นเครื่องมือในการระบุพื้นที่ที่สามารถกักเก็บยูเรเนียมและแอคติไนด์อื่นๆ จำนวนมากได้ นักบินอวกาศสามารถขุดองค์ประกอบเหล่านี้ เสริมคุณค่าให้เพียงพอ และใช้ในเครื่องปฏิกรณ์นิวเคลียร์และเครื่องกำเนิดเทอร์โมอิเล็กทริก ซึ่งสามารถช่วยให้พลังงานแก่อาณานิคมที่ดำรงอยู่ได้ด้วยตนเองอย่างถาวรบนดาวเคราะห์ดวงนี้
การออกแบบของเราแตกต่างจากรถแลนด์โรเวอร์ Mars ทั่วไปและมีราคาที่สมเหตุสมผล หากคุณมีเงินทุนและความปรารถนา คุณสามารถสร้างมันขึ้นมาเองได้โดยทำตามคำแนะนำนี้ โปรดอ่านเพื่อเรียนรู้วิธีสร้าง RADbot ของคุณเอง
ขั้นตอนที่ 1: จัดหาชิ้นส่วนและวัสดุที่จำเป็น
สิ่งที่คุณจะต้องเริ่มต้น (ภาพที่วางไว้ตามลำดับ)
1. Roomba หนึ่งเครื่อง (รุ่นใหม่กว่าทุกรุ่น)
2. เคาน์เตอร์ Geiger-Mueller หนึ่งตัว
3. ราสเบอร์รี่หนึ่งตัว
4. กล้องบอร์ดหนึ่งตัวพร้อมเต้ารับ USB
5. สายไมโคร USB เป็น USB หนึ่งเส้น
6. สาย USB เป็น USB หนึ่งเส้น
7. ตัวอย่างกัมมันตภาพรังสีหนึ่งตัวอย่างที่มีกิจกรรมเพียงพอ (~5μSv หรือสูงกว่า)
8. คอมพิวเตอร์หนึ่งเครื่องที่ติดตั้ง Matlab ไว้
9. กาว (ควรใช้เทปพันสายไฟเพื่อให้สามารถถอดออกได้ง่าย)
ขั้นตอนที่ 2: การกำหนดค่ากล้องและตัวนับ Geiger-Muller
เมื่อคุณมีวัสดุที่จำเป็นทั้งหมดในการสร้าง RADbot แล้ว เราจะเริ่มโดยเพียงแค่วางกล้องเพื่อให้สามารถอ่านกิจกรรมบนเคาน์เตอร์ได้ วางเคาน์เตอร์ Geiger-Muller ให้ใกล้กับส่วนท้ายของ Roomba มากที่สุด และตรวจสอบให้แน่ใจว่าเซ็นเซอร์ไม่ถูกปิดกั้น ยึดเคาน์เตอร์ให้แน่นด้วยกาวที่คุณเลือก แล้วดำเนินการติดตั้งกล้องให้หันเข้าหากัน วางกล้องไว้ใกล้กับจอแสดงผลของเคาน์เตอร์ให้มากที่สุดเพื่อป้องกันไม่ให้อินพุตจากภายนอกส่งผลกระทบต่อโปรแกรม และยึดให้เข้าที่เมื่อคุณรู้สึกสบายใจ เราขอแนะนำให้คุณบันทึกการรักษาความปลอดภัยของกล้องไว้เป็นครั้งสุดท้าย เนื่องจากเมื่อโค้ดของคุณเสร็จสิ้น คุณสามารถแสดงภาพจากกล้องไปยังคอมพิวเตอร์ของคุณได้ ซึ่งทำให้คุณสามารถจัดตำแหน่งกล้องตามขอบเขตการมองเห็นได้ เมื่อทั้งกล้องและตัวนับเข้าที่แล้ว ให้เสียบกล้องเข้ากับอินพุต USB ของ Raspberry Pi ด้วยสาย USB กับ USB แล้วเสียบ Raspberry Pi เข้ากับ Roomba ด้วยสายไมโคร USB กับ USB
ขั้นตอนที่ 3: เชื่อมต่อกับ Roomba ของคุณและสร้างรหัสเซ็นเซอร์วัดแสง
ขั้นแรก ดาวน์โหลดกล่องเครื่องมือ Roomba ของเว็บไซต์ EF 230 และอย่าลืมวางลงในโฟลเดอร์ที่ระบุ ในการเชื่อมต่อกับ Roomba ของคุณ เพียงอ้างอิงสติกเกอร์ที่ติดอยู่กับ Raspberry Pi แล้วป้อน "r=roomba(x)" ลงในหน้าต่างคำสั่ง โดยไม่ต้องใส่เครื่องหมายคำพูด และโดยที่ x หมายถึงหมายเลขของ Roomba Roomba ควรเล่นเพลง และปุ่มทำความสะอาดควรแสดงวงแหวนสีเขียวรอบๆ เริ่มรหัสของคุณด้วยคำสั่ง "ในขณะที่" และอ้างอิงถึงเซ็นเซอร์วัดแสงตามที่ปรากฏในรายการเซ็นเซอร์ เปิดรายการเซ็นเซอร์โดยพิมพ์ "r.testSensors" ในหน้าต่างคำสั่ง
ตามสีของวัตถุของเรา ซึ่งกำหนดจำนวนแสงที่สะท้อน กำหนดข้อกำหนดสำหรับคำสั่ง while ที่จะดำเนินการเป็นฟังก์ชัน > ในกรณีของเรา เราตั้งค่าเซ็นเซอร์ไฟหน้าให้รันโค้ดในคำสั่ง while หากการอ่านบนเซ็นเซอร์ไฟตรงกลางด้านซ้ายหรือด้านขวามีค่า >25 สำหรับคำสั่งเรียกทำงาน ให้ตั้งค่าความเร็วของ Roomba ให้ช้าลงโดยพิมพ์ "r.setDriveVelocity(x, y)" โดยที่ x และ y คือความเร็วของล้อซ้ายและขวาตามลำดับ ใส่คำสั่ง "อื่น" เพื่อให้ Roomba ไม่ช้าลงสำหรับค่าที่ไม่ได้ระบุ และป้อนคำสั่ง set drive velocity อีกครั้ง ยกเว้นด้วยความเร็วที่ต่างกัน สิ้นสุดคำสั่ง while ด้วย "end" ส่วนรหัสนี้จะทำให้ Roomba เข้าใกล้วัตถุ และช้าลงเมื่อถึงช่วงที่กำหนดเพื่อลดผลกระทบ
แนบเป็นภาพหน้าจอของรหัสของเรา แต่อย่าลังเลที่จะแก้ไขเพื่อให้เหมาะกับพารามิเตอร์ภารกิจของคุณมากที่สุด
ขั้นตอนที่ 4: สร้างรหัสบัมเปอร์
ในขณะที่ Roomba ทำงานช้าลง มันจะลดผลกระทบที่มีต่อวัตถุ แม้ว่าจะไม่มากจนไม่กระตุ้นกันชนทางกายภาพก็ตาม สำหรับโค้ดส่วนนี้ ให้เริ่มต้นด้วยลูป "while" อีกครั้ง และตั้งค่านิพจน์ให้เป็นจริง สำหรับคำสั่ง ให้ตั้งค่าตัวแปร T เท่ากับเอาต์พุตของบัมเปอร์ ไม่ว่าจะเป็น 0 หรือ 1 สำหรับค่าเท็จและค่าจริง คุณสามารถใช้ "T=r.getBumpers" สำหรับสิ่งนี้ T จะแสดงผลเป็นโครงสร้าง ป้อนคำสั่ง "if" และตั้งค่านิพจน์สำหรับโครงสร้างพื้นฐาน T.front เท่ากับ 1 และตั้งค่าคำสั่งให้ตั้งค่าความเร็วของไดรฟ์ที่ 0 โดยใช้ "r.setDriveVelocity(x, y)" หรือ "r.stop ". ป้อน "ตัวแบ่ง" เพื่อให้ Roomba สามารถเคลื่อนที่ได้หลังจากตรงตามเงื่อนไขในรหัสถัดไป เพิ่ม "อื่น" และตั้งค่าคำสั่งเพื่อตั้งค่าความเร็วของไดรฟ์เป็นความเร็วปกติของ Roomba
แนบเป็นภาพหน้าจอของรหัสของเรา แต่อย่าลังเลที่จะแก้ไขเพื่อให้เหมาะกับพารามิเตอร์ภารกิจของคุณมากที่สุด
ขั้นตอนที่ 5: สร้างรหัสเพื่ออ่านหน้าจอตัวนับ ตีความและถอยห่างจากแหล่งที่มา
หัวใจของโครงการของเราคือเคาน์เตอร์ Geiger-Muller และส่วนรหัสต่อไปนี้ใช้เพื่อกำหนดว่าข้อมูลบนหน้าจอหมายถึงอะไรโดยใช้กล้อง เนื่องจากหน้าจอของตัวนับของเราเปลี่ยนสีตามกิจกรรมของแหล่งที่มา เราจะตั้งค่ากล้องให้ตีความสีของหน้าจอ เริ่มโค้ดของคุณโดยตั้งค่าตัวแปรให้เท่ากับคำสั่ง "r.getImage" ตัวแปรจะมีอาร์เรย์ 3 มิติของค่าสีของภาพที่ถ่ายเป็นสีแดง สีเขียว และสีน้ำเงิน ตั้งค่าตัวแปรให้เท่ากับค่าเฉลี่ยของเมทริกซ์สีตามลำดับโดยใช้คำสั่ง "mean(mean(img1(:,:, x)))" โดยที่ x เป็นจำนวนเต็มตั้งแต่ 1 ถึง 3 1, 2 และ 3 แทนสีแดง สีเขียว และ สีฟ้าตามลำดับ เช่นเดียวกับคำสั่งทั้งหมดที่อ้างถึง อย่าใส่เครื่องหมายคำพูด
ให้โปรแกรมหยุดชั่วคราวเป็นเวลา 20 วินาทีโดยใช้ "pause(20)" เพื่อให้ตัวนับสามารถอ่านตัวอย่างได้อย่างแม่นยำ จากนั้นจึงเริ่มคำสั่ง "if" เรามี Roomba ส่งเสียงบี๊บหลายครั้งโดยใช้ "r.beep" ก่อนที่จะแสดงเมนูที่มีข้อความว่า "พบไอโซโทปรังสี! สิ่งนี้สามารถทำได้ด้วยคำสั่ง "waitfor(helpdlg({'texthere'})" หลังจากคลิกตกลง Roomba จะยังคงทำตามโค้ดที่เหลือในคำสั่ง "if" ต่อไป ให้ Roomba ขับรถไปรอบๆ ตัวอย่างโดยใช้ การรวมกันของคำสั่ง "r.moveDistance" และ "r.turnAngle" ตรวจสอบให้แน่ใจว่าได้สิ้นสุดคำสั่ง if ด้วย "end"
แนบเป็นภาพหน้าจอของรหัสของเรา แต่อย่าลังเลที่จะแก้ไขเพื่อให้เหมาะกับพารามิเตอร์ภารกิจของคุณมากที่สุด
ขั้นตอนที่ 6: สร้างรหัส Cliff Sensor
ในการสร้างรหัสเพื่อใช้งานเซ็นเซอร์ตรวจจับหน้าผาในตัวของ Roomba ให้เริ่มด้วยลูป "while" และตั้งค่านิพจน์ให้เป็นจริง ตั้งค่าตัวแปรให้เท่ากับ "r.getCliffSensors" ซึ่งจะส่งผลให้มีโครงสร้าง เริ่มคำสั่ง "if" และตั้งค่าตัวแปร "X.leftFront" และ "X.rightFront" จากโครงสร้างให้มากกว่าค่าที่กำหนดไว้ล่วงหน้า โดยที่ "X" คือตัวแปรที่คุณเลือกคำสั่ง "r.getCliffSensors" เป็น จะเท่ากับ ในกรณีของเรา เราใช้ 1,000 อันเนื่องจากแผ่นกระดาษสีขาวถูกใช้แทนหน้าผา และเมื่อเซ็นเซอร์เข้าใกล้ กระดาษ ค่าก็เพิ่มขึ้นถึง 1,000 กว่า เพื่อให้แน่ใจว่าโค้ดจะทำงานเมื่อตรวจพบหน้าผาเท่านั้น. เพิ่มคำสั่ง "break" หลังจากนั้นใส่คำสั่ง "else" สำหรับคำสั่ง "อื่น" ซึ่งจะดำเนินการหากไม่มีการตรวจพบหน้าผา ให้ตั้งค่าความเร็วของไดรฟ์เป็นความเร็วปกติสำหรับแต่ละล้อ หาก Roomba ตรวจพบหน้าผา "ตัวแบ่ง" จะถูกดำเนินการ จากนั้นโค้ดที่อยู่นอกลูป while จะถูกดำเนินการ หลังจากวาง "end" สำหรับลูป "if" และ "while" แล้ว ให้ตั้งค่า Roomba ให้เคลื่อนที่ถอยหลังโดยใช้คำสั่ง move distance เพื่อเตือนนักบินอวกาศว่ามีหน้าผาอยู่ใกล้ ๆ ให้ตั้งค่าความเร็วขับเคลื่อนของแต่ละล้อ x และ y ในคำสั่งความเร็วของไดรฟ์เป็น a และ -a โดยที่ a เป็นจำนวนจริง สิ่งนี้จะทำให้ Roomba หมุนเพื่อเตือนนักบินอวกาศไปที่หน้าผา
แนบเป็นภาพหน้าจอของรหัสของเรา แต่อย่าลังเลที่จะแก้ไขเพื่อให้เหมาะกับพารามิเตอร์ภารกิจของคุณมากที่สุด
ขั้นตอนที่ 7: บทสรุป
เป้าหมายสูงสุดของ RADbot บนดาวอังคารคือการช่วยเหลือนักบินอวกาศในการสำรวจและการตั้งอาณานิคมของดาวเคราะห์สีแดง ด้วยการระบุตัวอย่างกัมมันตภาพรังสีบนพื้นผิว ความหวังของเราคือหุ่นยนต์หรือรถแลนด์โรเวอร์ ในกรณีนี้ สามารถรักษาความปลอดภัยให้กับนักบินอวกาศได้อย่างแท้จริงและช่วยระบุแหล่งพลังงานสำหรับฐานของพวกเขา หลังจากทำตามขั้นตอนเหล่านี้ทั้งหมดแล้ว และอาจมีการลองผิดลองถูก RADbot ของคุณควรพร้อมใช้งาน วางตัวอย่างกัมมันตภาพรังสีไว้ที่ใดที่หนึ่งในพื้นที่ทดสอบของคุณ รันโค้ดของคุณ และดูยานสำรวจทำในสิ่งที่ได้รับการออกแบบมา สนุกกับ RADbot ของคุณ!
-ทีม EF230 RADbot
แนะนำ:
การออกแบบเกมในการสะบัดใน 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 ซึ่งออกแบบมาเพื่อสร้างงานง่ายๆ ในรูปแบบที่ซับซ้อน งานของโครงการนี้คือการจับสบู่ก้อนหนึ่ง