Download as doc, pdf, or txt
Download as doc, pdf, or txt
You are on page 1of 22

<<<<<<<Биомеханика локомоторног система>>>>>>>

Дигитално моделирање човека: кинематика и статика

Локални кинематски модели насупрот глобалним и


категоризација кретања

Дигитално моделирање човека је поље које је почело активно да се проучава и


развија осамдесетих година прошлог века. Основне примене укључују инжењерски
дизајн и потврду, дигиталну ергономску процену и евалуацију, дигиталну
симулацију и верификацију дизајнираног производа и склапања, и тако даље. Кроз
историју, за потребе симулирања људског тела и кретања, људи су неретко
унајмљивали стварне особе и инсталирали велики број сензора, познатије као ,,јато
птица“, преко читавог тела како би забележили кретање. Другим речима, сваки би
сензор био у могућности да осети и трансмитује 3Д координирани сигнал у
тренутку и да генерише секвенцу тачака у виду трајекторије помоћу неког снимача
или камере. Уколико су сви сензори инсталирани тако да покрију сваки маркер на
људском телу, тада је комплетан покрет забележен и спреман за преглед на
рачунару. Стога, хватањем покрета (motion capture) може да се прикаже
реалистично кретање и већина холивудских филмова креираних помоћу рачунара
користи ову технологију. Лоша особина је очигледно та што сваки хватач покрета
може да забележи и генерише само један једини покрет, и мора да ухвати наредни
живи покрет поново при сваком апдејтовању или промени.
Да закључимо, постојала су/постоје три приступа репродукције људског кретања
помоћу рачунара:
1. Хватање покрета помоћу стварне особе коришћењем ,,јата птица“;
2. Уметање података унутар података о уживо забележеном покрету коришћењем
математичке интерполације и/или ауто-регресијом;
3. Дигитално моделовање човека и креирање покрета коришћењем математичких
алгоритама.
У циљу развијања потпуног математичког модела људског тела и још даље у
циљу производње реалистичног кретања, потребно је најпре разумети главне
покретне зглобове у људском телу. На слици 1 приказано је укупно 19 главних
покретних зглобова са својим типовима из перспективе биомедицине: вратни зглоб
за покретање главе, два (леви и десни) зглоба кључне кости, два зглоба рамена, два
лакта и два ручна зглоба за обе руке, зглоб грудног коша и крсни зглоб који покрива
кичмени стуб, два зглоба кука, два зглоба колена, два скочна зглоба и два зглоба за
ножне прсте. У претходно набројаном нису урачунати зглобови у шакама пошто се
моделовање шака врши засебно.

1
<<<<<<<Биомеханика локомоторног система>>>>>>>

Слика 1. Приказ најважнијих зглобова и типова зглобова у људском телу

Заправо, кичмени стуб, односно људска кичма се састоји од више дискова: група
од седам дискова на врху се назива цервикална или вратна област, група наредних
дванаест дискова је торакална или грудна област, након чега долази група од 5
лумбарних, односно крсних пршљенова. Последњи репни део се назива sacrum и
coccyx, што се може видети на слици 2. Цервикални покрет ће бити моделован као
3-осно врат/глава кретање, 12 дискова за покрете тораксне регије биће комбиновање
3-осног торакалног кретања, и 5 дискова лумбарног кретања ће бити моделовано
као 3-осно лумбарно зглобно кретање. Дефинисање већег броја зглобова за потребе
моделовања торакалне и лумбалне регије се може показати као сувишно и чак може
додатно да закомпликује проналажење кинематских решења.

2
<<<<<<<Биомеханика локомоторног система>>>>>>>

Слика 2. Кичмени стуб и његово моделовање

Са гледишта моделовања робота, међутим, врат, оба рамена, оба ручна зглоба,
грудни кош и крста, и оба кука сматрају се универзалним врстама зглобова, то
значи да сваки нуди три независна зглоба за генерисање комплетне ваљање -
пропињање - скретање ротације у оквиру SO(3) ортогоналне групе. Свака кључна
кост и сваки чланак се третирају као сферни типови зглобова који дају две
независне осе обртања на сваком зглобу, док лактови и колена имају само по један
обртни зглоб. Код овакве зглобне расподеле, укупан број покретних зглобова у
читавом телу достиже бројку од 47 зглобова, при чему је изузето још по 20 зглобова
сваке шаке. 47 зглобова је сасвим довољно да се у потпуности прикаже став и
понашање људског тела у сваком тренутку.
На слици 3 приказано је на који начин је дефинисано свих 47 зглобних позиција.
Прва три призматична зглоба d1, d2 и d3 су апсолутне транслације људског тела дуж
xb, yb и zb осе, тим редом. Следећа три обртања зглоба θ4, θ5 и θ6 су апсолутне
ротације: окретање око сопствене осе, прегиб, савијање у страну, тим редом.
Зглобни углови θ7, θ8 и θ9 представљају лумбарну флексију/екстензију, лумбарно
бочно савијање лево/десно и лумбарну ротацију. Слично, θ10 - θ12 представљају
флексију/екстензију, бочно кретање лево/десно и ротацију торакса.
Након грудног коша долази секвенца зглобова подељених у две паралелне гране:
лева клавикула и лева рука, десна клавикула и десна рука. θ13 и θ14 представљају
флексију/екстензију и подизање/спуштање леве клавикуле. θ15, θ16 и θ17
представљају флексију/екстензију, абдукцију/адукцију и медијално/латералну
ротацију левог рамена, тим редом. θ18 и θ19 су углови зглобова одговорних за
флексију/екстензију и пронацију/супинацију левог лакта. θ20 и θ211 су углови
зглобова за флексију/екстензију и радијално/улнарну девијацију левог ручног

