• Nie Znaleziono Wyników

Box Cone Cylinder Sphere Shape

• Bryły sztywne (wymaga X3D w wersji 3.2)

RigidBodyCollection

RigidBody

CollidableShape

• Przeguby (wymaga X3D w wersji 3.2)

BallJoint DoubleAxisHingeJoint MotorJoint SingleAxisHingeJoint SliderJoint UniversalJoint

Dalsze potencjalne modyfikacje profilu mogłyby równie˙z rozszerza´c jego funk-cjonalno´s´c. Przykładem zestawu elementów, który warto byłoby doda´c s ˛a sen-sory. X3D definiuje sensory jedynie w kontek´scie interakcji z u˙zytkownikiem, brak natomiast elementów, które pozwoliłyby modelowa´c ró˙znorodne czujniki robo-tów.

8.5. Realizacja parsera X3D

Utworzony profil X3D pozwolił na niemal˙ze bezpo´sredni ˛a konwersj˛e modelu danych X3D na model wymagany przez ODE. Ogólne zało˙zenie dotycz ˛ace obiek-tów jest podobne w obu formatach - definiowane s ˛a geometrie (Shape w X3D,

Geomw ODE) oraz bryły sztywne (RigidBody w X3D,Bodyw ODE). Bryła szy-twna jest rozumiana jako obiekt fizyczny (czyli posiadaj ˛acy wła´sciwo´sci fizyczne jak masa lub chropowato´s´c powierzchni), którego kształt okre´sla jedna lub wi˛e-cej geometrii. Dodatkowo bryła sztywna mo˙ze by´c poł ˛aczona z innymi bryłami sztywnymi przy pomocy przegubów (Joint).

W przypadku konwersji z jednego modelu na drugi trzeba jednak mie´c na uwadze kilka drobnych ró˙znic. Przykładowo rotacja brył w X3D jest okre´slana na podstawie 4 parametrów - trzy z nich definiuj ˛a wektor wokół którego nast˛epuje obrót, a czwarty okre´sla k ˛at obrotu. W ODE rotacja jest reprezentowana przez macierz rotacji, któr ˛a mo˙zna wygenerowa´c automatycznie na podstawie k ˛atów Eulera, jednak˙ze k ˛aty te s ˛a liczone w odwrotnym kierunku ni˙z w X3D, wi˛ec ko-nieczna jest zmiana znaku podanego k ˛ata. Inn ˛a ró˙znic ˛a jest opis kształtu cylin-dra, co sugeruj ˛a ju˙z nazwy atrybutów. W X3D cylinder posiada atrybutheight, czyli wysoko´s´c, natomiast w ODE analogicznym parametrem jestlength, czyli długo´s´c. Mo˙zna z tego wyci ˛agn ˛a´c wniosek (potwierdzony w praktyce), ˙ze w X3D cylinder jest domy´slnie umieszczony „w pionie” (np. kolumna), natomiast w ODE cylinder jest domy´slnie umieszczony „w poziomie” (np. koło). W tab. 8.3 przed-stawiono analogiczne elementy obu modeli informacyjnych.

Utworzony parser przetwarza pliki X3D zgodnie z okre´slonym profilem, a na-st˛epnie wizualizuje model opisany w pliku (patrz rys. 8.3). Do skompilowa-nia kodu ´zródłowego parsera konieczne jest Qt w wersji 4.5.1 lub nowszej oraz

Tab. 8.3: Zestawienie u˙zytych w projekcie elementów

Opis X3D typ funkcja

Bryła sztywna

<RigidBody> dBodyID dCreateBody()

Geometria prostopa-dło´scianu

<Box> dGeomID dCreateBox()

Geometria kuli

<Sphere> dGeomID dCreateSphere()

Geometria cylindra

<Cylinder> dGeomID dCreateCylinder()

Przegub obrotowy

<SingleAxisHingeJoint> dJointID dJointCreateHinge()

Przegub krzy˙za-kowy

<DoubleAxisHingeJoint> dJointID dJointCreateHinge2()

Przegub transla-cyjny

<SliderJoint> dJointID dJointCreateSlider()

Przegub kulisty

<BallJoint> dJointID dJointCreateBall()

Przegub uniwer-salny

<UniversalJoint> dJointID dJointCreateUniversal()

Przegub

obro-towy z

silnikiem

<MotorJoint> dJointID dJointCreateAMotor()

