SlideShare ist ein Scribd-Unternehmen logo
1 von 17
Robot Lego programado em Java
Projecto da Cadeira IDSCA/MOSS 2010/2011
João Alves <jpralves@gmail.com>
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
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
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.
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
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.
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
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
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.
12-Jul-2011 João Alves <jpralves@gmail.com> 10
Aplicação Desktop
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-Jul-2011 João Alves <jpralves@gmail.com> 12
Programação do NXT
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();
}
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);
}
}
}
12-Jul-2011 João Alves <jpralves@gmail.com> 15
O Robot na prática
 Demo
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
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/

Weitere ähnliche Inhalte

Was ist angesagt?

Oficina de formação: A robótica educativa aplicada às necessidades educativ...
Oficina de formação:  A robótica educativa aplicada  às necessidades educativ...Oficina de formação:  A robótica educativa aplicada  às necessidades educativ...
Oficina de formação: A robótica educativa aplicada às necessidades educativ...Cristina Conchinha
 
Robô seguidor de linha
Robô seguidor de linhaRobô seguidor de linha
Robô seguidor de linhaIsvaldo Souza
 
Técnicas de Prototipação II - LEGO Aula 01
Técnicas de Prototipação II - LEGO Aula 01Técnicas de Prototipação II - LEGO Aula 01
Técnicas de Prototipação II - LEGO Aula 01Tiago Barros
 
Software Livre para Aplicações em Robótica
Software Livre para Aplicações em RobóticaSoftware Livre para Aplicações em Robótica
Software Livre para Aplicações em RobóticaLinux User Goup Alagoas
 
Advanced topics for game developers
Advanced topics for game developersAdvanced topics for game developers
Advanced topics for game developersjuliocoopergames
 
Tutorial de introdução à API da BGE
Tutorial de introdução à API da BGETutorial de introdução à API da BGE
Tutorial de introdução à API da BGESolano
 
C.E.S.A.R - Prototipación Electronica en Diseño
C.E.S.A.R - Prototipación Electronica en DiseñoC.E.S.A.R - Prototipación Electronica en Diseño
C.E.S.A.R - Prototipación Electronica en DiseñoTiago Barros
 
Arduino: Brincando de eletrônica com Python e Hardware Livre
Arduino: Brincando de eletrônica com Python e Hardware LivreArduino: Brincando de eletrônica com Python e Hardware Livre
Arduino: Brincando de eletrônica com Python e Hardware LivreÁlvaro Justen
 
Sistemas Digitais - Aula 06 - Como programar o Arduino
Sistemas Digitais - Aula 06 - Como programar o ArduinoSistemas Digitais - Aula 06 - Como programar o Arduino
Sistemas Digitais - Aula 06 - Como programar o ArduinoSuzana Viana Mota
 
Mini Curso Sistemas Embarcados
Mini Curso Sistemas EmbarcadosMini Curso Sistemas Embarcados
Mini Curso Sistemas EmbarcadosSuzana Viana Mota
 
Compus Party - processing e arduino
Compus Party - processing e arduinoCompus Party - processing e arduino
Compus Party - processing e arduinoCampus Party Brasil
 
Apostila de Introdução aos Algoritmos - usando o Visualg
Apostila de Introdução aos Algoritmos - usando o VisualgApostila de Introdução aos Algoritmos - usando o Visualg
Apostila de Introdução aos Algoritmos - usando o VisualgRegis Magalhães
 
Jugday - Java Básico
Jugday - Java BásicoJugday - Java Básico
Jugday - Java BásicoPaloma Costa
 

Was ist angesagt? (18)

Oficina de formação: A robótica educativa aplicada às necessidades educativ...
Oficina de formação:  A robótica educativa aplicada  às necessidades educativ...Oficina de formação:  A robótica educativa aplicada  às necessidades educativ...
Oficina de formação: A robótica educativa aplicada às necessidades educativ...
 
Robô seguidor de linha
Robô seguidor de linhaRobô seguidor de linha
Robô seguidor de linha
 
Técnicas de Prototipação II - LEGO Aula 01
Técnicas de Prototipação II - LEGO Aula 01Técnicas de Prototipação II - LEGO Aula 01
Técnicas de Prototipação II - LEGO Aula 01
 