1
На слици 4 је угао леве шаке означен са θ 21la а са 21 означена десна клавикула. Десна клавикула је
на исти начин означена и у хомогеној матрици трансформације A1121 (прим. прев.)

3
<<<<<<<Биомеханика локомоторног система>>>>>>>

зглоба. Приметимо да се θ19 може рачунати и као један од три ручна зглоба, иако је
означен као пронација/супинација левог лакта.

СЛИКА 3. Блок дијаграм распореда зглобова у људском телу

Друга грана након торакса одлази ка десној клавикули и руци. Слично, θ22 и θ23
су додељени десној клавикули, θ24 - θ26 су зглобни углови дефинисани за десно
раме, и десни лакат има зглобни угао θ27, након чега следи десни ручни зглоб са θ28,
θ29 и θ30.
Након што је првих шест зглобова одређено за апсолутну ротацију и транслацију
људског тела, даље се крећемо ка лумбарним зглобовима који се такође рачвају и то
директно ка ногама. На левој нози, θ31, θ32 и θ33 јесу зглобни углови за
флексију/екстензију, абдукцију/адукцију и медијалну/латералну ротацију левог
кука, тим редом. θ34 и θ35 су зглобни углови флексије/екстензије и
медијалне/латералне ротације левог колена. θ36 и θ37 су зглобни углови
дорзифлексије/плантар флексије левог скочног зглоба и флексије/екстензије ножног
прста леве ноге, тим редом.

4
<<<<<<<Биомеханика локомоторног система>>>>>>>

Слично и на десној нози, θ38 - θ40 представљају зглобне углове десног кука.
Десно колено има зглобне углове θ41 и θ42, а десни скочни зглоб угао θ43, након чега
следи угао зглоба прста десне ноге θ44.
Последња три зглобна угла се додељују покрету врат/глава: θ45 је угао окретања
главе, θ46 је покрет главе унапред (флексија/екстензија), док угао θ47 представља
угао нагињања у страну, као што је приказано на слици 3.
Свих 47 зглобова који покривају читаво људско тело треба даље дефинисати на
формалан и прецизан начин на основу Денавит-Хартенберг (Д-Х) конвенције
кинематике робота. Комплетна додела сегмент/веза координатних фрејмова
приказана је на слици 4. Како бисмо остали конзистентни Д-Х конвенцији, основни
фрејм 0 дигиталне репрезентације човека мора да буде дефинисан другачије од
фрејма b у базном координатном систему. Трансформација између њихових
координата се може лако уочити као

0 0 1
 
Rb0   0 1 0 ,
1 0 0 

што се показало симетричним тако да је Rb0  R0b .


Штавише, слика 4 не приказује ни један кинематски параметар, као на пример
зглобна растојања di и дужине веза ai, али су сви прецизно дефинисани у датим Д-Х
табелама на основу Д-Х конвенције:

i
i di i ai (почетна Назив зглоба
позиција)
0 d1 90 0 0 Транслација xb
90 d2 90 0 90 Транслација y b
0 d3 0 0 0 Транслација z b
4 Обртање тела око
0  90 0 0
своје осе
5 0  90 0  90 Прегиб
6 0 90 a6 0 Савијање у страну

i di i ai i Назив зглоба

5
<<<<<<<Биомеханика локомоторног система>>>>>>>

(почетна
позиција)
7 0 90 0 0 Лумбар флекс/екст
8 0 90 0  90 Лумбар латерал
9  d9 90 0  90 Лумбар ротација
 10 0 90 0  90 Торакс флекс/екст
 11 0 90 0  90 Торакс латерал

i
i di i ai (почетна Назив зглоба
позиција)
 12  d12 0  a12 l 0 12
Торакс ротација A11
 13 0 90 0 0 Л. клавикула флекс/екст
 14 0  90 0  90 Л. клавикула елев/депр
 15  d15 90 0 0 Л. раме флекс/екст
 16 0 90 0  90 Л. раме абд/адукц
 17 d 17  90 0 90 Л. Раме мед/лат

i
i di i ai (почетна Назив зглоба
позиција)
 18 0 90 0 0 Л. лакат флекс/екст
 19 d 19 90 0  90 Л. лакат прон/супин
 20 0  90 0 90 Л. ручни зглоб флекс/екст
 21 0  90 0  90 Л. ручни зглоб рад/улн

i
i di i ai (почетна Назив зглоба
позиција)
 12  d12 180 a12 r 0 21
Торакс ротација A11
 23 0 90 0 0 Д. клавикула флекс/екст
 24 0  90 0  90 Д. клавикула елев/депр
 25  d 24 90 0 0 Д. раме флекс/екст
 26 0  90 0 90 Д. раме абд/адукц
 27  d 26 90 0 90 Д. раме мед/лат

6
<<<<<<<Биомеханика локомоторног система>>>>>>>

Слика 4. Дигитални модел са додељеним координатама фрејмова

i
i di i ai (почетна Назив зглоба
позиција)
 27 0  90 0 0 Д. лакат флекс/екст
 28 d 28  90 0  90 Д. лакат прон/супин
 29 0 90 0 90 Д. ручни зглоб флекс/екст
 30 0 90 0 90 Д. ручни зглоб рад/улн

7
<<<<<<<Биомеханика локомоторног система>>>>>>>