VTK w wersji 5.0 lub nowszej. Ponadto zalecane jest skorzystanie z wygene-rowanego pliku Makefile do kompilacji (na Linuxie), lub alternatywnie wyge-nerowanie tego pliku przy pomocy Qt Creatora na podstawie pliku projektu (x3d-parser.pro). Razem z programem dostarczony został przykładowy model robota Pioneer (pioneer.x3dw podkatalogumodels).

Poni˙zej zamieszczono fragment kodu X3D opisuj ˛acego tyln ˛a o´s i kółko robota (patrz rys. 8.3).

Listing 8.3: Fragment kodu X3D opisuj ˛acego tylni ˛a o´s i kółko robota

<RigidBody DEF="bar_body" position="0 -1.075 -1.5"> <CollidableShape>

<Shape DEF="bar1">

8.5. Realizacja parsera X3D

Rys. 8.3: Przykładowy model robota zwizualizowany przez parser.

</Shape>

</CollidableShape>

<CollidableShape rotation="1 0 0 1.570796" translation="0 -0.18 -0.2">

<Shape DEF="bar2">

<Cylinder height="0.4" radius="0.07"/> </Shape> </CollidableShape> </RigidBody> <RigidBody DEF="back_wheel_body" orientation="0 0 1 1.570796" position="0 -1.23 -1.85"> <CollidableShape > <Shape DEF="back_wheel">

<Cylinder height="0.1" radius="0.3"/> </Shape> </CollidableShape> </RigidBody> <SingleAxisHingeJoint anchorPoint="0 -1.23 -1.85" axis="1 0 0"> <RigidBody USE="bar_body"/>

<RigidBody USE="back_wheel_body" /> </SingleAxisHingeJoint>

8.5.1. Opis programu

Menu programu zawiera dwie opcje. Pierwsza z nich, Wczytaj model, pozwala wybra´c plik X3D opisuj ˛acy model, który ma zosta´c wczytany. Druga, Usu ´n model usuwa ze sceny wszelkie modele, które zostały wcze´sniej wczytane. Widok mo˙zna obraca´c przy pomocy myszy, „przeci ˛agaj ˛ac” kursorem obraz sceny. Rolk ˛a myszy mo˙zna przybli˙za´c/oddala´c kamer˛e od obiektu. Ponadto klawisze W/S pozwalaj ˛a przeł ˛acza´c widok pomi˛edzy pełnym obrazem obiektu a jego siatk ˛a.

8.5.2. Wnioski

Sprofilowanie modelu informacyjnego X3D pozwoliło na znacznie uproszcze-nie parsera, gdy˙z musi on jedyuproszcze-nie przetwarza´c elementy i atrybuty zawarte w danym profilu. Ponadto zredukowany został równie˙z rozmiar pliku xsd opisu-j ˛acego utworzony profil - oryginalny Schema X3D w wersji 3.2 ma rozmiar ponad 400kB, natomiast Schema profilu ma rozmiar jedynie około 60kB. Dzi˛eki temu programy sprawdzaj ˛ace poprawno´s´c modelu na podstawie pliku Schema b˛ed ˛a w stanie wykona´c tak ˛a weryfikacj˛e znacznie szybciej. Równie˙z z punktu widzenia u˙zytkownika korzystanie z takiego profilu jest wygodniejsze; nie musi on pozna-wa´c zło˙zonych struktur pełnego X3D (z których wi˛ekszo´s´c nie miałaby zastoso-wania w opisie modelu robota), a jedynie niewielki zestaw elementów, które w prosty i jednoznaczny sposób pozwalaj ˛a opisa´c geometri˛e robota.

Literatura

[1] Y. Tina Lee, Information modeling from design to implementation, National Institute of Standards and Technology, 1999.

[2] Kilian Kiko i Colin Atkinson, A Detailed Comparison of UML and OWL [3] An Idiot’s Guide to the Resource Description Frameworkhttp://renato.

R

O Z D Z I A Ł

9

REPREZENTACJA INFORMACJI NIEPEWNEJ I

NIEPEŁNEJ

P. Bojko, A. Olesi ´nska

9.1. Wprowadzenie

W dzisiejszych czasach coraz powszechniejsze staj ˛a si˛e urz ˛adzenia porusza-j ˛ace si˛e samodzielnie, orientuj ˛ace si˛e w przestrzeni i podejmuj ˛ace decyzje na podstawie sygnałów z posiadanych sensorów. Dane pozyskiwane w ten spo-sób mog ˛a by´c jednak niedokładne lub bł˛edne. St ˛ad te˙z poprawne działanie tych urz ˛adze ´n mocno zale˙zy od szybko´sci zastosowanej metody wnioskowania, nawet w przypadku posiadania nieprecyzyjnych danych, a co za tym idzie, niepełnej in-formacji.