Software Livre para Aplicações em Robótica
Software Livre para Aplicações em RobóticaSoftware Livre para Aplicações em Robótica
Software Livre para Aplicações em Robótica
 
Advanced topics for game developers
Advanced topics for game developersAdvanced topics for game developers
Advanced topics for game developers
 
18. arduino
18. arduino18. arduino
18. arduino
 
Tutorial de introdução à API da BGE
Tutorial de introdução à API da BGETutorial de introdução à API da BGE
Tutorial de introdução à API da BGE
 
Processing e Arduino
Processing e ArduinoProcessing e Arduino
Processing e Arduino
 
C.E.S.A.R - Prototipación Electronica en Diseño
C.E.S.A.R - Prototipación Electronica en DiseñoC.E.S.A.R - Prototipación Electronica en Diseño
C.E.S.A.R - Prototipación Electronica en Diseño
 
Arduino: Brincando de eletrônica com Python e Hardware Livre
Arduino: Brincando de eletrônica com Python e Hardware LivreArduino: Brincando de eletrônica com Python e Hardware Livre
Arduino: Brincando de eletrônica com Python e Hardware Livre
 
Java ME - Game API
Java ME - Game APIJava ME - Game API
Java ME - Game API
 
Sistemas Digitais - Aula 06 - Como programar o Arduino
Sistemas Digitais - Aula 06 - Como programar o ArduinoSistemas Digitais - Aula 06 - Como programar o Arduino
Sistemas Digitais - Aula 06 - Como programar o Arduino
 
Mini Curso Sistemas Embarcados
Mini Curso Sistemas EmbarcadosMini Curso Sistemas Embarcados
Mini Curso Sistemas Embarcados
 
Compus Party - processing e arduino
Compus Party - processing e arduinoCompus Party - processing e arduino
Compus Party - processing e arduino
 
Apostila de Introdução aos Algoritmos - usando o Visualg
Apostila de Introdução aos Algoritmos - usando o VisualgApostila de Introdução aos Algoritmos - usando o Visualg
Apostila de Introdução aos Algoritmos - usando o Visualg
 
Engenheirando com
Engenheirando comEngenheirando com
Engenheirando com
 
Jugday - Java Básico
Jugday - Java BásicoJugday - Java Básico
Jugday - Java Básico
 
Criando jogos com o kinect
Criando jogos com o kinectCriando jogos com o kinect
Criando jogos com o kinect
 

Andere mochten auch

Tipos de Trayectorias en Robotica
Tipos de Trayectorias en RoboticaTipos de Trayectorias en Robotica
Tipos de Trayectorias en RoboticaUTM
 
Projeto Final de Computação Gráfica 2012 - FCT/UNESP
Projeto Final de Computação Gráfica 2012 - FCT/UNESPProjeto Final de Computação Gráfica 2012 - FCT/UNESP
Projeto Final de Computação Gráfica 2012 - FCT/UNESPErick Santos
 
O que é Human robot interaction (HRI)
O que é Human robot interaction (HRI)O que é Human robot interaction (HRI)
O que é Human robot interaction (HRI)Golem Company
 
Receitas Robot De Cozinha N 16
Receitas Robot De Cozinha N  16Receitas Robot De Cozinha N  16
Receitas Robot De Cozinha N 16penacozinha
 
Receitas Robot De Cozinha N 15
Receitas Robot De Cozinha N  15Receitas Robot De Cozinha N  15
Receitas Robot De Cozinha N 15penacozinha
 
Receitas Robot De Cozinha N 21
Receitas Robot De Cozinha N  21Receitas Robot De Cozinha N  21
Receitas Robot De Cozinha N 21penacozinha
 
line following robot
line following robotline following robot
line following robotRehnaz Razvi
 
Receitas Robot De Cozinha N 19
Receitas Robot De Cozinha N  19Receitas Robot De Cozinha N  19
Receitas Robot De Cozinha N 19penacozinha
 