i
i di i ai (почетна Назив зглоба
позиција)
h 0 180  ah 0 Х-троугао A6h
 31  d 31 90 0 0 Л. кук флекс/екст
 32 0 90 0  90 Л. кук абд/адукц
 33 d 33 90 0 90 Л. кук мед/лат
 34 0  90 0 0 Л. колено флекс/екст
 35 d 35  90 0 0 Л. колено мед/лат
 36 0 0 a 36 0 Л. чланак дорз/план
 37 0 90 0 90 Л. ножни прсти флекс/екс

i
i di i ai (почетна Назив зглоба
позиција)
h 0 180  ah 0 Х-троугао A6h
 38  d 31 90 0 180 Д. кук флекс/екст
 39 0  90 0 90 Д. кук абд/адукц
 40  d 40  90 0 90 Д. кук мед/лат
 41 0 90 0 0 Д. колено флекс/екст
 42  d 42 90 0 0 Д. колено мед/лат
 43 0 0 a 43 0 Д. чланак дорз/план
 44 0 90 0 90 Д. ножни прсти флекс/екс

i
i di i ai (почетна Назив зглоба
позиција)
 12  dn 180 0 0 n
Торакс ротација A11
 45 d 45  90 0 0 Окрет главе
 46 0 90 0  90 Климање главом
 47 0 0 a 47 0 Глава нагнута у страну

Потребно је уочити да додељени зглоб/веза фрејм и одговарајуће Д-Х табеле


нису јединствене и да могу да се дефинишу и на другачији начин. Без обзира на
који начин, додела фрејмова и Д-Х табеле морају бити доследне себи. Због тога што
је дигитални човек типична отворена серијска/паралелна хибридно-ланчана
структура, уобичајено је да се труп рачва у четири екстремитета: обе руке и обе
ноге. Након фрејма 11, постоје два пута: један ка фрејму 12 и левој руци, други ка

8
<<<<<<<Биомеханика локомоторног система>>>>>>>

фрејму 21 и десној руци. Код Х-троугла, након фрејма 6, такође постоје два пута
преко уобичајене константне трансформације A6h: један одлази ка фрејму 30 у
правцу леве ноге, а други ка фрејму 37 у правцу десне ноге.
Према Д-Х конвенцији, сада можемо да запишемо сваку од 47 хомогених
матрица трансформације на основу једначине

 ci  si 0 0  1 0 0 ai 
  
 si ci 0 0  0 c i  s i 0 
Aii1  
0 0 1 d i  0 s i c i 0 
  
 0 0 0 1  0 0 0 1 

На пример, првих шест матрица које представљају целокупан људски покрет могу
се записати на следећи начин:

1 0 0 0 0 0 1 0
   
0 0 1 0  1 0 0 0
A0  
1
, A1  
2
,
0 1 0 d1  0 1 0 d2 
   
0 0 0 1  0 0 0 1 
 

1 0 0 0  c4 0  s4 0
   
0 1 0 0 s 0 c4 0
A2  
3
, A3   4
4
,
0 0 1 d3  0 1 0 0
   
0 1  0
 0 0  0 0 1 

 c5 0  s5 0  c6 0 s6 a6 c6 
   
s 0 c5 0  s6 0  c6 a6 s6 
A4   5
5
 , и A5  
6
,
0 1 0 0 0 1 0 0 
   
0 0 0 1  1 
 0 0 0

овде и надаље ci = cos θi и si = sin θi, i = 4, ..., 47.


Исто тако, читалац може без већих потешкоћа сам да запише преостале хомогене
матрице трансформације. Те тако имамо:

 c7 0 s7 0  c8 0 s8 0  c9 0 s9 0 
     
s 0  c7 0 s 0  c8 0 s 0  c9 0 
Ah   7
7
, A7   8
8
, A8   9
9

0 1 0 0 0 1 0 0 0 1 0  d9 
     
0 1  0 1  0
 0 0  0 0  0 0 1 

9
<<<<<<<Биомеханика локомоторног система>>>>>>>

 c10 0 s10 0  c11 0 s11 0  c13 0 s13 0


     
s 0  c10 0  s11 0  c11 0  s13 0  c13 0
A910   10  , A10  
11
 , A12  
13

0 1 0 0 0 1 0 0 0 1 0 0
     
 0 0 0 1    1 
  0 0 0 1  0 0 0

 c13 0  s13 0  c15 0 s15 0 


   
s 0 c13 0  s15 0  c15 0 
  13 , A14  
14 15
A13 ,
0 1 0 0  0 1 0  d15 
   
 0  
 0 0 1  0 0 0 1 
 c16 0 s16 0
 
s 0  c16 0
16
A15   16
0 1 0 0
 
 0 0 0 1 

 c17 0  s17 0   c18 0 s18 0


   
s 0 c17 0   s18 0  c18 0
17
A16   17 , A18
 ,
d17   0 0
17
0 1 0 1 0
   
 0  0 1 
 0 0 1   0 0
 c19 0 s19 0 
 
 s19 0  c19 0 
A18  
19

0 1 0 d19 
 
 0 0 0 1 
 

 c 20 0  s 20 0  c 21la 0  s 21la 0
   
s 0 c 20 0  s 21la 0 c 21la 0
A1920   20 , A 21la
 ,
0  0 0
20
0 1 0 1 0
   
 0 0 0 1   0 0 0 1 
 
 c 22 0 s 22 0
 
 s 22 0  c 22 0 
22
A21 
0 1 0 0
 
 0 0 0 1 

10
<<<<<<<Биомеханика локомоторног система>>>>>>>

 c 23 0  s 23 0  c 24 0 s 24 0 
   
s 0 c 23 0  s 24 0  c 24 0 
  23 , A23  
23 24
A22 ,
0 1 0 0  0 1 0  d 24 
   
 0  
 0 0 1  0 0 0 1 
 c 25 0  s 25 0
 
