Plánování pohybu range-finderu pro rekonstrukci modelu
3D tělesa

Jaroslav Fojtík, Tomáš Pajdla

Abstract

Našim cílem je provedení rekonstrukci povrchu (nebo objemu) tělesa. Snímání objemu tělesa bude uskutečňováno pomocí Range-Finderu, který je umístěn na rameni robota. V této konfiguraci bude mít range finder 6 stupňů volnosti. Bylo by vhodné nějakým způsobem minimalizovat cenu měření. Například se může jednat o počet měření nutných k rekonstrukci.
Za tímto účelem je vhodné naplánovat místa pro snímání jednotlivých měření. Algoritmus plánování měřících míst vychází jednak z apriorní informace o modelu a navíc musí zohlednit naměřené hodnoty ze všech předchozích měření. Součástí algoritmu je metoda pro určení okamžiku ukončení sekvence měření.
Apriorní informace obsahuje údaje o prostoru, který je dosažitelný paží robota. Dále bude v apriorní informaci obsažena nějaká standardní výchozí poloha paže robota, ve které robot nezavadí o těleso. Bylo by též vhodné do apriorní znalosti zahrnout polohu stolku nebo podložky pod těleso a všech ostatních předmětů, které nesouvisí s měřeným tělesem. Bylo by vhodné omezit polohu tělesa na místo, ze kterého bude těleso pozorovatelné a měřitelné range-finderem. Pokud range-finder nezjistí přítomnost tělesa z výchozí polohy, měl by se pohybovat po předem připravené trajektorii (tuto trajektorii lze též zahrnout do apriorní znalosti). Pokud ani poté na žádné těleso nenarazí, bude měření ukončeno.
Sekvence měření má být ukončena v okamžiku, kdy již další měření nepřináší zlepšení vnitřního modelu tělesa. Z fyzikálních vlastností range-finderu vyplývá, že některé detaily na povrchu nebudou vůbec měřitelné. Ze snahy o co nejmenší počet měření vyplývá nutnost ignorování některých detailů. Algoritmus by měl mít parametr: "maximální velikost ignorovaného detailu" a podle předaného parametru se rozhodnout, zda další měření může zlepšit model o detaily větší než nejmenší požadované či zda nikoliv. Zde je nutno zvážit, v jakých jednotkách takový parametr zadávat a co vlastně bude určovat. V případě pokračování v měření bude nutno určit, do které polohy přesunout range-finder za účelem dalšího měření.
Posledním problémem, který zbývá vyřešit je volba vnitřní reprezentace měřeného objektu. Vnitřní reprezentace by měla umožňovat snadné slučování dat z jednotlivých měření. Bylo by vhodné ji vytvořit též s ohledem na požadovaný výstup z celého algoritmu. Formát výstupních dat bude nutno též upřesnit.

1  Úvod

Ve strojírenství se vyskytují požadavky na digitalizaci již hotových výrobků. Je žádoucí, aby digitalizovaný model sloužil buď ke kontrole rozměrů anebo jako podklad pro novou výrobu.
V současné době se zavádějí elektronické obchody. V nich by bylo také velmi přínosné mít nějaké 3D snímací zařízení pro zboží nabízené elektronickou formou. 3D model by si pak mohl každý doma prohlížet pomocí www prohlížeče. Mohl by se na dokonce zboží dívat z různých pohledů.
Také herní průmysl vyžaduje stále více digitalizovaných reálných objektů. Ty jsou umísťovány do jednotlivých her.
Právě zjednodušením, zkvalitněním a zrychlením digitalizace 3D dat se zabývá zpráva, kterou držíte v ruce. Je v ní obsažen rozbor již používaných postupů. Dále je ukázán nový postup. Ten je založen na Range Finderu1 umístěném v paži robota. Ve zprávě je řešeno dvourozměrné snímání v řezech s tím, že v následujícím kroku v našem výzkumu bude provedeno zobecnění pro 3D.

2  Rozbor úkolu na dílčí části

Úloha zpětné rekonstrukce objemu tělesa je poměrně náročná. Proto ji rozdělíme na jednotlivé části a budeme se podrobně věnovat každé z nich.

2.1  Omezení scény, objektů a relace objekt - scéna

V tomto oddílu diskutujme možné konfigurace scény a jednotlivých objektů. Na volbě konfigurace závisí do jisté míry i obtížnost a typ úlohy rekonstrukce tělesa. Je potřeba pečlivě zvážit požadavky, aby nedošlo ke zbytečné komplikaci úlohy.

Omezující podmínky na scénu


    .Scéna je omezená velikostí
    .Scéna není omezená
Druhý případ nastává například při rekonstrukci tvaru hor, budov a vzájemné polohy hvězd. V dalším textu jej nebudeme uvažovat.
První případ je nejběžnější v laboratorním prostředí. Řešení prvního případu je o něco jednodušší. U prvního případu lze obecně rozlišovat dvě modifikace. Úloha se výrazně komplikuje pokud může dojít ke kolizi senzoru a snímaného objektu. Taková situace nastane, když může senzor vstoupit do prostoru, který je vyhrazen pro snímanou scénu. Rozšířená úloha zatím nebyla uspokojivě vyřešena.

Objekty, které se mohou vyskytnout ve scéně

Rozdělení objektů do kategorií podle pohybu:

    .Tuhá a nehybná tělesa
    .Pohyblivá tělesa
    .Tělesa měnící svůj tvar
Základní úloha rekonstrukce počítá s pevnými tělesy. Pokud se těleso pohybuje, je nutno při rekonstrukci jeho tvaru pohyb buď uvažovat a nebo provést měření tak rychle, že je vlastní pohyb zanedbatelný. U některých větších pohyblivých těles je možno dokonce pohybu výhodně využít (např. pro rekonstrukci objemu jedoucího vlaku).
Úlohu je možno navíc ještě komplikovat tím, že těleso bude v čase měnit svůj tvar (jedná se např. o snímání živých zvířat).
Pro požadavky zkoumání způsobů rekonstrukce budeme zatím uvažovat jen první variantu tuhých a nehybných těles.

Omezení kladená na tvar objektu
Některé aplikace požadují, aby byly objekty složeny pouze z kvádrů popřípadě z válců. Jindy je požadován pouze konvexní tvar objektu. Zatím nebudeme klást na tvar objektu další omezení. U konkávních objektů v takovém případě mohou nastat i případy, kdy nebude možno rekonstruovat tvar celého objektu. Použitému algoritmu by neměly tyto situace vadit.
Další omezení se týkají nejmenších detailů, které jsou měřitelné použitou metodou. Menší detaily budou jednoduše ignorovány.

Optické vlastnosti rekonstruovaného tělesa


    .Lambertovský povrch
    .Zrcadlový povrch
    .Průhledná tělesa
