Difference between revisions of "Natural language interface for SBOT"

From RoboWiki
Jump to: navigation, search
(Foto dokumentácia)
(Video)
 
(21 intermediate revisions by the same user not shown)
Line 2: Line 2:
  
 
== Cieľ ==
 
== Cieľ ==
Naším ceľom je vytvorenie rozhrania, pomocou ktorého by bolo možné prirodzeným jazykom komunikovať (myslené: písať) s SBOTom. Komunikácia by mala prebiehať v klasickej Win32 aplikácii a nielen získavať textovú odozvu od robota, ale taktiež ho navigovať v pohyboch. Medzi ciele si kladieme aj možnosť učiť ho zložitejšie, viacslovné príkazy. Celá komunikácia bude prebiehať v anglickom jazyku.
+
Naším ceľom bolo vytvorenie rozhrania, pomocou ktorého by bolo možné prirodzeným jazykom komunikovať (myslené: písať) s SBOTom. Komunikácia prebieha v klasickej Win32 aplikácii a nielen získava textovú odozvu od robota, ale taktiež sa dá navigovať v pohyboch. Medzi, žiaľ nesplnené ciele, sme si dali aj možnosť učiť ho zložitejšie, viacslovné príkazy. Celá komunikácia prebieha v anglickom jazyku.
  
== Teória ==
+
== Postup ==
 +
Samotný algoritmus je pre robota programovaný v AVR studiu a pre PC sme zvolili jazyk C++ a MS Visual Studio. Základnú časť algoritmu - rozoznávač reči, sme sa rozhodli ponechať v externej aplikácii a nevkladať ju do pamäte robota. Samotný robot v tejto verzii teda obsahuje iba pripravené jednoduché príkazy na ktoré dokáže reagovať.
 +
=== Ukážka časti programu pre SBOTa ===
  
=== Jazyk ===
+
  switch (buffer[0])
 +
  {
 +
      case 'a': printf("HELLO\n");
 +
                break;
 +
      case 's': printf("%d %d %d %d %d %d %d\n", adc_vals[0], adc_vals[1], bumper_stat(BUMPER_0), bumper_stat(BUMPER_1), bumper_stat(BUMPER_2), bumper_stat(BUMPER_3), adc_vals[2]);
 +
                break;
 +
      case 'f': sbot_forward();
 +
                break;
 +
      case 'p': sbot_stop();
 +
                break;
 +
      case 'l': sbot_left();
 +
                break;
 +
      case 'r': sbot_right();
 +
                break;
 +
      case 'b': sbot_back();
 +
                break;
 +
      case 'o': sbot_rotate();
 +
                break;
 +
      case 'z': zrychli();
 +
                break;
 +
      case 'j': skuska();
 +
                break;
 +
  }
  
== Postup ==
+
Zložitejšie príkazy potom budú riadené cez bluetooth z externého programu volaním týchto jednoduchších príkazov. Keďže prirodzený jazyk je veľmi rozsiahly, začali sme s implementáciou základných príkazov.
Rozhodli sme sa základnú časť algoritmu - rozoznávač reči, ponechať v externej aplikácii. Samotný robot bude teda obsahovať iba pripravené jednoduché príkazy na ktoré dokáže reagovať. Zložitejšie príkazy potom budú riadené cez COM port z externého programu volaním týchto jednoduchších príkazov. Keďže prirodzený jazyk je veľmi rozsiahly, začali sme s implementáciou základných príkazov, ktoré je možné spájať do jednoduchých viet.
 
  
 
=== Základné príkazy ===
 
=== Základné príkazy ===
 
* hello
 
* hello
* how are you
 
 
* go
 
* go
 +
* left
 +
* right
 +
* rotate
 +
* back
 
* stop
 
* stop
* turn
+
* wait
* rotate
+
* status
 +
 
 +
== Obrazová dokumentácia ==
 +
Tu je niekoľko obrázkov z našej aplikácie a jedno krátke video.
 +
=== Foto ===
 +
<div style="float: left">
 +
[[Image:Beta verzia aplikacie.JPG|thumb|300px|Prvá beta verzia aplikácie]]
 +
</div>
 +
<div style="float: left">
 +
[[Image:Gama_verzia.JPG‎|thumb|300px|Finálna verzia aplikácie]]
 +
</div>
 +
<div style="float: left">
 +
[[Image:Final_program.JPG|thumb|300px|Odľahčená verzia aplikácie]]
 +
</div>
 +
<div style="clear: both"></div>
 +
=== Video ===
 +