Who let the robot out? Qualitativ hochwertige Software durch Continuous Integ...
Who let the robot out? Qualitativ hochwertige Software durch Continuous Integ...Who let the robot out? Qualitativ hochwertige Software durch Continuous Integ...
Who let the robot out? Qualitativ hochwertige Software durch Continuous Integ...Timo Stollenwerk
 
Introductionto robotics a
Introductionto robotics aIntroductionto robotics a
Introductionto robotics aIftekhar Ali
 
Robot programming
Robot programmingRobot programming
Robot programmingGopal Saini
 
Wireless Pick and Place Surveillance Robot
Wireless Pick and Place Surveillance RobotWireless Pick and Place Surveillance Robot
Wireless Pick and Place Surveillance RobotZeenat Saba Khan
 
Obstacle avoidance robot
Obstacle avoidance robotObstacle avoidance robot
Obstacle avoidance robotRahuldey1991
 
Wireless Gesture Controlled Robot (FYP Report)
Wireless Gesture Controlled Robot (FYP Report)Wireless Gesture Controlled Robot (FYP Report)
Wireless Gesture Controlled Robot (FYP Report)Muhammad Ahkam Khan
 
Receitas Robot De Cozinha N 22
Receitas Robot De Cozinha N  22Receitas Robot De Cozinha N  22
Receitas Robot De Cozinha N 22penacozinha
 
I am Robot - E-Publsihing-Strategien auf Smartdevices
I am Robot - E-Publsihing-Strategien auf SmartdevicesI am Robot - E-Publsihing-Strategien auf Smartdevices
I am Robot - E-Publsihing-Strategien auf SmartdevicesBulletproof Media GmbH
 
4 basic cnc programming milling
4 basic cnc programming milling4 basic cnc programming milling
4 basic cnc programming millingMahesh Namdev
 
Big Data in HR, Screening, Robot Hiring – Ersetzen Computer Personaler?
Big Data in HR, Screening, Robot Hiring – Ersetzen Computer Personaler?Big Data in HR, Screening, Robot Hiring – Ersetzen Computer Personaler?
Big Data in HR, Screening, Robot Hiring – Ersetzen Computer Personaler?Barbara Braehmer
 

Andere mochten auch (20)

Tipos de Trayectorias en Robotica
Tipos de Trayectorias en RoboticaTipos de Trayectorias en Robotica
Tipos de Trayectorias en Robotica
 
Robot educador
Robot educadorRobot educador
Robot educador
 
Projeto Final de Computação Gráfica 2012 - FCT/UNESP
Projeto Final de Computação Gráfica 2012 - FCT/UNESPProjeto Final de Computação Gráfica 2012 - FCT/UNESP
Projeto Final de Computação Gráfica 2012 - FCT/UNESP
 
O que é Human robot interaction (HRI)
O que é Human robot interaction (HRI)O que é Human robot interaction (HRI)
O que é Human robot interaction (HRI)
 
Receitas Robot De Cozinha N 16
Receitas Robot De Cozinha N  16Receitas Robot De Cozinha N  16
Receitas Robot De Cozinha N 16
 
Receitas Robot De Cozinha N 15
Receitas Robot De Cozinha N  15Receitas Robot De Cozinha N  15
Receitas Robot De Cozinha N 15
 
Receitas Robot De Cozinha N 21
Receitas Robot De Cozinha N  21Receitas Robot De Cozinha N  21
Receitas Robot De Cozinha N 21
 
line following robot
line following robotline following robot
line following robot
 
Receitas Robot De Cozinha N 19
Receitas Robot De Cozinha N  19Receitas Robot De Cozinha N  19
Receitas Robot De Cozinha N 19
 
Who let the robot out? Qualitativ hochwertige Software durch Continuous Integ...
Who let the robot out? Qualitativ hochwertige Software durch Continuous Integ...Who let the robot out? Qualitativ hochwertige Software durch Continuous Integ...
Who let the robot out? Qualitativ hochwertige Software durch Continuous Integ...
 
Introductionto robotics a
Introductionto robotics aIntroductionto robotics a
Introductionto robotics a
 
Robot programming
Robot programmingRobot programming
Robot programming
 
Wireless Pick and Place Surveillance Robot
Wireless Pick and Place Surveillance RobotWireless Pick and Place Surveillance Robot
Wireless Pick and Place Surveillance Robot
 