Objem je nejčastěji rekonstruován pomocí optiky. Proto je velmi důležité provést rozbor optických vlastností scény. Nejsnadněji jsou snímána tělesa s Lambertovským povrchem. Za tímto účelem jsou někdy tělesa dokonce natírána šedou barvou.
Zrcadlový odraz a průhledná tělesa velmi komplikují nároky na vyhodnocovací algoritmus. Zatím jsem se nesetkal s algoritmem, který by se rekonstrukcí tvaru takových těles zabýval, a proto je nebudeme v dalším výkladu uvažovat.

2.2  Způsoby rekonstrukce

Zde budou diskutovány dva základní způsoby rekonstrukce, které se od sebe liší. Jedná se o:

    .Těleso je předem známo
    .Těleso není známo
V prvním případě jde o ověření tvaru tělesa. V praxi se používá například při kontrole rozměrů hotových výrobků. U nich je znám prostorový model a tím pádem všechny rozměry. Poloha tělesa může být buď pevně fixována anebo algoritmus sám určí polohu tělesa na základě naměřených dat.
Druhý příklad je o něco složitější, poněvadž není kladeno žádné explicitní omezení na tvar tělesa. Je potřeba používat různé strategie pro snímání částí tělesa. Obecně nelze zaručit, že všechny části tělesa bude možno rekonstruovat. V takových případech je nutno nasnímat co možná největší množství dat.

2.3  Metody reprezentace

Pro rekonstrukci tvaru je nutno nějakým způsobem ukládat naměřená data. Volba interní reprezentace může zásadním způsobem ovlivnit jak přesnost tak i rychlost a kvalitu rekonstrukce.

Nejčastěji jsou používány následující reprezentace:
  1. CAD model - vzniká jako výstup z nějakého objemového modeláře.
  2. Triangulovaný povrch - popisuje pouze povrch těles sítí trojúhelníků.
  3. Voxelová reprezentace - určuje v každém bodě přítomnost tělesa.
  4. 3D primitiva - mnohostěny, válce.
  5. Analytická funkce - snaží se popsat těleso jedinou funkcí.
CAD model je vhodný pro kontrolu tvaru již známých těles. Pro rekonstrukci objemu je používán pouze tehdy, pokud je k dispozici knihovna pro práci s tímto modelem. Byl použit např. v práci [].
Triangulovaný povrch2 je nejčastější reprezentací a vyskytuje se např. u těchto autorů [,,,]. Triangulovaný povrch se poměrně snadno ukládá do paměti. Složité je však slučování informací z jednotlivých pohledů a vytváření nové triangulace.
Voxelová reprezentace vypadá na první pohled jako nejjednodušší. Voxel s hodnotou '1' bude považován za obsazený a voxel s hodnotou '0' za prázdný. V praxi je situace o něco složitější. Některé voxely nelze vůbec vidět a některé zatím nebyly prozkoumány senzorem.
Proto je potřeba přidat další hodnotu pro netestované voxely. Je vhodné například schéma -1 voxel je prázdný, 0 - hodnota voxelu není známa, 1 voxel je plný.
Voxelová reprezentace má z pochopitelných důvodů problémy s objemem dat. Proto se používá v kombinaci s některým typem komprimace například s oktalovými-stromy.
3D objemová primitiva jsou také poměrně často využívána [,,]. Většina reálných těles se neskládá pouze z těchto primitiv a tato aproximace je nedokáže věrně reprezentovat. Teoreticky by sice bylo možno primitiva libovolně zmenšovat, ale algoritmy postavené na primitivech neumějí zpracovat tak velké množství primitiv.
Zdálo by se velmi efektivní použít k reprezentaci tělesa analytickou funkci. Bohužel pouze velmi jednoduchá tělesa by bylo možno popsat relativně jednoduchou analytickou funkcí. Ostatní tvary by nebyly popsatelné vůbec a nebo za cenu extrémně složité funkce

2.4  Parametrizace snímacího prostoru

Objem tělesa je snímán pomocí senzoru. Téměř nikdy nemůže senzor provést měření celého objemu naráz. Proto musí být plánováno snímání objemu z více poloh.
0.5
Figure 1: Snímací senzor v prostoru
Na obrázku obr. 1 je ukázána konfigurace jediného senzoru v prostoru. Jako každé pevné těleso má snímač 6 stupňů volnosti. Jedná se o polohu x,y,z a náklony a,b,j. Každý pohled je tedy charakterizován 6 souřadnicemi.
Některé senzory mají navíc zdroj světla (nebo signálu). Pokud se jedná o bodový zdroj světla, tak je potřeba uvažovat ještě další 3 stupně volnosti. Obecně se jedná o 6 dalších stupňů volnosti pro zdroj světla.
Úkol prozkoumání stavového prostoru s velkým počtem rozměrů se často řeší následujícími způsoby:

    .Vyloučení některých stupňů volnosti.
    .Vazba mezi stupni volnosti.
Například Range-Finder má spolu vázán zdroj světla a snímací kameru. Zbývá nám 6 stupňů volnosti. I přes omezování a vylučování stupňů volnosti se jedná o velmi složitý problém hledání nejlepšího pohledu v parametrickém prostoru. V tomto prostoru je potřeba se nějakým způsobem orientovat.

Pro orientaci v parametrickém prostoru jsou používány následující postupy:

    .Parametrický prostor je popsán analyticky.
    .Dodatečná omezení v parametrickém prostoru.
    .Diskretizace parametrického prostoru.
    .Sledování paprsků (Ray tracing).
Analytický popis parametrického prostoru je velmi elegantní. Bohužel je též natolik složitý, že se často nedá snadno manipulovat s výslednou analytickou funkcí.
Dodatečná omezení parametrického prostoru jsou nejčastěji založena na heuristikách. Pro ně není jasné chování ve všech situacích a v některých případech nejsou optimální.
Diskretizace prostoru je často prováděna do kulové (půlkulové) sítě bodů a nebo do válcové sítě, jak je ukázáno na obr. a a obr. b. Ve zvolených bodech je ohodnocena kvalita snímání a je hledáno optimum v diskretizační mřížce.
0.35
Figure 2: Půlkulová a válcová síť snímacích bodů
Diskretizace má také nevýhody dané nízkým rozlišením diskretizační sítě. Též dochází k citelné ztrátě stupňů volnosti snímacího členu.
Metody používající sledování paprsků (ray tracing) dávají poměrně uspokojivé výsledky. Při sledování paprsků pro všechny plochy mají tyto algoritmy extrémní výpočetní náročnost.

2.5  Metody hledání dalších pohledů

Metody hledání dalších pohledů závisí zčásti na tom, jakým způsobem je parametrizován snímací prostor. U diskretizovaného prostoru lze projít všechny jeho body.
U spojitých prostorů jsou často využívány techniky z umělé inteligence a heuristiky. Také se používají metody generuj a testuj.

Plánovací strategie

Podle [] lze rozlišit 3 základní strategie v plánování pozorování pro rekonstrukci:
sep 0pt
Úvodní hra
Zde se jedná o velmi hrubé a rychlé získání tvaru objektu.
Střední hra
V tomto kroku jsou snímány a rekonstruovány velké plochy.
Konečná hra
V tomto kroku mají být nalezeny a rekonstruovány všechny jemné detaily.
Navržené strategie jsou vhodné pro postupnou rekonstrukci tělesa od nejhrubších rysů až k jemným detailům ve třech krocích. Pro každý krok může existovat samostatný algoritmus. Některé plánovací strategie v sobě mohou zahrnovat všechny tři kroky současně.