s 0 c 25 0
25
A24   25
0 1 0 0
 
 0 0 0 1 

 c 26 0 s 26 0   c 27 0  s 27 0
   
s 0  c 26 0  s 0 c 27 0
26
A25   26 ,
27
A26   27
0 1 0  d 26  0 1 0 0
   
 0  0 1 
 0 0 1   0 0

 c 28 0  s 28 0   c 29 0 s 29 0
   
s 0 c 28 0   s 29 0  c 29 0
28
A27   28  , A28  
29
,
0 1 0  d 28 0 1 0 0
   
 0  0 1 
 0 0 1   0 0
 c30 0 s 30 0
 
 s30 0  c30 0 
A29  
30

0 1 0 0
 
 0 0 0 1 

 c32 0 s32 0  c33 0 s33 0   c34 0  s 34 0


     
s 0  c32 0  s 33 0  c33 0   s 34 0 c34 0
  32 , A32   , A33  
32 33 34
A31  
0 1 0 0 0 1 0 d 33 0 1 0 0
     
 0    0 1 
 0 0 1  0 0 0 1   0 0

 c35 0  s35 0   c36  s36 0 a36 c36 


   
s 0 c35 0   s36 c36 0 a36 s36 
35
A34   35 , A 36
 ,
d 35   0 0 
35
0 1 0 0 1
   
 0   0 0 0 1 
 0 0 1  
 c37 0 s37 0
 
 s 37 0  c37 0 
37
A36 
0 1 0 0
 
 0 0 0 1 

11
<<<<<<<Биомеханика локомоторног система>>>>>>>

 c39 0  s39 0  c 40 0  s 40 0 
   
s 0 c39 0  s 40 0 c 40 0 
  39 , A39  
39 40
A38 ,
0 1 0 0  0 1 0  d 40 
   
 0  
 0 0 1  0 0 0 1 
 c 41 0 s 41 0
 
s 0  c 41 0
41
A40   41
0 1 0 0
 
 0 0 0 1 

 c 42 0 s 42 0   c 43  s 43 0 a 43 c 43 
   
s 0  c 42 0   s 43 c 43 0 a 43 s 43 
42
A41   42  , A42  
43

0 1 0  d 42 0 0 1 0 
   
 0   0 0 0 1 
 0 0 1  

 c 44 0 s 44 0  c 45 0  s 45 0   c 46 0 s 46 0
     
s 0  c 44 0  s 45 0 c 45 0   s6 0  c 46 0
  44 , An   , A45  
44 45 46
A43  
0 1 0 0 0 1 0 d 45 0 1 0 0
     
 0 1   0  0 1 
 0 0  0 0 1   0 0

 c 47  s 47 0 a 47 c 47 
 
s c 47 0 a 47 s 47 
47
A46   47
0 0 1 0 
 
 0 0 0 1 

Издвојићемо следеће прелазне матрице у свакој тачки у којима се труп рачва ка сва
четири екстремитета и врату:

 c12  s12 0  a12 c12   c12 s12 0 a12 c12 


   
s c12 0  a12 s12   s12  c12 0 a12 s12 
A1112   12 , A 21

 d12   0  1  d 12 
11
0 0 1 0
   
 0 0 0 1   0 0 0 1 
 

где je A1112 део трупа који иде ка левој руци и A1121 иде ка десној руци. Слично:

 c12 s12 0 0 
 
s  c12 0 0 
A11n   12
0 0 1  dn 
 
 0 0 0 1 

12
<<<<<<<Биомеханика локомоторног система>>>>>>>

представља прелаз са фрејма број 11 на фрејм врата ка глави. Прелаз са Х-троугла


ка ногама се одвија помоћу уобичајених константних трансформација:

 ch sh 0  ah ch   1 0 0  ah 
   
s  ch 0  ah sh   0  1 0 0 
A6   h
h

0 0 1 0  0 0 1 0 
   
0 0 0 1   0 0 0 1 

пошто је θh = 0, и увек нула.


Након уобичајеног прелаза Ah6, лева и десна нога ће стартовати са

 c31 0 s31 0   c38 0 s38 0 


   
s 0  c31 0   s38 0  c38 0 
Ah   31
31
 и Ah  
38
,
0 1 0  d 31 0 1 0 d 38 
   
 0 0 0 1   0 0 0 1 
 

тим редом.

Када је развијен комплетан 47-зглобни кинематски модел дигиталног човека на


основу прецизиране Д-Х конвекције, пажњу усмеравамо на покретање дигиталног
модела. Уопштено, можемо да користимо следеће практичне приступе како бисмо
генералисали жељено кретање:

1. Локално кретање зглоба: за снимање жељеног почетног и жељеног крајњег


положаја ручно подешавамо одговарајуће вредности зглобова за дигитални модел, а
затим модел покрећемо коришћењем алгоритма за покрете у зглобу на основу
једначине

i II
q (i )  q I  i  q  q I  (q  q I )
N

Како такво подешавање зглоб по зглоб безразложно захтева пуно времена и


заморно је, а добијање реалистичног покрета није загарантовано, требало би га
користити само за померање модела при релативном или делимичном покрету.

2. Глобално кретање зглоба: за дефинисање независне трајекторије зглоба qi(t) за


сваки од 47 зглобова наведених у позиционом вектору (вектору колона) зглоба:

q  ( d1 , d 2 , d 3 ,  4 ,...,  47 ) T

за генералисање покрета модела; или помоћу учимо-радећи методе коју користи


већина индустријских робота који зависе од предефинисаних вредности за све
зглобове у свакој жељеној позицији који се прате на монитору, а затим се независни

