martes, 5 de noviembre de 2013

Robótica: Introducción robots serpiente





Existen multitud de proyectos en robótica que han aprovechado las características físicas de las serpientes para desarrollar modelos que combinando la simplicidad para obtener una flexibilidad bastante considerable para desenvolverse por una gran variedad de entornos muy diferentes. 


Estos proyectos han investigado la locomoción de las serpientes en aplicaciones robóticas. La cuestión surge naturalmente de ¿Por qué robots serpiente? Las serpientes biológicas ocupan una gran variedad de huecos o cuevas subterráneas, deambulan por desiertos áridos, por junglas tropicales también son capaces de nadar en ríos y océanos. Abandonar miembros de su cuerpo y desarrollando espinas les han proporcionado una estrategia de supervivencia increíblemente efectiva, permitiendo a las serpientes cazar bajo tierra en tuéneles encerrados, en terreno firme en campos repletos de hierba y arriba en las copas de los arboles, incluso pasándose deslizándose de un árbol al siguiente.



A partir del intento de construir robots que emulen y quizás que igualen las capacidades de sus homólogos biológicos, es posibles que creemos una herramienta muy útil capaz de llevar encima sensores, llevando muestras y haciendo cambios físicos en una amplia variedad de entornos. El diseño del robot envuelve de una generación a la siguiente, incorporando lecciones aprendidas a partir de previos prototipos.

Los requerimientos para los diseños incluidos debían de ser posibles de llevar a cabo, lo que quiere decir que debían llevar encima su propio minicomputador y baterías. Estos diseños estaban controlados por radio, para evitar el problema de la inteligencia artificial y la detección de información del entorno. Los diseños deben ser simples de manejar y dar las órdenes. El gran número de segmentos tiene que ser controlado usando uno o dos joysticks. Las serpientes se les dieron la designación de S1, S2, etc. El principal objetivo es ser capaz de explorar entornos peligrosos y ayudar en la búsqueda y rescate. Una consecuencia esperada es animar a la gente a ver a las serpientes de una nueva forma, apreciando lo que tienen que enseñarnos sobre navegación y el atravesar el mundo.

Modelo de objetos de Documento, DOM

El Document Object Model o DOM es una API empleada para manipular documentos HTML y XML. Cada página web tratada por DOM se convierte un documento definido por una jerarquía de nodos. Más adelante veremos con más detalle cómo manipular el DOM desde JavaScript.

DOM transforma el código XML en una serie de nodos interconectados en forma de árbol. Este árbol generado no solo representa los contenidos del archivo original (mediante los nodos del árbol) sino que también muestra sus relaciones (mediante las ramas del árbol que conectan los nodos).

Aunque en ocasiones DOM se asocia con la programación web y con JavaScript, el API de DOM es independiente de cualquier lenguaje de programación. De hecho, DOM se ha llevado a la mayoría de lenguajes de programación comúnmente empleados.


Arquitectura de una aplicación web bien estructurada

Aún, entre programadores y diseñadores que llevan años construyendo sitios web, son comunes prácticas de desarrollo heredadas de los primeros años de la web. Durante la Guerra de los Browsers, y el auge del software WYSIWYG tipo Dreamweaver o Frontpage, la industria no tenía estándares claros y las tecnologías de desarrollo competían sin control. De esta época todavía subsisten las tablas dentro de tablas, el JavaScript “Internet Explorer Only”, la etiqueta FONT y atributos como bgcolor o border. Todavía se diseñan documentos HTML distintos para el monitor y la impresora, aún cuando el contenido es el mismo.

Pero la web ha cambiado. Los fabricantes de software, los diseñadores y los mismos browsers o navegadores se están dando cuenta de que este caos tecnológico encarece la producción de contenidos para la web hasta hacerse insostenible. Se están definiendo estándares que permiten separar los distintos elementos que componen una página web -un documento- en partes específicas: estructura, presentación, comportamiento.

Cuando hasta hace poco era común encontrar páginas que reunían html, imágenes (los famosos gifs transparentes), textos y JavaScript en una sopa indescifrable de código, ahora se han separado las tareas y madurado lenguajes que permiten al desarrollador aislar los problemas y por tanto las soluciones, minimizando el tiempo invertido en el diseño, producción y mantenimiento del contenido.