3  Práce ostatních

V této kapitole jsou diskutovány práce ostatních, které se týkají plánování dalších pohledů.

3.1  Conolly 1985 []

Prostor objektu je rozdělen oktalovým stromem. Při snímání objektu jsou oblasti ležící na místě objektu označeny jako objekt, oblasti před objektem jako viděné a všechny ostatní oblasti jako neviděné. Pro výpočet NBV3 jsou navrženy dva algoritmy. Jeden algoritmus je nazván "normální" a druhý älgoritmus planetária".
Algoritmus planetária hodnotí viditelnost povrchu pro každou možnou pozici senzoru. Senzor bude umístěn do takové pozice, která maximalizuje počet neviděných krychlí. Použitý algoritmus má velkou výpočetní náročnost a navíc nerespektuje geometrii senzoru.
Druhý algoritmus nazvaný "normální" počítá plošky krychlí, které oddělují prázdnou a viděnou oblast pro 6 pohledů. Z nich si pak jeden pohled vybere. Toto je velmi rychlý a jednoduchý algoritmus, který určuje omezený počet 6 pohledů a nebere v úvahu viditelnost.

3.2  Hutchinson 1989 []

Tento článek se zabývá plánováním s využitím modelů a testováním hypotéz. Je zajímavý svým přístupem, který se odlišuje od hlavního proudu NBV a může vést (podle []) k lepšímu porozumění některých aspektů problému NBV. Základní předkládanou myšlenkou je nalézt takové umístění senzoru, které by minimalizovalo nejednoznačnost metriky v prostoru hypotéz, které se týkají typu objektu postaveného před senzorem. Tomu částečně pomáhá graf aspektů, který je využit k seskupení podobných operací týkajících se umístění senzoru ve vztahu k částečně hypotetizovanému objektu. Nejednoznačnost je měřena s využitím koncepcí z informační teorie, které mohou vést k mnohem rafinovanějšímu přístupu při definování nových měření. Bohužel tyto přístupy nevypadají příliš prakticky pro přímé využití v NBV, vzhledem k odlišným předpokladům o objektech a obrovské výpočetní náročnosti.

3.3  Maver a Bajcsy 1993 []

Maver a Bajcsy 1993 vyvinuly algoritmus pro plánování bodů pohledu range-finderu. Pohyb proužku světla je omezen na posuny a rotace v rovině nad objektem. Neviděné oblasti objektů jsou reprezentovány polygony. Viditelnosti dosud neviděných oblastí (z různých pohledů dle nastavení senzoru) jsou určeny dle hranic polygonů. Předkládané řešení je bohužel omezeno pouze na určitou speciální konfiguraci senzoru.

3.4  Whaite a Ferrie 1990-1997 [,,]

Whaite a Ferrie aproximují snímaná data parametrickým modelem ze superkvadrik. Příští pohled je určován tak, že se minimalizuje neurčitost modelu v místech, kde data nejhůře aproximují model. Rangefinder je naváděn ve směru, který minimalizuje nejistotu aktuální aproximace modelu. Tento algoritmus umožňuje daty řízené zkoumání objektu za účelem tvorby modelu. Zvolený parametrický model nemůže přesně reprezentovat objekty s velkým množstvím povrchových detailů. Tato skutečnost představuje omezení celé navrhované metody. Omezení daná viditelností povrchu a zákryty nejsou zahrnuta do procesu plánování, což má za následek nemožnost snímání složitých povrchů vzhledem k zákrytům.

3.5  Pito 1995-1996 [,]

Pito navrhuje obecný algoritmus plánování pohledů, který bere v úvahu jak omezení viditelnosti senzoru tak i neviděné části zkoumaného objektu. Nejlepší pohled maximalizuje poměr neviděných částí, které musí sousedit s částmi již viděnými. Omezení viditelnosti je předpočítáno pro každou oblast aby byla snížena extrémní výpočetní náročnost. Prezentovaný přístup je omezen na posuny snímacího čidla po válci, který obklopuje objekt.

3.6  Papadopoulos-Orfanos a Schmitt 1997

Papadopoulos-Orfanos a Schmitt navrhují plánovací algoritmus který navádí senzor se třemi stupni volnosti. Senzor může dokonce vstoupit do prostoru určenému pro objekt.

3.7  Tarabanis 1995 []

Tento článek obsahuje přehled plánovacích technik určených pro detekci příznaků v prostředí se známou geometrií. Tím že se jedná o snímání známých oblastí se tato úloha liší od NBV. V přehledu jsou detailně rozebrány techniky HEAVEN, VIO, ICE, SRI a MVP []. V článku jsou rozlišovány techniky typu generuj a testuj, které se vyskytují hlavně u NBV, a analytický přístup. V analytickém přístupu je vytvořený kompletní prostor řešení včetně zadaného omezení porovnán s ostatními prostory řešení. U syntetického přístupu se může též jednat o hledání optima mnohaparametrové optimalizační funkce. Jednotlivé parametry mohou zahrnovat například polohu snímače, zoom a zaostření kamery. Geometrické kalkulace jsou velmi zajímavé, poněvadž zahrnují množství vzorkovacích technik (např automatické dělení dlaždic v obklopující sféře) a technik sledování paprsků (BSP stromy, předzpracování, konvexní obálky a výpočet množin bodů). Obecně je použitá geometrie jednodušší než jaká je nejčastěji používána u NBV.

3.8  Banta 1995 []

Článek je podle [] výsledkem neefektivní týmové spolupráce a 'školského' zpracování. Navzdory mnoha citacím4 článek popisuje nejméně efektivní algoritmus. Pro reprezentaci geometrie je využita matice obsazenosti. Podle křivosti dosud nasnímaného povrchu jsou vybrány tři možné pohledové body. Ty jsou navzájem relativně ohodnocovány metodou sledování paprsků s přihlédnutím ke všem ostatním datům (viditelnost). Použitá terminologie není přesná. Na druhou stranu jsou v tomto článku nápady, které se nevyskytují v jiných článcích. Především se jedná o charakteristiky cesty snímacího čidla a o množství nové informace, které je odkryto novým měřením.

3.9  Massios 1998 []

V tomto článku je popisován algoritmus NBV založený na voxelové reprezentaci. Pohled je plánován z mnoha bodů rozmístěných na kulové ploše. Každý voxel může nabývat několika hodnot: Neviděno, viděno, prázdný a rovina zákrytu. Rovina zákrytu vzniká tam, kde spolu přímo sousedí voxely typu neviděno a viděno. Voxely typu viděno obsahují navíc atribut úhlu mezi rangefinderem a měřenou rovinou. V každém možném bodě pohledu je počítána viditelnost rovin zákrytu a viděných rovin.

4  Formalizace úlohy