13
<<<<<<<Биомеханика локомоторног система>>>>>>>

покрети зглобова репродукују помоћу линеарне интерполације, односно помоћу


алгоритма за кретање зглобова датих једначином

i II
q (i )  q I  i  q  q I  (q  q I )
N

Овај приступ би могао да произведе сложеније покрете модела, али је ручно


подешавање позиције сваког зглоба понаособ, док се истовремено на екрану прати
како је модел позициониран при сваком снимању, веома дуг и мукотрпан процес.

3. Локално картезијанско кретање: коришћењем делимичног И-К (инверзна


кинематика) решавања проблема за покретање дела тела дигиталног човека у циљу
локалног покретања сегмента. Типичан пример који се може пронаћи уграђен у
већину комерцијалних софтверских пакета за симулацију дигиталних модела, као
на пример SafeworkТМ, јесте превлачењем курсора преко позиције и/или
оријентације фрејма руке за један покрет руке у односу на релативно фиксиран
фрејм рамена, или превлачењем стопала како би се покренула нога у односу на
фиксирани фрејм кука. Два су главна начина да се ово постигне: (1) пронаћи сет И-
К решења најпре симболично, а затим их унети у програм у циљу израчунавања
вредности свих посматраних зглобова како би се дошло до жељене картезијанске
позиције и/или оријентације, и (2) чисто решавање једначине коришћењем неке
функције, као што су уграђене функције fsolve(...) или fzero(...) у MATLAB TM
оптимизационом тулбоксу, како би се картезијанско кретање решило нумерички.

4. Глобално картезијанско кретање: и овде постоје два приступа: (1) најпре


бележењем покрета инсталирањем сензора, по једнан на сваком маркеру људског
тела (,,јато птица“), и снимањем трајекторије сваког сензора кад год се начини
жељени покрет, или једном камером или системом више камера забележити
трајекторије свих маркера. Затим, применити сет локалних И-К алгоритама у циљу
добијања вредности за зглобове у свакој семплованој тачки а на основу снимака
трајекторије сваког маркера. Пошто сензор, као на пример 3Д акцелерометар, на
сваком постављеном маркеру даје излаз 3Д позиције у (x, y, z) формату, у свакој
семплованој тачки, да би се добило свих 47 вредности, потребно је инсталирати
наведене сензоре на бар 47/3 ≈ 16 маркера преко целог људског тела; и (2)
испланирати путање сета жељених трајекторија за пар екстремитета, на пример
једне или обе руке, и/или једне или обе ноге, и затим применити линеарне или
нелинеарне програмске алгоритме како би се добило нумеричко решење глобалних
кинематских једначина у условима вишеструке оптимизације задатих кретања у
реалном времену. Уобичајени начин је дигитално моделирање човека које се
темељи на оптимизацији за постављање једне или више објективних функција које
би давале минимум или максимум под одређеним бројем ограничења. У смислу
алгоритамског решења проблема, што такође припада картезијанској категорији
кретања, и глобална и локална решења зависе од тога колико је зглобних углова
потребно израчунати за одређено кретање под оптимизационим условима.
MATLABTM оптимизациони тулбокс поседује одређени број уграђених функција:

14
<<<<<<<Биомеханика локомоторног система>>>>>>>

fmincon(...) и fgoalattain(...), и тако даље, доступних за наведена нумеричка


решавања у реалном времену.

5. Глобално диференцијално кретање: за развијање глобалног Јакобијана Ј и за


апдејт сваке зглобне позиције инверзним решавањем Јакобијан једначине Jq& V
са сваком жељеном путањом испланираном у тангентном простору, што је дато
једначином

q (t  t )  q (t )  J 1Vt

Пошто је дигитални модел човека у кинематици редундантан, односно пошто је


број зглобова већи од укупног броја степена слободе, то ствара доста простора да се
истовремено спроведе већи број подзадатака у циљу оптимизације алгоритама. На
пример, ако су обе шаке и оба стопала плус Х-тачка моделовани да буду 5 енд
ефектора, тада они у тоталу дају 6 х 5 = 30 степени слободе. Претпоставимо да је
потребно да само 44 зглоба, изузимајући врат/главу, буду апдејтовани помоћу
инверзног решавања Јакобијан једначине. У том случају, очигледно је да ће
развијена глобална Јакобијан матрица имати димензије 30 пута 44 са најмање 44 -
30 = 14 степени редундантности.
Познато је да би развој И-К алгоритма чак и за локалну област дигиталног
човека био веома тежак посао, па чак и захтевао врхунске вештине како би се све
представило симболички. Наравно, могуће је решити кинематичке једнакости и
нумерички у картезијанским координатама помоћу постојећег алгоритма. У сваком
случају, како и делови људског тела или цело тело дигиталног човека садрже
велики број обртних зглобова, такво нумеричко решење је најчешће
неконтролисано или неодређено због феномена мулти-конфигурације. Овај мулти-
конфигурациони проблем се не јавља само услед редундантности, већ је резултат
могућности добијања вишеструких решења при решавању тригонометријских
једначина. Уколико се на кинематичке једначине не може применити једно или
више ограничења у циљу сужавања могућности појаве мулти-конфигуралности у
нумеричком програмирању, аналитички И-К алгоритам би још увек могао имати
предност боље контроле него нумеричко решење.
На пример, да би се извео И-К за леву руку почевши од раменог фрејма број 14 и
све до фрејма шаке 21la, потребно је прорачунати или аналитички или нумерички
следећи производ:
21la
A14  A14
15 16
A15 17
A16 18
A17 19
A18 20
A19 21la
A20 ,

