Service robots of the future will most likely need to act on spoken commands and be able to recognise voices. This article takes a look at one aspect of this behaviour namely locating the position of a sound source using the cross-correlation function. A technique is developed which drastically cuts down on the number crunching so that even a basic microcontroller fitted with binaural sensors can pinpoint a continuous audio signal with an accuracy of just 10 degrees.
Resistors
R1,R5,R12 = 47kΩ
R2 = 33kΩ
R3,R10 = 22kΩ
R4,R11 = 1kΩ
R6,R9,R13,R16,R18,R19,R20 = 10kΩ
R7, R14 = 2kΩ2
R8, R15 = 100kΩ
R17 = 100kΩ preset
Rx = 100kΩ
Capacitors
C1,C2,C3,C4 = 1µF 16 V
C5 = 22µF 16 V
C6 = 100µF 16 V
C7,C8 = 100nF
C9,C10 = 22pF
Semiconductors
IC1 = LM324
IC2 = PIC16F88, programmed, order code 060040-41 from Elektor SHOP
Miscellaneous
Q1 = 20MHz quartz crystal
DIL14 socket
DIL18 socket
SL1,SL2,(SL4),SL5,SL6,SL7 = 2-way SIL pinheader (SL4 bridged with a 100k resistor, see text)
SL3 = 6-way SIL pinheader
JP1,JP2 = jumper
MicR, MicL = CZ034 electret microphone insert
PCB, ref. 060040-1, free artwork download