LINUX.ORG.RU

как найти себя в этом трехмерном мире

 , ,


0

1

Есть пульт от ТВ\airmouse\что то такое еще.

  1. Хочу переключать любимые песенки взмахом пульта (на смарт тв такое есть, возможно не на всех).

  2. Хочу задать действия на рисование фигуры в воздухе, к примеру: квадрат – запускает браузер, круг – запускает стим, треугольник – ищет клипы Юлии Савичевой в интернете.

  3. Хочу при рисовании, рукой с пультом, фигур в воздухе еще и кистью вращать этот пульт в руке?..

Как всё это реализовать, что почитать, как правильно загуглить?

На хакадей, несколько лет назад, что то подобное видел. Но найти не могу и вроде там не вдавались в подробности реализации. А просто похвалились, что вот можно так.



Последнее исправление: TPPPbIHDELj (всего исправлений: 1)

Без технических подробностей и прям на коленке, но как бы делал я, мысли в слух, но может поможет снизить градус растерянности.

Ну, перво на перво, тебе нужно получить доступ к датчику положения и вообще выяснить его разрешение, можно ли например сдвинув пульт на метр получить чиселки с датчика/ков по которым этот метр можно интерпретировать относительно уже имеющихся данных от положения. Это база. Гуглить даташит на свою железку.

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

Нужно ещё различать, положение, его изменение и старт рисования, это можно узнать по ускорению например, рещкое ускорение длинной в 15 сантиметров допустим это старт к рисованию фигуры

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

По вычисленному тобой например событию резкого ускорения прибора длинной не менее 15 сантиметров ты сохраняешь точку координат, затем при резкой смене угла ты ставишь координату там и так далее. В итоге затем например для квадрата проверяешь что есть 4 резких смены направления и последнее направление в сторону начальной точки, у тебя 4 линии между 4 точек смены направления и на длинне в 10 сантиметров они не пересекаются типа параррельны, ограничение длшинны нужно будет так как рисовать будешь криво, но в некотром приближении это будет типа квадрат.

С прямоугольником тоже самое, но 2 и 4 линии должны быть больше чем 1 и 3 и всё. Ну и так далее для всех фигур свой подход её детекта, напрямую фигуры различать геометрически у тебя жопа отвалится, определяй просто по эвритстикам.

Круг например это если при ускоренном движении изменение положение по всем осям было пости равномерное а начальная точка близка к конечной.

На деле тебе нужно просто например (от балды) 60 раз в секунду сохранять например положение, при взмахе начать сохранять 60 точек по x и y если они меняются равномерно для фигур типа круга, или изменять лишь ту координару которая рерко меняется для выпуклых угловатых фигур. Так на круге ты запишешь кучу точек, а на квадрате ровно 4 от 4 резких смен положения в плоскости одной координаты.

Перво наперво тебе нужно как-то получить данные с датчика, узнать его имя, узнать какой программный или аппаратный к нему интерфейс, а дальше уже дело скорее твоей фантазии, полученные данные можно интерпретировать 1000500 мильёнами способов по сути.

3D тут по сути не нужно, хватит и будет проще быть плоским.

Можно вообще детектирвать лишь ускорения, когда ты рисуешь треугольник у тебя ровно 3 ускорения рукой, когда квадрат ровно 4, а когда круг у тебя одно дооолгое ускорение, когда спираль у тебя долгое ускорение с 4 сменами направлений (для 4 спиралей) и так далее, даже датчик положения будет не нужен и никакой математики, лишь разница в скорости и подсчёт разницы времени. Даже датчик ускорения не нужен если его нет, а есть датчик положения, опять же по разнице в координатах по отношению к времени можно вычислить ускоренное движение, ну а дальше лишь посчитать были ли между ними паузы, было 4 паузы, значит квадрат, было 3 значит треугольник.

Для наколенной поделки я думаю норм будет. Я бы может даже зафигачил прототип по бырому, но у меня пока нет ничего что датчики имеет.

LINUX-ORG-RU ★★★★★
()
Ответ на: комментарий от LINUX-ORG-RU

В таких устройствах скорее всего нет никаких «датчиков положения» или координат, ведь положение измеряется относительно чего-то. Обычно там есть акселерометр, и в довесок к нему гироскоп и иногда магнитометр.

Gary ★★★★★
()
Ответ на: комментарий от Gary

Я это и имел в виду, так как положение вычисляется из одного или комбинации этих или подобных им датчиков, со своими нюансами, но это дело десятое, главное получать данные и исходя из природы датчика интерпретировать их как «положение» или даже характер смены положения, а не само оно, можно даже без координат в принципе обойтись. Тут очень широкое поле для творчества.

LINUX-ORG-RU ★★★★★
()
Ответ на: комментарий от LINUX-ORG-RU

Не могу без занудства тут :)

Я это и имел в виду, так как положение вычисляется из одного или комбинации этих или подобных им датчиков, со своими нюансами

