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)