roboforum.ru

Технический форум по робототехнике.

Математика определения источника звука[RoboBus, звук]

Математика определения источника звука[RoboBus, звук]

blindman » 14 май 2009, 15:00

Тема выделена оттуда: Проект звукового модуля под шину RoboBus.
<Digit>


Внимание!
Правила темы:
Все сообщения, отклоняющиеся от математического направления в общие принципы и прочие сопутствующие обсуждения считаются оффтопиком, т.е. ЗАПРЕЩЕНЫ!


Кто шарит в математике, помогите плиз

micro.png
micro.png (7.96 КиБ) Просмотров: 25008


Есть 3 точи расположенных на окружности заданного радиуса LaTeX: R = \left|O-B\right| через 120°. Есть некая точка LaTeX: X, координаты которой неизвестны. A,B,C - это микрофоны, X - источник звука. Считаем, что микрофоны и источник звука лежат в одной плоскости (горизонтальной). Известны LaTeX: \left|X-B\right| - \left|X-A\right| и LaTeX: \left|X-B\right| - \left|X-C\right|.
  1. Надо найти LaTeX: \angle XOB и LaTeX: \left|X-O\right|
  2. Если перейти из плоскости в пространство, и допустить, что источник звука может находиться вне плоскости микрофонов, то будет ли формула из п.1 справедлива для LaTeX: \angle X'OB и LaTeX: \left|X'-O\right|, где LaTeX: X' - проекция точки LaTeX: X на плоскость микрофонов.
  3. Верно ли, что 3 микрофонов недостаточно, чтобы определить не только LaTeX: \angle X'OB (LaTeX: \angle XOB), но и угол возвышения источника звука? Похоже что это верно ...
Последний раз редактировалось Digit 15 май 2009, 16:45, всего редактировалось 2 раз(а).
Причина: дорисовал правила этой темы

Re: Математика определения источника звука[RoboBus, звук]

contr » 17 май 2009, 16:59

тады я не понимаю принцип работы :( Стационарный микрофон ничего кроме уровня сигнала не выдает. Что с чем вы сравниваете?

Re: Математика определения источника звука[RoboBus, звук]

blindman » 17 май 2009, 17:15

Вот тут все описано, с формулами и картинками http://local.wasp.uwa.edu.au/~pbourke/m ... correlate/

Re: Математика определения источника звука[RoboBus, звук]

semak » 14 янв 2010, 00:01

Тема мне интересна, хочу реализовать подобное в своем (будущем)роботе. Т.к тут приведены, в основном, рассуждения с теоретической т.з, хочется написать с практической, скажем так, т.з.
В варианте с 2 микрофонами мы имеем только разность Ta-Tb - м/у временами прихода звукового фронта на 1 и 2 микрофоны. Также знаем расстояние м/у микрофонами (например, 10см) и скорость звука ессно. Этого достаточно, чтобы на практике робот посмотрел в сторону хлопка, если источник звука был спереди. Разность Ta-Tb находится в промежутке [-303мкс;303мкс] (для 10см), что соответствует положениям головы робота [-90*;90*].
Разумеется, это простейший решение на случай, если кто-то хочет сделать робота с поворачивающейся на звук головой :D
Последний раз редактировалось semak 14 янв 2010, 00:58, всего редактировалось 3 раз(а).

Re: Математика определения источника звука[RoboBus, звук]

=DeaD= » 14 янв 2010, 00:14

semak, после прочтения вашего поста хочется сказать, что еще 2+2=4. Ну вдруг кто не знал :ROFL:

Re: Математика определения источника звука[RoboBus, звук]

boez » 14 янв 2010, 11:52

И тем не менее никто ж не скажет, что учебник арифметики для начальной школы, где всерьез написано "2х2=4" совсем не нужен. Нужен. Потому что там просто и понятно для начинающих написано, что дважды два - четыре, и никто не ведет рассуждений о том, что в поле вычетов по модулю 3 дважды два равно 1 :).

Да, два микрофона можно использовать для поворота головы на источник звука в одной плоскости, а три микрофона - в двух плоскостях (pan&tilt). В обоих случаях задача нахождения угла(ов) направления на источник имеет ровно одно решение, что не может не радовать (если сравнивать с задачами определения расстояний, которые здесь рассматривались).

Re: Математика определения источника звука[RoboBus, звук]

