inverz kinematikai


Translation végzett Pavel A. Chuvanov, résztvevője a Mindenható.

Kinematika - folyamat kiszámításának térbeli helyzetének a végét az összekapcsolt szerkezet előre meghatározott elfordulási szögeket a csuklók (ízületek). Ez könnyen elvégezhető, ha csak az egyik megoldás. Inverz kinematika az ellenkezőjét teszi. Erre a végpont kiszámítja a forgásszögek a zsanérok, hogy elérték ezt a végpontot. Ez nehéz lehet, ha sok van, vagy végtelen sok megoldás.

Ez a folyamat rendkívül hasznos robotika. Például, ha szeretnénk, hogy a robotkar megfogta a tárgyat. Ha a program tudja a helyét a tárgy képest a vállízület, akkor elegendő számítani forgásszögeinek ízületek elérése érdekében az objektumot. Továbbá, inverz kinematikai hasznos 3D-s játékok. Vegyük például egy sárkány egy nagyon hosszú nyaka. Sárkány kell reálisan nyakkal és felfalják a játékos állt a padlón. Vagy a játékos akarta emelni a padló egy tárgy, vagy nyomja meg a gombot. A felhasználó fogja látni a képernyőn a játékos kell húzni, és megérintette a tárgyat, ahelyett, hogy csak feladja valahol a tárgyat (például az Alone In The Dark).

Írtam egy kis demo DOS szemlélteti a mechanizmus inverz kinematikai. A képen látható, hogy egy kígyó megpróbálja megérinteni a kis forgó kocka. Ön mozgathatja a cél a billentyűzet használata. A demo, hogy kígyó a gravitáció, és azt kevésbé rugalmas, így nem fog tudni mozgatni, és megtalálni, miután a cél, elérni egy kényelmes helyzetben. kígyó modell a tail.cfg fájlt. Azt is rögzíti, hogy hozzon létre egy másik objektumot.

Sok olyan eset van, amikor a kapcsolódó szerkezet nem képes elérni a célt. Például, ha nem érintheti meg egy könyök csukló ugyanaz a kéz. Vagy szálljon le a földre, hogy a tetején egy magas fa.

Ha két megoldás van, akkor kell lennie egy szelekciós technika, amely oldat jobban megfelel a jelenlegi állapotában a szerkezet.

Ha több mint két zsanér, gyakran előfordul, hogy sokan vannak a probléma megoldására. Mindazonáltal egyes megoldások jobbak, mint mások. Ha a szerkezet, például egy kéz néhány megoldás sokkal kényelmesebb, mások nagyon természetellenes. Gyakran van egy optimális megoldás.

Azért jöttem, hogy az eljárás inverz kinematikai után némi megfontolás, próbálgatással. Kétségtelen, hogy sok algoritmus megoldására inverz kinematikai problémát, de itt fogom leírni egyetlen.

Ez az algoritmus nem azonnal megoldást találni. Ez nem egy egyszerű függvény, ahol megadhatja a cél, és kap a szögek. Ez egy iteratív algoritmus, ami az algoritmus reálisabb programok, különösen a játékokat, ahol naveryaka, hogy az objektum mozog simított.

A döntés oka, hogy a virtuális erőszak alkalmazását a lánc végét és húzza a lánc végén a véghelyzetben. Ható erő minden egyes közös struktúra és mozog egy kicsit közelebb a végpontig. Tehát akkor is, ha nincs megoldás, a lánc közelebb a végpont a lehető legközelebb. Mivel az ízületek külön-külön számítják, beállíthatja, hogy a különböző tulajdonságok, mint a merevség, rugalmasság, stb Minden az ízületek is van egy optimális helyzetben, hogy az algoritmus megpróbálja elérni a lehető legközelebb.

Inverz kinematika 2D

Kezdjük az egyik zsanér. Ebben az esetben el tud fordulni csak egy tengely (az óramutató járásával ellentétes irányban, mint egy pozitív választani). R vektor hat derékszögben a csont. Az erő vektor F jár a végpont irányába a cél. A bezárt szög az F és R jelentése. Most minden nagyon egyszerű. A sebesség, amellyel meg kell forgatni a csukló, arányos skalárszorzat (dot termék) vektorok R és F. tartása szempontjából, hogy a skalár szorzat két vektor egy pozitív szám, és természetesen a közös forognia kell a pozitív irányba, így közel a cél . Ha a szög között R és F sorban, majd megfordult a csukló úgy, hogy a csont volt, olyan közel, hogy a cél, és ezért, a csuklópánt nem forgatható tovább. Ezen a ponton a szorzata két vektor ad nulla.

Nos, jöjjön. Case nehezebb. Ezentúl, minden rendben lesz, csak egyfajta ügyben. Ha több mint egy csont, csak meg kell ismételni a fent leírt algoritmus minden egyes közös viszont.

Kezdjük a közös legközelebb a cél:
1. kiszámítja az erő vektor (a végpont és a cél)
2. Kiszámítjuk skalár szorzata az erő vektor és a vektor merőleges a csont.
3. Szorozzuk skalár szorzata egy kisszámú (pl 0,01)
4. Adjuk a sarokpánt.

Tesszük így minden ízületek sorba.

Inverz kinematika 3D

