Loading presentation...

Present Remotely

Send the link below via email or IM

Copy

Present to your audience

Start remote presentation

  • Invited audience members will follow you as you navigate and present
  • People invited to a presentation do not need a Prezi account
  • This link expires 10 minutes after you close the presentation
  • A maximum of 30 users can follow your presentation
  • Learn more about this feature in our knowledge base article

Do you really want to delete this prezi?

Neither you, nor the coeditors you shared it with will be able to recover it again.

DeleteCancel

Make your likes visible on Facebook?

Connect your Facebook account to Prezi and let your likes appear on your timeline.
You can change this under Settings & Account at any time.

No, thanks

PreziLeJOSNXT

Taller 2 Robotica
by

Alejandro Catalan

on 3 August 2012

Comments (0)

Please log in to add your comment.

Report abuse

Transcript of PreziLeJOSNXT

Taller de Robótica Monitores:
Alejandro Catalán
Nicol González
Prof. Claudio Cubillos Introducción En el taller anterior se trabajó con el Software Mindstorms NTX.

Sin embargo el éxito de la programación de los bricks del NXT ha dado lugar a la implementación de diferentes lenguajes. RobotC Es un lenguaje muy parecido a C.
BricxCC.
NBC (Next Byte Codes).
NXC: similar a C.
pbLua: lenguaje textual.
NXT#: escrito en C# de Microsoft.
LeJOS: es un firmware disponible, incluye la máquina virtual Java. ¿Que es Java?¿que es LeJOS NXJ? Java: Es un lenguaje de programación orientado a objetos, Es multi-plataforma, muy utilizado para desarrollar diversas aplicaciones. LeJOS NXJ es un ambiente de programación Java para el Lego Mindstorms NXT. NOTA: Es necesario instalar el firmware LeJOS
NXJ en el NXT para correr programas Java. Utilizaremos el IDE - Eclipse
Eclipse es una plataforma que permite la creación de interfaces gráficas, y que es completamente compatible con LeJOS. Primeros pasos... .........Para trabajar necesitamos
recordar el concepto de "Algoritmo" Introducción a la
programación en Java El primer programa en Java composición del programa... ¿Que son los Objetos y las Clases? Los Objetos son una instancia de una clase y poseen un estado, comportamientos y una identidad. Por ejemplo la configuración de estos robots Legos son una clase y su estado está determinado por sus sensores y motores Para la creación de nuestros programas, Java posee múltiples herramientas, algunas de estas son las siguientes: Operadores aritméticos:

Son la suma (+)
La resta (-)
La multiplicación (*)
La división (/)

De asignación:
Asignar a (=) Operadores de relación y lógicos:
Mayor (>)
Mayor o igual (>=)
Menor (<)
Menor o igual (<=) Estructuras de Control Ejecución secuencial y no secuencial Bucle while:
while(condicion){
accion1();
accion2();
//…
accionN();
} Sentencia condicional if-else:
if(condicion){
accionC();
}else{
accionNC();
} 1.- debemos crear un proyecto en Eclipse para ello lo abrimos si es que no lo tenemos abierto y en la pantalla principal seleccionamos crear nuevo proyecto. 2.- Luego seleccionamos LeJOS NXT Project. Presionamos siguiente y a continuación le damos un nombre, podemos dejar el que viene por defecto o asignar otro. Presionamos terminar (finish) y el resultado debiera ser el siguiente: 3.- 5.-Al hacer doble clic en HelloWorld.java
se nos abrirá el siguiente archivo. 6.- El área encerrado en el cuadrado rojo esta nuestro método principal MAIN y es donde partirá nuestro programa. Como pueden observar dentro del MAIN se crea un objeto DifferentialPilot con el diámetro y la distancia entre las ruedas: System.out.println(), sirve para mostrar en la pantalla el texto que está dentro del paréntesis y las comillas. 7.- El código tal como está ahora permitirá que el robot muestre en su pantalla el texto: Hola !!
Ahora vamos a subir el código al robot. Primero conectamos el robot al cable USB y lo encendemos. Nos aseguramos que el robot este mostrando el menú principal.
Y dentro del Eclipse seleccionamos la siguiente opción: Ahora que trabajaremos con el primer programa en LeJOS.
Para ello seguiremos los siguientes pasos:
1.- Crear proyecto y clase para crear nuestro programa
2.- Se copiara el código contenido en el archivo de texto, de nombre Ejemplo
3.- Se comentará y descomentará los llamados a los métodos desde el MAIN
4.- Se cargara el programa en el BRICK
5.- Éxito!!! Control de sensores Control del robot Cada sensor tiene su propia clase. cuando se crea el objeto hay que especificar en qué puerto se encuentra conectado.
Los puertos pueden ser:
SensorPort.S1
SensorPort.S2
SensorPort.S3
SensorPort.S4 Sensor de tacto TouchSensor(puerto); isPressed(): Retorna si el sensor de tacto está siendo presionado o no.
true: si está presionado.
false: si no está presionado. Sensor de sonido SoundSensor(puerto); readValue(): Retorna el nivel de sonido en porcentaje. Sensor de luz LightSensor(puerto); readValue(): Retorna el nivel de luz. Sensor de ultrasonido UltrasonicSensor(puerto); getDistance(): Retorna la distancia de un objeto. La clase DifferentialPilot crea un objeto que permite controlar los movimientos del robot, como avanzar, retroceder, doblar, etc.