[http://www.youtube.com/watch?v=sQ7dYv4Fm0c Natural language for SBOT na YouTube]
 +
 
 +
== Zdrojové súbory ==
 +
Stiahnite si zdojové súbory pre [[Media:Sbottalk_pc.zip‎|MS Visual Studio]] (PC časť) a pre [[Media:Sbottalk_sbot.zip‎|‎AVR Studio]] (SBOT časť).
 +
 
 +
== Možnosti budúceho rozvoja ==
 +
Do budúcna by sme chceli dosiahnuť aj implementáciu nasledujúcich rozšírení a príkazov.
 +
=== Základné príkazy ===
 +
* how are you
 
* draw circle
 
* draw circle
* check sensor
 
 
* park (vráti sa na východzie miesto)
 
* park (vráti sa na východzie miesto)
 
* follow light
 
* follow light
Line 25: Line 74:
 
* bypass obstacle
 
* bypass obstacle
 
=== Rozširujúce príkazy ===
 
=== Rozširujúce príkazy ===
* straight
 
* back
 
* left
 
* right
 
 
* 10cm
 
* 10cm
 
* faster
 
* faster
Line 38: Line 83:
 
* and
 
* and
 
* then
 
* then
=== Ukážka vstupných príkazov ===
 
# hello how are you go straight until hit then turn right and stop<br/>
 
# go straight 10cm then draw circle then go back and draw circle mean dance
 
 
== Foto dokumentácia ==
 
<div style="float: left">
 
[[Image:Beta_verzia_aplikacie.jpg|thumb|300px|Prvá beta verzia aplikácie]]
 
</div>
 
<div style="float: none"></div>
 
 
== Zdrojové súbory ==
 
Stiahnete už onedlho...
 
  
 
== Externé odkazy ==
 
== Externé odkazy ==
 
[http://www.youtube.com/watch?v=FC3IryWr4c8 IBM's Watson] (iba pre zaujímavosť)<br/>
 
[http://www.youtube.com/watch?v=FC3IryWr4c8 IBM's Watson] (iba pre zaujímavosť)<br/>
 
[http://www.ludvik.sk/ Ludvik online] (skúste sa porozprávať s Ludvikom)
 
[http://www.ludvik.sk/ Ludvik online] (skúste sa porozprávať s Ludvikom)

Latest revision as of 16:54, 22 June 2011

SBOT robot

Cieľ

Naším ceľom bolo vytvorenie rozhrania, pomocou ktorého by bolo možné prirodzeným jazykom komunikovať (myslené: písať) s SBOTom. Komunikácia prebieha v klasickej Win32 aplikácii a nielen získava textovú odozvu od robota, ale taktiež sa dá navigovať v pohyboch. Medzi, žiaľ nesplnené ciele, sme si dali aj možnosť učiť ho zložitejšie, viacslovné príkazy. Celá komunikácia prebieha v anglickom jazyku.

Postup

Samotný algoritmus je pre robota programovaný v AVR studiu a pre PC sme zvolili jazyk C++ a MS Visual Studio. Základnú časť algoritmu - rozoznávač reči, sme sa rozhodli ponechať v externej aplikácii a nevkladať ju do pamäte robota. Samotný robot v tejto verzii teda obsahuje iba pripravené jednoduché príkazy na ktoré dokáže reagovať.

Ukážka časti programu pre SBOTa

  switch (buffer[0])
  {
     case 'a': printf("HELLO\n");
               break;
     case 's': printf("%d %d %d %d %d %d %d\n", adc_vals[0], adc_vals[1], bumper_stat(BUMPER_0), bumper_stat(BUMPER_1), bumper_stat(BUMPER_2), bumper_stat(BUMPER_3), adc_vals[2]);
               break;
     case 'f': sbot_forward();
               break;
     case 'p': sbot_stop();
               break;
     case 'l': sbot_left();
               break;	
     case 'r': sbot_right();
               break;	
     case 'b': sbot_back();
               break;
     case 'o': sbot_rotate();
               break;
     case 'z': zrychli();
               break;
     case 'j': skuska();
               break;
  }

Zložitejšie príkazy potom budú riadené cez bluetooth z externého programu volaním týchto jednoduchších príkazov. Keďže prirodzený jazyk je veľmi rozsiahly, začali sme s implementáciou základných príkazov.

Základné príkazy

  • hello
  • go
  • left
  • right
  • rotate
  • back
  • stop
  • wait
  • status

Obrazová dokumentácia

Tu je niekoľko obrázkov z našej aplikácie a jedno krátke video.

Foto

Prvá beta verzia aplikácie
Finálna verzia aplikácie
Odľahčená verzia aplikácie

Video

Natural language for SBOT na YouTube

Zdrojové súbory

Stiahnite si zdojové súbory pre MS Visual Studio (PC časť) a pre ‎AVR Studio (SBOT časť).

Možnosti budúceho rozvoja

Do budúcna by sme chceli dosiahnuť aj implementáciu nasledujúcich rozšírení a príkazov.

Základné príkazy

  • how are you
  • draw circle
  • park (vráti sa na východzie miesto)
  • follow light
  • follow line
  • bypass obstacle

Rozširujúce príkazy

  • 10cm
  • faster
  • slower
  • closer
  • until hit
  • mean (špeciálny príkaz slúži na "učenie")

Spojky

  • and
  • then

Externé odkazy

IBM's Watson (iba pre zaujímavosť)
Ludvik online (skúste sa porozprávať s Ludvikom)