A háromdimenziós térben, számítás nem lesz sokkal bonyolultabb. Három lehetséges tengely, amely körül a közös foroghat. Próbáltam használni a fenti módszer a háromdimenziós térben, de az eredmények nem voltak túl jók. Nem teljesen értem, hogy miért. Mindazonáltal ez a matematikai határozottan dolgozik. Van valami, ami megköveteli a sok beállítás változásokat, így minden működött, persze, igaza van.

Nos, akkor menjünk tovább.

a csuklópánt tengelye merőleges a csont

Először próbáljuk a fenti példában, de ezúttal 3D-ben. Ez egy olyan rendszer, két ízületek, és először megteszi az első csukló.

Adjunk nevet a vektorok
egy - Vector tengelye mentén a csuklópánt.
b - Vector a csont mentén.
r - a vektor merőleges, és b.
f - erő vektor (eljárva a végpont és a cél).

Ha az erő vektor párhuzamos egy, a csuklópánt nem forog. Ha párhuzamos b, akkor csak húzza a csont, ízületi nem forog. Adatok birtokában posztulátum már, úgy döntöttem, hogy a nyomaték legyen arányos a szinusz közötti szög a és az f és a szinusz közötti szög b az f.

Amennyiben a végpont elérkezett arra a pontra, cél, akkor nem akar mozogni a szerkezet, de ha a végén a pont távol a cél, hogy szeretne gyorsan szerkezetét. Következésképpen a nyomaték kell hosszával arányos az erő vektor.

Csak egy dolog, hogy nem lehet megérteni a fenti - az irányt, ahol a közös kell forognia. Legyen csuklópánt kell vraschatsya pozitív irányban, ha az erő vektort mentén irányul R, és az ellenkező irányba, ha az erő vektort ellentétes irányú r.

Mindent egybevetve kapjuk:

nyomaték = Mag (f) * SinVect (a, f) * SinVect (b, f) * jel (CosVect (R, F)) * Érzékenység

Ebben képletű SinVect CosVect és vissza, illetve a szinusz és koszinusz az a szög között a vektorok. Mag visszatér a vektor hosszát, írja alá és küldje vissza a jele a számot. Érzékenység - ez csak egy kis skalár konstans.

Most már tudja mozgatni, hogy a következő közös a szerkezetben. Kiszámoljuk az új értékeket a vektorok a, b, f, és ki kell számítani a nyomaték csuklós 2. Kiszámítjuk a nyomaték minden ízületek a szerkezet és hozzá a szög mindegyik csukló annak nyomatékot. Endpoint most már közelebb a cél. Folyamatosan ismétlődő folyamat képesek leszünk, hogy a végpont a szerkezet a célt, amilyen közel vagy akár érintse meg a célt.

a csuklópánt tengelye mentén irányul csont

Nos, nézzük meg a nehezebb eset. De nincs semmi új. Itt láthat egy kötött szerkezetű, amely négy ízületek. Közös a kettes számú, azonban lehet forgatni a tengelye körül a csont. Ez hasonló ahhoz, meghajlítani a csuklóját. És persze, ez az együttes a legfontosabb. Mint az előző esetben, a vektor kerül sor mentén a csuklópánt tengelye, de ebben az esetben az is a csont mentén. A vektor b most már megy a csuklótól a végpontig. Vektor r mint korábban egyaránt merőleges.

A cél elérése érdekében a csukló 2-nek viszont 90 fokkal (lásd. A jobb oldali kép).

És arra a következtetésre jutunk, hogy a b vektor különbözik az ízületek, amelynek forgástengelye párhuzamos a csont.

Most, hogy már elsajátította az alapja inverz kinematikai, még mindig a feladat állítani a rendszert a meghatározott viselkedését különböző helyzetekben. Ahogy már mondtam, sok különböző megoldásokat. Némelyik jobb, néhány rosszabb. Különböznek, hogyan néznek ki, mérete a kiégett mozgások vagy kényelmét.

Igazi kígyó egy igazi animációs ritkán belegabalyodik is. Úgy látszik obrazovvyvat meglehetősen sima görbék. Snake a demo készült pár csukló-tengely, amelyek merőlegesek egymásra. Eredetileg írta kígyó nem mozdult túl reális. Szóval adunk neki kicsit ellastichnogo az ízületek. Emiatt zsanérok ellenállóak. Minél többet hajlítsa meg, annál inkább ellenáll. Ennek a hatása olyan, hogy a hajlítási ízületeket széttárta.

Nézzük meg egy dinoszaurusz. Nagyon vastag a szervezetben, de egyre több vékony és rugalmas nyakkal. Ez a funkció lehet szimulálni a kapcsolódó szerkezet, amely egy közös egyre ellastichnogo véget.

Végtagok inkább legyen egy kényelmes helyzetben. Ezt úgy érhetjük el, hogy egy új ellastichnogo zsanérok. Azonban ebben az esetben lehet a legjobban, hogy egy bizonyos számú pozíciót minden olyan közös amelyben nincs ellenállás. Ez a sorozat lehet figyelembe venni, hogy milyen kényelmes. Miután a csuklópántok kényelmes helyzetben, akkor ellenáll erősebb, ugyanakkor nem utasíthatja el forgatni.

Az is kívánatos, hogy a végtag a lehető legalacsonyabb. Az emberek ritkán hosszú tartani a kezüket a nagyobb súlyt, mint amennyi szükséges. Ezért a választott pozíció alapján a minimális energia megőrzési helyzetbe.

Kapcsolódó cikkek