REALIZACJA IDENTYFIKACJI OBIEKTÓW W JĘZYKU ARLANG ================================================= Identyfikacja obiektów na obrazie jest realizowana przez system wizyjny na podstawie elastycznych edytowalnych wzorców konturów (Flexible Editable Contour Template - FECT) zapisanych w formacie FCD (Flexible Contour Description). Ściągnięcie obrazu z systemu wizyjnego jest realizowane za pomocą procedury: SNAPSHOT () Do identyfikacji obiektów służy następująca procedura: IDENTIFY () Przed wywołaniem procedury IDENTIFY można zmodyfikować tolerancję czułości systemu. Standardowa wartość wynosi 0.5. Realizowane jest to za pomocą wywołania procedury: SENSITIVITY () Zmniejszona wartość tolerancji spowoduje zwiększoną restrykcyjność przypisania obiektu do danej klasy (np. zakłócenia na obrazie mogą spodowować brak przypisania obiektu do właściwej klasy). Zwiększona wartość tolerancji spowoduje, że obiekty w większym stopniu różniące się od wzorca będą klasyfikowane jako zgodne ze wzorcem. W rezultacie wywołania procedury IDENTIFY odpowiednie wartości są podstawiane pod następujące zmienne proste oraz elementy tablic (tablice należy wpierw zadeklarować!): n - liczba wykrytych zarysów odpowiadających wzorcowi elastycznemu PERIMETER(1..n) - długości obwodów poszczególnych zarysów xs(1..n), ys(1..n) - współrzędne środków ciężkości zarysów Ix(1..n) - momenty bezwładności tych zarysów względem prostych równoległych do osi X i przechodzących przez ich środki ciężkości Iy(1..n) - momenty bezwładności tych zarysów względem prostych równoległych do osi Y i przechodzących przez ich środki ciężkości Ixy(1..n) - momenty dewiacji tych zarysów względem prostych równoległych do osi X i Y oraz przechodzących przez ich środki ciężkości sd(1..n) - odchyłka sygnatury (signature deviation) danego zarysu od sygnatury wzorca elastycznego (dla zarysów uznanych za odpowiadające wzorcowi elastycznemu nigdy nie przekracza ona wartości tolerancji czułości systemu) Przykład identyfikacji obiektu "klucz nastawny" w języku Arlang: ------------------------------------------------------------------- program array PERIMETER(2) speaker (1, Kto^ry_przedmiot_podnies^c^) microphone if command (nastawny) snapshot(1) sensitivity (2.5) identify (klucz nastawny) if n=1 i:=1 else if n=2 speaker (1, Znaleziono_dwa_klucze_nastawne) speaker (1, Kto^ry_z_nich_podnies^c^) activate (wiekszy) activate (mniejszy) microphone if PERIMETER(1)>PERIMETER(2) i:=2 else i:=1 endif if command (wiekszy) if i=1 i:=2 else i:=1 endif endif else i:=0 endif endif if i>0 call kalibracja $ Procedura kalibracja powinna realizować $ obliczenie współrzędnych chwytaka robota $ xr,yr,zr,gamma na podstawie parametrów $ obrazu xs(i),ys(i),Ix(i),Iy(i),Ixy(i) action (robot, mp, xr, yr, zr+50, gamma) action (robot, mp, xr, yr, zr+8, gamma) action (gripper1, close) action (robot, mp, xr, yr, zr+50, gamma) else speaker (1, Brak_albo_za_duz^o_kluczy_nastawnych_na_stole) endif endif