Nechť M je snímané těleso. Je kladen požadavek na převedení tělesa M do digitální reprezentace. Duplikát tělesa M si nazvěme [`(M)]. Je rozumné požadovat, aby se [`(M)] co nejméně lišilo od M. Vzhledem k používání iterativních metod je duplikát postupně vylepšován přidáváním dalších informací. Proto máme k dispozici celou posloupnost modelů [`(M)]. Nazvěme si je [`(M)]0 až [`(M)]n.
Nechť vektor [x\vec] obsahuje souřadnice snímacích členů pro jednu konfiguraci. Do souřadnic snímacích členů se promítají též všechny stupně volnosti kamery a zdroje světla. Jednotlivá měření si označme [x\vec]1, [x\vec]2 ... [x\vec]n a uložme si je do matice X.
0.5
Figure 3: Cyklus zahrnující jednotlivé kroky při snímání dat
Na obr. 3 je zobrazen celý proces snímání 3D tělesa. Do procesu vstupuje prázdný model [`(M)]0. Ten je postupně vylepšován dalšími měřeními tak, že data z těchto měření jsou do něho integrována. Před každým měřením je nutno naplánovat novou konfiguraci snímací sestavy [x\vec]k+1.
Důležitý krok ve snímacím cyklu představuje rozhodování o zastavení jednotlivých iterací. K tomu by mělo dojít z následujících důvodů:

    .Překročení stanoveného času. Někdy je vhodné omezit dobu, po kterou je prováděno měření. Toto kritérium nemusí vždy produkovat nejlepší výsledky.
    .Překročení maximálního počtu iterací. Vzhledem k tomu, se jedná o poměrně složité výpočty, nemusí být doba výpočtu spolu s měřením konstantní. Proto je někdy vhodné omezit maximální počet iterací. Tím se zajistí určitý maximální počet měřících cyklů (iterací ve výpočtu).
    .Nelze-li již dalším měřením výrazně vylepšit stávající model. Toto kritérium je ze všech nejlepší. Je však nutno nějakým způsobem dopředu odhadovat možný přínos nového měření. Pokud tento přínos bude menší než stanovená hranice, pak dojde k ukončení posloupnosti měření. Zde je nutno řešit určité komplikace, aby nedošlo k zacyklení algoritmu.
Definujme si funkci, která provede celé nové měření s následnou aktualizací naměřeného modelu:

M2k+1 = update(M2k,
®
x
 

k+1 
)
(1)
V této rovnici musí být známa následující hodnota polohy senzoru. K jejímu výpočtu použijeme funkci NBV.

®
x
 

k+1 
= NBV(X,M2k)
(2)
Ještě je nutno definovat funkci, která nějakým způsobem ohodnocuje odhadované možné zlepšení modelu dalšími měřeními. Této funkci již postačí pouze znalost modelu v k té iteraci.

q = Possible_Improvement(M2k)
(3)
Funkce ohodnocující možné zlepšení nemůže sama o sobě zaručit ukončení algoritmu po konečném počtu kroků. Největším problémem algoritmů iterativního typu představuje vznik cyklů. Kdyby se každé měření nevratně projevilo nějakým způsobem na vznikajícím modelu, tak by vždy po určitém maximálním počtu kroků došlo k zakončení algoritmu. Bohužel v praxi existují taková měření, která nepřinášejí žádnou novou informaci o modelu. Proto je nutno k rekonstruovanému modelu přidat ještě dodatečnou stavovou informaci. Datová struktura kombinující stavovou informaci a rekonstruovaný model již může mít vlastnosti požadované na počátku tohoto odstavce.

5  Navržené řešení

V tomto oddílu bude věnován prostor popisu metod, které byly použity k řešení úlohy v experimentální implementaci. Zatím se jedná jen o snímání v jedné rovině pomocí robota. Po odladění tohoto algoritmu je uvažováno o rozšíření do všech tří rozměrů.

5.1  Volba reprezentace

Pro plánovač pohledů je potřeba volit reprezentace následujících skutečností:

    .Reprezentace možných měření
    .Reprezentace znalosti o měření
    .Reprezentace apriorní znalosti o úloze
Je snaha, aby byla jednotlivá fakta (presentovaná v předchozím výčtu), pokud to půjde, reprezentována stejným nebo alespoň podobným formalismem. Hlavním důvodem jednotné reprezentace je zjednodušení a zefektivnění výsledného algoritmu.

Reprezentace možných měření

Po analýze problému byla zvolena reprezentace mřížkou (v Matlabu se jedná o matici). Jednotlivé buňky mohou nabývat 3 základních hodnot: 0 buňka není známa; 1 buňka je plná; -1 buňka je prázdná. Mřížka obecně má nevýhodu vyjádřenou poměrem velké paměťové náročnosti a malé přesnosti. Tento nedostatek jsme se rozhodli překonat tak, že ke každé plné buňce bude přidán seznam všech naměřených bodů, které do ní spadají. Po dokončení měření pak bude možno ze všech naměřených hodnot rekonstruovat přesný tvar snímaného 2D tělesa.
Zvolená reprezentace umožňuje snadnou fúzi naměřených dat. Nechť M1 je matice vzniklá z jednoho měření a M2 je matice z druhého měření. Pak jejich sloučení lze vypočítat M = sgn(M1 + M2). Za jednu z výhod mřížky je možno též považovat snadný a rychlý přístup k datům.

Reprezentace apriorní znalosti o úloze

Apriorní znalost se týká několika částí úlohy.
První znalost se týká použitého snímače. Zatím uvažujme pouze Range-Finder s kamerou. Ten musí být zkalibrován a plánovacímu algoritmu musí být známa jeho geometrická konfigurace. Především se jedná o vzájemnou vzdálenost ohniska kamery a laseru, dále se jedná o náklon laseru, náklon kamery a zorný úhel kamery.
Další apriorní informace se týkají velikosti snímaného objektu. Ta je v zásadě dána manipulačním rozsahem robota v jehož paži je range-finder umístěn. V algoritmu se projeví volbou velikosti mřížky a skutečnými rozměry jedné buňky.

5.2  Použité speciální termíny

V dalším textu o plánování jsou použity následující termíny. Ty jsou zobecněny tak, že je lze použít jak v pixelové tak i ve vektorové implementaci.
Neznámá oblast.   Neznámá oblast představuje prostor, o kterém se dosud nepodařilo získat žádnou informaci ze snímacího senzoru.
Prázdná oblast.   Prázdná oblast představuje prostor, ve kterém se nevyskytuje žádné plné těleso.
Růstový bod.   Za růstový bod je považován takový plný bod, v jehož okolí se nachází neznámá oblast.
Rovina zákrytu.   Rovina zákrytu představuje styčnou plochu vznikající na rozhraní prázdné a neznámé oblasti. Nejčastěji se na takovémto rozhraní vyskytuje plná oblast.
Kandidát na snímání.   Představuje bod s dosud neznámou hodnotou, který leží v sousedství plného bodu. U rastrové reprezentace je sousedství dáno osmiokolím, u vektorové se jedná o určitou malou vzdálenost.
Predikovaný bod.   Predikovaný bod je kandidátem na snímání, který leží v sousedství růstového bodu. Pokud lze proložit nějakou plochu (křivku ve 2D případě), která prochází růstovým bodem a jeho sousedními plnými body, tak růstový bod leží na této ploše. Jinými slovy, růstový bod leží v místech, kam s největší pravděpodobností pokračuje dosud nasnímaná plocha (či křivka ve 2D případě).