Я бы сказал что нет, не вычисляется. Нюанс один, все эти датчики имеют погрешности (кроме разве что угла отклонения от направления гравитации). Гироскоп при повороте вокруг вертикальной оси не покажет 360 градусов. А интеграл по ускорению не сойдется в ноль, если датчик сдвинуть и вернуть на место. Получается ошибка, которая бесконечно растёт со временем.

По сути у таких устройств нет положения и узнать они его не могут. Если нужно следить за положением, используют например триангуляцию относительно внешних стационарных датчиков.

Но положение для определения жестов действительно не обязательно.

Gary ★★★★★
()
Ответ на: комментарий от Evgueni

Ага, реально, да. Только есть один нюанс. Люди — не буддистские монахи в большинстве своём и дисциплиной ума не обладают. Иногда мы представляем как что то делаем, но не хотим этого делать. Хотим представлять, понимаиш? А глупый компухтер не различает «я хочу что то сделать» и «я думаю про то как хочу это сделать», и начинает исполнительно исполнять. И отфильтровать это невозможно, потому что сигналы одинаковые.

В результате представь себе такую картину — пилот пилотирует самолёт, и ему приходит мысль покачать крыльями, просто так, от избытка хорошего настроения. Управлял бы он с помощью РУС — самолёт крыльями бы не покачал, потому что мысль качать крыльями не реализовалась бы в колебания РУС или штурвала.

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

Поэтому все эти мыслеуправления, при всём прогрессе датчиков, шлемов и фильтрующих нейросетей востребованы только паралитиками, когда других вариантов нет. А в остальных областях, что в гражданских, что в военных, не прижилось и не приживётся, пока люди остаются людьми.

Jameson ★★★★★
()
Ответ на: комментарий от Jameson

Подсказка: речь не записана в ДНК, то есть ей нужно обучаться. Так и с мысленной дисциплиной. И даже если ты опасаешься что-то сделать с самолётом, то включить/выключить телевизор (не очень понятно зачем, но это отдельная тема) — это довольно безопасно.

И как бы вживлять электроды уже не нужно. Правда брить волосы пока перед процедурой обязательно, хотя бы раз. Основная проблема пока в разрешающей способности энцефалографа.

Evgueni ★★★★★
()
Последнее исправление: Evgueni (всего исправлений: 2)
Ответ на: комментарий от anonymous

проще распознавание голоса прикрутить даже оффлайн.

в перспективе хочу попробовать и голосовое управление. Колонка «Алиса» забавная штука, но не покидает ощущение присутствия анального зонда, причем купленого за свои кровные деньги.

жесты пультом это гештальт, уже пробовал несколько лет назад.

TPPPbIHDELj
() автор топика
Ответ на: комментарий от Evgueni

И как бы вживлять электроды уже не нужно.

электроды еще могут передавать в мозг ощущения, в теории. Было бы не плохо чувствовать самолет как собственное тело. Птицы чувствуют и ловят потоки воздуха, а пилот самолета нет.

TPPPbIHDELj
() автор топика
Ответ на: комментарий от Jameson

Люди — не буддистские монахи в большинстве своём и дисциплиной ума не обладают.

ты же не дергаешь ногой, только потому, что представил – свою – дергающуюся ногу =)

TPPPbIHDELj
() автор топика
Ответ на: комментарий от Gary

imu gesture recognition

да, похоже оно. Я раньше еще думал про страшное слово кватернионы и это подтверждает мои опасения.

В таких устройствах скорее всего нет никаких «датчиков положения»

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

TPPPbIHDELj
() автор топика
Последнее исправление: TPPPbIHDELj (всего исправлений: 2)
Ответ на: комментарий от LINUX-ORG-RU

Без технических подробностей и прям на коленке

несколько лет назад я уже пробовал, используя акселерометр и ардуинку, сделать по простому: отлавливать максимум ускорения. встряхивания и фигуры вроде – круг, восьмерка (два круга) и квадрат можно распознать.

НО, одно очень большое НО – я знаю, что нужно делать, что бы дуринка поняла, что я от неё хочу. Как только устройство попало в руки моему брату стало понятно – ничего не работает. И объяснить ему было сложно, что круги и восьмерки нужно рисовать только так и ни как иначе =D

TPPPbIHDELj
() автор топика
Ответ на: комментарий от TPPPbIHDELj

Как только устройство попало в руки моему брату стало понятно – ничего не работает. И объяснить ему было сложно, что круги и восьмерки нужно рисовать только так и ни как иначе =D

Ну, да, значит надо ещё дополнительные метрики учитывать/рассчитывать, включая может даже и положение в пространстве и уметь игнорировать данные сводя к шуму например движение кистью.

В любом случае будут некие границы, меньше которых всё должно игнорироваться, а выше которых должно распознаваться. Тут играться надо, да.

LINUX-ORG-RU ★★★★★
()
Последнее исправление: LINUX-ORG-RU (всего исправлений: 1)