Obstacle avoidance robot
Obstacle avoidance robotObstacle avoidance robot
Obstacle avoidance robot
 
Wireless Gesture Controlled Robot (FYP Report)
Wireless Gesture Controlled Robot (FYP Report)Wireless Gesture Controlled Robot (FYP Report)
Wireless Gesture Controlled Robot (FYP Report)
 
Receitas Robot De Cozinha N 22
Receitas Robot De Cozinha N  22Receitas Robot De Cozinha N  22
Receitas Robot De Cozinha N 22
 
I am Robot - E-Publsihing-Strategien auf Smartdevices
I am Robot - E-Publsihing-Strategien auf SmartdevicesI am Robot - E-Publsihing-Strategien auf Smartdevices
I am Robot - E-Publsihing-Strategien auf Smartdevices
 
4 basic cnc programming milling
4 basic cnc programming milling4 basic cnc programming milling
4 basic cnc programming milling
 
Robotics.Ppt
Robotics.PptRobotics.Ppt
Robotics.Ppt
 
Big Data in HR, Screening, Robot Hiring – Ersetzen Computer Personaler?
Big Data in HR, Screening, Robot Hiring – Ersetzen Computer Personaler?Big Data in HR, Screening, Robot Hiring – Ersetzen Computer Personaler?
Big Data in HR, Screening, Robot Hiring – Ersetzen Computer Personaler?
 

Ähnlich wie Robot Lego programado em Java usando LeJOS

Hackeando um SmartBOX (com android) e instalando Linux & JAVA & OpenDevice
Hackeando um SmartBOX (com android) e instalando Linux & JAVA & OpenDeviceHackeando um SmartBOX (com android) e instalando Linux & JAVA & OpenDevice
Hackeando um SmartBOX (com android) e instalando Linux & JAVA & OpenDeviceRicardo Rufino
 
Arquitetura JavaScript Escalável da Netflix
Arquitetura JavaScript Escalável da NetflixArquitetura JavaScript Escalável da Netflix
Arquitetura JavaScript Escalável da NetflixBruno Tavares
 
Desenvolvimento android braga_geek_nights (1)
Desenvolvimento android braga_geek_nights (1)Desenvolvimento android braga_geek_nights (1)
Desenvolvimento android braga_geek_nights (1)muldy
 
Google Web Toolkit
Google Web ToolkitGoogle Web Toolkit
Google Web ToolkitPT.JUG
 
OpenDevice IoT - 2016 (LowLevel)
OpenDevice IoT - 2016 (LowLevel)OpenDevice IoT - 2016 (LowLevel)
OpenDevice IoT - 2016 (LowLevel)Ricardo Rufino
 
ArduinoDay 2015 - OpenDevice
ArduinoDay 2015 -  OpenDeviceArduinoDay 2015 -  OpenDevice
ArduinoDay 2015 - OpenDeviceRicardo Rufino
 
JSF 2.0: Uma Evolução nas Interfaces Web com Java
JSF 2.0: Uma Evolução nas Interfaces Web com JavaJSF 2.0: Uma Evolução nas Interfaces Web com Java
JSF 2.0: Uma Evolução nas Interfaces Web com JavaDr. Spock
 
Python para programadores Ruby
Python para programadores RubyPython para programadores Ruby
Python para programadores RubyEric Hideki
 
Introdução ao java fx e visage
Introdução ao java fx e visageIntrodução ao java fx e visage
Introdução ao java fx e visagejesuinoPower
 
Novidades de Java EE 7
Novidades de Java EE 7Novidades de Java EE 7
Novidades de Java EE 7pt_programar
 
Apresentacao android por Júlio Cesar Bueno Cotta
Apresentacao android por Júlio Cesar Bueno CottaApresentacao android por Júlio Cesar Bueno Cotta
Apresentacao android por Júlio Cesar Bueno CottaGPrimola
 
better faster stronger dagger
better faster stronger daggerbetter faster stronger dagger
better faster stronger daggertdc-globalcode
 