6  Plánovací strategie měření

Základní měřící cyklus je ukázán na obrázku obr. 3. První krok spočívá v nalezení tělesa (tzn. alespoň jeho jediného bodu). V současné implementaci se rangefinder pohybuje po přímce do té doby, dokud nenaměří nějakou hodnotu. Nejvhodnější strategií by bylo objet celé těleso po nějaké kruhové dráze.
Od okamžiku nalezení objektu začíná vlastní plánování. Pokud rangefinder naměřil dosud jen jediný bod, tak se plánovač pokusí udělat malý krok stranou (z důvodu minimalizace pohybu RF) a provést nové měření.
Sousedí-li růstový bod alespoň s jedním plným bodem, pak probíhá vlastní plánování. Jedním z požadavků na optimální směr pohledu je kolmost na predikovanou přímku vycházející z predikovaného bodu. Je žádoucí, aby ani jeden paprsek neprocházel plnou oblastí. Paprsek by mohl ještě navíc procházet přes dalšího kandidáta ke snímání (ležel by na spojnici Rangefinder - predikovaný bod). Celá situace je zachycena na obrázku obr. .
0.8
Figure 4: Zobrazení situace při snímání range finderem.

6.1  Kritéria pro výběr pohledu

Pro splnění podmínek předchozího odstavce je zvolen následující postup. Je vybrán jeden kandidát na snímání. Kolem něho je zkonstruována kružnice viditelnosti. Ta je v současné implementaci představována vektorem s 360 položkami (reprezentují kruhové výseky po jednom stupni). Pro konstrukci této struktury je nutno projít celou matici. Každá neprázdná buňka vytvoří v kružnici viditelnosti neprázdnou stopu. Samozřejmě, že jednotlivé stopy se mohou překrývat. I zde by nebylo nutno používat diskrétní reprezentaci, ale bylo by možno použít i reprezentaci vektorovou založenou na intervalech.
Z výsledné kružnice viditelnosti lze vyčíst směry, kterými se lze dívat na vybraného kandidáta ke snímání a směry, kterými nelze. Zvolme si Viditelnostm=0, je-li paprsek odpovídající m v zákrytu s nějakou plnou buňkou. Jinak Viditelnostm=1.
Další kritérium Kolmost zohledňuje požadavek na kolmý pohled k povrchu tělesa. Nechť a je odklon normály dosud nasnímaného povrchu od nastavení RF pro jeden možný pohled. Kolmost pro danou konfiguraci vypočteme následujícím způsobem:

Kolmosti = vaha  cos ai + (1-vaha)
(4)
Vektor kritéria kolmosti [Kolmost\vec] = [Kolmost0, ... Kolmostn] vznikne složením jednotlivých kritérií.
Proměnná vaha reprezentuje sílu kritéria. Může nabývat hodnot v rozsahu (0,1). Poměrně uspokojivé výsledky lze dosáhnout např. s hodnotou 0,5.
Poslední kritérium Pohybi zohledňuje pohyb snímacího členu z aktuální polohy do i-té polohy.
Po vypočítaní všech tří kritérií je potřeba provést jejich fúzi. Nejjednodušší operací je jednotlivá kritéria vynásobit po prvcích (položku po položce). Z tohoto důvodu byl kladen požadavek na rozsah hodnot jednotlivých kritérií Kriterium Î < 0;1 > . Fúzí vlastně vznikne celkové kritérium vhodnosti pohledu z určitého směru. Nazvěme jej [Pohled\vec].

Pohledi = Viditelnosti Kolmosti Pohybi
(5)

6.2  Plánovací strategie měření

Celé měření je založeno na expanzi růstových bodů. Je dobré si udržovat aktuální seznam růstových bodů. Vždy si lze jeden růstový bod vybrat a snažit se o jeho expanzi. K tomu slouží nalezení všech kandidátů na snímání v okolí zvoleného růstového bodu. Vše je zakresleno na obr. . Vektor růstových bodů je označován symbolem p, aktuální růstový bod pp, vektor všech kandidátů na snímání c a konečně vybraný kandidát na snímání symbolem cc.
0.7
Figure 5: Algoritmus pro výběr a snímání kandidátů podle růstových bodů.
Po zvolení kandidáta na snímání nastupují jednotlivé strategie. Ty jsou primárně určeny k naplánování takové konfigurace měřících senzorů, aby bylo možno co nejlépe změřit vybraného kandidáta na snímání. Jednotlivé snímací strategie se mohou společně chovat jako stavový automat viz. obr. . Jednotlivé přechody mezi stavy jsou značeny písmeny a jsou vysvětleny u jednotlivých strategií.
0.7
Figure 6: Plánování strategií pro změření vybraného kandidáta cc.

Základní strategie 0 - rovná či mírně zakřivená křivka

Základní strategie je optimalizována na snímání rovných a mírně zakřivených obvodových linií. Celá situace je zakreslena na obrázku obr. .
V předchozím textu byl popsán způsob ohodnocování možných pohledů. Předpokládejme, že jsme si vypočítali optimální pohled pro strategii 0. Následně se přesune Range-Finder na nově určenou pozici a provede se měření. Po měření může nastat pět základních situací (viz též přechody na obr. 6):
A0 Byl viděn požadovaný dosud neznámý bod
Tato situace je optimální. Růstový bod se přesune do nově naměřeného bodu, lze nalézt jeho kandidáty ke snímání a takto pokračovat dále.
B0 Byl viděn dosud neznámý bod, který je též kandidátem na snímání
Tato situace je velmi obdobná situaci předchozí. Lze ji zpracovat tak, jako kdybychom původně chtěli změřit právě nalezený bod.
C0 Byl viděn jiný dosud neznámý bod
Uvedená situace ukazuje na výskyt nespojitosti povrchové křivky (popř. plochy). Vhodná následující akce je např naplánování nového pohledu na již předem zvoleného kandidáta ke snímání.
D0 Byl viděn již viděný bod
Pohled na již viděný bod znamená v každém případě chybu. Buďto se může jednat o nepřesnost RF a nebo o špatné vyhodnocení viditelnosti. Rozumné zotavení představuje např. zákaz pohledu danou konfigurací RF a naplánování nového pohledu na již předem zvoleného kandidáta ke snímání.
E0 Nebylo vidět nic
Tato situace též poukazuje na možný výskyt nespojitosti povrchové křivky (popř. plochy). Na rozdíl od předchozí situace "Byl viděn jiný dosud neznámý bod" nelze příliš odhadovat typ nespojitosti. Je možno také zakázat pohled danou konfigurací RF a naplánovat nový pohled na již předem zvoleného kandidáta ke snímání. Mnohem výhodnější se však jeví přepnutí na jinou plánovací strategii.
0.6
Figure 7: Další pohled ve strategii 0
Základní strategie 0 by mohla teoreticky nasnímat jakýkoliv povrch. Optimální výsledky však dává jen v místech, kde se nevyskytují nespojitosti. Při výskytu nespojitosti je lepší zvolit jinou strategii a testovat hypotézy ohledně typu nespojitosti.
Samozřejmě může při plánování pohledu nastat situace, kdy pohled na kandidáta na snímání naplánovat nelze. Pak se kandidát na snímání označí jako nezměřitelný a je nalezen nový kandidát.

