?

Log in

No account? Create an account

Previous Entry | Next Entry

Занимаясь, уже около полутора лет аргентинским танго, время от времени возникают мысли о применении в этой области различных технологий (думаю, это характерно для любого IT'шника). Очередная такая мысль даже дошла до этапа обсуждения и оценок способов реализации и затрат. На этом она пока и заглохла - ниже узнаете почему.

Сначала небольшое лирическое отступление для тех, кто не в теме:
В аргентинском танго партнёр ведёт партнёршу на все шаги и движения (т.е. она не знает заранее, каким будет следующее движение и не должна угадывать). Ведение партнёр осуществляет движениями/скрутками корпуса, которые передаются через руки и ощущаются партнёршей. Именно это (а не просто перемещение рук) ей воспринимается как ведение. К примеру, чтобы сделать вместе с партнёршей шаг вперед, партнёр сначала ведёт её на этот шаг и только после этого идёт сам (иначе наступит на ногу). Со стороны эта небольшая задержка практически незаметна. Направление ведения и собственные шаги совсем необязательно должны совпадать. Можно, к примеру, повести партнёршу в сторону или развернуть, а самому шагнуть на её место.
Естественно, чтобы всё это работало, да еще к обоюдному удовольствию,  необходимы навыки и техника, которые очень плохо формализованы и, в результате, чтобы научиться прилично танцевать - партнёру нужно в среднем от двух лет интенсивных занятий, причём обязательно в паре (партнёрше обычно меньше).

Это было лирическое отступление. Теперь, к чему я клоню:
Идея была в том, чтобы отслеживать перемещение пары на танцполе, причём не просто пары, а 10-20 конкретных точек на теле партнёра и партнёрши - ноги, руки, корпус, голова.

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

К примеру, возьмём то же ведение. Базовая вещь - научить партнёра сначала вести, потом шагать (а не наоборот). Решение тривиальное - отслеживаем, какие точки начали перемещаться раньше. Если, к примеру, колени начали перемещаться вперёд раньше, чем корпус - включаем сирену (или осуждающе бьём током в мозг :)  Фактически, замена недовольного ворчания/визга партнёрши (при наступании ей на ноги или пинании коленками :)

Другой пример - баланс. Ходим, вращаемся и отслеживаем, чтобы несколько контрольных точек (на стопах-корпусе-голове) находились на вертикали, с небольшими допустимыми отклонениями.

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

Вот такая вот мысль.
Но, как всегда, дьявол кроется в мелочах. В данном случае основная проблема - отслеживание перемещения множества точек по трём координатам с высокой точностью (1-2 сантиметра) .

Собственно, изначально мне показалось, что найдено красивое решение (из чего и пошли все дальнейшие рассуждения). Это решение основано на использовании 3D акселерометров (датчики ускорения). Сейчас появились достаточно дешевые хорошие железки , причем есть почти готовые - когда на одной плате размером в треть спичечного коробка смонтированы:

- трёхкоординатный акселерометр с цифровым выходом
- ZigBee (беспроводная связь в радиусе пары-тройки метров)
- микропроцессор, различная обвязка

Как все вы знаете (да, издеваюсь :) по ускорению можно двойным интегрированием получить координаты.

Таким образом, предполагалась следующая схема: развешиваем десяток таких датчиков-плат на человеке. В карман ему кладём устройство, которое будет с этих датчиков собирать информацию по ZigBee, упаковывать и передавать дальше на удаленный компьютер (10-15 метров), к примеру, через WiFi (там получается порядочно - каждую миллисекунду надо получать три координаты и плюс отсчет времени - грубо 64кб в секунду).

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

(на самом деле, одна из причин написания этого текста в том, чтобы это моё предположение кто-нибудь аргументированно опроверг :)

Это связано с двумя причинами:

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

Наверное некоторые из читающих в курсе, что существует такая вещь как инерциальные навигационные системы, которые используются в самолётах, баллистических и крылатых ракетах и т.п. вместо и в дополнение к спутниковым системам позиционирования. Там тоже акселерометры+гироскопы, только более точные. Так вот даже там (при достаточно равномерном перемещении!) за час полёта накапливается погрешность в районе 1-5 километров.

В итоге, если рассуждения верны, такое красивое решение не будет работать (точнее будет, но данные будут иметь весьма сомнительную ценность - годную разве что для красивой визуализации или распознавания характерных движений [1]  ).
Другое дело, что с акселерометрами можно решить более узкую задачу - допустим, обучение тому же ведению (см. выше), оценивая только изменение ускорения в определенном направлении за короткий промежуток времени.

Были попытки продумать другие варианты. В принципе, все альтернативные решения основаны на измерении времени распространения сигнала от неподвижного источника до точки на теле. Наиболее простые подходы в этой области - инфракрасное излучение, свет, ультразвук - не годятся, т.к. требуют прямой видимости и, следовательно, максимум что можно - отслеживать координаты просто пары в пустом зале.

( живодёрские варианты с гамма-, рентгеновским и прочим жёстким электромагнитным излучением мы рассматривать по некоторым причинам не будем :)

Остаются старые добрые радиоволны, в районе единиц гигагерц. Первое что вспоминается - радиолокация. Представляется, что такое устройство будет слишком сложным, тем более с механической сканирующей частью которая не даст нужной скорости сканирования.
Второе - старый добрый GPS. Отпадает, ввиду 1) недостаточной точности (в базовом варианте).  2) в помещении спутниковый сигнал не принять.

