ฉันได้สร้างระบบ TDOA ที่ค่อนข้างง่ายซึ่งใช้สัญญาณอัลตราโซนิกที่ปล่อยออกมาจากลำโพงสองตัวเพื่อระบุตำแหน่งทางภูมิศาสตร์ (สัมพันธ์กับลำโพง) โทรศัพท์มือถือ สัญญาณทั้งสองจะถูกคั่นด้วยความถี่
ระบบมีข้อ จำกัด ดังต่อไปนี้:
- สัญญาณจะต้องไม่ได้ยิน ด้วยเหตุนี้เราจึงยึดความถี่ที่มากกว่า 17 kHz บางคนยังคงได้ยินเช่นนั้น แต่ส่วนใหญ่ไม่สามารถทำได้
- อัตราตัวอย่าง 44.1 kHz
- โดยทั่วไปแล้วเพลงจะเล่นดังนั้นจึงมีสัญญาณรบกวนที่ความถี่ต่ำกว่ามาก
- เราไม่สามารถควบคุมว่าลำโพงและไมโครโฟนทำงานที่ความถี่สูงได้ดีเพียงใดดังนั้นเราจึง จำกัด ความเร็วสูงสุดที่ 20 kHz
สัญญาณเฉพาะที่ฉันกำลังใช้คือ BPSK ปรับรหัสบาร์เกอร์ 13 บิตเนื่องจากคุณสมบัติปรับค่าความสัมพันธ์อัตโนมัติที่ดี ความสัมพันธ์อัตโนมัติดูเหมือนดังต่อไปนี้ -
เมื่อฉันข้ามสัญญาณที่คาดหวังกับสัญญาณที่ได้รับในชีวิตจริงแม้ว่าสิ่งที่ฉันได้รับมักจะเป็นเช่นนี้ -
สีฟ้าคือความสัมพันธ์ข้ามกับสัญญาณของลำโพง 1 และสีแดงคือความสัมพันธ์ข้ามกับสัญญาณของลำโพง 2 ปรากฏว่าเสียงก้องมีความสำคัญและน่าเสียดายที่มักจะแข็งแกร่งกว่าสัญญาณเส้นทางตรงเนื่องจากได้รับทิศทางของไมโครโฟน
ฉันพยายามตรวจจับสัญญาณที่ปรากฏเร็วที่สุดเท่าที่เป็นไปได้ซึ่งเป็นเส้นทางโดยตรง วิธีการนี้มีความอ่อนไหวต่อขีด จำกัด ที่ฉันใช้สำหรับการตัดสินใจเมื่อมีสัญญาณและดังนั้นจึงไม่แข็งแกร่งเลย
ฉันต้องการวิธีการที่แข็งแกร่งในการกำหนดเวลาถึง "จริง" ของสัญญาณ - เช่นเวลาที่มาถึงของสัญญาณเส้นทางตรง บางทีรูปแบบการประมาณค่าช่องสัญญาณและการถอดรหัสบางรูปแบบ? ถ้าเป็นเช่นนั้นจะทำงานอย่างไร
ข้อมูล / รหัส: ฉันต้องการให้ชัดเจนว่าฉันไม่ได้คาดหวังให้ทุกคนวิเคราะห์ข้อมูลหรือตรวจสอบรหัสของฉัน ฉันทำให้พวกเขาพร้อมใช้งานในกรณีที่คุณต้องการ ฉันสนใจในแนวความคิดเป็นส่วนใหญ่
ฉันสร้างสัญญาณที่ได้รับข้อมูลดิบและปรับสัญญาณที่คาดหวังไว้ให้ดาวน์โหลด ตัวอย่างทั้งหมดอยู่ที่ 44.1 kHz การเชื่อมโยงสัญญาณที่ได้รับกับสัญญาณที่คาดว่าจะสร้างสิ่งที่คล้ายกัน แต่ไม่เหมือนกันกับภาพด้านบนเพราะฉันย้ายสัญญาณที่ได้รับไปยังเบสแบนด์และ decimate ก่อนที่จะสัมพันธ์กับสัญญาณที่คาดหวัง
Matlab สคริปต์สคริปต์ Matlab มีทั้งสคริปต์สร้างสัญญาณ (genLocationSig.m) และสคริปต์รับ / ประมวลผลของฉัน (calcTimingOffset.m)