Strategie 1 - ostrý úhel

Pokud snímání probíhala dobře až do bodu, kdy nebylo nic vidět, je nejpravděpodobnější příčinou ostrý úhel na obvodové hraně tělesa. Situaci zachycuje např. obr. . Požadujeme strategii, která vzniklou situaci detekuje a pokračuje v měření přes ostrý úhel. Dále by bylo vhodné, kdyby zvolená strategie byla schopna ověřit, zda se se skutečně jedná o ostrý úhel či zda se jedná o jinou formu zákrytu.
0.6
Figure 8: Strategie 1 - způsob plánování
Navržená strategie podle obrázku obr. 8 tyto požadavky splňuje. Jejím základem je pohled přes kandidáta na snímání na růstový či jiný plný bod. Pak mohou nastat čtyři situace:
A1 Byl viděn požadovaný dosud neznámý bod.
Tato situace je optimální. Růstový bod se přesune do nově naměřeného bodu, lze nalézt jeho kandidáty ke snímání a takto pokračovat dále.
B1 Byl viděn jiný dosud neznámý bod.
Uvedená situace ukazuje na výskyt nespojitosti povrchové křivky (popř. plochy). Vhodná následující akce je např naplánování nového pohledu na již předem zvoleného kandidáta ke snímání.
C1 Byl viděn již viděný bod.
Kandidát na snímání je prázdný a je nalezen nový kandidát na snímání. Strategie pokračuje do té doby, dokud snímací senzor nenarazí na nějaký plný bod.
D1 Nebylo vidět nic.
Pokud nebylo nic vidět, tak to znamená v této strategii chybu. Ve snímaném modelu existuje nějaký zákryt, který nebyl dosud zjištěn. Je nejlepší v této přepnout na jinou strategii.
Při použití popisované strategie většinou nedojde k zákrytu, čímž je zaručeno, že bude viděn alespoň nějaký plný bod. Pro ohodnocování a následné plánování vhodnosti pohledů lze využít předchozí kritéria viditelnosti a pohybu paže robota. Kritérium kolmosti je u strategie 1 nepoužitelné, protože hledáme pokračování obvodové linie v místě ostrého úhlu. Místo něho lze použít kritérium viditelnosti sousedních plných bodů (do omezené vzdálenosti) přes kandidáta na snímání.
U výpočtu nových pohledů ve strategii 1 je vhodné použít kružnici viditelnosti. Kružnice viditelnosti zaručuje, že u již naměřených dat nedojde k zákrytu.
Ve strategii 1 lze detekovat situaci (s využitím kružnice viditelnosti), kdy pohled na kandidáta na snímání naplánovat nelze. Pak se kandidát na snímání označí za nezměřitelný a je nalezen nový kandidát.

Strategie 2 - ostrý úhel

Použitím strategie 1 dochází ke zbytečnému pohybu senzoru při přepnutí strategie. Pak se snímací senzor nepohybuje po hladké křivce. Proto byla definována nová strategie, která by měla umožnit hladký průchod snímacího senzoru přes ostrou hranu i za cenu mírného snížení robustnosti.
0.6
Figure 9: Strategie 2 - způsob plánování
Strategie provádí jakési obcházení růstového bodu, jak je ukázáno na obr. 9. Kandidáti na snímání pak leží na jednotkové kružnici kolem růstového bodu. Snímací senzor testuje jednotlivé kandidáty po nastaveném úhlu. Pokud by se v modelu nacházel pouze ostrý úhel, pak snímač vždy musí narazit na neprázdného kandidáta na snímání.
Horší situace, než v případě ostrého úhlu, nastane v případě zákrytu. Protože praktická kontrola snímaných dat ve strategii 2 je poměrně slabá5, může se stát, že snímač zbytečně obkrouží celý objekt. Ve strategii 2 nelze detekovat situaci, kdy požadovaný bod není změřitelný. To se někdy pozná až po obkroužení celého objektu snímacím senzorem.
Kružnice viditelnosti je v této strategii nepoužitelná vzhledem k neustálé změně predikovaného bodu (pohybuje se po kružnici).

Ve strategii 2 mohou nastat následující situace:
A2 Byl viděn dosud neznámý bod, který je kandidátem na snímání
Protože ve strategii 2 neexistuje pevně definovaný kandidát na snímání, žádaného cíle bylo dosaženo.
B2 Byl viděn jiný dosud neznámý bod
Uvedená situace ukazuje na výskyt nespojitosti povrchové křivky (popř. plochy). Nespojitost je nejspíše jiného typu než ostrý úhel. Vhodnou následující akcí by bylo přepnutí na strategii 1.
C2 Byl viděn již viděný bod
Pohled na již viděný bod znamená přetočení na pomyslné kružnici. Další otáčení již nemá smysl a tak by bylo nejlepší přepnout na jinou strategii.
D2 Nebylo vidět nic
U strategie 2 je tato situace normální. Doporučenou další akcí je pokračování snímání na dalším bodě pomyslné kružnice.

Ukončení měřící sekvence

Důležitou částí každého plánovacího procesu je ukončení sekvence měření a prohlášení naměřených dat za výsledek měření. Zatím neomezujme měřící sekvenci ani počtem měření ani dobou vyhrazenou na měření. Sekvence měření bude považována za ukončenou když žádné nové měření nepovede ke zpřesnění naměřeného modelu.
Při jednotlivých měřeních dochází ke zpřesňování modelu. Algoritmus usiluje vždy o expanzi vybraného růstového bodu. V jeho okolí je vybrán kandidát ke snímání. Po jeho změření je kandidát na snímání označen příslušným způsobem (plný/prázdný). Pokud jej nebylo možno z nějakého důvodu proměřit pak bude označen za nezměřitelný a bude nalezen nový kandidát. V každém případě jeden kandidát na snímání nemůže být za kandidáta na snímání označen dvakrát6.
Kandidáti na snímání obklopují růstové body. Kolem jednoho růstového bodu může být kandidátů jen omezené množství. Pokud dojde k vyčerpání všech kandidátů, přestává být růstový bod růstovým bodem.
Definujme tedy konec snímací sekvence jako vyčerpání všech možných růstových bodů.

7  Výsledky

7.1  Citlivost algoritmu na vzdálenost Laser-Kamera

