Difference between revisions of "Lego Mindstorms Ev3 Project - Ondrej Slovak"
(New page: == Zadanie == V tomto projekte si vytvoríme robota zo stavebnice Lego Mindstorms Ev3, ktorý bude ovládaný pomocou klávesnice notebooku, bude sa vyhýbať prekážkam a zároveň nebud...) |
|||
Line 1: | Line 1: | ||
== Zadanie == | == Zadanie == | ||
− | V tomto projekte si vytvoríme robota zo stavebnice Lego Mindstorms Ev3, ktorý bude ovládaný pomocou klávesnice | + | |
+ | V tomto projekte si vytvoríme robota zo stavebnice Lego Mindstorms Ev3, ktorý bude ovládaný pomocou klávesnice PC, bude sa vyhýbať prekážkam a zároveň nebude vychádzať z vyznačeného priestoru. | ||
== Príprava == | == Príprava == | ||
− | Budeme používať softvér pre Lego Mindstorms Ev3 od spoločnosti leJOS. Na jeho používanie budeme potrebovať nakonfigurovanú SD kartu a vývojové prostredie, ktoré si môžeme nastaviť pomocou nasledujúcich odkazov. | + | |
+ | Budeme používať softvér pre Lego Mindstorms Ev3 od spoločnosti leJOS. Na jeho používanie budeme potrebovať nakonfigurovanú micro-SD kartu a vývojové prostredie, ktoré si môžeme nastaviť pomocou nasledujúcich odkazov. | ||
- https://sourceforge.net/p/lejos/wiki/Windows%20Installation/ | - https://sourceforge.net/p/lejos/wiki/Windows%20Installation/ | ||
- https://sourceforge.net/p/lejos/wiki/Installing%20the%20Eclipse%20plugin/ | - https://sourceforge.net/p/lejos/wiki/Installing%20the%20Eclipse%20plugin/ | ||
+ | |||
+ | Nakonfigurovanú SD kartu vložíme do SD portu Ev3 kocky a spustíme. Softvér od leJOS-u sa automaticky nahrá z karty a bude sa používať ako náhrada za oficiálny softvér, pokiaľ budeme mať vloženú kartu. | ||
+ | |||
+ | Ďalej budeme potrebovať nadviazané spojenie pomocou Bluetooth. Toto spojenie sa dá jednoducho nadviazať z PC pomocou Bleutooth zariadenia. V Bluetooth Devices si vieme nájsť Ev3 a nadviazať s ním spojenie. | ||
+ | |||
+ | == Program == | ||
+ | |||
+ | Program bude pozostávať z dvoch základných častí, časť, ktorá bude bežať na robotovi a časť, ktorá bude bežať na PC. | ||
+ | |||
+ | Popíšme si najskôr časť, ktorá bude na robotovi. | ||
+ | |||
+ | Program na robotovi sa skladá z viacerých častí. V prvom rade musíme zabezpečiť komunikáciu medzi robotom a PC. Keďže už máme nadviazané spojenie pomocou Bluetooth stačí nám na robotovi vytvoriť server, ktorý bude počúvať na požiadavky od používateľa, v našom prípade PC. Túto komunikáciu sme umiestnili do samostatného threadu aby robot stále počúval na požiadavky z PC. | ||
+ | |||
+ | <code> | ||
+ | class readFromClient extends Thread { | ||
+ | |||
+ | readFromClient() { | ||
+ | |||
+ | } | ||
+ | |||
+ | public void run() { | ||
+ | ServerSocket serv; | ||
+ | try { | ||
+ | serv = new ServerSocket(1111); | ||
+ | Socket s = serv.accept(); // Wait for Laptop to connect | ||
+ | DataInputStream in = new DataInputStream(s.getInputStream()); | ||
+ | while (true) { | ||
+ | String read = in.readUTF(); | ||
+ | switch (read) { | ||
+ | case "prava": | ||
+ | BumperCarWithHandling.direction = "prava"; | ||
+ | System.out.println("prava"); | ||
+ | break; | ||
+ | case "lava": | ||
+ | BumperCarWithHandling.direction = "lava"; | ||
+ | System.out.println("lava"); | ||
+ | break; | ||
+ | case "hore": | ||
+ | BumperCarWithHandling.direction = "hore"; | ||
+ | System.out.println("hore"); | ||
+ | break; | ||
+ | case "dole": | ||
+ | BumperCarWithHandling.direction = "dole"; | ||
+ | System.out.println("dole"); | ||
+ | break; | ||
+ | case "s": | ||
+ | BumperCarWithHandling.direction = "s"; | ||
+ | System.out.println("stop"); | ||
+ | break; | ||
+ | default: | ||
+ | System.out.println("default"); | ||
+ | break; | ||
+ | } | ||
+ | } | ||
+ | } catch (IOException e) { | ||
+ | // TODO Auto-generated catch block | ||
+ | e.printStackTrace(); | ||
+ | } | ||
+ | |||
+ | } | ||
+ | } | ||
+ | </code> |
Revision as of 13:58, 1 July 2014
Zadanie
V tomto projekte si vytvoríme robota zo stavebnice Lego Mindstorms Ev3, ktorý bude ovládaný pomocou klávesnice PC, bude sa vyhýbať prekážkam a zároveň nebude vychádzať z vyznačeného priestoru.
Príprava
Budeme používať softvér pre Lego Mindstorms Ev3 od spoločnosti leJOS. Na jeho používanie budeme potrebovať nakonfigurovanú micro-SD kartu a vývojové prostredie, ktoré si môžeme nastaviť pomocou nasledujúcich odkazov.
- https://sourceforge.net/p/lejos/wiki/Windows%20Installation/
- https://sourceforge.net/p/lejos/wiki/Installing%20the%20Eclipse%20plugin/
Nakonfigurovanú SD kartu vložíme do SD portu Ev3 kocky a spustíme. Softvér od leJOS-u sa automaticky nahrá z karty a bude sa používať ako náhrada za oficiálny softvér, pokiaľ budeme mať vloženú kartu.
Ďalej budeme potrebovať nadviazané spojenie pomocou Bluetooth. Toto spojenie sa dá jednoducho nadviazať z PC pomocou Bleutooth zariadenia. V Bluetooth Devices si vieme nájsť Ev3 a nadviazať s ním spojenie.
Program
Program bude pozostávať z dvoch základných častí, časť, ktorá bude bežať na robotovi a časť, ktorá bude bežať na PC.
Popíšme si najskôr časť, ktorá bude na robotovi.
Program na robotovi sa skladá z viacerých častí. V prvom rade musíme zabezpečiť komunikáciu medzi robotom a PC. Keďže už máme nadviazané spojenie pomocou Bluetooth stačí nám na robotovi vytvoriť server, ktorý bude počúvať na požiadavky od používateľa, v našom prípade PC. Túto komunikáciu sme umiestnili do samostatného threadu aby robot stále počúval na požiadavky z PC.
class readFromClient extends Thread {
readFromClient() {
}
public void run() { ServerSocket serv; try { serv = new ServerSocket(1111); Socket s = serv.accept(); // Wait for Laptop to connect DataInputStream in = new DataInputStream(s.getInputStream()); while (true) { String read = in.readUTF(); switch (read) { case "prava": BumperCarWithHandling.direction = "prava"; System.out.println("prava"); break; case "lava": BumperCarWithHandling.direction = "lava"; System.out.println("lava"); break; case "hore": BumperCarWithHandling.direction = "hore"; System.out.println("hore"); break; case "dole": BumperCarWithHandling.direction = "dole"; System.out.println("dole"); break; case "s": BumperCarWithHandling.direction = "s"; System.out.println("stop"); break; default: System.out.println("default"); break; } } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); }
}
}