Así, un documento bien estructurado para la web consta de al menos tres capas: una capa de estructura en html, una capa de diseño compuesta por hojas de estilo en cascada css, y otra capa de comportamiento escrita en JavaScript.

lunes, 4 de noviembre de 2013

Robótica: Sensores Asimo


El sistema de visión de Asimo esta compuesto de dos cámaras básicas por ojo, localizadas en su cabeza. Asimo utiliza visión estereotípica y algoritmos de visión propietario que le permiten ver, reconocer y evitan correr hacia objetos incluso si su orientación e iluminación no son las mismas que las que hay en la base de datos. Esas cámaras pueden detectar múltiples objetos, determinar la distancia, percibir emociones, percibir caras programadas e incluso interpretar emociones de los brazos. Las características de reconocimiento facial permiten a Asimo saludar a personas familiares.

            Asimo puede reconocer en movimiento a partir de la interpretación de las imágenes capturadas por las cámaras de su cabeza. Puede calcular la distancia a objetos en movimiento y la dirección, que permiten a Asimo seguir a una persona, pararse para dejar pasar a objetos en movimiento o saludarte cuando estas cerca.



            Las cámaras también transmiten al controlador de Asimo lo que este puede ver, de modo que si esta siendo controlado por un PC desde este se puede ver lo que ve.

            Además de las cámaras de su cabeza, Asimo tiene varios sensores que lo ayudan a maniobrar a través de entornos y interactuar con objetos y personas. Los sensores de superficie del suelo le permiten detectar objetos y gente. Los sensores de superficie permiten que detecte objetos y cambios en el suelo. Los sensores ultrasónicos ayudan a que se oriente a partir de la detección objetos de alrededor. Los sensores le permiten a Asimo a resolver discrepancias entre el mapa interno del área reprogramada en su memoria y del entorno actual.

            Asimo tiene incluso sentido del tacto. Los sensores de fuerza que tiene en sus muñecas le permiten juzgar cuanta fuerza utilizar cuando coge una bandeja, soporta un documento o te estrecha la mano. Puede integrar información combinada por sus cámaras y sus sensores de fuerza para moverse de forma sincronizada con una persona mientras le coge la mano. Cuando empuja un carrito, los sensores de fuerza lo ayudan a ajustar la cantidad de fuerza necesaria para empujarla (por ejemplo, puede empujar el carrito con mas fuerza si los sensores detectan una inclinación).




            Otra forma que Asimo tiene de sentir el entorno es a través del uso de tarjeta de comunicación IC. Las tarjetas IC utilizan señales infrarrojas para recibir y transmitir información.  Como ejemplo, si quieres hacer que que Asimo reciba a una persona y lo dirija a un determinado lugar, programarías la tarjeta con la información necesaria a transmitir de modo que tú llevando dicha tarjeta Asimo sabría a que lugar podría llevarte.

Javascript

Conceptos básicos JavaScript

JavaScript es la base del Ajax. Es por ello que tener una buena base de este lenguaje de script proporcionará al programador un mayor control a la hora de desarrollar una aplicación basada en Ajax.

En este tema, realizaremos un breve repaso de la sintaxis y de las características básicas de JavaScript.


Qué es y para qué sirve JavaScript

Se trata de un lenguaje de script que el navegador interpreta una vez lo recibe normalmente incrustado en la página html. En principio fue diseñado para proporcionar dinamismo e interactividad a las páginas html estáticas. Es conveniente hacer hincapié en el hecho de que se trata de un lenguaje interpretado ya que los pedazos de código en JavaScript, en adelante scripts, son ejecutados sin una compilación previa.

JavaScript proporciona a los diseñadores una herramienta de programación. Permite la posibilidad de añadir dinámicamente contenido en la página html, así como gestionar los eventos producidos en esta. También puede ser utilizado para crear cookies, validar datos introducidos por el visitante en un formulario de la página, etc.

Cómo y dónde ubicamos los scripts

Para especificar dentro de una página html una sección con código JavaScript, utilizamos la etiqueta <script>. Estos scripts podemos ubicarlos indistintamente en la cabecera (<head>) del documento o en su cuerpo (<body>). Por ejemplo:


<html>
<head>
<script type="text/JavaScript">
...
</script>
</head>
<body>
<script type="text/JavaScript">
...
</script>
</body>
</html>

La diferencia es que ubicando los scripts en la cabecera de la página nos aseguraremos siempre que estarán disponibles ante posibles eventos, ya que la cabecera es lo primero que se carga de la página html.