Los valores que solicita la clase DifferentialPilot son
el diámetro de la rueda,
la distancia entre las ruedas y
la ubicación del motor derecho y del izquierdo.

El objeto DifferentialPilot se crea así:
DifferentialPilot (2.2, 4.5, Motor.B, Motor.C); Métodos para controlar el robot

setMoveSpeed(velocidad): Asigna la velocidad de movimiento del robot.

travel(distancia): Mueve el robot hasta una distancia específica.

rotate(angulo): Rota el robot hasta un ángulo especifico.

steer(radio, angulo, false): Provoca que el robot se mueva de forma circular, hasta que el robot alcance el ángulo dado.

forward(): El robot avanza hacia adelante de forma indefinida hasta que reciba un stop().

backward(): El robot retrocede de forma indefinida hasta que recibe un stop().

stop(): Detiene el movimiento del robot. Métodos para controlar un solo motor

Para controlar un solo motor no se requiere de la clase Differentialpilot si no que uno debe invocar directamente la clase Motor.

Ej:
Motor.A
Motor.B
Motor.C

Y los métodos para controlar cada rueda son:

setSpeed(velocidad): Asigna la velocidad del motor, en grados por segundo.

rotate(angulo): La rueda gira formando un ángulo especificado.

forward(): La rueda gira hacia adelante de forma indefinida hasta que reciba un stop().

backward(): La rueda retrocede de forma indefinida hasta que recibe un stop(). Desafíos... 1. Debe ser preciso.

2. Debe estar definido.

3. Debe ser finito. Desafío 1
Debe lograr que su robot avance durante 4 segundos y luego retroceda 4 segundos.

Desafío 2
Debe lograr que su robot avance 4 segundos, girar en 180º y regresar al punto de partida.

Desafío 3
El robot debe avanzar 4 segundos, girar 90º y retroceder 20 cm.

Desafío 4
El robot debe realizar una trayectoria en forma de cuadrado, de dimensiones 40x40 cm.

Desafío 5
Utilizando el sensor de Sonido, Cuando escuche un sonido debe girar su brazo durante 2 segundos.

Desafío 6
Utilizando el sensor de Tacto, cuando el sensor sea presionado el robot debe dar 2 vueltas en su propio eje.

Desafío 7
Utilizando el sensor de Ultrasonido, si el robot detecta un objeto a 30cm. este debe girar en 90°.

Desafío 8
Utilizando el sensor Infrarrojo, el robot debe avanzar hasta el borde de la mesa sin caerse, y luego detenerse.

Desafío 9
Programar el robot para que se mueva según el nivel de ruido que hay en el ambiente. Si hay silencio (nivel de sonido menor a 10 db) debe avanzar. si el nivel de ruido se encuentra entre 10 db y 90 db, debe retroceder. si el nivel de ruido es superior a 90 db, se detiene y comienza a girar hasta que el ruido baje de 90 db.

Desafío 10
Intente hacer que el robot logre recorrer el circuito demarcado por la línea negra. Representación gráfica de un algoritmo http://prezi.com/edm4qtsa3rx5/prezilejosnxt/
Full transcript