где је свака матрица са десне стране једнакости једностепена хомогена


трансформација. Након израчунавања матрице А1421la, потребно је упоредити и
четврту колону и горњи леви блок 3х3 са жељеном позицијом вектора и
оријентације матрице у нумеричком облику између фрејма 14 и фрејма 21la. На
основу поређења, коначно је могуће прећи на све неопходне тригонометријске
једначине до седам atan2(.,.) форми како би се решили зглобни углови од θ15 све до
θ21 који одређују леву руку уколико је потребно аналитичко решење. Или, сет 3 пута
4 матричних једначина за горе наведена поређења и затим пустити да постојећи

15
<<<<<<<Биомеханика локомоторног система>>>>>>>

нумерички алгоритам да решење за седам зглобних углова. У циљу илустровања и


аналитичког извођења и нумеричког решењавања, наставимо дискусију и даљи
развој детаљније.
Заправо није потребно рачунати целокупну матрицу А1421la аналитички како би се
дошло до И-К решења. Попут већине шестозглобних индустријских робота, прва
три зглоба најчешће дају кретање које захтева позицију енд ефектора, а последња
три зглоба који су стешњени унутар ручног зглоба обезбеђују жељену оријентацију.
За седмозглобну леву руку дигиталног човека, прва три зглоба од θ15 до θ17 су
концентрисани унутар центра рамена, који се може моделовати као универзални
РРР (3 ротације) тип зглоба, док је четврти θ18 зглоб лакта, као што је приказано на
слици 4. Ако сада разложимо једностепену хомогену трансформацију А1819 на два
матрична фактора: где један представља чисту транслацију а други чисту ротацију:

 c19 0 s19 0  1 0 0 0  c19 0 s19 0


    
s 0  c19 0  0 1 0 0  s19 0  c19 0
A18   19
19
 ,
0 1 0 d 19   0 0 1 d 19  0 1 0 0
    
 0 0 0 1   0 0 0 1  0 0 0 1 

и уколико се прва транслација споји са претходном А1718 тако да је

1 0 0 0   c18 0 s18 d19 s18 


   
18  0 1 0 0   s18 0  c18  d19 c18 
18 d
A17  A17   .
0 0 1 d 19   0 1 0 0 
   
0 0 0 1   0 0 0 1 

Тада ће прва четири зглоба имати следећу хомогену трансформацију:

 R14
18 19
p14 
A 18 d
A A A A
15 16 17 18 d
   (1),
1 
14 14 15 16 17
 03

при чему је

 b1c18  c15 s16 s18  c15 c16 s17  s15 c17 b1 s18  c15 s16 c18 
 
R18
14   b2 c18  s15 s16 s18  s15 c16 s17  c15 c17 b2 s18  s15 s16 c18  ,
s c c  c s  s16 s17 s16 c17 s18  c16 c18 
 16 17 18 16 18

 d19 (b1 s18  c15 s16 c18 )  d17 c15 s16 


 
P 19
14   d19 (b2 s18  s15 s16 c18 )  d17 s15 s16 
 d (s c s  c c )  d c  d 
 19 16 17 18 16 18 17 16 15 

16
<<<<<<<Биомеханика локомоторног система>>>>>>>

и b1 = c15 c16 c17 + s15 s17 и b2 = s15 c16 c17 - c15 s17.

Сада, нека je позиција вектора p1419 који почиње од тачке подизања/спуштања


левог зглоба клавикуле и завршава се у центру ручног зглоба једнака задатој
нумеричкој позицији вектора:

 x
 
p19
14   y .
z
 

Пошто лева страна горње једначине има четири променљива угла θ15 - θ18 која треба
решити, док десна страна има само три позната броја x, y и z, једну непознату је
потребно претпоставити. Најлогичније је угао медијалне/латералне ротације рамена
θ17 фиксирати у почетни положај, то јест θ17 = 90°. Тада горња једначина може да се
редукује на

 d19 ( s15 s18  c15 s16 c18 )  d17 c15 s16   x 


   
P 19
14   d 19 (c15 s18  s15 s16 c18 )  d17 s15 s16    y  , (2)
  d19 c16 c18  d17 c16  d15  z
   

заједно са редукованим b1 = s15 и b2 = - c15.


Да би се решила тригонометријска једначина, најпре је потребно квадрирати
сваки елемент вектор колоне p1419 а затим их све сабрати како би се добило

d172  d192  2d17 d19 c18  x 2  y 2   z  d15  .


2

Ово је потпуно у сагласности са косинусним законом за троугао који формирају


раме, лакат и централна тачка ручног зглоба. Тако да имамо:

x 2  y 2   z  d15   d172  d192


2

c18  .
2d17 d19

Пошто је домет кретања зглобног лакта угао θ18 у интервалу [0, 180°], s18  0 , тако
да је s18  1  c182 . Сада можемо да решимо

18  a tan 2( s18 , c18 )  a tan 2( 1  c18


2
, c18 )

Након што је добијено θ18, коришћењем z-компоненте из једначине (2), добићемо

z  d 15
c16  
d 17  d 19 c18

17
<<<<<<<Биомеханика локомоторног система>>>>>>>

Сада се суочавамо са дво-конфигурационом ситуацијом, односно углом


абдукције/адукције рамена θ16 који може бити у опсегу (-180°, 0] као случај
привођења и одвођења испод нивоа хоризонтале, или θ16 > 0 као одвођење леве руке
изнад хоризонталног нивоа. У првом случају је s16   1  c16
2
док је у другом s16
 1  c16
2
. Стога је


