สารบัญ:
2025 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2025-01-23 15:12
สวัสดี วันนี้เราเริ่มขั้นตอนต่อไปของการปรับปรุงความสามารถของ Wallace โดยเฉพาะอย่างยิ่ง เรากำลังพยายามปรับปรุงความสามารถในการตรวจจับและหลีกเลี่ยงสิ่งกีดขวางโดยใช้เซ็นเซอร์ระยะอินฟราเรด และยังใช้ประโยชน์จากความสามารถของตัวควบคุมมอเตอร์ Roboclaw ในการตรวจสอบกระแสไฟและเปลี่ยนสิ่งนั้นเป็น "เซ็นเซอร์" เสมือน (ซอฟต์แวร์) สุดท้าย เราจะมาดูวิธีการนำทางโดยไม่ใช้ SLAM (ตำแหน่งและการทำแผนที่พร้อมกัน) (สำหรับตอนนี้) เนื่องจากหุ่นยนต์ยังไม่มีเซ็นเซอร์ IMU (หน่วยวัดความเฉื่อย) หรือ ToF (เวลาบิน)
โดยการนำทาง ในขั้นต้นจะเป็นเพียงสองเป้าหมายหลัก:
- หลีกเลี่ยงอุปสรรค
- รับรู้เมื่อติดอยู่ที่ใดที่หนึ่งและไม่คืบหน้า ("คืบหน้า" หมายถึง เคลื่อนไปข้างหน้าในระยะทางที่มีความหมาย)
- เป้าหมายที่ 3 ที่เป็นไปได้คือพยายามตั้งตัวเองให้ชิดกับกำแพง
โปรเจ็กต์นี้เริ่มต้นด้วยชุดหุ่นยนต์และการเคลื่อนไหวขั้นพื้นฐานในการทำงานโดยใช้แป้นพิมพ์และการเชื่อมต่อ ssh
ขั้นตอนที่สองคือการเพิ่มวงจรรองรับที่เพียงพอเพื่อเตรียมการเพิ่มเติมสำหรับเซ็นเซอร์จำนวนมาก
ในคำแนะนำก่อนหน้านี้ เราได้เพิ่มเซ็นเซอร์เสียง HCSR04 หลายตัว และตอนนี้หุ่นยนต์สามารถหลีกเลี่ยงสิ่งกีดขวางขณะเคลื่อนที่ไปรอบๆ อพาร์ทเมนท์ได้
แม้ว่าจะใช้งานได้ดีในห้องครัวและโถงทางเดินที่มีพื้นผิวเรียบและแข็งแรง แต่เมื่อเข้าใกล้ห้องรับประทานอาหารจะทำให้ตาบอดโดยสิ้นเชิง ทำให้ไม่สามารถ "มองเห็น" ขาโต๊ะและเก้าอี้ได้
การปรับปรุงอย่างหนึ่งคือการติดตามกระแสมอเตอร์ทั่วไป และหากค่ากระโดด แสดงว่าหุ่นยนต์ต้องชนอะไรบางอย่าง เป็น "แผน B" ที่ดีหรือแม้แต่ C แต่นั่นไม่ได้ช่วยนำทางไปรอบ ๆ พื้นที่รับประทานอาหารจริงๆ
(อัปเดต: จริงๆ แล้ว สำหรับตอนนี้ การตรวจสอบปัจจุบันคือแผน A เมื่อย้อนกลับ เนื่องจากฉันได้ถอดและเซ็นเซอร์จากด้านหลังออกชั่วคราว)
วิดีโอสำหรับส่วนนี้ถือเป็นขั้นตอนสุดท้ายของเซ็นเซอร์การหลีกเลี่ยงสิ่งกีดขวาง
สิ่งที่คุณเห็นในวิดีโอคือเซ็นเซอร์เสียง HCSR04 ด้านหน้าหกตัว และเซ็นเซอร์ Sharp IR สองตัว เซ็นเซอร์ IR ไม่ได้เข้ามามีบทบาทมากนักในวิดีโอ จุดแข็งของพวกเขาคือส่วนใหญ่เมื่อหุ่นยนต์พบว่าตัวเองอยู่ในพื้นที่รับประทานอาหารโดยหันขาโต๊ะและเก้าอี้
นอกจากเซ็นเซอร์แล้ว จอภาพปัจจุบันยังเข้ามามีบทบาทโดยเฉพาะในระหว่างการถอยกลับ เผื่อในกรณีที่มีการกระแทกบางอย่าง
ในที่สุด มันใช้ประวัติของการเคลื่อนไหว 100 ครั้งสุดท้ายและการวิเคราะห์พื้นฐานเพื่อตอบคำถามหนึ่งข้อ:
“เมื่อเร็ว ๆ นี้มีความก้าวหน้าจริง ๆ (หรือมันติดอยู่ในการเต้นซ้ำ ๆ) หรือไม่?
ดังนั้นในวิดีโอ เมื่อคุณเห็นการเดินหน้า-ถอยหลังซ้ำแล้วซ้ำเล่า มันกลับกลายเป็น หมายความว่ามันรู้จักรูปแบบการเดินหน้า-ถอยหลัง จึงลองอย่างอื่น
เป้าหมายที่ตั้งโปรแกรมไว้เพียงอย่างเดียวของซอฟต์แวร์เวอร์ชันนี้คือพยายามทำให้ก้าวหน้าอย่างต่อเนื่อง และพยายามหลีกเลี่ยงอุปสรรค
ขั้นตอนที่ 1: เพิ่มวงจรรองรับ (MCP3008)
ก่อนที่เราจะสามารถเพิ่มเซ็นเซอร์ IR ได้ เราจำเป็นต้องมีวงจรอินเทอร์เฟซระหว่างพวกมันกับ Raspberry Pi
เราจะเพิ่มตัวแปลงอนาล็อกเป็นดิจิตอล MCP3008 มีแหล่งข้อมูลออนไลน์มากมายในการเชื่อมต่อชิปนี้กับ Raspberry Pi ดังนั้นฉันจะไม่พูดถึงเรื่องนี้มากนัก
โดยพื้นฐานแล้วเรามีทางเลือก หากรุ่นของเซ็นเซอร์ IR ทำงานที่ 3V MCP3008 ก็สามารถทำได้ และเราสามารถเชื่อมต่อกับ Raspberry ได้โดยตรง
[3V เซ็นเซอร์ IR] - [MCP3008] - [Raspberrry Pi]
ในกรณีของฉัน ฉันใช้ไฟ 5V เป็นส่วนใหญ่ นั่นหมายถึงตัวเปลี่ยนระดับแบบสองทิศทาง
[เซ็นเซอร์ IR 5V] -- [MCP3008] -- [บัสสองทิศทาง 5V-to-3V] -- [Raspberry Pi]
หมายเหตุ: มีเพียงหนึ่งสัญญาณเอาต์พุตจากเซ็นเซอร์ IR โดยจะตรงไปยังหนึ่งในสายสัญญาณอนาล็อกอินพุตของ MCP3008 จาก MCP3008 มี 4 สายข้อมูลที่เราจำเป็นต้องเชื่อมต่อ (ผ่านบัสสองทิศทาง) กับ Raspberry Pi
ในขณะนี้ หุ่นยนต์ของเราจะวิ่งโดยใช้เซ็นเซอร์ IR เพียงสองตัว แต่เราสามารถเพิ่มเข้าไปได้อย่างง่ายดาย MCP3008 แปดช่องสัญญาณอนาล็อก
ขั้นตอนที่ 2: ติดตั้งเซนเซอร์ IR
Sharp สร้างเซ็นเซอร์ IR ที่แตกต่างกันหลายตัว และมีช่วงและพื้นที่ครอบคลุมต่างกัน ฉันบังเอิญได้สั่งซื้อรุ่น GP2Y0A60SZLF โมเดลที่คุณเลือกจะส่งผลต่อตำแหน่งและการวางแนวของเซ็นเซอร์ โชคไม่ดีสำหรับฉัน ฉันไม่ได้ค้นคว้าจริงๆ ว่าจะรับเซ็นเซอร์ตัวใด มันเป็นการตัดสินใจที่ "ฉันจะได้รับในเวลาและราคาที่เหมาะสมจากแหล่งที่เชื่อถือได้มากกว่าที่พวกเขาเสนอ"
(อัปเดต: อย่างไรก็ตาม นั่นอาจไม่สำคัญ เนื่องจากเซ็นเซอร์เหล่านี้ดูเหมือนจะสับสนกับแสงแวดล้อมภายในรถ ฉันยังคงสำรวจปัญหานั้นอยู่)
มีอย่างน้อยสามวิธีในการติดตั้งเซ็นเซอร์เหล่านี้บนหุ่นยนต์
- วางไว้ในตำแหน่งคงที่ ด้านหน้า โดยหันออกจากกันเล็กน้อย
- วางบนเซอร์โวที่ด้านหน้า โดยหันออกจากกันเล็กน้อย
- วางไว้ในตำแหน่งคงที่ที่ด้านหน้า แต่ที่มุมซ้ายสุดและขวาสุดสุด ทำมุมเข้าหากัน
ในการเปรียบเทียบตัวเลือก #1 กับตัวเลือก #3 ฉันคิดว่า #3 จะครอบคลุมพื้นที่การชนกันมากขึ้น หากคุณดูภาพ ตัวเลือก #3 สามารถทำได้ไม่เพียงเพื่อให้ช่องเซ็นเซอร์ทับซ้อนกันเท่านั้น แต่ยังครอบคลุมพื้นที่ตรงกลางและเกินความกว้างภายนอกของหุ่นยนต์ด้วย
ด้วยตัวเลือก #1 ยิ่งเซ็นเซอร์ทำมุมจากกันมากเท่าใด จุดบอดตรงกลางก็จะยิ่งมากขึ้นเท่านั้น
เราสามารถทำได้ #2 (ฉันเพิ่มรูปภาพด้วยเซอร์โวเป็นไปได้) และให้พวกเขาทำการกวาด และเห็นได้ชัดว่าสิ่งนี้สามารถครอบคลุมพื้นที่ได้มากที่สุด อย่างไรก็ตาม ฉันต้องการชะลอการใช้เซอร์โวให้นานที่สุด ด้วยเหตุผลอย่างน้อยสองประการ:
- เราจะใช้หนึ่งในช่องทางการสื่อสาร PWM บน Raspberry Pi (มันเป็นไปได้ที่จะปรับปรุงสิ่งนี้ แต่ยังคง…)
- การดึงกระแสด้วยเซอร์โวอาจมีนัยสำคัญ
- มันเพิ่มมากขึ้นในฮาร์ดแวร์และซอฟต์แวร์
ฉันต้องการปล่อยให้ตัวเลือกเซอร์โวไว้ใช้ในภายหลังเมื่อเพิ่มเซ็นเซอร์ที่สำคัญกว่า เช่น เวลาของเที่ยวบิน (ToF) หรือบางทีอาจเป็นกล้อง
มีข้อได้เปรียบที่เป็นไปได้อีกอย่างหนึ่งกับตัวเลือก #2 ที่ไม่สามารถใช้ได้กับอีกสองตัวเลือก เซ็นเซอร์ IR เหล่านี้อาจทำให้สับสนได้ ขึ้นอยู่กับแสง อาจเป็นไปได้ว่าหุ่นยนต์ได้รับการอ่านของวัตถุที่ใกล้เข้ามาโดยที่ความจริงแล้วไม่มีวัตถุอยู่ใกล้ ด้วยตัวเลือก #3 เนื่องจากเขตข้อมูลของพวกมันสามารถทับซ้อนกันได้ เซ็นเซอร์ทั้งสองจึงสามารถลงทะเบียนวัตถุเดียวกันได้ (จากมุมที่ต่างกัน)
ดังนั้นเราจะเลือกตำแหน่ง #3
ขั้นตอนที่ 3: ถึงเวลาทดสอบ
หลังจากที่เราทำการเชื่อมต่อทั้งหมดระหว่าง Raspberry Pi, MCP3008 ADC และเซ็นเซอร์ IR ของ Sharp แล้ว ก็ถึงเวลาทดสอบ การทดสอบง่ายๆ เพื่อให้แน่ใจว่าระบบทำงานกับเซ็นเซอร์ใหม่
เช่นเดียวกับใน Instructables ก่อนหน้า ฉันใช้ไลบรารี wiringPi C ให้มากที่สุด ทำให้สิ่งต่าง ๆ ง่ายขึ้น สิ่งที่ไม่ชัดเจนนักจากการตรวจสอบเว็บไซต์ wirePi คือมีการสนับสนุนโดยตรงสำหรับ MCP3004/3008
แม้จะไม่มีสิ่งนั้น คุณสามารถใช้ส่วนขยาย SPI ได้ แต่ไม่จำเป็นต้อง หากคุณตรวจสอบที่เก็บ git ของ Gordon อย่างละเอียดสำหรับการเดินสายPi คุณจะพบรายการชิปที่รองรับ ซึ่งหนึ่งในนั้นมีไว้สำหรับ MCP3004/3008
ฉันตัดสินใจแนบโค้ดเป็นไฟล์เพราะไม่สามารถแสดงโค้ดได้อย่างถูกต้องในหน้านี้
ขั้นตอนที่ 4: เซ็นเซอร์เสมือน - AmpSensor
ยิ่งคุณให้หุ่นยนต์รับข้อมูลเกี่ยวกับโลกภายนอกได้หลากหลายวิธีมากเท่าไหร่ก็ยิ่งดีเท่านั้น
ปัจจุบันหุ่นยนต์มีเซ็นเซอร์โซนาร์อะคูสติก HCSR04 แปดตัว (ไม่ใช่จุดสนใจของคำแนะนำนี้) และตอนนี้มีเซ็นเซอร์ระยะ IR ของ Sharp สองตัว ตามที่ระบุไว้ก่อนหน้านี้ เราสามารถใช้ประโยชน์จากสิ่งอื่นได้: คุณลักษณะการตรวจจับกระแสมอเตอร์ของ Roboclaw
เราสามารถรวมการเรียกแบบสอบถามนั้นไปยังตัวควบคุมมอเตอร์ในคลาส C ++ และเรียกมันว่า AmpSensor
ด้วยการเพิ่ม "อัจฉริยะ" บางอย่างลงในซอฟต์แวร์ เราสามารถตรวจสอบและปรับการดึงกระแสโดยทั่วไประหว่างการเคลื่อนที่แบบตรง (ไปข้างหน้า ข้างหลัง) และการเคลื่อนที่แบบหมุนได้ (ซ้าย, ขวา) เมื่อเราทราบช่วงของแอมป์เหล่านั้นแล้ว เราก็สามารถเลือกค่าวิกฤตได้ ดังนั้นหาก AmpSensor ได้รับการอ่านค่ากระแสจากตัวควบคุมมอเตอร์ที่เกินค่านี้ เราจะรู้ว่ามอเตอร์อาจหยุดทำงาน และนั่นก็มักจะบ่งชี้ว่าหุ่นยนต์ชน เข้าไปในบางสิ่งบางอย่าง
หากเราเพิ่มความยืดหยุ่นให้กับซอฟต์แวร์ (args บรรทัดคำสั่ง และ/หรือการป้อนข้อมูลด้วยแป้นพิมพ์ระหว่างการทำงาน) เราก็สามารถเพิ่ม/ลดขีดจำกัด "วิกฤต-แอมป์" ได้ในขณะที่เราทดลองโดยปล่อยให้หุ่นยนต์เคลื่อนที่และชนวัตถุ ทั้งตรงเข้าหรือขณะหมุน
เนื่องจากส่วนการนำทางของซอฟต์แวร์ของเรารู้ทิศทางของการเคลื่อนไหว เราจึงสามารถใช้ข้อมูลทั้งหมดนั้นเพื่อหยุดการเคลื่อนไหว และพยายามย้อนกลับการเคลื่อนไหวในช่วงเวลาสั้นๆ ก่อนที่จะลองอย่างอื่น
ขั้นตอนที่ 5: การนำทาง
ขณะนี้หุ่นยนต์มีข้อ จำกัด ในการตอบรับในโลกแห่งความเป็นจริง มีเซ็นเซอร์ระยะใกล้ไม่กี่ตัวสำหรับการหลีกเลี่ยงสิ่งกีดขวาง และมีเทคนิคการถอยกลับในการตรวจสอบการดึงกระแสหากเซ็นเซอร์วัดระยะทางพลาดสิ่งกีดขวาง
มันไม่มีมอเตอร์ที่มีตัวเข้ารหัส และไม่มี IMU (หน่วยวัดแรงเฉื่อย) ซึ่งทำให้ยากขึ้นที่จะทราบว่ามีการเคลื่อนไหวหรือหมุนจริงๆ หรือไม่ และโดยมากน้อยเพียงใด
ในขณะที่เราสามารถระบุระยะทางด้วยเซ็นเซอร์ที่อยู่บนหุ่นยนต์ได้ แต่ขอบเขตการมองเห็นนั้นกว้างและคาดเดาไม่ได้ โซนาร์อะคูสติกอาจสะท้อนกลับไม่ถูกต้อง อินฟราเรดอาจสับสนกับแสงอื่นๆ หรือแม้แต่พื้นผิวสะท้อนแสงหลายแบบ ฉันไม่แน่ใจว่ามันคุ้มไหมที่จะลองติดตามการเปลี่ยนแปลงของระยะทางจริง ๆ เพื่อเป็นเทคนิคในการรู้ว่าหุ่นยนต์กำลังเคลื่อนที่หรือไม่ และเท่าไหร่ และไปในทิศทางใด
ฉันจงใจเลือกที่จะไม่ใช้ไมโครคอนโทรลเลอร์เช่น Arduino เพราะ ก) ฉันไม่ชอบมันเป็นสภาพแวดล้อม psuedo-C++ ข) และการพัฒนาที่มากเกินไปจะทำให้หน่วยความจำอ่านเขียน (?) เสื่อมลง และฉัน จะต้องมีคอมพิวเตอร์โฮสต์เพื่อพัฒนา (?) หรือบางทีฉันแค่เกิดขึ้นเหมือน Raspberry Pi
อย่างไรก็ตาม Pi ที่รัน Raspbian ไม่ใช่ OS แบบเรียลไทม์ ดังนั้นระหว่างความไม่เสถียรของเซ็นเซอร์เหล่านี้กับ OS ที่ไม่ได้อ่านทุกครั้ง ฉันรู้สึกว่าจุดประสงค์ของเซ็นเซอร์เหล่านี้เหมาะสำหรับการหลีกเลี่ยงสิ่งกีดขวางมากกว่า การวัดระยะทางจริง
วิธีการนั้นดูซับซ้อนและไม่มีประโยชน์มากนัก เมื่อเราสามารถใช้เซ็นเซอร์ ToF (เวลาของเที่ยวบิน) ที่ดีกว่า (ภายหลัง) เพื่อจุดประสงค์นั้น (SLAM)
แนวทางหนึ่งที่เราสามารถใช้ได้คือการติดตามว่าคำสั่งการเคลื่อนไหวใดที่ออกภายใน X วินาทีสุดท้ายหรือคำสั่ง
ตัวอย่างเช่น สมมติว่าหุ่นยนต์หันเข้าหามุมในแนวทแยงมุม เซ็นเซอร์ชุดหนึ่งบอกว่ามันอยู่ใกล้ผนังด้านหนึ่งมากเกินไป มันจึงหมุน แต่จากนั้นเซ็นเซอร์อีกชุดหนึ่งก็บอกว่าใกล้กับอีกผนังหนึ่งมากเกินไป มันจบลงด้วยการทำซ้ำรูปแบบจากด้านหนึ่งไปอีกด้านหนึ่ง
ตัวอย่างข้างต้นเป็นเพียงกรณีเดียวที่ง่ายมาก การเพิ่มความฉลาดบางอย่างอาจแค่ยกระดับรูปแบบซ้ำๆ ขึ้นไปอีกระดับ แต่หุ่นยนต์ยังคงติดอยู่ที่มุมห้อง
ตัวอย่าง แทนที่จะหมุนไปกลับเข้าที่ มันหมุนทางเดียว ถอยหลังชั่วขณะ (ซึ่งจะล้างตัวบ่งชี้ระยะทางวิกฤต) และแม้ว่ามันจะหมุนไปในทิศทางอื่น มันก็ยังคงเดินหน้าในมุมบางมุมกลับเข้ามุม ทำซ้ำรูปแบบที่ซับซ้อนมากขึ้นของสิ่งเดียวกันโดยพื้นฐานแล้ว
นั่นหมายความว่าเราสามารถใช้ประวัติคำสั่งได้จริงๆ และดูวิธีใช้ประโยชน์และใช้ข้อมูลนั้น
ฉันนึกถึงวิธีพื้นฐาน (พื้นฐาน) สองวิธีในการใช้ประวัติศาสตร์การเคลื่อนไหว
- สำหรับจำนวนการเคลื่อนไหว X สุดท้าย จะตรงกับรูปแบบ Y หรือไม่ ตัวอย่างง่ายๆ อาจเป็น (และสิ่งนี้เกิดขึ้น) "ไปข้างหน้า ย้อนกลับ ไปข้างหน้า ย้อนกลับ ….." ดังนั้นจึงมีฟังก์ชันการจับคู่ที่คืนค่า TRUE (พบรูปแบบ) หรือ FALSE (ไม่พบ) หากเป็น TRUE ในส่วนการนำทางของโปรแกรม ให้ลองใช้ลำดับการเคลื่อนไหวอื่น
- สำหรับจำนวนการเคลื่อนไหว X ล่าสุด มีการเคลื่อนที่ไปข้างหน้าแบบทั่วไปหรือแบบสุทธิ เราจะกำหนดได้อย่างไรว่าการเคลื่อนไหวไปข้างหน้าที่แท้จริงคืออะไร? การเปรียบเทียบง่ายๆ อย่างหนึ่งคือสำหรับการเคลื่อนไหว X สุดท้าย "ไปข้างหน้า" เกิดขึ้นมากกว่า "ย้อนกลับ" แต่นั่นไม่จำเป็นต้องเป็นอันเดียว แล้วสิ่งนี้ล่ะ: "ขวา ขวา ซ้าย ขวา". ในกรณีนั้น หุ่นยนต์ต้องเลี้ยวขวาเพื่อออกจากมุมหนึ่งหรือเพราะมันเข้าใกล้กำแพงในมุมหนึ่ง ซึ่งถือได้ว่าเป็นความก้าวหน้าที่แท้จริง ในทางกลับกัน "ซ้าย ขวา ซ้าย ขวา…" อาจไม่ถือว่าก้าวหน้าอย่างแท้จริง ดังนั้น ถ้า "ขวา" เกิดขึ้นมากกว่า "ซ้าย" หรือ "ซ้ายเกิดขึ้นมากกว่า "ขวา" นั่นอาจเป็นความคืบหน้าที่แท้จริง
ในตอนเริ่มต้นของคำแนะนำนี้ ฉันได้กล่าวถึงเป้าหมายที่ 3 ที่เป็นไปได้คือการยกกำลังสองหรือตั้งฉากกับกำแพง อย่างไรก็ตาม สำหรับสิ่งนั้น เราต้องการมากกว่า "เราอยู่ใกล้วัตถุบางอย่างหรือไม่" ตัวอย่างเช่น หากเราสามารถรับเซ็นเซอร์เสียงที่หันไปข้างหน้าสองตัว (ไม่ใช่จุดสนใจของบทความนี้) เพื่อให้การตอบสนองที่ดีพอสมควรและเสถียรเกี่ยวกับระยะทาง เห็นได้ชัดว่าถ้าตัวหนึ่งรายงานค่าที่ต่างจากอีกตัวหนึ่งมาก หุ่นยนต์ก็เข้าใกล้กำแพงแล้ว ทำมุมหนึ่งและอาจพยายามหลบเลี่ยงเพื่อดูว่าค่าเหล่านั้นเข้าใกล้กันหรือไม่ (หันหน้าเข้าหากำแพงอย่างตรงไปตรงมา)
ขั้นตอนที่ 6: ความคิดสุดท้าย ขั้นตอนต่อไป…
หวังว่าคำแนะนำนี้จะให้แนวคิดบางอย่าง
การเพิ่มเซ็นเซอร์จะแนะนำข้อดีและความท้าทายบางประการ
ในกรณีข้างต้น เซ็นเซอร์เสียงทั้งหมดทำงานร่วมกันได้ดีและค่อนข้างตรงไปตรงมากับซอฟต์แวร์
เมื่อนำเซ็นเซอร์ IR มาใช้ในการผสมผสาน ก็มีความท้าทายเพิ่มขึ้นอีกเล็กน้อย เหตุผลก็คือมุมมองบางส่วนทับซ้อนกับขอบเขตของเซ็นเซอร์เสียง เซ็นเซอร์ IR นั้นดูอ่อนไหวเล็กน้อยและคาดเดาไม่ได้เมื่อสภาพแสงแวดล้อมที่เปลี่ยนแปลงไป ในขณะที่เซ็นเซอร์เสียงจะไม่ได้รับผลกระทบจากแสง
ความท้าทายอยู่ที่ว่าจะทำอย่างไรถ้าเซ็นเซอร์เสียงบอกเราว่าไม่มีสิ่งกีดขวาง แต่เซ็นเซอร์อินฟราเรดเป็น
สำหรับตอนนี้ หลังจากการลองผิดลองถูก สิ่งต่างๆ จบลงที่ลำดับความสำคัญนี้:
- amp-sensing
- IR-sensing
- อะคูสติก-sensing
และสิ่งที่ฉันทำคือเพียงแค่ลดความไวของเซ็นเซอร์ IR ลง พวกมันจึงตรวจจับได้เฉพาะวัตถุที่อยู่ใกล้มากเท่านั้น (เช่น ขาเก้าอี้ที่ใกล้เข้ามา)
จนถึงตอนนี้ ยังไม่มีความจำเป็นที่จะต้องทำซอฟต์แวร์แบบมัลติเธรดหรือแบบอินเตอร์รัปต์ แม้ว่าบางครั้งฉันจะสูญเสียการควบคุมระหว่าง Raspberry Pi และตัวควบคุมมอเตอร์ Roboclaw (สูญเสียการสื่อสารแบบอนุกรม)
นี่คือที่ที่วงจร E-Stop (ดูคำแนะนำก่อนหน้า) จะถูกนำมาใช้ตามปกติ อย่างไรก็ตาม เนื่องจากฉันไม่ต้องการ (ยัง) ต้องจัดการกับการรีเซ็ต Roboclaw ระหว่างการพัฒนา และหุ่นยนต์ไม่ได้ทำงานเร็วขนาดนั้น และฉันอยู่เฝ้าติดตามและปิดมัน ฉันยังไม่ได้ เชื่อมต่อกับ E-Stop
ในที่สุด มัลติเธรดมักจะมีความจำเป็น
ขั้นตอนถัดไป…
ขอบคุณที่ทำให้มาไกลได้ขนาดนี้
ฉันได้รับเซ็นเซอร์ ToF (เวลาบิน) ของเลเซอร์ VL53L1X IR มาบ้าง ดังนั้นจึงน่าจะเป็นหัวข้อของคำแนะนำถัดไป ร่วมกับเซอร์โว
แนะนำ:
เคาน์เตอร์ผู้เยี่ยมชมโดยใช้ 8051 และเซ็นเซอร์ IR พร้อม LCD: 3 ขั้นตอน
ตัวนับผู้เยี่ยมชมโดยใช้ 8051 และเซ็นเซอร์ IR พร้อมจอ LCD: เพื่อนที่รัก ฉันได้อธิบายวิธีสร้างตัวนับผู้เยี่ยมชมโดยใช้เซ็นเซอร์ 8051 และเซ็นเซอร์ IR และแสดงบน LCD 8051 เป็นหนึ่งในไมโครคอนโทรลเลอร์ที่ได้รับความนิยมมากที่สุดที่ใช้สำหรับงานอดิเรก การใช้งานเชิงพาณิชย์ทั่วโลก ฉันได้ทำวิ
สถานีตรวจอากาศระยะไกล HC-12 และเซ็นเซอร์ DHT: 9 ขั้นตอน
สถานีตรวจอากาศระยะไกล HC-12 และเซ็นเซอร์ DHT: ในบทช่วยสอนนี้ เราจะเรียนรู้วิธีสร้างสถานีตรวจอากาศระยะไกลระยะไกลโดยใช้เซ็นเซอร์ dht สองตัว โมดูล HC12 และจอแสดงผล LCD I2C ดูวิดีโอ
กระจก Infinity พร้อม LCD และเซ็นเซอร์ IR: 5 ขั้นตอน
กระจกอินฟินิตี้พร้อมเซ็นเซอร์ LCD และ IR: โปรเจ็กต์นี้จะแสดงให้คุณเห็นว่าคุณสามารถสร้างกระจกอินฟินิตี้ได้อย่างไร แนวคิดพื้นฐานคือไฟ LED ที่อยู่บนกระจกสร้างแสงที่สะท้อนจากกระจกมองหลังไปยังกระจกหน้าซึ่งมีแสงเล็ดลอดออกมาเพื่อให้เรามองเห็นภายใน
LDR และเซ็นเซอร์ IR: 4 ขั้นตอน
LDR และเซ็นเซอร์ IR: สวัสดีเพื่อนชื่อของฉันคือ Ankit singh บางทีนี่อาจเป็นความหวังที่สั่งได้ครั้งแรกของฉันที่คุณชอบ มาเริ่มกันเลย เพราะเรารู้เซ็นเซอร์ IR และเซ็นเซอร์ LDR ที่เราเคยใช้มาหลายครั้งในโครงการของเรา ฉันใช้มามากแล้ว ครั้งทุกเ
วิธีสร้างโมเดล Cubesat ด้วย Arduino และเซ็นเซอร์ DHT11: 7 ขั้นตอน
วิธีสร้างโมเดล Cubesat ด้วย Arduino และ DHT11 Sensor: เป้าหมายสำหรับโครงการของเราคือการสร้าง cubesat และสร้าง Arduino ที่สามารถกำหนดความชื้นและอุณหภูมิของ Mars.-Tanner