[Solved] Mic array dimensions ( Voice and Creator )

Hello, I am playing around with audio capture and doing some processing of the array signals.

From your microphone_array_location.h (HAL) file, I found:

float micarray_location[8][2] = {
{19.708196, -47.579795}, /* M1 /
{-20.291803, -47.579795}, /
M2 /
{-48.420204, -19.708196}, /
M3 /
{-48.420204, 20.291803}, /
M4 /
{-29.291803, 48.420204}, /
M5 /
{19.708196, 48.420204}, /
M6 /
{47.579795, 20.291803}, /
M7 /
{47.579795, -19.708196} /
M8 */
};

This translates into different radii for the mics:

[ 51.49999885, 51.72614582, 52.27742481, 52.50022309,
56.59086391, 52.27742481, 51.72614582, 51.49999885]

and also not quite uniform angular spacing:

[ 292.49999961, 246.90275031, 202.14751388, 157.26255395,
121.17184149, 67.85248612, 23.09724969, 337.50000039]

I this correct, or are all 8 mics at the same radius with pi/4 angular spacing?

Thanks!

If they are all at the same radius, what is that single value.

BTW, in your microphone_arry.c, you seem to have the wrong speed of sound:

float sound_speed_mmseg = 320 * 1000.0

should be:

float sound_speed_mmsec = 343 * 1000.0

Hi @kc_dev,

The speed of sound depends on temperature and altitude.

Huh - interesting. 320 seems a little out of the normal range based on the table…

How my main question: are the mic dimensions from your PCB layout or are they equally spaced at one radius? I measured 52 mm radius…

Looking for a way to merge adio of the mics with gstreamer.

I’d to like an answer to @kc_dev 's main question. Because the dimensions of this array are so small, errors in the extrinsics can degrade sensitive signal processing algorithms for sound source localization and tracking.

Using least squares to get the best fit circle, I’m getting about:
center = (-0.9063, 1.3565)
radius = 52.5267
least squares method used if interested

Now if these points where gathered from the internal PCB files, and the array it not perfectly circular,
that ok by me. However, we do need accurate ground truth extrinsics for the array from a sound engineering standpoint.

Thanks!

Hi @kc_dev,

I was checking the values and you’r right. They are a bit offset. This fix will be on master soon. The right values are:

(mic x y)

M1 20.0908795 -48.5036755
M2 -20.0908795 -48.5036755
M3 -48.5036755 -20.0908795
M4 -48.5036755 20.0908795
M5 -20.0908795 48.5036755
M6 20.0908795 48.5036755
M7 48.5036755 20.0908795
M8 48.5036755 -20.0908795

Distance from all mics to center 52.5

Yoel

4 Likes

Hi, wanted to say that these positions are for the MATRIX Creator. You can check the ones for the MATRIX Voices here too.

From that file:

Matrix Creator mics locations

static float micarray_location[8][2] = {
    {20.0908795, -48.5036755},  /* M1 */
    {-20.0908795, -48.5036755}, /* M2 */
    {-48.5036755, -20.0908795}, /* M3 */
    {-48.5036755, 20.0908795},  /* M4 */
    {-20.0908795, 48.5036755},  /* M5 */
    {20.0908795, 48.5036755},   /* M6 */
    {48.5036755, 20.0908795},   /* M7 */
    {48.5036755, -20.0908795}   /* M8 */
};

MATRIX Voice mics locations

static float micarray_voice_location[8][2] = {
    {  0.00,   0.00}, /* M1 */
    {-38.13,   3.58}, /* M2 */
    {-20.98,  32.04}, /* M3 */
    { 11.97,  36.38}, /* M4 */
    { 35.91,  13.32}, /* M5 */
    { 32.81, -19.77}, /* M6 */
    {  5.00, -37.97}, /* M7 */
    {-26.57, -27.58}  /* M8 */
};

Also available here with the coordinate reference: