Difference between revisions of "Projects AI Robotics"

From RoboWiki
Jump to: navigation, search
m
Line 1: Line 1:
[[Projects_AI_Robotics|Nazad na projekty ...]]
+
This page contains student projects from the course Algoritms for AI Robotics
  
GolfBot spis projektu (pripravuje sa) ...
+
Please create a separate page for each project:
  
== Program ==
+
== 2015 ==
 +
[[GolfBot|GolfBot - Andrej Jursa a Michal Moravčík]]
  
=== Prepojenie s kamerou a určovanie orientačných bodov ===
+
== 2014 ==
 +
[[Lego Mindstorms Ev3 Project - Ondrej Slovak]]
  
Obraz sme získavali pomocou Kinectu pre XBox 360. Máme dve triedy, <code>Kinect</code> (odvodená od <code>edu.ufl.digitalworlds.j4k.J4KSDK</code>) a <code>Camera</code> (implementuje <code>Runnable</code>).
+
[[robot performs movements, detects trajectory using gyroscope/accellerometer, sends data to Java application that visualizes the trajectory (Mário Raček, Roman Moravec)]]
  
Hlavný program spúšťa vlákno kamery, ktoré následne pri inicializácii spustí vlákno kinectu v móde <code>J4KSDK.COLOR</code>. Inštancii tredy <code>Kinect</code> je potom poslaná referencia na kameru. Trieda <code>Kinect</code> prekrýva metódu udalosti <code>onColorFrameEvent</code>, ktorá nastáva po zosnímaní farebného obrazu kinectom, pričom tento obraz posiela inštancii kamery cez referenciu volaním jej verejnej metódy <code>setImageFromKinect</code>.
+
[[LEGO NXT project (Martin Marko, Martin Šalka)]]
  
Hlavné vlákno kamery vykonáva cyklicky tieto akcie:
+
[[GAZEBO simulator (Ľubomír Chriašteľ)]]
  
Najprv sa otestuje, či existuje snímka z kamery.
+
[[ASUS Xtion pre robota SmelyZajko (Marek Jelen, Miroslav Garai)]]
* Ak nie, ukončí iteráciu cyklu a pokračuje ďalšou iteráciou.
 
* Ak áno:
 
*# Vytvorí si novú kópiu obrázku (pre účely spracovania).
 
*# Aplikuje gaussovo rozmazanie pracovného obrázka z polomerom 3px.
 
*# Skonvertuje obrázok z farebného formátu BGR do LAB.
 
*# Pomocou prahovania, nájdeniu najväčšieho spojitého komponentu a priemerovania x, y pozícií pixelov najväčšieho spoločného komponentu nájde stredy kruhových značiek a lopty.
 
*# Určia sa polohy cieľa (stred obrázka), lopty (oranžová značka na obrázku), polomer lopty a pozicia robota.
 
*# Spočíta sa uhol natočenia robota (podľa zelenej a modrej značky).
 
*# Vykreslia sa získané body do náhľadového obrázka.
 
*# Hlavné vlákno programu je notifikované o dokončení cyklu kamery (teda sú spočítané potrebné body pre ďalšiu fázu programu hlavného vlákna).
 
  
[[Image:GolfBot_Diagram_kamery.png|Diagram spracovania obrázka z kamery]]
+
[[Robot Following using Camera (Marian Vysluzil)]]
  
==== Gaussovo rozmazanie obrázku ====
+
== 2013 ==
  
Na rozmazanie obrázka (blur) je použítá aproximácia gaussovho rozmazávacieho algoritmu, ktorý dokáže pracovať v lineárnom čase. Použili sme port algoritmu z JavaScriptu z blogu Ivana Kuckira, nájsť ho je možné na stránke [http://blog.ivank.net/fastest-gaussian-blur.html Fastest Gaussian Blur (in linear time)] (jedná sa o algoritmus 4 na tejto stránke).
+
[[Robot_constructs_a_map_of_a_maze_-_Adam_Bilisics]]
  
Keďže algoritmus počíta s tým, že obrázok je tvorený polom bajtov, kde jeden bajt reprezentuje jeden pixel, bolo nutné obrázok rozdeliť na tri obrázky, ktoré reprezentovali jeho červenú, zelenú a modrú farebnú zložku samostatne. Potom, ako algoritmus rozmazania dokončil svoju prácu na každom z týchto rozdelených obrázkov, bolo treba ich opätovne spojiť do jedného obrázka. Na toto nám slúžia metódy <code>separateColor</code> a <code>putColor</code>.
+
[[Šifrovačka s robotnačkou pre Euroveu, EV3 Puppy (Martina Chraščová, Lucia Budinská, Lucia Ďurikovičová )]]
  
==== Prevod z RGB do LAB ====
+
[[E-Puck Bludisko]]
  
Keďže zosnímaný obrázok z kamery je vo formáte, kde jeden pixel je určený štyrmi bajtmi s významom: Blue, Green, Red a posledný je vždy nulový (hodnota 0), pričom tieto hodnoty sú v rozsahu od 0 do 255, je treba najprv každý pixel preformátovať do tvaru RGB, kde každá hodnota je <code>float</code> s hodnotou od 0 do 1. Na to máme metódu <code>getPixel</code> s následným predelením každej zložky hodnotou 255.
+
[[Visual navigation for Acrob or SBOT robot with Android with camera ( Marek Kádek, Jana Sucháneková)]]
  
Každý pixel je potom vložený do statickej metódy triedy <code>CIELab</code> s názvom <code>fromRGB</code>, ktorá vráti hodnotu pixelu vo formáte farieb LAB. Trieda <code>CIELab</code> na prevod z RGB do LAB ešte používa medzikrok, kde každý RGB pixel prevedie do formátu XYZ, z ktorého následne vytvorí LAB formát.
+
[[Acrob robot constructs a map of a maze (Péter Dobsa, Gergely Labanc)]]
  
==== Prahovanie ====
+
[[Acrob robot constructs a map of a maze - obstacles around the robot (Jozef Belko)]]
  
Prahovanie používame na získanie masky informácií o prítomnosti farebnej informácie v LAB formáte v spracovávanom obrázku. Tento algoritmus (metóda <code>prahuj(float[] from, float[] to)</code>) dostáva minimálnu a maximálnu hodnotu prahu farby v LAB formáte a v obrázku zisťuje, pre každý pixel, či je v rozsahu tejto hodnoty alebo nie je. Ak pixel v rozsahu je, dostane výstupná maska na pozícii pixelu hodnotu 1, v opačnom prípade je použitá hodnota 0.
+
[[Trajectory from gyro/accellerometer/compas]]
  
'''int[]''' ''o'' = '''new int['''potrebná veľkosť''']'''
+
[[Parking of robots in Remotely-operated laboratory]]
'''for''' každé ''x''
 
    '''for''' každé ''y''
 
      '''if''' pixel na ''x'' a ''y'' je medzi ''from'' a ''to''
 
          zapíš do ''o'' 1
 
      '''else'''
 
          zapíš do ''o'' 0
 
'''return''' ''o''
 
 
==== Najväčší spojitý komponent ====
 
  
Výstupom z prahovania je maska obsahujúca nuly a jednotky, na pozíciách, kde bola zistená vhodná farba. Algoritmus nájdenia najväčšieho spojitého komponentu prehľadáva pôvodnú masku, v prípade nájdenia hodnoty jedna spustí prehľadávanie do šírky, pričom každý susedný pixel (v každom z 8 smerov) označí hodnotou N. N začína na hodnote 2 a je zvyšovaný po dokončení označenia komponentu, tento číselný údaj je vpisovaný do vstupnej masky. Tento komponent sa hľadá metódou <code>int flood(int px, int py, int[] in, int n)</code>, ktorá dostáva súradnice prvého bodu komponentu, masku a číselné označenie komponentu, označí komponent a spočíta počet pixelov v tomto komponente, ktorý následne vráti.
+
[[Pohyb robota po čiare a zaznamenávanie vzdialenosti okolitých objektov (Dudík, Kemény)]]
  
Každý komponent je zapísaný do <code>HashMap</code>, kde kľúč je číslo komponentu a hodnota je počet pixelov v komponente. Po nájdení všetkých komponentov sa určí najväčší z nich a maska sa opäť preznačí na hodnoty 0 a jednoa takto:
+
[[Agent Space on Raspberry Pi and Acrob with line-following and obstacle avoiding behavior-based robot.(Anton Blahunka, Martin Reiberger)]]
  
* Ak pixel má hodnotu čísla najväčšieho komponentu, bude nastavený na hodnotu 1.
+
[[Evolution with Open Dynamics Engine (Bečvarová Ľuboslava)]]
* Ak pixel má inú hodnotu, bude nastavený na 0.
 
  
Metóda hľadajúca najväčší spojitý komponent má názov <code>najSpoj</code>.
+
[[Acrob navigation in maze using neural network (Kundlová, Jurenka)]]
  
==== Určenie stredu a AABB ohraničenia komponentu ====
+
[[ Acrob in maze (line sensor, distance sensor, robot navigates towards the maze exit) (Martin Hrivnák, Tomáš Matúš)]]
  
Na získanie stredu a AABB ohraničenia komponentu sa používa metóda <code>drawX</code>. Metóda dostáva masku s určeným najväčším spojitým komponentom, pričom pre každý pixel, ktorého hodnota je rovná 1, je pozícia pixelu x a y pripočítaná k ceľkovému súčtu. Rovnako sú pre každé x a y upravené hodnoty premenných <code>maxX</code>, <code>minX</code>, <code>maxY</code> a <code>minY</code>. Výsledný stred je vypočítaný ako pomer súčtu x ku počtu pixlov a súctu y k počtu pixlov.
+
[[Acrob robot prejde bludisko, a program ďalej vizualizuje mapu bludiska na obrazovke (Michal Borčin & Barbora Zaťková)]]
  
'''int[]''' ''stred'' = '''new int['''6''']'''
+
[[NXT/LeJOs bot navigates maze consisting of black tape on white paper, object in front of robot is the maze exit (Pavol Lescinsky)]]
'''long''' ''sx'' = 0, ''sy'' = 0
+
 
'''int''' ''maxX'' = 0, ''maxY'' = 0, ''minX'' = ''width'', ''minY'' = ''height'', ''pocet'' = 0
+
[[Omnibot(Krajči,Dluhý)]]
'''for''' každý ''x''
+
 
    '''for''' každý ''y''
+
[[Navigation of the robot arm with ANN(Karin Vališová)]]
      '''if''' pixel ''x'',''y'' patrí komponentu
+
 
          ''sx'' += ''x'', ''sy'' += ''y'', ''pocet''++
+
[[Evolving obstacle avoidance in Microsoft Robotics Studio (autori: Miroslav Matušťák & Pavol Kunovský)]]
          ''maxX'' = max(''maxX'', ''x'')
+
 
          ''maxY'' = max(''maxY'', ''y'')
+
[[Trajectory from gyro/accellerometer/compas with 9DOF IMU (Michal Zemko, Peter Svitok)]]
          ''minX'' = min(''minX'', ''x'')
+
 
          ''minY'' = min(''minY'', ''y'')
+
== 2012 ==
'''if''' ''pocet'' je 0
+
 
    '''return''' ''stred''
+
[[Avoiding in a corridor]]
''stred''[0] = round(''sx'' / ''pocet'')
+
 
''stred''[1] = round(''sy'' / ''pocet'')
+
[[Ketchup Robot]]
''stred''[2] = ''minX''
+
 
''stred''[3] = ''minY''
+
[[Identification of beer bottle using OpenCV]]
''stred''[4] = ''maxX''
+
 
''stred''[5] = ''maxY''
+
[[Mapping with SBOT]]
'''return''' ''stred''
+
 
 +
[[Light Avoiding SBOT]]
 +
 
 +
[[V-REP]]
 +
 
 +
[[Webots]]
 +
 
 +
[[Feedforward Backpropagation Neural Networks]]
 +
 
 +
[[AnyKode Marilou]]
 +
 
 +
== 2011 ==
 +
 
 +
[[Braitenberg 2]]
 +
 
 +
[[Tetrix robot with localisation using a neural network]]
 +
 
 +
[[Robot nasleduje čiaru a vykreslí svoju dráhu do programu]]
 +
 
 +
[[Mouse in Maze with robot E-Puck]]
 +
 
 +
[[Natural language interface for SBOT]]
 +
 
 +
[[SBOT following the line]]
 +
 
 +
[[Lego RCX following the line and obstacle avoiding ]]
 +
 
 +
[[Implement a simple LCS for the SBOT robot]]
 +
 
 +
[[Micromouse with Mindstorms]]
 +
 
 +
[[Mail delivery robot]]
 +
 
 +
[[Pohyb podla moznych krokov]]
 +
 
 +
[[New applet control interface for the lab control page ]]
 +
 
 +
[[Reproducing a learned geometrical object using drawing pen of Robotnacka robot]]
 +
 
 +
[[Obstacle avoidance training in Khepera 2 simulator via neural network]]
 +
 
 +
[[Highlander]]
 +
 
 +
== 2010 ==
 +
 
 +
[[Line Following Sbot Using Reinforcement Learning]]
 +
 
 +
[[Controlling robots in remotely-operated laboratory using Objection language]]
 +
 
 +
[[Robot Parking using NEAT - Neuroevolution of augmenting topologies]]
 +
 
 +
[[Gripper Functionality for Remotely-Operated Robotics Laboratory]]
 +
 
 +
[[Visualization of Robotnacka Trajectories in Robotics Laboratory]]
 +
 
 +
[[Robot whitch follow a line and stop back up of barrier]]
 +
 
 +
[[Robot with ultrasonic distance sensors]]
 +
 
 +
[[Braitenberg vehicles implemented using SBOT robot]]
 +
 
 +
[[Simple reactive Sbot agent]]
 +
 
 +
[[Simple python GUI for SBOT without packets]]
 +
 
 +
[[Controlling robot with webcam]]
 +
 
 +
[[SBOT pushing a vehicle]]

Revision as of 17:32, 27 May 2015

This page contains student projects from the course Algoritms for AI Robotics

Please create a separate page for each project:

2015

GolfBot - Andrej Jursa a Michal Moravčík

2014

Lego Mindstorms Ev3 Project - Ondrej Slovak

robot performs movements, detects trajectory using gyroscope/accellerometer, sends data to Java application that visualizes the trajectory (Mário Raček, Roman Moravec)

LEGO NXT project (Martin Marko, Martin Šalka)

GAZEBO simulator (Ľubomír Chriašteľ)

ASUS Xtion pre robota SmelyZajko (Marek Jelen, Miroslav Garai)

Robot Following using Camera (Marian Vysluzil)

2013

Robot_constructs_a_map_of_a_maze_-_Adam_Bilisics

Šifrovačka s robotnačkou pre Euroveu, EV3 Puppy (Martina Chraščová, Lucia Budinská, Lucia Ďurikovičová )

E-Puck Bludisko

Visual navigation for Acrob or SBOT robot with Android with camera ( Marek Kádek, Jana Sucháneková)

Acrob robot constructs a map of a maze (Péter Dobsa, Gergely Labanc)

Acrob robot constructs a map of a maze - obstacles around the robot (Jozef Belko)

Trajectory from gyro/accellerometer/compas

Parking of robots in Remotely-operated laboratory

Pohyb robota po čiare a zaznamenávanie vzdialenosti okolitých objektov (Dudík, Kemény)

Agent Space on Raspberry Pi and Acrob with line-following and obstacle avoiding behavior-based robot.(Anton Blahunka, Martin Reiberger)

Evolution with Open Dynamics Engine (Bečvarová Ľuboslava)

Acrob navigation in maze using neural network (Kundlová, Jurenka)

Acrob in maze (line sensor, distance sensor, robot navigates towards the maze exit) (Martin Hrivnák, Tomáš Matúš)

Acrob robot prejde bludisko, a program ďalej vizualizuje mapu bludiska na obrazovke (Michal Borčin & Barbora Zaťková)

NXT/LeJOs bot navigates maze consisting of black tape on white paper, object in front of robot is the maze exit (Pavol Lescinsky)

Omnibot(Krajči,Dluhý)

Navigation of the robot arm with ANN(Karin Vališová)

Evolving obstacle avoidance in Microsoft Robotics Studio (autori: Miroslav Matušťák & Pavol Kunovský)

Trajectory from gyro/accellerometer/compas with 9DOF IMU (Michal Zemko, Peter Svitok)

2012

Avoiding in a corridor

Ketchup Robot

Identification of beer bottle using OpenCV

Mapping with SBOT

Light Avoiding SBOT

V-REP

Webots

Feedforward Backpropagation Neural Networks

AnyKode Marilou

2011

Braitenberg 2

Tetrix robot with localisation using a neural network

Robot nasleduje čiaru a vykreslí svoju dráhu do programu

Mouse in Maze with robot E-Puck

Natural language interface for SBOT

SBOT following the line

Lego RCX following the line and obstacle avoiding

Implement a simple LCS for the SBOT robot

Micromouse with Mindstorms

Mail delivery robot

Pohyb podla moznych krokov

New applet control interface for the lab control page

Reproducing a learned geometrical object using drawing pen of Robotnacka robot

Obstacle avoidance training in Khepera 2 simulator via neural network

Highlander

2010

Line Following Sbot Using Reinforcement Learning

Controlling robots in remotely-operated laboratory using Objection language

Robot Parking using NEAT - Neuroevolution of augmenting topologies

Gripper Functionality for Remotely-Operated Robotics Laboratory

Visualization of Robotnacka Trajectories in Robotics Laboratory

Robot whitch follow a line and stop back up of barrier

Robot with ultrasonic distance sensors

Braitenberg vehicles implemented using SBOT robot

Simple reactive Sbot agent

Simple python GUI for SBOT without packets

Controlling robot with webcam

SBOT pushing a vehicle