Material da palestra sobre Queue Java na InfoQ - Por Yara Senger
Material da palestra sobre Queue Java na InfoQ - Por Yara SengerMaterial da palestra sobre Queue Java na InfoQ - Por Yara Senger
Material da palestra sobre Queue Java na InfoQ - Por Yara SengerManoel Pimentel Medeiros
 
Adaptando e desenvolvendo jogos para uso com o Microsoft Kinect
Adaptando e desenvolvendo jogos para uso com o Microsoft KinectAdaptando e desenvolvendo jogos para uso com o Microsoft Kinect
Adaptando e desenvolvendo jogos para uso com o Microsoft KinectBruno Campagnolo
 
Implementação de Aplicações Móveis e Jogos com Python - Aula 6
Implementação de Aplicações Móveis e Jogos com Python - Aula 6Implementação de Aplicações Móveis e Jogos com Python - Aula 6
Implementação de Aplicações Móveis e Jogos com Python - Aula 6Flávio Ribeiro
 

Ähnlich wie Robot Lego programado em Java usando LeJOS (20)

Java no linux
Java no linuxJava no linux
Java no linux
 
Kotlin first
Kotlin firstKotlin first
Kotlin first
 
Hackeando um SmartBOX (com android) e instalando Linux & JAVA & OpenDevice
Hackeando um SmartBOX (com android) e instalando Linux & JAVA & OpenDeviceHackeando um SmartBOX (com android) e instalando Linux & JAVA & OpenDevice
Hackeando um SmartBOX (com android) e instalando Linux & JAVA & OpenDevice
 
Arquitetura JavaScript Escalável da Netflix
Arquitetura JavaScript Escalável da NetflixArquitetura JavaScript Escalável da Netflix
Arquitetura JavaScript Escalável da Netflix
 
Desenvolvimento android braga_geek_nights (1)
Desenvolvimento android braga_geek_nights (1)Desenvolvimento android braga_geek_nights (1)
Desenvolvimento android braga_geek_nights (1)
 
Google Web Toolkit
Google Web ToolkitGoogle Web Toolkit
Google Web Toolkit
 
Fisl12
Fisl12Fisl12
Fisl12
 
OpenDevice IoT - 2016 (LowLevel)
OpenDevice IoT - 2016 (LowLevel)OpenDevice IoT - 2016 (LowLevel)
OpenDevice IoT - 2016 (LowLevel)
 
Realidade Aumentada
Realidade AumentadaRealidade Aumentada
Realidade Aumentada
 
ArduinoDay 2015 - OpenDevice
ArduinoDay 2015 -  OpenDeviceArduinoDay 2015 -  OpenDevice
ArduinoDay 2015 - OpenDevice
 
Curso Básico Android - Aula 01
Curso Básico Android - Aula 01Curso Básico Android - Aula 01
Curso Básico Android - Aula 01
 
JSF 2.0: Uma Evolução nas Interfaces Web com Java
JSF 2.0: Uma Evolução nas Interfaces Web com JavaJSF 2.0: Uma Evolução nas Interfaces Web com Java
JSF 2.0: Uma Evolução nas Interfaces Web com Java
 
Python para programadores Ruby
Python para programadores RubyPython para programadores Ruby
Python para programadores Ruby
 
Introdução ao java fx e visage
Introdução ao java fx e visageIntrodução ao java fx e visage
Introdução ao java fx e visage
 
Novidades de Java EE 7
Novidades de Java EE 7Novidades de Java EE 7
Novidades de Java EE 7
 
Apresentacao android por Júlio Cesar Bueno Cotta
Apresentacao android por Júlio Cesar Bueno CottaApresentacao android por Júlio Cesar Bueno Cotta
Apresentacao android por Júlio Cesar Bueno Cotta
 
better faster stronger dagger
better faster stronger daggerbetter faster stronger dagger
better faster stronger dagger
 
Material da palestra sobre Queue Java na InfoQ - Por Yara Senger
Material da palestra sobre Queue Java na InfoQ - Por Yara SengerMaterial da palestra sobre Queue Java na InfoQ - Por Yara Senger
Material da palestra sobre Queue Java na InfoQ - Por Yara Senger
 
