23
Programación Básica con “NQC” Pedro F. Toledo – Patricio Castillo 13/05/2006

Programación Básica con “NQC” Pedro F. Toledo – Patricio Castillo 13/05/2006

Embed Size (px)

Citation preview

Page 1: Programación Básica con “NQC” Pedro F. Toledo – Patricio Castillo 13/05/2006

Programación Básicacon “NQC”

Pedro F. Toledo – Patricio Castillo13/05/2006

Page 2: Programación Básica con “NQC” Pedro F. Toledo – Patricio Castillo 13/05/2006

Objetivos del Curso

Se pretende que los alumnos:• Comprendan el concepto fundamental de robótica y las estructuras de control que implica.• Comprendan los conceptos de Algoritmo y de Lenguaje de Programación.• Adquieran la capacidad de postular un algoritmo.• Dominen la implementación de algoritmos en lenguaje “NQC” aplicado a bloques “RCX 1.0”.• Puedan desarrollar y programar un robot con una función solicitada.

Page 3: Programación Básica con “NQC” Pedro F. Toledo – Patricio Castillo 13/05/2006

Evaluación

• El curso será evaluado con 2 pruebas (pr1 y pr2) de 60 minutos, las pruebas tendrán una ponderación de 40% la primera y 60% la segunda con notas de 0 a 100.

• Se realizara una tercera prueba (pr3) de 60 minutos para aquellos alumnos que por razones justificadas no pudieron dar alguna de las 2 pruebas anteriores.

• Los alumnos deberán completar y entregar informes de cada uno de los 6 laboratorios (l1, l2, l3, l4, l5 y l6), se considerarán obligatorios los cuatro primeros laboratorios, y como opcionales los otros 2. Los seis laboratorios dará lugar a un factor de laboratorio “∂”.

• La nota final (NF) será la multiplicación de la nota de las pruebas multiplicada por el factor de laboratorio ∂, se considerará aprobados a aquellos alumnos con nota igual o superior a 55.

• Si un alumno se encuentra dentro del rango 45-54, se le permitirá dar la prueba recuperativa, en la que el alumno deberá obtener al menos un 70 para poder aprobar, caso en el cual aprobará con 55.

Page 4: Programación Básica con “NQC” Pedro F. Toledo – Patricio Castillo 13/05/2006

Laboratorios

• Está programada la realización de 6 “laboratorios”. Éstos consisten en la una serie de pruebas que se harán a una unidad programable “RCX 1.0”.

• Cada “laboratorio” será realizado en parejas a libre elección.• Cada laboratorio tendrá una “Guía de Laboratorio” en la que se especificará cada uno de los

detalles a realizar en la experiencia.• Para que se considere un laboratorio rendido, cada grupo debe enviar el “Informe de

Laboratorio” que corresponda, en formato “.pdf”, el que será evaluado con una nota de 0 a 100.

Page 5: Programación Básica con “NQC” Pedro F. Toledo – Patricio Castillo 13/05/2006

Fórmula de Nota Final