Okre´slenie „wiedza” definiowane jest jako „ogół wiarygodnych informacji o rzeczywisto´sci wraz z umiej˛etno´sciami ich wykorzystania”. Wiedz˛e mo˙zna po-dzieli´c na wiedz˛e a priori (czyli zale˙zn ˛a do praw absolutnych, do jakich nale˙z ˛a prawa logiki oraz prawa matematyki) oraz wiedz˛e a posteriori (czyli nabyt ˛a po-przez obserwacje). W badaniach nad sztuczn ˛a inteligencj ˛a wiedza jest trakto-wana jako materiał wej´sciowy albo efekt działania algorytmu sztucznej inteligen-cji. Ujmuj ˛ac spraw˛e inaczej mo˙zna powiedzie´c, ˙ze stosuj ˛ac odpowiednie metody d ˛a˙zy si˛e do sformalizowania ludzkiej wiedzy w celu stworzenie mechanizmów automatycznego wnioskowanie, przy czym dobór metod zale˙zy od rodzaju do-st˛epnej informacji. Najcz˛e´sciej informacje dotycz ˛ace otaczaj ˛acego ´swiata s ˛a nie-pełne, niepewne lub niedokładne - rzeczywisto´s´c prawie nigdy nie posiada do-kładnego opisu. Do przyczyn wywołuj ˛acych niedokładno´s´c wiedzy zalicza si˛e: ograniczenia percepcji, ograniczenia reprezentacji otoczenia, brak danych lub ich słabe oszacowanie.

Do´s´c popularnym sposobem przedstawiania wiedzy jest piramidy wiedzy (rys. 9.1). Podstaw˛e piramidy tworz ˛a dane, które po odpowiednim przetworze-niu przekształcaj ˛a si˛e w informacje. Po kolejnym przetworzeniu i umieszczeniu informacji w odpowiednim kontek´scie powstaje wiedza. Przetworzonie i zrozu-mienie wiedzy prowadzi do m ˛adro´sci. Okre´slenie m ˛adro´sci odnosi si˛e jedynie do ludzi (nie b˛edzie ono tu dalej rozwijane).

Rys. 9.1: Piramida wiedzy.

Kolejnym do´s´c cz˛esto u˙zywanym poj˛eciem jest „informacja”. Termin ten po-chodzi od łaci ´nskich okre´sle ´n: wyobra˙zenie, wyja´snienie, zawiadomienie. Poj˛e-cie to wyst˛epuje w teorii informacji i jest definiowane jako miara:

I = log(1

p) = −log(p)

gdzie p jest prawdopodobie ´nstwem otrzymania przez odbiorc˛e okre´slonej wia-domo´sci spo´sród sko ´nczonego zbioru wiadomo´sci, które mo˙ze emitowa´c ´zródło. Ilo´s´c informacji zawarta w przekazanej wiadomo´sci jest zatem tym wi˛eksza, im prawdopodobie ´nstwo otrzymania tej wiadomo´sci jest mniejsze. Jednostkami ilo-´sci informacji s ˛a: szanon (ang. shannon), bit (jednostka ilo´sci miejsca zaj˛etego przez informacj˛e), nat (jednostka ilo´sci informacji mierzonej przez logarytm na-turalny ilo´sci mo˙zliwo´sci) oraz ban lub hartlej (ang. hartley, jednostka ilo´sci in-formacji mierzona ilo´sci ˛a cyfr dziesi˛etnych potrzebnych do jej zapisania) (1 nat = log2(e) bitów, 1 bit = ln(2) natów, 1 ban = ln(10) natów = log2(10) bitów).

Informacje mo˙zna podzieli´c na: niedokładne, niepewne, niepełne. W niniej-szej pracy przedstawione i omówione zostan ˛a informacje niepewne i niepełne. Informacja niepewna jest to informacja, w której wyst ˛apienie danego zjawiska jest okre´slone z pewn ˛a dokładno´sci ˛a. Informacja niepełna jest to informacja, w której znana jest tylko cz˛e´s´c informacji oraz mo˙zliwa jest zmiana wnioskowania po dodaniu kolejnej, nowej informacji.