Robot Lego programado em Java

2.376 visualizações

Publicada em

Robot Lego programado em Java

Publicada em: Tecnologia
0 comentários
2 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
2.376
No SlideShare
0
A partir de incorporações
0
Número de incorporações
2
Ações
Compartilhamentos
0
Downloads
60
Comentários
0
Gostaram
2
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Robot Lego programado em Java

  1. 1. Robot Lego programado em Java Projecto da Cadeira IDSCA/MOSS 2010/2011 João Alves <jpralves@gmail.com>
  2. 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. 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. 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. 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. 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. 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. 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. 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.
  10. 10. 12-Jul-2011 João Alves <jpralves@gmail.com> 10 Aplicação Desktop
  11. 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.
  12. 12. 12-Jul-2011 João Alves <jpralves@gmail.com> 12 Programação do NXT
  13. 13. 12-Jul-2011 João Alves <jpralves@gmail.com> 13 Programação 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(); }
  14. 14. 12-Jul-2011 João Alves <jpralves@gmail.com> 14 Programação 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(); else twowheelrobot.backright(); twowheelrobot.sleep(i * 10); } } }
  15. 15. 12-Jul-2011 João Alves <jpralves@gmail.com> 15 O Robot na prática  Demo
  16. 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. 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/

×