10

)6241(

110000

65

4500

855

4

)4321(

prprNF

llllll

Page 6: Programación Básica con “NQC” Pedro F. Toledo – Patricio Castillo 13/05/2006

Fundamentos de Robótica con Lego

• Origen de los Lego MindStorms• El RCX como Unidad Fundamental a programar• Capacidades

Page 7: Programación Básica con “NQC” Pedro F. Toledo – Patricio Castillo 13/05/2006

Origen de los Lego Mindstorms

• En 1998 “LEGO Company” lanzó un nuevo producto llamado “LEGOMindstorms Robotic Invention Kit“. Tenía 717 piezas e incluia motores, sensores y un “Ladrillo RCX” que tenía un microprosesador incorporado.

• Realmente la línea de productos fue echa por tres organizaciones: “Resnick and Papert’s Epistemology and Learning research group”, la “LEGO Corporation” y el “MIT Media Laboratory”

• Actualmente se espera el lanzamiento de una nueva versión de RCX llamada NXT, lanzamiento programado para Agosto del 2006.

Page 8: Programación Básica con “NQC” Pedro F. Toledo – Patricio Castillo 13/05/2006

Capacidades

• Procesador 8bit Hitachi H8/3292, 16MHz• SRam, en Chip 16Kb• SRam, externa 512b• Salidas 3 puertos, 9V 500mA• Entradas 3 puertos• Display 1 LCD• Sonido 1 Twiter• Timers 4 Timers de Sistema (8b)• Baterías 6x AA• Transformador 9-12V Solo en versión 1.0• Comunicación Puerto IR (Transmisor - Receptor)

Page 9: Programación Básica con “NQC” Pedro F. Toledo – Patricio Castillo 13/05/2006

Fundamentos de Control

• Lazo Abierto• Lazo Cerrado• Estructura de la línea de control

Page 10: Programación Básica con “NQC” Pedro F. Toledo – Patricio Castillo 13/05/2006

Lazo Abierto

• En control automático, un control de “Lazo Abierto” es aquel tipo de control donde el encargado de ejecutar la acción de control, realiza una serie de acciones para ejectutar la acción de control requerida sin analizar las reacciones efectivas de las acciones que ejecuta.

Page 11: Programación Básica con “NQC” Pedro F. Toledo – Patricio Castillo 13/05/2006

Lazo Cerrado

• En control automático, un control de “Lazo Cerrado”, es aquel tipo de control donde el sistema controlador se “Informa” de los resultados de las acciones que ha tomado, y del medio, para realizar el control. En base a eso, determina sus nuevas acciones para seguir con la taréa de control.

Page 12: Programación Básica con “NQC” Pedro F. Toledo – Patricio Castillo 13/05/2006

Estructura de la línea de control

• Finalmente, analizaremos cada desafío que se nos plantee como un problema de control, como ya hemos analizado, la manera de controlar efectivamente situaciones reales de manera eficiente y correcta es a través de un sistema de “Lazo Cerrado”, por lo que es necesario que dispongamos de sensores que informen a la unidad de proceso de las condiciones reales de la situación, para que esta unidad active de manera correcta y efectiva los actuadores que, a la larga, son los que realizan las taréas físicas y visibles del control.

Page 13: Programación Básica con “NQC” Pedro F. Toledo – Patricio Castillo 13/05/2006

Fundamentos de Programación

• El Algoritmo• El Lenguaje de programación y su función• Tipos de lenguaje

– Estático o Declarativo– Secuencial

• Orientado a Objetos

Page 14: Programación Básica con “NQC” Pedro F. Toledo – Patricio Castillo 13/05/2006

El Algoritmo

• Un “Algoritmo” es un conjunto de tareas que conforman un proceso, por medio del cual se llega a un resultado “Esperado” según la situación.

• Un “Algoritmo” ejemplo es la manera de sumar dos numeros naturales positivos, todo el sistema de reservas, la manera de poner los números, la manera de poner los resultados son parte de una secuencia de tareas mas simples para lograr un resultado mas complejo.

• Por definición, un algoritmo no necesariamente debe ser un conjunto de tareas simples para realizar una mas compleja. Es la cadena de procesos que genera el resultado “Esperado”.

Page 15: Programación Básica con “NQC” Pedro F. Toledo – Patricio Castillo 13/05/2006

El Lenguaje de programación y su función

• El lenguaje de programación es un conjunto de palabras, reglas y normas con las que se puede escribir un algoritmo.

• El lenguaje de programación permite al programador comunicar un algoritmo a una máquina computacional, de tal manera que esta lo pueda realizar.

Page 16: Programación Básica con “NQC” Pedro F. Toledo – Patricio Castillo 13/05/2006

Tipos de lenguaje

• Estático o Declarativo• Secuencial

– Orientado a Objetos

Page 17: Programación Básica con “NQC” Pedro F. Toledo – Patricio Castillo 13/05/2006

Tipos de lenguaje - Estático o Declarativo

• Es un tipo de lenguaje en que todo lo programado se ejecuta simultáneamente sin importar el orden en que esté el código.

• Ejemplo:– Abel– Verilog– Programas de Eprom, Prom, CPLDA, etc.

Page 18: Programación Básica con “NQC” Pedro F. Toledo – Patricio Castillo 13/05/2006

Tipos de lenguaje - Secuencial

• En este tipo de lenguaje los eventos se suceden secuencial mente.• Algunas veces, este tipo de lenguaje permite tener tareas simultaneas, pero aún así, cada

tarea se sigue ejecutando secuencial mente.• Esta es la manera de programar por defecto, de echo los primeros lenguajes de alto nivel

son de este tipo y permiten hacer cosas muy complejas o muy simples.• No es necesaria tener una visión general del lenguaje para comenzar a programar, basta

con las normas y métodos mas importantes.• Dentro de este tipo de lenguaje podemos identificar un grupo específico llamado “Orientado

a Objetos”• Ejemplos:

– C– C++– Pascal– NQC– PHP– Java

Page 19: Programación Básica con “NQC” Pedro F. Toledo – Patricio Castillo 13/05/2006

Tipos de lenguaje - Secuencial

Orientado a Objetos• En este tipo de lenguaje cada valor está asociado a alguna estructura mas amplia, por

ejemplo, si se quiere cambiar la velocidad de un motor no se va directo a la velocidad del motor, se va a motor y dentro de motor se escoge velocidad y ahí se cambia.

• Esta manera de programar permite manejar grandes cantidades de datos asociados a un factor de una manera mas fácil debido al agrupamiento.

• Cada “Objeto” funciona independientemente de su contexto, por lo que no es necesario conocer el comportamiento interno de otro objeto, basta con llamar su función. Esto hace muy eficiente la reutilización de código.

• Ejemplos:– Visual Basic– Java– C++

Page 20: Programación Básica con “NQC” Pedro F. Toledo – Patricio Castillo 13/05/2006

Introducción al lenguaje “NQC”

• ¿Qué es?• ¿Para qué sirve?• Estructura fundamental

Page 21: Programación Básica con “NQC” Pedro F. Toledo – Patricio Castillo 13/05/2006

¿Qué es?

• El lenguaje “NQC” es un lenguaje diseñado por Dave Baum para programar bloques “RCX”.• Su nombre es un acrónimo de “Not Quite C” (No completamente C).• Como su nombre lo indica, es muy parecido al popular lenguaje de programación C, uno de

los primeros lenguajes de programación de alto nivel y herramienta indispensable para cualquier persona que trabaje en computación, de hecho, es el lenguaje que se enseña a los alumnos de primer año de Ing. Civil Electrónica, Telemática e Informática en la UTFSM.

Page 22: Programación Básica con “NQC” Pedro F. Toledo – Patricio Castillo 13/05/2006

¿Para qué sirve?

• Este lenguaje está diseñado para programar bloques “RCX”, de hecho no presenta ninguna utilidad en otro tipo de plataformas diferentes a la del “RCX”.

• Por lo anterior permite programar los bloques “Scout” y “Ciberbob”.• Al programar directamente los “RCX” este lenguaje permite observar muy fácilmente el

comportamiento de los programas ya que es muy simple hacer funcionar actuadores y sensores, situación compleja en la computación tradicional.

Page 23: Programación Básica con “NQC” Pedro F. Toledo – Patricio Castillo 13/05/2006

Estructura fundamental

• Fundamentalmente “NQC” es un lenguaje que agrupa bloques de algoritmos en “Tareas” o “Tasks” que cumplen la función de ser programas independientes en la implementación.

• “NQC” tambien tiene la posibilidad de crear “Funciones” con las cuales se puede obtener el resultado de un proceso complejo con solo dar los datos a procesar y llamar a la función indicada.

• Este lenguaje también permite programar subrutinas, estos son bloques de código que siempre se ejecutan de la misma manera, por lo que es innecesario estar escribiéndolos en cada situación donde son requeridos, estos bloques se “Compilan” de manera independiente y pueden ser llamados desde cualquier parte del código.