Navržená a realizovaná plánovací strategie plánuje pohled na středy čtverečků. Při překročení úhlu mezi kamerou a laserem nad určitou mez přestane být plánovač schopen naplánovat viditelnost některých bodů, jak je ukázáno na obr. .
0.45
Figure 10: Simulovaná snímání objektu - vliv vzdálenosti LASER-Kamera na měření
Pro krátkou tyč je trajektorie RF plynulá, jak je vidět na obr. 10(a). Čáry na obrázku obr. 10(b) znamenají přejezdy robota z místa na místo. Někdy jsou zbytečně dlouhé a to znamená málo efektivní plánování trajektorie. Důvodem takového množství a délky přejezdů je, že plánovač již nemohl najít vhodný pohled na těleso přiměřeně blízko předchozímu pohledu.
Možné řešení vzniklé situace spočívá v plánování pohledů ne na středy, ale na obvod čtvercové buňky. Místo jednoho bodu by bylo možno uvažovat 4 body umístěné ve středech jednotlivých hran a plánovat pohledy současně na všechny body.
0.45
Figure 11: Ukázky dalších měření na simulovaných datech

7.2  Měření na reálných datech

Obrázky obr.  a obr.  ukazují naměřená data z reálného rangefinderu drženého v paži robota. První obr.  zachycuje zbytečné přejezdy robota v důsledku šumu v naměřených datech.
0.9
Figure 12: Záznam z měření na reálných datech
Zejména obr.  ukazuje, že lze s plánovačem provádět experimenty i na reálných datech. Pro práci s reálnými daty je potřeba zvýšit robustnost navrhované plánovací strategie. Použitá plánovací strategie je trochu citlivá na chyby v datech. Jedná se zejména o situaci, kdy je nastavena kamera do určité pozice a je naměřen bod, kterým by teoreticky paprsek laseru ani procházet neměl.
0.9
Figure 13: Zdařilý experiment z měření na reálných datech

A  Implementace v Matlabu

A.1  Popis proměnných

circ   kružnice viditelnosti bodu

Proměnná circ je vektorem s 360 položkami. Každá položka reprezentuje viditelnost daného bodu v kruhové výseči o velikosti 1 stupně. Protože v Matlabu nelze přistupovat k položce č.0 je místo ní využita položka č. 360. Hodnota 0 v proměnné circ znamená, že do výseče zasahuje plný objekt a hodnota 1 znamená, že výseč nezasahuje do nějakého plného objektu.

M   matice obsazenosti plochy.

Popisovaná plocha představuje obdélník. Každý element matice popisuje čtvercovou oblast se středem v bodě [x,y]. První element odkazuje oblast [(0.5 : 1.5),(0.5 : 1.5)] se středem v bodě [1,1].

Hodnoty elementů v matici:

0 o dané ploše není známa žádná informace
1 daná plocha odkazuje plné těleso
-1 plocha je prázdná
-0.1 plocha je asi prázdná
0.1 plocha je asi plná
Vlastním algoritmem jsou použity 2 doplňkové hodnoty -0.1 a 0.1.


pos
určuje nastavení rangefinderu. Pro 2D se jedná o matici o rozměrech 2 x 3.

pos(1,:) = [Xzdroje_světla, Yzdroje_světla]
pos(2,:) = [Xsnímače, Ysnímače]
pos(3,:) = [Xsměr, Ysměr]
Třetí bod popisuje nasměrování rangefinderu. Paprsek prochází přímkou od zdroje světla do bodu [Xsměr, Ysměr].

vec   vektor části kontury


Matice vec obsahuje několik okolních bodů z již nasnímané linie. Body
jsou uloženy do řádků matice.
vec(bod,:) vrací [Xbodu,Ybodu]

A.2  Popis jednotlivých procedur a funkcí

Procedury jsou pro přehlednost seřazeny podle abecedy.


[M]=bkrangef2d[M,pos,X]
[M]=bkrangef2d_[M,pos,X]
Funkce bkrangef2d provádí aktualizaci interního modelu na základě znalosti naměřených dat. Bod X by měl být výsledkem funkce [X]=rangef2d(M,pos) . Matice modelu M použitá u funkce bkrangef2d by se neměla shodovat s originální maticí popisující měřený objekt. Na počátku by měla být inicializována nulami.
Procedura bkrangef2d je téměř shodná s procedurou bkrangef2d_. Jediný rozdíl spočívá v lepší implementaci algoritmu raytracingu. Za pixely příslušející trasované úsečce jsou považovány všechny pixely, jejichž čtvercovou oblastí prochází sebemenší část trasované úsečky.


[dir]=ComputeDirection(M,X,Count)
Funkce ComputeDirection vypočítá směrový vektor hranice, která prochází bodem X z matice M. Výpočet směrového vektoru je prováděn metodou nejmenších čtverců z maximálně Count bodů. Menší množství než Count je použito pouze v případě, pokud na hraně již nelze nalézt další body.


[angle]=GetAngle(vec)
Funkce vypočítá orientovaný úhel, který svírá vektor [1,0] s vektorem vec .


[c]=getcandidates2d(M,X)
Funkce najde všechny kandidáty ke scanovaní v okolí bodu X . Za kandidáta je považován takový bod, který ve svém osmiokolí současně sousedí s prázdným bodem a plným růstovým bodem (v našem případě se jedná o bod X ). Kandidát sám musí mít v matici M hodnotu "neznámá hodnota". Je-li kandidátů více, pak má matice c více řádek.


[dist]=getdistance(X1,X2)
Funkce vypočítá Euklidovskou vzdálenost dvou bodů X1 a X2 podle vzorce dist = Ö{ (X1(1) - X2(1))2 + (X1(2) -X2(2))2 } .


[d]=GetDistanceVC(X1,X2,P)
Funkce určí vzdálenost bodu P od přímky procházející body X1 a X2 .


[pp]=GetNearestPP(M2,p,pp_old)
Funkce najde nejbližší růstový bod (Všechny růstové body jsou umístěny v matici p.) ve kterém muže dojít k expanzi rekonstruované plochy. U vybraného bodu je ověřeno zda se stále jedná o růstový bod. V opačném případě je vybrán jiný bod pp. Pokud nelze vybrat žádný bod pp, pak funkce vrací [-1,-1].


[M]=getmodel()
[M]=getmodel2()
[M]=getmodel3()
[M]=getmodel4()
[M]=getmodel5()
[M]=getmodel6()
Rodina funkcí getmodel? vytvoří nějaký model a uloží jej do matice M.
Jedna z funkcí je vždy volána na počátku snímacích skriptů.


[pp]=getpoints2d(M)
Funkce vrací vektor všech základních bodů. Za základní bod je považován takový bod, který sousedí minimálně s jedním kandidátem ke snímání. Nelze-li nalézt ani jeden základní bod, pak funkce vrací hodnotu [-1,-1].


[vc]=getvc(a,b,c)
Funkce určí souřadnici průsečíku úsečky ab a výšky vc v trojúhelníku abc .
0.3