Como hemos comentado en el apartado anterior, lo deseable es separar el comportamiento y la estructura de un documento, es decir, el código JavaScript y el código html. Es por ello que no escribiremos los scripts directamente en la página html, sino que los ubicaremos en ficheros separados con extensión .js y los referenciaremos desde la etiqueta <script> mediante el atributo src.

<html>
<head>
<script language="JavaScript" type="text/JavaScript"
       src="unDirectorio/unArchivoJavaScript.js"></script>
</head>

Además podremos incluir código JavaScript en cualquier atributo de una etiqueta html, así como en forma de manejadores de eventos de ciertas etiquetas para poder realizar acciones como respuesta a la ocurrencia de estos eventos.

Un evento es cualquier cosa que puede ocurrir mientras se está ejecutando un programa, y son especialmente importantes en entornos gráficos. Así pues, se produce un evento cuando se mueve el ratón o se pinchan uno o varios de sus botones, cuando el usuario pulsa una tecla, cambia el URL, abre una nueva ventana... y un largo etcétera. De esta forma, nuestra tarea como programadores va a ser, precisamente, el diseñar funciones que se ejecuten cuando alguno de esos eventos ocurra.

He aquí la forma general de introducir los manejadores de eventos:

<ETIQUETA atributo1="valor1" atributo2="valor2" onEnvento1="sentencias JavaScript"
onEvento2="llamada_a_funcion_JavaScript()">

Es decir, para cada etiqueta HTML han de conocerse los eventos que puede "sufrir", y para añadirle una función de respuesta se coloca la partícula on antes del nombre del evento y, a continuación, entre comillas, el conjunto de sentencias en JavaScript que forman la respuesta al evento, o, lo que es más normal, la llamada a la función que recoge dichas sentencias.

Web 2.0


Introducción a la web 2.0

Con el objetivo de contextualizar y comprender la revolución que se está produciendo en la web hoy en día, vamos a realizar un recorrido temporal tanto a través de las tecnologías y herramientas como de la filosofía y uso que se ha hecho en el pasado en Internet; lo que actualmente se está desarrollando y que está desencadenando un cambio en las reglas del juego, así como las expectativas y recelos de cara al futuro.

De la Web 1.0 a la Web 2.0

En este punto vamos a intentar llegar a una definición de lo que significa Web 2.0, realizando un recorrido temporal por los inicios de Internet, es decir, para llegar a saber qué es la Web 2.0 tenemos que entender qué no es Web 2.0. Y no nos centraremos solamente en las cuestiones técnicas, además realizaremos ese viaje también desde el punto de vista del usuario, de los servicios que la Web le ofrece.

Un poco de historia

Hay diferentes teorías sobre el origen de la WWW pero fue Tim Berners-Lee cuando en la década de los 80 se plantea lo que más adelante, sería lo que hoy conocemos como la World Wide Web o Web a secas. A finales de 1990 el considerado como padre de Internet comenzó a aplicar sus ideas creando el primer servidor web en NeXT, el primer navegador web llamado World Wide Web (que también era editor HTML) y la primera página web. Básicamente se trataba de un sistema de hipertexto para compartir información basado en Internet, concebido originalmente para servir como herramienta de comunicación entre los científicos nucleares del CERN (Organización Europea de Investigación Nuclear). 

Ya en septiembre de 1993 lo más excitante del World Wide Web eran su novedad y las inmensas posibilidades de futuro que se le adivinaban. Pero el «universo de información accesible por la red» pregonado por Tim Berners-Lee desde el CERN era aún sólo una promesa. En aquel momento sólo había, en todo el mundo, menos de cien servidores públicos. Los servicios Internet que más se utilizaban eran los sistemas jerárquicos de ficheros como FTP y Gopher, y bases de datos como WAIS y sobre todo desde Universidades o Centros de Investigación.

Existían básicamente dos tipos de navegadores: el original, gráfico, pero sólo para plataformas NeXT, y el navegador en modo de línea, preparado para cualquier plataforma pero muy limitado y muy poco atractivo.

A mediados de ese mismo año el tráfico de la WWW era el 0,1% del total de Internet y a finales este alcanzaba el 1% con más de 500 servidores. Es el comienzo del crecimiento explosivo de la Web. A finales del 94 ya había más de 10.000 servidores y 10 millones de usuarios.