16  a tan 2( s16 , c16 )  a tan 2  1  c16
2
, c16 . 
Када су и θ16 и θ18 израчунати, угао флексије/екстензије рамена θ15 може да се
реши коришћењем прве две компоненте једначине (2). Конкретно,

 d19 ( s15 s18  c15 s16 c18 )  d17 c15 s16  x



d 19 ( c15 s18  s15 s16 c18 )  d 17 s15 s16  y

тако да je

 d 19 s18 d 17 s16  d19 s16 c18  s15   x 


      .
 d17 s16  d19 s16 c18  d19 s18  c15   y 

И чим се реше и s15 и c15 може се одредити и угао флексијe/екстензијe рамена θ15 на
основу

 15  a tan 2( s15 , c15 ).

Због тога што θ16 може имати две вредности за зглоб као типичан феномен мулти-
конфигурације, што ће утицати на то да и угао θ15 има два различита решења.
Након што су прва четири угла θ15 - θ18, укључујући фиксирани θ17 = 90°,
израчунати у смислу датих координата x, y и z, замењујући их у једначини (1),
оријентација R1418 може бити одређена нумерички. Уколико је жељена оријентација
за фрејм 21la леве руке у односу на фрејм 14 дата помоћу R1421la, тада можемо
одредити коју још додатну ротацију треба обавити ручни зглоб како би се постигла
тражена оријентација R1421la. Једноставније речено, додатна ротација се може
израчунати нумерички на следећи начин:

 r11 r12 r13 


 
R 21la
18 R R
14
18
21la
14  (R )R
18
14
21la
14   r21 r22 r23  .
r r32 r33 
 31

Даљим извођењем, долазимо до аналитичког облика тражене додатне ротације:

18
<<<<<<<Биомеханика локомоторног система>>>>>>>

 c19 c 20 c 21  s19 s 21 c19 s 20  c19 c 20 s 21  s19 c 21 


 
R 21a
18 R R R
19
18
20
19
21la
20   s19 c 20 c 21  c19 s 21 s19 s 20  s19 c 20 s 21  c19 c 21  .
 s 20 c 21  c 20  s 20 s 21 
 

Нека су горе наведени аналитичко и нумеричко R1821la једнаки и претпоставимо


да их је могуће упоредити. Можемо израчунати сва три зглоба која учествују у
ротацији левог ручног зглоба. Најпре, c20 = - r32, и приметићемо да се угао ротације
при флексији/екстензији ручног зглоба θ20 креће од 0 до 180°. Стога је s20
 1  c 20
2
 1  r322 тако да је


 20  a tan 2 1  r322 , r32 . 
Сада, пошто је s20 > 0 (претпостављамо да θ20 неће достићи границу угла 0 или
180°),

 19  a tan 2( r22 , r12 ) и  21  a tan 2  r33 , r31  .

Наравно, вредности три угла ручног зглоба θ19, θ20 и θ21 ће такође имати
вишеструка решења због два могућа решења угла θ16. Уколико занемаримо услов 0
 θ20  180° за флексију/екстензију ручног зглоба, тада ће се појавити још две
конфигурације ротације ручног зглоба. Поврх тога, наведена И-К решења су
изведена на основу фиксиране рамене медијално/латералне ротације угла θ17 = 90°.
Уколико занемаримо услов, тада ће број И-К решења бити бесконачан. Разлог је
јасно због тога што лева рука има укупно 7 зглобова и лева шака 6 степени слободе
тако да је та рука редундантна.
За верификовање локалног И-К алгоритма, састављен је MATLAB TM програм.
Нека позиција фрејма 21la у односу на фрејм 14 има вредности x = 0, y = -0.5 и z =
-0.4 у метрима, и нека је оријентација постављена на

1 0 0 
 
R 21la
14  0 1 0  .
 0 0  1

Подешавање би требало да буде направљено превлачењем курсора. Скрипт је


следећи:

d15=0.16; d17=0.3; d19=0.2935;
% Left Arm Parameters in Meters
th_body=[0; 0; 0; 0; ­90; 0];
th_trunk=[0; ­90; ­90; ­90; ­90; 0];
th_larm=[0; ­90; 0; ­80; 90; 10; ­90; 90; ­90];
th_rarm=[0; ­90; 0; 100; 90; 10; ­90; 90; 90];
th_lleg=[0; ­85; 90; 10; 0; 10; 90];

19
<<<<<<<Биомеханика локомоторног система>>>>>>>

th_rleg=[180; 95; 90; 10; 0; 10; 90];
th_head=[0; ­90; 10];
q=[th_body; th_trunk; th_larm; th_rarm; th_lleg;...
th_rleg; th_head]*pi/180;
% Initialize All the 47 Joint Values at Home
x=0; y=­0.5; z=­0.4;
% The Desired Hand Position from Frame 14
R21=[­1 0 0;0 1 0;0 0 ­1];
% The Desired Orientation Referred to Frame 14
for i=15:21
s(i)=sin(q(i)); c(i)=cos(q(i));
end
c(18)=(xˆ2+yˆ2+(z+d15)ˆ2­d17ˆ2­d19ˆ2)/(2*d17*d19);
s(18)=sqrt(1­c(18)ˆ2);
q(18)=atan2(s(18),c(18));
c(16)=­(z+d15)/(d17+d19*c(18));
s(16)=­sqrt(1­c(16)ˆ2); % Or s(16)=sqrt(1­c(16)ˆ2);
q(16)=atan2(s(16),c(16));
A=[d19*s(18) d17*s(16)+d19*s(16)*c(18)
d17*s(16)+d19*s(16)*c(18) ­d19*s(18)];
b=A\[x; y];
q(15)=atan2(b(1),b(2));
R18=[b(1)*c(18)­b(2)*s(16)*s(18) ­b(2)*c(16) ...
b(1)*s(18)+b(2)*s(16)*c(18)
­b(2)*c(18)­b(1)*s(16)*s(18) ­b(1)*c(16) ...
­b(2)*s(18)+b(1)*s(16)*c(18)
c(16)*s(18) ­s(16) ­c(16)*c(18)];
Rw=R18’*R21;
q(20)=atan2(sqrt(1­Rw(3,2)ˆ2),­Rw(3,2));
q(19)=atan2(Rw(2,2),Rw(1,2));
q(21)=atan2(­Rw(3,3),Rw(3,1));
f_ag6(q); % Call a Subroutine to Draw the Mannequin
axis([­0.5 2 ­1.5 1.5 0 2]), daspect([1 1 1]),
zoom(2.0), view([1 ­0.3 0.2]),