Однако, ничто не мешает повторить функциональность спутников локально - в виде устройств внутри помещения. Т.е. ставим в комнате несколько передатчиков которые излучают сигналы, фазы которых точно синхронизированы.
Соответственно, приемникам на теле остаётся померять разность фаз между сигналами принимаемыми от разных передатчиков и координаты у нас в кармане.

Самому этим заниматься, понятно, не хочется. Поиски в Интернете показали, что подобные системы в природе существуют и известны под названием pseudolites. Более того, какие-то корейцы даже изготовили такую штуку, в рамках университетского исследования. Причем точность у них получилась как раз близкая к необходимой - 1..2см.

Понятно, впрочем, что мысль реализовать такую систему самостоятельно совсем не греет. Как по объему работ, так и по затратам времени/денег.

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

Короче, фантазия пока истощилась. Если у кого есть более умные идеи - делитесь.

Tags:

Comments

( 7 comments — Leave a comment )
slava_tango
Mar. 6th, 2009 03:08 pm (UTC)
очень интерестно и не обычно для танго
tangoman
Mar. 6th, 2009 04:27 pm (UTC)
))) я занимался когда то системами компьютерного зрения.
Могу тебе сказать что все это есть. И в большом количестве.
Даже танго снимают



В основном такие системы используются для оцифровки движения для создание спецэффектов в кино.
Сейчас в этой индустрии такой исторический момент что легче снять живое движение и сделать 3Д анимацию. Лет через немного этого будет не нужно поскольку математические модели и управление ими будут лучше любых актеров. Но сейчас движение всех компьютерных монстров, горлумов и телепузиков - это все снято с актеров.
Как правило в таких системах снимают реперные точки с нескольких камер. Есть более сложные способы. Я когда то целый отчет на эту тему по работе писал.

Но конешно внешняя картинка никак не даст тебе модели взаимодействия в паре и внутренней структуры движения. Да и сами движения импульса меньше 1-2 см, так что поймать такие вещи извне в принципе невозможно к томуже чем лучше танцует прара тем этот зазор меньше.
cr_it
Mar. 6th, 2009 05:57 pm (UTC)
В том-то и дело, что внешняя картинка малоинтересна (с актерами кстати многое проще - там не надо анализировать что-то в реальном времени, можно сзади поставить зеленый/синий фон, правильно осветить и прочее).
А вот при 1-2см погрешности многие вещи вполне можно было бы проанализировать и отработать. Речь же скорее про обучение, а не про совершенствование уже умеющих.
И, думаю, 1-2см для систем которые меряют разницу фаз - совершенно не предел. Судя по характеристиками дальномеров:
http://www.101.help-rus-student.ru/text/084.htm
"...точность измерения расстояний .. около 3×10 -6 от измеряемого расстояния.."
tangoman
Mar. 7th, 2009 07:22 am (UTC)
дальномер тут не подойдет. или нужен дальномер на какой-то супер точной туррели для каждой исследуемой точки по 3 штуки.

Пошуршал тут в ютубе. С тех пор как я занимался этой темой, очень многое поменялось.

Вот например как это происходит с инерционными и оптическими датчиками





cr_it
Mar. 7th, 2009 01:25 pm (UTC)
Спасибо, любопытно! Насчёт верхнего ролика (Innalabs 3DSuit) - у них есть сайт:
http://www.3dsuit.com/ru/product где можно составить представление о системе.

