Este documento apresenta um projeto de um robô Lego programado em Java usando a plataforma LeJOS. O documento discute a programação do robô com sensores e motores usando Java, e também uma aplicação desktop para comunicação Bluetooth com o robô e visualização de dados.
NXTTour: An Open Source Robotic System Operated over the Internet
Robot Lego programado em Java usando LeJOS
1. Robot Lego programado em Java
Projecto da Cadeira IDSCA/MOSS 2010/2011
João Alves <jpralves@gmail.com>
2. 12-Jul-2011 João Alves <jpralves@gmail.com> 2
Agenda
Introdução
Mindstorm NXT
LeJOS
O Robot
Aplicação Desktop
Programação do NXT
O Robot na prática
Bibliografia
3. 12-Jul-2011 João Alves <jpralves@gmail.com> 3
Introdução
O projecto proposto visou aplicar os
conhecimentos apreendidos nas aulas sobre a
linguagem de programação Java,
ultrapassando todas as limitações da
programação embebida num dispositivo com
poucos recursos de hardware
4. 12-Jul-2011 João Alves <jpralves@gmail.com> 4
Mindstorm NXT
O Lego Mindstorms NXT é um KIT Robot
programável lançado pela Lego no final de
Julho de 2006.
5. 12-Jul-2011 João Alves <jpralves@gmail.com> 5
Mindstorm NXT (II)
Caracteristicas:
micro-controlador ARM7 de 32-bit a 48 Mhz
256 KBytes FLASH
64 KBytes RAM
micro-controlador Atmel AVR de 8-bit a 8 MHz
4 KBytes FLASH
512 Bytes RAM
Comunicação 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 saída com cabos de 6 fios
Display gráfico LCD de 100x64 pixel
Coluna – 8 kHz de qualidade
Fonte de energia: 6 pilhas AA ou Bateria
6. 12-Jul-2011 João Alves <jpralves@gmail.com> 6
leJOS
O leJOS é uma pequena JVM - Java Virtual Machine –
Open Source para o NXT. Destaca-se por oferecer as
seguintes funcionalidades:
Possibilidade de utilização da linguagem Java;
Thread em modo Preemptivo;
vectores, incluindo multi-dimensionais;
Recursividade;
Sincronização;
Excepções;
Tipos básicos de Java incluindo o float, long e String;
A maior parte das bibliotecas de classes java.lang, java.util
e java.io.
7. 12-Jul-2011 João Alves <jpralves@gmail.com> 7
LeJOS (II)
Trata-se de um ambiente de programação 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
binário aceite pelo NXT;
Ferramentas para instalar o Firmware, enviar aplicações, 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
8. 12-Jul-2011 João Alves <jpralves@gmail.com> 8
O Robot
Usa:
2 Motores
1 Sensor Volumétrico
1 Sensor de Luminosidade
Interface Bluetooth para
comunicação
9. 12-Jul-2011 João Alves <jpralves@gmail.com> 9
O Robot (II)
A Programação do robot foi toda feita em Java
usando o IDE Eclipse.
Foi implementado no robot 4 componentes
principais:
Um Menu para controlar os parâmetros do robot;
Execução de comandos para o robot (predefinidos
4 tipos);
Persistência dos parâmetros;
Comunicação Bluetooth com o PC.
11. 12-Jul-2011 João Alves <jpralves@gmail.com> 11
Aplicação Desktop (II)
A aplicação Desktop permite estender as funcionalidades do projecto
possibilitando tratar e visualizar de forma gráfica os dados trocados
entre o Brick NXT e o PC. Ao tratar a informação que é enviada pelo
Brick no PC, torna-se possível apresentar a mesma de uma forma
muito mais atractiva e recorrendo a bibliotecas que não existem ou
não fazem sentido no Brick.
Na execução desta aplicação foram usadas as seguintes
funcionalidades:
Multi-Threading;
Comunicação cliente/servidor com sockets TCP/IP;
Comunicação Bluetooth;
Suporte de Múltiplos Clientes;
Utilização da biblioteca gráfica SWING.
16. 12-Jul-2011 João Alves <jpralves@gmail.com> 16
Bibliografia
Juan Antonio Breña Moral, “Develop leJOS programs Step by Step ”, Version 0.6, Abril 2009
Juan Antonio Breña Moral, “Multithreading with Java leJOS ”, Version 0.1, Outubro 2008
Juan Antonio Breña 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 ” , Disponível 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
17. 12-Jul-2011 João Alves <jpralves@gmail.com> 17
Robot Lego programado em Java
Q&A
João Alves
E-mail: jpralves@gmail.com
Web: http://jpralves.net/