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

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

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

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

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


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


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

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


Есть 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

Сообщение =DeaD= » 14 май 2009, 18:33

В таком случае можно будет только в плоскости искать источник звука.

Считается это просто - 3 микрофона = 3 уравнения.
Неизвестное время излучения звука = 1 неизвестная.

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

Re: Проект звукового модуля под шину RoboBus

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

=DeaD=, а вот такую задачку можешь решить :
Даны 3 поверхности, описанных уравнениями LaTeX: z^{2}+(y-a_{i})^{2}-b_{i}x=0, причём каждое уравнение - в своей системе координат. Система координат 2 преобразуется в систему координат 1 поворотом вокруг оси Z на 120 градусов. Система координат 3 преобразуется в систему координат 1 поворотом вокруг оси Z на 240 градусов. Я бы написал уравнения в одной системе, но не хватает знаний перевести :pardon: Надо решить систему. 3 уравнения - 3 неизвестных :)
Проект [[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

Сообщение Duhas » 14 май 2009, 19:11

напишите систему, я попробую ее маткадом символьно решить....
«Как сердцу выразить себя? … Мысль изреченная есть ложь!»
В этом мире меня подводит доброта и порядочность...
"двое смотрят в лужу, один видит лужу, другой отраженные в ней звезды"
Аватара пользователя
Duhas
 
Сообщения: 6338
Зарегистрирован: 15 сен 2007, 13:03
Откуда: Красноярск
прог. языки: ASM(МК), C(PC)
ФИО: Гагарский Андрей Александрович

Re: Проект звукового модуля под шину RoboBus

Сообщение =DeaD= » 14 май 2009, 19:33

2blindman: Не понял, а чего это за уравнения? Я так понял x,y там тоже в каждой системе координат свои? Чего-то сложно это всё :) по-моему, как только я их переведу в нужные системы координат, я сразу получу то же самое, что при записывании системы уравнений в общей системе координат, а я их уже выписывал. :pardon:
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

Re: Проект звукового модуля под шину RoboBus

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

Это уравнение конуса, проходящего через точку (0, a). Сечение конуса плоскостями, перпендикулярными оси X - окружности с центром на оси X. На основании тех данных, что у меня есть, я могу найти угол между осью X и линией, соединяющей источник звука с серединой отрезка, соединяющего микрофоны:
micro.png
micro.png (4.42 КиБ) Просмотров: 2208

LaTeX: \tan \varphi = \sqrt{\frac{a^{2}}{(b-c)^{2}}-1}. a и b в этой формуле - это расстояния, как на рисунке, а не коэффициенты в уравнении которое я писал выше. Так как источник звука может быть на любой высоте , то получаем не линию а конус, вращая прямую вокруг оси X.
В уравнении выше LaTeX: b_{i} это LaTeX: \tan \varphi_{i}, а - константа, зависящая от диаметра окружности, на которой расположены микрофоны
Проект [[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

Сообщение =DeaD= » 14 май 2009, 21:01

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

Re: Проект звукового модуля под шину RoboBus

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

3-мерное пространство. Плоскость X-Y, Z=0. На ней 3 микрофона, равномерно распределённых по окружности радиуса R, с шагом 120 градусов. Центр окружности - в начале координат. Источник звука - в любой точке пространства X (на самом деле есть конечно естественные ограничения, но пока их отбросим). Для любого микрофона A, LaTeX: \left|X-A\right| - расстояние от источника звука до микрофона. Это расстояние неизвестно, но для любой пары A и B известно LaTeX: \left|X-A\right|-\left|X-B\right|. Нужно определить координаты источника звука.
Проект [[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

Сообщение =DeaD= » 14 май 2009, 21:21

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

Re: Проект звукового модуля под шину RoboBus

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

Не верю. Докажи ;)

Пара точек меня устроит - я так понимаю они будут отличаться только координатой Z - с этим можно разобраться.

Добавлено спустя 1 минуту 44 секунды:
Точнее - знаком координаты Z
Проект [[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

Сообщение =DeaD= » 14 май 2009, 21:33

В смысле не веришь? Если с геометрическим воображением очень хорошо, тогда вот такое доказательство на пальцах - закрепи в пространстве по 1 концу 3 разных ниток разной длины. вторые концы ниток свяжи в точку и зажми в пальцах - очевидно что точек где ты будешь держать все 3 нитки натянутыми будет 2?

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

Re: Проект звукового модуля под шину RoboBus

Сообщение Duhas » 14 май 2009, 21:35

вроде бы разностей должно хватить для однозначного определения х,у
«Как сердцу выразить себя? … Мысль изреченная есть ложь!»
В этом мире меня подводит доброта и порядочность...
"двое смотрят в лужу, один видит лужу, другой отраженные в ней звезды"
Аватара пользователя
Duhas
 
Сообщения: 6338
Зарегистрирован: 15 сен 2007, 13:03
Откуда: Красноярск
прог. языки: ASM(МК), C(PC)
ФИО: Гагарский Андрей Александрович

Re: Проект звукового модуля под шину RoboBus

Сообщение boez » 14 май 2009, 21:57

blindman писал(а):=DeaD=, а вот такую задачку можешь решить :
Даны 3 поверхности, описанных уравнениями LaTeX: z^{2}+(y-a_{i})^{2}-b_{i}x=0


Башка тяжелая, вкуривать в задачу не получается, может попозжее. Но написано уравнение не конуса, а параболоида вращения с центром в (0,ai,0) и осью параллельной Ох... У конуса x^2 должен быть.
boez
 
Сообщения: 1981
Зарегистрирован: 27 авг 2008, 10:45
Откуда: Харьков
прог. языки: С/С++

Re: Проект звукового модуля под шину RoboBus

Сообщение TrashVigor » 15 май 2009, 11:04

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

Re: Проект звукового модуля под шину RoboBus

Сообщение =DeaD= » 15 май 2009, 11:15

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

Re: Проект звукового модуля под шину RoboBus

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

boez писал(а):Но написано уравнение не конуса, а параболоида вращения с центром в (0,ai,0) и осью параллельной Ох... У конуса x^2 должен быть.

Блин, точно ... Но не важно, все равно мысль о конусе была неверной.

Получается, что данных вправду недостаточно для определения координат источника звука. Попробуем определить направление.
Вот что придумалось:
image.png

Расстояния между микрофонами М1-М2 и М2-М3 2a. Разность расстояний для пары М1-М2 2*c2, для М2-М3 2*c1. Если взять только одну пару, то источник звука может быть где угодно на гиперболоиде вращения. Запишем уравнения гиперболоидов.

Для пары М2-М3 (зеленый):
LaTeX: \frac{x^{2}}{c1^{2}} - \frac{y^{2}}{a^{2}} - \frac{z^{2}}{a^{2}} = 1

Для пары М1-М2 (синий):
LaTeX: \frac{(y-a)^{2}}{c2^{2}} - \frac{(x-a)^{2}}{a^{2}} - \frac{z^{2}}{a^{2}} = 1

Выберем некоторое значение y, и решим систему этих уравнений относительно x и z. Maxima выдала 4 решения, писать формулы здесь не буду, слишком громоздкие, суть не в них. Надо будет отбросить все решения, кроме одного. Знак x определяется знаком c1- неподходящие под этот критерий решения отбросим. Какие-то решения могут быть комплексными, надо проверить, решение громоздкое, сложно оценить - их тоже в топку.

Вот такие мысли пока. Давайте, хайте :)
Проект [[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(?)
ФИО: Андрей Юрьевич

Пред.След.

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

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

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