Проект "Фехтование" — различия между версиями

Материал из Department of Theoretical and Applied Mechanics
Перейти к: навигация, поиск
(Пробы съемки на высокоскоростную камеру)
Строка 51: Строка 51:
 
Используя пакет MATLAB был реализован данный алгоритм поворота с целью построить траекторию движения руки и проверить правильность алгоритма.
 
Используя пакет MATLAB был реализован данный алгоритм поворота с целью построить траекторию движения руки и проверить правильность алгоритма.
 
Все вполне правдоподобно выглядит. Вот пример движения руки:<br>
 
Все вполне правдоподобно выглядит. Вот пример движения руки:<br>
<gallery widths=800px heights=390px perrow = 1>
+
<gallery widths=600px heights=292px perrow = 1>
 
Файл:matlab_hand_model_1.jpg
 
Файл:matlab_hand_model_1.jpg
 
</gallery>
 
</gallery>
 
+
{{#widget:YouTube|id=mlqdv9nDvC8}}
 
==Пробы съемки на высокоскоростную камеру==
 
==Пробы съемки на высокоскоростную камеру==
 
Падение монетки в стакан <br>
 
Падение монетки в стакан <br>

Версия 00:04, 2 марта 2012

Fehtovanie.jpg

Цели проекта

  • Создание модели руки фехтовальщика
  • Высокоскоростная съемка и анализ фехтовальных движений

Над проектом работают

Научный руководитель: Е.А. Иванова

План

  1. Создать модель которая по заданным параметрам (углам в суставах, координатам плеча) восстанавливает положение руки и приходит в него из любого положения (с визуализацией)
  2. Определить ограничения движения руки в суставах
  3. Снять технику фехтования на высокоскоростную камеру
  4. Проанализировать технику и выявить набор простейших движений из которых состоят удары
  5. Найти параметры элементарных движений от которых зависит то куда придется удар
  6. Обучить модель простейшим движениям
  7. Создать базу ударов и обучить им модель
  8. Используя параметры выявленные в пункте 4 обучить модель по заданному конечному положению руки и виду удара проводить этот удар

Что мы хотим получить

Модель руки которая по заданным конечным параметрам руки и виду удара воспроизводит этот удар

Восстановление положения руки по заданным параметрам

Степени свободы

Наша модель руки имеет 9 степеней свободы:
2 - поступательное движение плеча (вперед/назад;вверх/вниз)
3 - плечевой сустав (сферический шарнир)
1 - локтевой сустав
1 - вращение кистью вокруг своей оси
2 - запястье (2 перпендикулярных цилиндрических шарнира)

Поворот руки

В нашем случае рука состоит из трех частей представленных тремя векторами:

  1. Плечевая кость соответствует [math]\b{a}[/math]
  2. Локтевая кость соответствует [math]\b{b}[/math]
  3. Кисть соответствует [math]\b{c}[/math]

С ними связаны базисы base1; base2; base3 соответственно.
Изначальное положение руки - вытянутая горизонтально в право (правая рука), ось поворота локтя вертикальна
Повороты частей осуществляются посредством поворота соответствующего вектора вокруг определенной оси. Это достигается посредством скалярного умножения вектора слева на тензор поворота, который рассчитывается следующим образом
[math]\b{\b{P}}(\phi,e) = \b{e}\b{e} + (\b{\b{E}} - \b{e}\b{e})cos(\phi) + \b{e} \times \b{\b{E}}sin(\phi)[/math]
[math]\widetilde{\b{a}} = \b{\b{P}}(\phi,e) \cdot \b{a}[/math]
После этого необходимо также повернуть остальные (отстоящие еще дальше от плеча чем рассматриваемый) векторы и соответствующие им базисы также умножив их слева на тот же тензор поворота [math]\b{\b{P}}(\phi,e)[/math]
Таким образом осуществляется поворот всех 3х векторов на необходимые углы. Затем вычисляем координаты суставов:
[math]\b{o}[/math] - радиус вектор плеча
локоть - [math]\b{r} = \b{o}+\b{a}[/math]
запястье - [math]\b{r} = \b{o}+\b{a}+\b{b}[/math]
кончик кисти - [math]\b{r} = \b{o}+\b{a}+\b{b}+\b{c}[/math]

Реализация поворота в пакете MATLAB

Используя пакет MATLAB был реализован данный алгоритм поворота с целью построить траекторию движения руки и проверить правильность алгоритма. Все вполне правдоподобно выглядит. Вот пример движения руки:



Пробы съемки на высокоскоростную камеру

Падение монетки в стакан

См. также