=DeaD= » 14 янв 2010, 13:06

2boez: Как это одно решение? Я вот всегда думал, что множество точек с фиксированной разницей расстояний до двух заданных точек - это гипербола, а у вас? Момент возникновения звука ведь неизвестен.

Добавлено спустя 1 минуту 37 секунд:
И даже если момент возникновения звука известен - в обоих ситуациях будет не ровно одно решение, а почти всегда ровно два решения.

Re: Математика определения источника звука[RoboBus, звук]

boez » 14 янв 2010, 13:32

Так написано же - нахождения угла (углов). То есть только направление ищем, ну типа чтобы робот голову на источник звука повернул, или пушка на комара навелась, было ж у нас такое обсуждение. Хотя конечно я не прав, это для бесконечно удаленного источника все точно, а если источник звука близко, то точный угол не узнаешь без расстояния. Но если расстояние d до источника существенно больше базы a между микрофонами - то решение для бесконечно удаленного источника alfa=arcsin((d1-d2)/a) даст хорошее приближение угла. Уж для поворота головы "дружественного" робота к собеседнику 100% хватит :)

Добавлено спустя 1 минуту 54 секунды:
Сходу не соображу, что даст arcsin((d1-d2)/a) в случае конечного расстояния? Направление асимптоты той гиперболы, на которой лежит источник?

Re: Математика определения источника звука[RoboBus, звук]

=DeaD= » 14 янв 2010, 13:55

2boez: В случае бесконечно удаленного источника и 2 микрофонов всё равно будет два направления соотв. 2 хвостам 1 ветки гиперболы. То же самое про 3 микрофона и пространство.

Re: Математика определения источника звука[RoboBus, звук]

boez » 14 янв 2010, 17:23

А - точно будет два, спереди и сзади... :oops:

Re: Математика определения источника звука[RoboBus, звук]

TrashVigor » 14 янв 2010, 23:33

http://instruct1.cit.cornell.edu/courses/ee476/FinalProjects/s2005/jhl33/index.html#Introduction

Вот похожий проэкт с 3 мя микрафонами

Re: Математика определения источника звука[RoboBus, звук]

Rome » 10 июн 2010, 13:38

Задача по определению направления имеет простое решение:
Предположим, что источник звука бесконечно удален.
Из трех точек можно выбрать пару тремя способами. Для каждой пары будет существовать на плоскости два решения (находил через arccos), третья точка позволит одно неверное отсечь.
Таким образом получаем 3 приближенных решения, усреднение которых дает достаточно точное направление.
Правда метод дает лаг при углах +/- 30 градусов от каждого из векторов ОА, ОВ и ОС. Знаю в чем причина, но пока не знаю как устранить :(

Re: Математика определения источника звука[RoboBus, звук]

Rome » 10 июн 2010, 13:50

Задача нахождения расстояния до источника упрощается, когда известно направление. Тут формул придумать не смог. Пришлось искать решение путем поиска точки на луче с минимальной ошибкой. Можно взять отрезок например длиной 1000м, разделить его на три части и сравнить ошибки на их границах, далее отбросить крайнюю часть с максимальной ошибкой. За 30 дроблений можно сузить отрезок до 1го сантиметра.
Вобщем результаты получаются тоже точными.
Пробовал ввести случайную погрешность в задержки до 0,2%. Направление еще терпимо вычисляется, а точность расстояния резко снижается.

Re: Математика определения источника звука[RoboBus, звук]

Rome » 10 июн 2010, 14:13

Сейчас ищу способ модификации метода для работы с пространством, а не с плоскостью. Для трех микрофонов в пространстве будет 2 решения ("вверху" и "внизу"). Но одно (нижнее) можно всегда отбрасывать, если микрофоны будут лежать на полу.

Re: Математика определения источника звука[RoboBus, звук]

Rome » 10 июн 2010, 14:26

Вот примеры работы программы:
без погрешности
http://webfile.ru/4544404
с погрешностью
http://webfile.ru/4544403
и сама программа
http://webfile.ru/4544408

Re: Математика определения источника звука[RoboBus, звук]

Rome » 16 июн 2010, 14:25

Вот программа и ее исходники под VS 2008(C#).
Вложения
SoundLocation.zip
(20.89 КиБ) Скачиваний: 0


Rambler\'s Top100 Mail.ru counter