[circ]=MakeCircleOfVisibility(M,Xs)
          Funkce MakeCircleOfVisibility vrací kružnici viditelnosti bodu Xs . Kružnice je vytvářena z dosud rekonstruované části modelu.


paintRF(M2)
paintRF(M2,pos,cc,x)
paintRF(M2,pos,cc,x,LastMovement)
Funkce vykreslí aktuální model spolu s pozicí rangefinderu na obrazovce. Současně s tím je nakreslen právě naměřený bod x a kandidát ke snímání, na kterého byla nařízena kamera.
          Volitelně je možno nakreslit celou minulou trajektorii range-finderu. Každý řádek matice LastMovement obsahuje jednu polohu RF.


[pos,angles]=PlanNewPos(circ,Xs,OldPos)
[pos,angles]=PlanNewPos2(circ,Xs,pp)
[pos,angles]=PlanNewPos3(circ,Xs,pp,M2)
[pos,angles]=PlanNewPos4(circ,Xs,pp,M2,OldPos)
[pos,angles]=PlanNewPos5(circ,Xs,pp,M2,OldPos,LLine)
Plánovače nového pohledu ve strategii 0. K naplánování pohledu využívají kružnici viditelnosti circ vybraného bodu Xs . Nelze-li naplánovat pohled do Xs je vráceno pos=[-1,-1;-1,-1;-1,-1]. Pro testování je vhodné testovat pouze třetí řádek matice pos .
Algoritmus PlanNewPos5 odhaduje aktuální pohled tak, aby procházel přes požadovaný bod a současně přes predikovaný bod. LLine obsahuje počet bodů, ze kterých je počítána povrchová přímka. Z povrchové přímky je predikován nový bod pohledu.


[pos,angles]=PlanNewPos_s1_0(circ,Xs,pp)
[pos,angles]=PlanNewPos_s1_1(circ,Xs,pp,OldPos)
[pos,angles]=PlanNewPos_s1_2(circ,Xs,pp,vec,OldPos)
Plánovače nového pohledu ve strategii 1. Strategie 1 se používá zejména na ostrých hranách objektu. Je preferován pohled ve směru přes vybraný bod tak aby pohled končil uvnitř již změřeného plného bodu. Nelze-li naplánovat pohled na Xs je vrácena pozice pos=[-1,-1;-1,-1;-1,-1].


[pos]=PlanNewPos_s2_2(pp,BaseFi)
[pos,rotation]=PlanNewPos_s2_2(M2,pp,BaseFi,rotation)
Plánovače nového pohledu ve strategii 2. Strategie 2 je též používána na ostrých hranách objektu. Nebere v úvahu viditelnost a pomalu otáčí se senzorem do té doby dokud nenarazí na nějaký neprázdný bod. Nelze-li naplánovat pohled na Xs je vrácena pozice pos=[-1,-1;-1,-1;-1,-1]. K této situaci by došlo, kdyby se senzor otočil o 360 stupňů a nic nezměřil.


[X]=rangef2d(M,pos)
[X]=rangef2d_(M,pos)
Tato procedura provede jeden scan range-finderu. Ve dvourozměrném případě je výsledkem již přímo pozice bodu [x_bodu,y_bodu] , ve kterém vyslaný paprsek narazil na neprůhledný bod v matici M a odrazil se zpět do senzoru. Pokud by paprsek minul neprůhledné body a nebo se nemohl dostat ke snímacímu senzoru, vrací procedura hodnotu [-1,-1]. Při sledování úsečky ray-tracingem vzniká spojitá linie v osmiokolí.
Procedura rangef2d je téměř shodná s procedurou rangef2d_. Jediný rozdíl spočívá v lepší implementaci algoritmu raytracingu v proceduře rangef2d. Pixely trasované úsečky jsou všechny pixely, jejichž čtvercovou oblastí prochází sebemenší část trasované úsečky.


rfconfig
Tato procedura nastaví globální proměnné popisující geometrii snímače. Při změně geometrie snímacího členu postačí nastavit pouze tyto konstanty. Jedná se o RFlength : obsahuje vzdálenost ohniska kamery od laseru. RFalpha : odklon roviny laseru (přímky) od spojnice laser-kamera. RFbeta : odklon střední roviny (přímky) kamery od spojnice laser-kamera. FRgamma šířka svazku paprsku kamery ve 2D rovině. Úhly jsou zadávány v radiánech.


[vec]=TraceContour(M,X,count)
Procedura sleduje konturu snímaného objektu do délky maximálně count bodů. Trasování kontury začíná v bodě X.


[line]=TraceLine2D(Start,Stop,Bound)
Procedura trasuje úsečku vycházející z bodu Start a končící v bodě Stop . Matice line obsahuje ve svých řádcích jednotlivé body příslušející zadané úsečce. Omezení Bound obsahuje souřadnice levého dolního rohu Bound(1,:) a pravého horního rohu Bound(2,:). Pokud sledovaná úsečka vystupuje ze zadaného obdélníku je uvažována jen ta její část, která v něm leží.


[circ]=UpdateCirc(circ,Xs,X)
Procedura provede aktualizaci kružnice viditelnosti pro bod X , který se stal neprůhledným. Bod Xs je středem kružnice a představuje tzv. vztažný bod. Ve vektoru circ budou vynulovány všechny jednostupňové výseče, která zasahují do čtvercové oblasti určené bodem X .


verify=verifypoint2d(M,p)
Funkce ověří, zda je bod p tzv. růstovým bodem. Pokud je, tak vrací 1 jinak 0.

A.3  Popis jednotlivých skriptů

circpix
Skript rekonstruující daný objekt pohybem po kružnici. Při pohybu se snímací prvek již nesmí vrátit.


fullpix
Skript rekonstruující daný objekt. Kritérium konce rekonstrukce nastane při vyčerpání všech možných kandidátů. Za kandidáta je považován bod, ve kterém může pokračovat hrana.


stratpix
Skript rekonstruující daný objekt. Kritériem konce rekonstrukce je vyčerpání všech možných kandidátů. Za kandidáta je považován bod, ve kterém může pokračovat hrana. Navíc je v tomto skriptu kladen důraz na lepší trajektorii senzoru. Toho je dosaženo přepínáním použitých strategií.

Footnotes:

1Range-finder je zařízení určené ke snímání hloubkových map, tj. produkuje matici, jejíž prvky představují vzdálenosti od pozorovatele.
2Triangulovaný povrch je povrch popsaný možinou bodů v prostoru, které jsou seskupeny do sítě trojúhelníků.
3NBV = Next Best View - nejlepší pohled, který přinese nejvíce nové informace o snímaném tělese.
4Ty by byly pro nás možná přínosné
5Kontrolu snímaných dat definujme jako schopnost rozeznat z naměřených dat, že se skutečně vyskytla konfigurace, kterou chceme změřit.
6Úlohu je potřeba ještě hlouběji analyzovat pro případ přepínání strategií.

<~   Go to the Fojtik's Home Page





File translated from TEX by TTH, version 3.74.
On 17 Apr 2006, 23:53.