Adaptando e desenvolvendo jogos para uso com o Microsoft Kinect
Adaptando e desenvolvendo jogos para uso com o Microsoft KinectAdaptando e desenvolvendo jogos para uso com o Microsoft Kinect
Adaptando e desenvolvendo jogos para uso com o Microsoft Kinect
 
Implementação de Aplicações Móveis e Jogos com Python - Aula 6
Implementação de Aplicações Móveis e Jogos com Python - Aula 6Implementação de Aplicações Móveis e Jogos com Python - Aula 6
Implementação de Aplicações Móveis e Jogos com Python - Aula 6
 

Mehr von Joao Alves

CSEduino @ european maker week
CSEduino @  european maker weekCSEduino @  european maker week
CSEduino @ european maker weekJoao Alves
 
CSEduino presentation at Lisbon Mini Maker Faire
CSEduino presentation at Lisbon Mini Maker FaireCSEduino presentation at Lisbon Mini Maker Faire
CSEduino presentation at Lisbon Mini Maker FaireJoao Alves
 
Stuff harvesting - Gather your electronic components for hobbyist
Stuff harvesting - Gather your electronic components for hobbyistStuff harvesting - Gather your electronic components for hobbyist
Stuff harvesting - Gather your electronic components for hobbyistJoao Alves
 
CSEduino - Build your Arduino from scratch
CSEduino - Build your Arduino from scratchCSEduino - Build your Arduino from scratch
CSEduino - Build your Arduino from scratchJoao Alves
 
OAuth 1.0 vs OAuth 2.0 - Principais diferenças e as razões para a criação de ...
OAuth 1.0 vs OAuth 2.0 - Principais diferenças e as razões para a criação de ...OAuth 1.0 vs OAuth 2.0 - Principais diferenças e as razões para a criação de ...
OAuth 1.0 vs OAuth 2.0 - Principais diferenças e as razões para a criação de ...Joao Alves
 
Jogo em Javascript com HTML5
Jogo em Javascript com HTML5Jogo em Javascript com HTML5
Jogo em Javascript com HTML5Joao Alves
 
NXTTour: An Open Source Robotic System Operated over the Internet
NXTTour: An Open Source Robotic System Operated over the InternetNXTTour: An Open Source Robotic System Operated over the Internet
NXTTour: An Open Source Robotic System Operated over the InternetJoao Alves
 

Mehr von Joao Alves (7)

CSEduino @ european maker week
CSEduino @  european maker weekCSEduino @  european maker week
CSEduino @ european maker week
 
CSEduino presentation at Lisbon Mini Maker Faire
CSEduino presentation at Lisbon Mini Maker FaireCSEduino presentation at Lisbon Mini Maker Faire
CSEduino presentation at Lisbon Mini Maker Faire
 
Stuff harvesting - Gather your electronic components for hobbyist
Stuff harvesting - Gather your electronic components for hobbyistStuff harvesting - Gather your electronic components for hobbyist
Stuff harvesting - Gather your electronic components for hobbyist
 
CSEduino - Build your Arduino from scratch
CSEduino - Build your Arduino from scratchCSEduino - Build your Arduino from scratch
CSEduino - Build your Arduino from scratch
 
OAuth 1.0 vs OAuth 2.0 - Principais diferenças e as razões para a criação de ...
OAuth 1.0 vs OAuth 2.0 - Principais diferenças e as razões para a criação de ...OAuth 1.0 vs OAuth 2.0 - Principais diferenças e as razões para a criação de ...
OAuth 1.0 vs OAuth 2.0 - Principais diferenças e as razões para a criação de ...
 
Jogo em Javascript com HTML5
Jogo em Javascript com HTML5Jogo em Javascript com HTML5
Jogo em Javascript com HTML5
 
NXTTour: An Open Source Robotic System Operated over the Internet
NXTTour: An Open Source Robotic System Operated over the InternetNXTTour: An Open Source Robotic System Operated over the Internet
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.
  • 10. 12-Jul-2011 João Alves <jpralves@gmail.com> 10 Aplicação Desktop
  • 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-Jul-2011 João Alves <jpralves@gmail.com> 12 Programação do NXT
  • 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. 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. 12-Jul-2011 João Alves <jpralves@gmail.com> 15 O Robot na prática  Demo
  • 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/