-
SONAR (Sound Of Navigation And Ranging, 음파탐지기) 구현 - 001사이드 프로젝트 2026. 4. 11. 22:43
밑도 끝도 없지만, SONAR 를 구현해 보려 한다. 내 나름의 이유는 있지만 그걸 구구절절 설명할 필요는 없으니, 바로 본론으로 들어가겠다. 블로그 글은 구현하면서 막혔던 모든 문제를 기록하는 용도로 사용하려고 한다. chatgpt, claude 등의 AI 의 도움을 받을 예정이다.
코드는 https://github.com/kstkcy/my-sonar 에 업로드하고 관리할 것이다.
import numpy as np from scipy.signal import chirp import sounddevice as sd fs = 44100 t = np.linspace(0, 0.02, int(fs*0.02)) # 20ms # chirp 생성 (100Hz → 8kHz) signal = chirp(t, f0=100, f1=8000, t1=0.02) # 재생 + 녹음 recording = sd.playrec(signal, samplerate=fs, channels=1) sd.wait() recording = recording[:, 0] corr = np.correlate(recording, signal, mode='full') lag = np.argmax(corr) - len(signal) time_delay = lag / fs distance = (time_delay * 343) / 2 print(distance)chatgpt 가 짜준 초기 코드인데 책상, 방 한가운데, 싱크대에 노트북을 두고 실행하니 모두 0.43555555555555553 로 같은 값이 나왔다.
chatgpt 한테 얘기하니 실제 신호를 내보내고 다시 받은 게 아니라 오디오 장치 입출력 지연이라고 한다.
거리 = (속력 * 시간) / 2
2로 나누는 이유는 측정된 시간이 물체에 반사되서 다시 입력으로 들어오는 시간이기 때문이다.
0.435m = (340m/s * 시간) / 2
시간 = (0.435m * 2) / 340m/s
시간 = 0.00255 s = 2.55ms
2.55ms 는 딱 오디오 장치 지연 수준이라는 것이다.
chatgpt가 던져준 코드를 그대로 실행했으니 뭐가 문제인지도 모르는 상태이다. 우선 코드 먼저 이해해보면서 다음 글에서부터 정리해보겠다.
'사이드 프로젝트' 카테고리의 다른 글
SONAR (Sound Of Navigation And Ranging, 음파탐지기) 구현 - 003 (0) 2026.04.12 SONAR (Sound Of Navigation And Ranging, 음파탐지기) 구현 - 002 (0) 2026.04.12