Robot Lego programado em Java

download Robot Lego programado em Java

If you can't read please download the document

Transcript of Robot Lego programado em Java

Robot Lego programado em Java

Projecto da Cadeira IDSCA/MOSS 2010/2011

Joo Alves

Agenda

Introduo

Mindstorm NXT

LeJOS

O Robot

Aplicao Desktop

Programao do NXT

O Robot na prtica

Bibliografia

Introduo

O projecto proposto visou aplicar os conhecimentos apreendidos nas aulas sobre a linguagem de programao Java, ultrapassando todas as limitaes da programao embebida num dispositivo com poucos recursos de hardware

Mindstorm NXT

O Lego Mindstorms NXT um KIT Robot programvel lanado pela Lego no final de Julho de 2006.

Mindstorm NXT (II)

Caracteristicas:micro-controlador ARM7 de 32-bit a 48 Mhz256 KBytes FLASH

64 KBytes RAM

micro-controlador Atmel AVR de 8-bit a 8 MHz4 KBytes FLASH

512 Bytes RAM

Comunicao Wireless Bluetooth (BT Class II V2.0)

Porta USB full-speed (12 Mbit/s)

4 Portas de entrada com cabos de 6 fios

3 Portas de sada com cabos de 6 fios

Display grfico LCD de 100x64 pixel

Coluna 8 kHz de qualidade

Fonte de energia: 6 pilhas AA ou Bateria

leJOS

O leJOS uma pequena JVM - Java Virtual Machine Open Source para o NXT. Destaca-se por oferecer as seguintes funcionalidades:Possibilidade de utilizao da linguagem Java;

Thread em modo Preemptivo;

vectores, incluindo multi-dimensionais;

Recursividade;

Sincronizao;

Excepes;

Tipos bsicos de Java incluindo o float, long e String;

A maior parte das bibliotecas de classes java.lang, java.util e java.io.

LeJOS (II)

Trata-se de um ambiente de programao para o Lego NXT. Consiste em:Firmware alternativo que inclui uma JVM;

Uma biblioteca de classes que implementa a API do leJOS NXJ;

Um linker especial que traduz as Java Classes para o formato binrio aceite pelo NXT;

Ferramentas para instalar o Firmware, enviar aplicaes, fazer debugging e outras funcionalidades de controlo do Brick;

Uma API para o PC para escrever programas que conseguem comunicar com o leJOS NXJ usando Streams de Java em cima de Bluetooth ou USB ou usando o protocolo LCP (Lego Communications Protocol).

O site oficial do software: http://lejos.sourceforge.net/nxj.php

O Robot

Usa:2 Motores

1 Sensor Volumtrico

1 Sensor de Luminosidade

Interface Bluetooth para comunicao

O Robot (II)

A Programao do robot foi toda feita em Java usando o IDE Eclipse.

Foi implementado no robot 4 componentes principais:Um Menu para controlar os parmetros do robot;

Execuo de comandos para o robot (predefinidos 4 tipos);

Persistncia dos parmetros;

Comunicao Bluetooth com o PC.

Aplicao Desktop

Aplicao Desktop (II)

A aplicao Desktop permite estender as funcionalidades do projecto possibilitando tratar e visualizar de forma grfica os dados trocados entre o Brick NXT e o PC. Ao tratar a informao que enviada pelo Brick no PC, torna-se possvel apresentar a mesma de uma forma muito mais atractiva e recorrendo a bibliotecas que no existem ou no fazem sentido no Brick.

Na execuo desta aplicao foram usadas as seguintes funcionalidades:Multi-Threading;

Comunicao cliente/servidor com sockets TCP/IP;

Comunicao Bluetooth;

Suporte de Mltiplos Clientes;

Utilizao da biblioteca grfica SWING.

Programao do NXT

Programao do NXT (II)

public void go() {int b = 0;twowheelrobot.forward();while (! Button.ESCAPE.isPressed()) {distance = getDistanceSensor();updateLCD();if (sensorTouch.isPressed()) {twowheelrobot.stop();b++;if (b > 3)break;}if (distance > minDistance) {twowheelrobot.forward();} else {twowheelrobot.pressHorn();divertRobot();}}twowheelrobot.stop();}

Programao do NXT (III)

private void divertRobot() {twowheelrobot.logMsg("REMARK=DivertingRobot");while (distance < minDistance + MINDISTANCETHRESHOLD &&! Button.ESCAPE.isPressed()) {distance = getDistanceSensor();updateLCD();if (distance < minDistance + MINDISTANCETHRESHOLD) {avoidcol++;int i = randomGenerator.nextInt(50);if (i % 2 == 0)twowheelrobot.backleft();elsetwowheelrobot.backright();twowheelrobot.sleep(i * 10);}}}

O Robot na prtica

Demo

Bibliografia

Juan Antonio Brea Moral, Develop leJOS programs Step by Step , Version 0.6, Abril 2009

Juan Antonio Brea Moral, Multithreading with Java leJOS , Version 0.1, Outubro 2008

Juan Antonio Brea Moral, Bluetooth and leJOS , Version 0.1, Julho 2008

Jason Butka, Installing Lejos on the NXT Mindstorm Using the Eclipse IDE and Introduction to Lejos / Java Programming, Lawrence Technological University , 2008

Zhizhang Shen,A Gentler Introduction to Mindstorm NXT Programming, Dept. of Computer Science and Technology , Plymouth State University , 2009

Jose Solorzano et al , leJOS NXJ: NXJ technology , Disponvel em http://lejos.sourceforge.net/nxj.php

Ferrari, et al, Programming LEGO MINDSTORMSTM with Java, Syngress Publishing , 2002

A.Terstegge , O. Bucker e B. Kuppers, Robotik - Programming of Embedded Systems, University of Applied Sciences , 22-Oct-2010

Kelleher , John, Namee, Brian Mac , Introduction to Programming the Lego NXT Robot with Java, School of Computing, Dublin Institute of Technology

Gerardo Oliveira, Ricardo Silva, Tiago Lira, Luis Paulo Reis , Environment Mapping using the Lego Mindstorms NXT and leJOS NXJ , FEUP LIACC, 2009

Tom Bickford , Simple NXT Robot , Maine Robotics, 2008

Robot Lego programado em Java

Q&A

Joo AlvesE-mail: [email protected]: http://jpralves.net/

Muokkaa otsikon tekstimuotoa napsauttamalla

Muokkaa jsennyksen tekstimuotoa napsauttamallaToinen jsennystasoKolmas jsennystasoNeljs jsennystasoViides jsennystasoKuudes jsennystasoSeitsems jsennystasoKahdeksas jsennystasoYhdekss jsennystaso

Muokkaa otsikon tekstimuotoa napsauttamalla

Muokkaa jsennyksen tekstimuotoa napsauttamallaToinen jsennystasoKolmas jsennystasoNeljs jsennystasoViides jsennystasoKuudes jsennystasoSeitsems jsennystasoKahdeksas jsennystasoYhdekss jsennystaso