저는 서버로 작동하는 2 개의 나무 딸기 파이와 클라이언트 인 랩톱으로 프로젝트를하고 있습니다. 각 라즈베리 및 USB 마이크에 연결하고 오디오 스트리밍 을 포팅 한 Portaudio Library im을 사용하여 tcp/ip 연결을 통해 랩톱으로 다시 보냅니다.지연 측정 및 라즈베리 사이의 동기화 pi
이 프로젝트의 범위는 음원을 찾는 것이며이 방법은 다음과 같이 작동합니다. PC 랩톱과 동일한 LAN에 연결된 인 각 라즈베리에서 .c 파일을 실행합니다. 이 프로그램이 두 라스베리 베리에서 실행될 때 나는 "클라이언트와의 연결 대기 중"메시지를 가지고 있습니다. 다음해야 할 일은 단지 라스베리 과 레코드를 시작하는 matlab 파일을 실행하는 것입니다. 내가 좋아하는 간단한 조건을 통해 같은 시간에 시작하는 나무 딸기를 동기화 관리해야
do
{
sleep(0.01);
j = read(newsockfd, &start,1);
} while (j==0);
너무 좋아 모두 나무 딸기 녹화를 시작해야 전에 내가 초기화 명령을 완료하기 위해 그들을 일시 정지 등 다음 그냥 내 MATLAB 프로그램 T1 통해 문자 "= 'K'를 시작"전송 (T2)가 TCP 연결을 모두 라스베리가 PortAudio 스트림을 열고 recordCallBack 함수 호출이 시점에서
start = 'k';
fwrite (t1, k);
fwrite (t2, k);
이다. 응용 프로그램을 실행하고 박수 치면 그 사이에 0.2 초 지연이 발생하여 에 60m의 오류가 발생합니다. 나는 또한 fwrite 함수의 실행 시간을 점검했으나 은 현실로부터 여전히 결과로 이어질 약 0.05 초를 절약 할 수있다. 이 프로젝트는 TDOA 측정을 기반으로하므로 정확도가 < 1m가되도록하려면 0.01 초 미만의 지연이 필요합니다.
리눅스에 아주 정확한 타이머가 있다고 들었는데, 아마도 그걸 .c 파일의 함수 내부에서 시간을 측정하는 데 사용할 수 있다고 생각했습니다. 어쨌든 에서 지연을 측정 할 수있는 아이디어가 있다면 오디오 스트림이 마이크에서 열리는 지점까지 matlab에서 문자 'k'를 보내거나 방법 2 리눅스 서버를 동기화 할 수있는 방법 도와주세요.
추신 : 모두 라즈베리이 PI 및 처리 및 전송 속도 그것은 흥미로운 프로젝트처럼 보이는 같은