Есть английский сайт живой: http://www.innalabs.com/ , но там практически ничего интересного. Есть еще один полусдохший русский - http://innalabs.wsait.ru/ . Интересен тем, что содержит технические характеристики (выдрал из swf'ки, там много букв, попробую отдельным комментом).

Ещё, в титрах одного из их роликов указана погрешность определения координат и углов (более реалистично, чем в характеристиках) - 15см и 5 градусов.

Мораль простая - выглядит здорово, но для данной задачи погрешности слишком велики. Даже если отвлечься от цифр и просто посмотреть на ролики (в т.ч. на сайте).

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

cr_it
Mar. 7th, 2009 01:26 pm (UTC)
-------------------------

Решение задачи – Innalabs 3DSuit

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

Что в чемодане

- 17 инерциальных датчиков + 3 запасных инерциальных датчика.
- 2 поясных управляющих блока с питанием от аккумуляторов
- Комплект соединительных кабелей для соединения датчиков с поясным блоком
- Эластичные крепления датчиков
- CD с программным обеспечением 3DSuit

Руководство пользователя

Как работает 3DSuit

Каждый из 17 инерциальных датчиков состоит из трех одноосных гироскопов, двух двухосных акселерометров и одного трехосного магнитометра. Датчик опеределяет вращение себя вокруг трех осей, а сложные навигационные алгоритмы вычисляют его ориентацию относительно трех осей в пространстве. Затем поясной блок управления собирает данные с датчиков и передает их по интерфейсу Bluetooth в компьютер. Программное обеспечение вычисляет положения частей тела относительно рута и движение рута относительно земли. Эти данные передаются в анимационное ПО. Все это происходит «на лету», с минимальной задержкой.

Где применяется 3DSuit

- Motion Capture. Анимация, 3D-графика.
- Медицина. Контроль движений и биомеханические исследования.
- Симуляторы, системы обучения. Робототехника.
- Телевидение. Телепрограммы с виртуальными ведущими.

Сколько стоит 3DSuit

- 3DSuit продается по самой низкой цене в индустрии MoCap: 24900 USD
- Преимущества 3DSuit
- Низкая цена.
- Высокая точность.
- Многофункциональность. Возможность использовать от 3 (Arm Tracker) до 30 датчиков. То есть, 3DSuit позволяет работать как с телом полностью, так и с отдельными частями тела.

Простота в обслуживании.

- Возможность использования 3DSuit как в записи движений, так и в режиме немедленного отображения.
- Совместимость с оптическими системами Motion Capture.
- Совместимость с распространенными пакетами 3D-анимации - Motion Builder, 3DsMax, Maya.
- Минимальные требования к PC.
- 3DSuit выдает естественные движения, которые невозможно создать ручной анимацией.
- Перекрытие одними частями тела других не влияет на работу 3DSuit (в отличие от оптических систем).
- 3DSuit может быть использован в любой обстановке с одним требованием: актер не должен приближаться к большим металлическим предметам и бетонным стенам. Если пол в помещении железобетонный, мы рекомендуем использовать деревянный помост.

Технические характеристики 3DSuit

- Количество датчиков 17, макс 30
- Количество суставов / вращающихся частей от 17 до 30
- Дополнительные каналы (предметы в руках и т.п.) 3
- Максимальное количество актеров при съемке 2
- Дальность радиоканала 10м
- Скорость захвата, кадров/сек 30
- Разрешение датчиков 0.01°
- Практическое разрешение 0.1°
- Автокалибровка датчиков Да
- Операционная система Windows XP
- Требования к процессору Pentium 2.8MHz или выше
- Аккумуляторы в комплекте Li-Pol 4000 mA/H
- Длительность работы от аккумулятора 2 час.
- Время распаковки 3..5 мин
- Время надевания костюма 10 мин
- Время загрузки ОС и ПО 5 мин
- Климатические требования Комнатная температура
- Вес системы (без батареи) 1 кг
- Рост актера Не ограничен
- Полнота актера Не ограничен
- Вес актера Любой
- Гарантия 12 месяцев
artemst
Dec. 8th, 2010 10:28 pm (UTC)
Сам я разработчик (embedder), уже два месяца варюсь в похожей теме (MoCap). Тенденции выглядят так: для задачи используется набор IMU (inertial measurment unit). Каждый IMU состоит из трех 3х осевых MEMS датчиков- акселерометра, гироскопа, магнитометра(9DOF). Их совокупность и позволяет достичь приемлемых результатов. Открытых проектов тоже с каждым днём всё больше. Для тех кто не любит возиться с железом рекомендую смотреть в сторону arduino.
( 7 comments — Leave a comment )