>> q(15:21)’ % Joint Angles at Home in Degrees
0 ­80 90 10 ­90 90 ­90
>> q(15:21)’ % Joint Angles at Desired Point When s(16) < 0
72.3 ­59.8 90.0 31.2 ­70.8 30.5 ­122.0
>> q(15:21)’ % Joint Angles at Desired Point When s(16) > 0
­67.0 62.5 90.0 41.7 59.4 29.6 ­44.3
>>

Горњи MATLABTM код служи да се израчунају сви углови свих зглобова који
учествују у кретању леве руке, а затим да позове сабрутину f_ag6(q) за исцртавање
модела, где је улазна величина дата са q који представља вектор положаја 47х1.
Разултат се може видети на слици 5 на којој је положај леве руке дат за случај sin θ16
< 0, и положај десне руке за sin θ16 > 0.

20
<<<<<<<Биомеханика локомоторног система>>>>>>>

Слика 5. Лева рука дигиталне фигуре се ручно помера помоћу локалног И-К
алгоритма помоћу најмање две различите конфигурације

У наставку, последња три реда програма представљају излазне податке за седам


углова чланака дуж леве руке у случају пре превлачења шаке као и у случају након
померања шаке на жељену позицију и у жељену оријентацију. Другим речима, први
сет зглобних углова је почетна вредност за почетну позицију, док је други сет
зглобних углова И-К решење у степенима када је sin θ16 > 0, то јест када је лево
раме одведено изнад хоризонталног нивоа.
Ако директно решимо кинематичку једначину

A1421la = A1415A1516A1617A1718A1819A1920A2021la

за леву руку нумерички коришћењем функције fsolve(...), односно уколико решимо


матричну једначину

1 0 0 0 
  
F ( q )  A14
21la
(1 : 3,1 : 4)   0 1 0  5   0,
 0 0 1  4 

тада су програм и резултат дати на следећи начин:

d15=0.16; d17=0.3; d19=0.2935;
% Left Arm Parameters in Meter
th_body=[0; 0; 0; 0; ­90; 0];
th_trunk=[0; ­90; ­90; ­90; ­90; 0];
th_larm=[0; ­90; 0; ­80; 90; 10; ­90; 90; ­90];
th_rarm=[0; ­90; 0; 100; 90; 10; ­90; 90; 90];
th_lleg=[0; ­85; 90; 10; 0; 10; 90];

21
<<<<<<<Биомеханика локомоторног система>>>>>>>

th_rleg=[180; 95; 90; 10; 0; 10; 90];
th_head=[0; ­90; 10];
q0=[th_body; th_trunk; th_larm; th_rarm; th_lleg;...
th_rleg; th_head]*pi/180;
% Initialize All the 47 Joint Values at Home
q = fsolve(@f_pos,q0); % Call the Equation Solver
f_ag6(q); % Call a Subroutine to Draw Mannequin
axis([­0.5 2 ­1.5 1.5 0 2]), daspect([1 1 1]),
zoom(2.0), view([1 ­0.3 0.2]),
% ­­­­­­­­­­­­­­­­­­­­­ %
function F = f_pos(q) % Equation To Be Solved
d15=0.16; d17=0.3; d19=0.2935;
q(17)=pi/2; % Force q(17) To Be Fixed
for i=15:21
s(i)=sin(q(i)); c(i)=cos(q(i));
end
A15=[c(15) 0 s(15) 0; s(15) 0 ­c(15) 0
0 1 0 ­d15; 0 0 0 1];
A16=[c(16) 0 s(16) 0; s(16) 0 ­c(16) 0
0 1 0 0; 0 0 0 1];
A17=[c(17) 0 ­s(17) 0; s(17) 0 c(17) 0
0 ­1 0 d17; 0 0 0 1];
A18=[c(18) 0 s(18) 0; s(18) 0 ­c(18) 0
0 1 0 0; 0 0 0 1];
A19=[c(19) 0 s(19) 0; s(19) 0 ­c(19) 0
0 1 0 d19; 0 0 0 1];
A20=[c(20) 0 ­s(20) 0; s(20) 0 c(20) 0
0 ­1 0 0; 0 0 0 1];
A21=[c(21) 0 ­s(21) 0; s(21) 0 c(21) 0
0 ­1 0 0; 0 0 0 1];
A=A15*A16*A17*A18*A19*A20*A21;
F=A(1:3,1:4)­[­1 0 0 0; 0 1 0 ­5; 0 0 ­1 ­4];
% Make the Two 3 By 4 Matrices Equal
end
>> q(15:21)’ % Joint Angles at Desired Point
­67.0 62.5 90.0 41.7 ­120.6 ­29.6 135.7

22

You might also like