roboforum.ru

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

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

Обсуждаем рождающиеся мысли и результаты экспериментов.

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

Сообщение blindman » 14 май 2009, 15:00

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


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


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

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


Есть 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 раз(а).
Причина: дорисовал правила этой темы
Проект [[Open Robotics]] - универсальные модули для построения роботов
Модули Open Robotics можно приобрести в магазине shop.roboforum.ru

Day OFF? You must be pulling my leg! Stop making humor before someone sees you, fool!

Аватара пользователя
blindman
 
Сообщения: 4130
Зарегистрирован: 29 апр 2008, 21:15
Откуда: Хабаровск
прог. языки: C,C++,Assembler,PHP,Javascript,Ruby, SPIN,Java(?)
ФИО: Андрей Юрьевич

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

Сообщение contr » 17 май 2009, 16:59

тады я не понимаю принцип работы :( Стационарный микрофон ничего кроме уровня сигнала не выдает. Что с чем вы сравниваете?
contr
 
Сообщения: 987
Зарегистрирован: 17 апр 2009, 15:09
Откуда: Rostov-Don
Предупреждения: -1

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

Сообщение blindman » 17 май 2009, 17:15

Вот тут все описано, с формулами и картинками http://local.wasp.uwa.edu.au/~pbourke/m ... correlate/
Проект [[Open Robotics]] - универсальные модули для построения роботов
Модули Open Robotics можно приобрести в магазине shop.roboforum.ru

Day OFF? You must be pulling my leg! Stop making humor before someone sees you, fool!

Аватара пользователя
blindman
 
Сообщения: 4130
Зарегистрирован: 29 апр 2008, 21:15
Откуда: Хабаровск
прог. языки: C,C++,Assembler,PHP,Javascript,Ruby, SPIN,Java(?)
ФИО: Андрей Юрьевич

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 раз(а).
semak
 
Сообщения: 14
Зарегистрирован: 08 янв 2010, 11:11
Откуда: Ufa

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

Сообщение =DeaD= » 14 янв 2010, 00:14

semak, после прочтения вашего поста хочется сказать, что еще 2+2=4. Ну вдруг кто не знал :ROFL:
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

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

Сообщение boez » 14 янв 2010, 11:52

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

Да, два микрофона можно использовать для поворота головы на источник звука в одной плоскости, а три микрофона - в двух плоскостях (pan&tilt). В обоих случаях задача нахождения угла(ов) направления на источник имеет ровно одно решение, что не может не радовать (если сравнивать с задачами определения расстояний, которые здесь рассматривались).
boez
 
Сообщения: 1981
Зарегистрирован: 27 авг 2008, 10:45
Откуда: Харьков
прог. языки: С/С++

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

Сообщение =DeaD= » 14 янв 2010, 13:06

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

Добавлено спустя 1 минуту 37 секунд:
И даже если момент возникновения звука известен - в обоих ситуациях будет не ровно одно решение, а почти всегда ровно два решения.
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

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

Сообщение boez » 14 янв 2010, 13:32

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

Добавлено спустя 1 минуту 54 секунды:
Сходу не соображу, что даст arcsin((d1-d2)/a) в случае конечного расстояния? Направление асимптоты той гиперболы, на которой лежит источник?
boez
 
Сообщения: 1981
Зарегистрирован: 27 авг 2008, 10:45
Откуда: Харьков
прог. языки: С/С++

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

Сообщение =DeaD= » 14 янв 2010, 13:55

2boez: В случае бесконечно удаленного источника и 2 микрофонов всё равно будет два направления соотв. 2 хвостам 1 ветки гиперболы. То же самое про 3 микрофона и пространство.
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

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

Сообщение boez » 14 янв 2010, 17:23

А - точно будет два, спереди и сзади... :oops:
boez
 
Сообщения: 1981
Зарегистрирован: 27 авг 2008, 10:45
Откуда: Харьков
прог. языки: С/С++

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

Сообщение TrashVigor » 14 янв 2010, 23:33

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

Вот похожий проэкт с 3 мя микрафонами
GIRUGAMESH!
Аватара пользователя
TrashVigor
 
Сообщения: 134
Зарегистрирован: 11 июл 2008, 22:43
Откуда: Воронежск
прог. языки: С, Delphi, Asm

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

Сообщение Rome » 10 июн 2010, 13:38

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

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

Сообщение Rome » 10 июн 2010, 13:50

Задача нахождения расстояния до источника упрощается, когда известно направление. Тут формул придумать не смог. Пришлось искать решение путем поиска точки на луче с минимальной ошибкой. Можно взять отрезок например длиной 1000м, разделить его на три части и сравнить ошибки на их границах, далее отбросить крайнюю часть с максимальной ошибкой. За 30 дроблений можно сузить отрезок до 1го сантиметра.
Вобщем результаты получаются тоже точными.
Пробовал ввести случайную погрешность в задержки до 0,2%. Направление еще терпимо вычисляется, а точность расстояния резко снижается.
Rome
 
Сообщения: 7
Зарегистрирован: 10 июн 2010, 13:18
Откуда: Киров
прог. языки: C#, pascal
ФИО: Роман Веснин

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

Сообщение Rome » 10 июн 2010, 14:13

Сейчас ищу способ модификации метода для работы с пространством, а не с плоскостью. Для трех микрофонов в пространстве будет 2 решения ("вверху" и "внизу"). Но одно (нижнее) можно всегда отбрасывать, если микрофоны будут лежать на полу.
Rome
 
Сообщения: 7
Зарегистрирован: 10 июн 2010, 13:18
Откуда: Киров
прог. языки: C#, pascal
ФИО: Роман Веснин

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

Сообщение Rome » 10 июн 2010, 14:26

Вот примеры работы программы:
без погрешности
http://webfile.ru/4544404
с погрешностью
http://webfile.ru/4544403
и сама программа
http://webfile.ru/4544408
Rome
 
Сообщения: 7
Зарегистрирован: 10 июн 2010, 13:18
Откуда: Киров
прог. языки: C#, pascal
ФИО: Роман Веснин

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

Сообщение Rome » 16 июн 2010, 14:25

Вот программа и ее исходники под VS 2008(C#).
Вложения
SoundLocation.zip
(20.89 КиБ) Скачиваний: 0
Rome
 
Сообщения: 7
Зарегистрирован: 10 июн 2010, 13:18
Откуда: Киров
прог. языки: C#, pascal
ФИО: Роман Веснин

Пред.След.

Вернуться в Идеи

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 41