Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Определение нажимающего предмета
Форум разработчиков электроники ELECTRONIX.ru > Cистемный уровень проектирования > Математика и Физика
alexPec
Вопрос уважаемому коллективному разуму:

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

А вопрос такой: как наименьшими мат. затратами, имея показания датчиков, определить, давит на матрицу точка или нет? Это основной вопрос. В идеале неплохо бы еще определять:

- есть ли давление точки при фоновом давлении плоскости и (или) прямой
- давит ли точка, прямая, или плоскость. Т.е. разделять все три объекта

Чего-то не приходит в голову сходу простой матаппарат, реализуемый просто в целочисленном базисе и жрущий мало ресурсов.

Любые идеи, правильные и неправильные, интересны.

Заранее благодарен.
fractcon
Выделить датчики у которых показания отличаются от остальных на пороговую величину. Таким образом определяем датчики на которые "давит" предмет.
Дальше идет работа по координатам. Надо перебрать координаты всех датчиков из группы "давит" и определить разрывы в расположении между ними.
Далее находится наиболее многочисленная кучка датчиков, расположенных близко друг к другу, которые и будут определять положение "точки" которая "давит".
Если датчиков 16 то анализировать тут нечего, если 64 на 64 вопрос будет сложным по любому.
alexPec
Цитата(fractcon @ Jun 23 2013, 07:13) *
Выделить датчики у которых показания отличаются от остальных на пороговую величину. Таким образом определяем датчики на которые "давит" предмет.
Дальше идет работа по координатам. Надо перебрать координаты всех датчиков из группы "давит" и определить разрывы в расположении между ними.
Далее находится наиболее многочисленная кучка датчиков, расположенных близко друг к другу, которые и будут определять положение "точки" которая "давит".
Если датчиков 16 то анализировать тут нечего, если 64 на 64 вопрос будет сложным по любому.


Спасибо за ответ. Матрица 5х6, примерно так и думал, только на ум приходила апроксимация линейной функцией датчиков с макс. значениями. Далее вычислять корреляцию с ф-ей плоскости, потом прямой, установить пороги корреляции, затем при недоборе порога при сравнении с ф-ей плоскости сравнивать с ф-ей прямой, при недоборе порога на ф-ю прямой делаем вывод о том, что это точка.
Diusha
Если еще актуально…
Можно гораздо красивей – построить оценку по методу маименьших квадратов. Возможно, и вычислений будет меньше (во время работы).

Уравнение плоскости в общем виде: z = a*x + b*y + c
Придумаем «уравнение точки» (т.е. острого тела, которое давит).
z = r*D(x–p)*D(y–q)
Предлагаю в качестве D взять что-то вроде
D(t) = max( 0, min( 1+t/2, 1–t/2 ) )
– треугольная функция.
Можно D(t) = exp(–t^2), но тогда во время работы потребуется вычисление exp.

s = sum(i,j)( Zij – a*Xi – b*Yj – c – r*D(Xi–p)*D(Yj–q) )^2

Xi, Yj – координаты датчиков в матрице;
Zij – величины, намерянные матрицей;
a, b, c, p, q, r – константы, которые предстоит найти. Они д.б. такими, чтобы сумма s квадратов отклонений измеренных величин Zij от теоретических уравнений плоскости и «точки» была минимальна.
Для этого берем 6 частных производных от s по a, b, c, p, q, r,
приравниваем каждую нулю и получаем 6 формул для a, b, c, p, q, r.
Практика показывает, что подобные формулы, если аккуратно упростить выражения, получаются гораздо проще, чем кажется сначала (на всякий случай: весь гемор с выводом будет на бумаге, а во время работы – расчет по относительно простым формулам).

Дальше просто сравниваем с порогами.
Итого одним махом получаем ответ на вопрос, чем давят – плоскостью или точкой или обеими, а также и координаты точки и наклон плоскости.

Xi, Yj можно выбрать любыми, главное чтобы с равным шагом и чтобы изломы треугольной функции попали между ними. Не выводил, но предполагаю, что при r=0 (точка не давит) p и q вычислять не стоит – какое-нибудь деление на 0 получится.

Подобным макаром можно и прямую присобачить; кажется это немножко посложнее будет
alexPec
Спасибо, подумаю над таким методом
Diusha
Я немножко облажался...
С плоскостью-то все получится на "ура", как написал.
(Хотя и здесь возможны некоторые тонкости: плоскость может давить так, что действует на половину (например) датчиков, а над второй половиной висит в воздухе. Тогда в формулах учитывать надо только те датчики, показания которых больше 0, а остальных как бы нет вообще.)
А вот с остальными фигурами посложнее. Если в принципе подход интересен, сообщите. Если что-нить придет в голову - напишу.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.