Untitled

Anuncio
UNIDAD :
IZTAPALAPA
DIVISIÓN:
CIENCIAS BÀSICAS E INGENIERÌA
GRADO:
LICENCIATURA EN COMPUTACIÓN
TITULO DEL TRABAJO:
“SOFTWARE ROBOT SPIRIT”
INTEGRANTES:
LAUREANO RAMÍREZ JONATHAN
MARTÍNEZ DUARTE EDGAR ANTONIO
QUIROZ FABIÁN JOSÉ LUIS
ASESORA:
ALMA EDITH MARTÍNEZ LICONA
LUGAR Y FECHA DE REALIZACIÓN:
UNIVERSIDAD AUTONOMA METROPOLITANA
SEPTIEMPRE 2004-DICIEMBRE 2004
1
INDÌCE
INTRODUCCIÓN..................................................................................3
OBJETIVOS.........................................................................................6
TEORIA...............................................................................................7
CARACTERISTICAS DE UN SERVLET.................................8
EL PROGRAMA....................................................................................9
LA PAGINA WEB................................................................10
CÓDIGO DE NUESTRA PAGINA.........................................13
LOS SERVLETS..................................................................19
INTERNET..........................................................................22
REQUERIMIENTOS...........................................................................28
REQUERIMIENTOS DE HARDWARE..................................28
MAQUINA SERVIDOR............................................28
MAQUINA CLIENTE...............................................29
REQUERIMIENTOS DE SOFTWARE...................................29
INSTALACIÓN Y CONFIGURACIÓN DE.............................30
2
EL DRIVER USERPORT.
ENTRAR AL SISTEMA.......................................................................31
CONCLUSIONES...............................................................................33
ANEXO A: Los rovers........................................................................34
ANEXO B: BIBLIOGRAFIA y LINK.....................................................38
3
INTRODUCCIÒN
El siguiente proyecto esta inspirado en las sondas Rover que la NASA esta usando para
la exploración Marciana este tipo de sondas tienen como objetivo obtener información
acerca de la configuración física y química de el planeta rojo ya que se piensa que en un
futuro se podría establecer una colonia humana en este planeta.
Este proyecto fue desarrollado por un grupo de trabajo interdisciplinario, en el cual se
encuentran participando estudiantes de la UAM Iztapalapa pertenecientes a las carreras
de Computación y Electrónica, bajo la supervisión de el Profesor David Uzziel López
Illescas.
Al ser un proyecto en el cual se pueden dividir perfectamente las actividades a realizar,
en este reporte solo hablaremos de el trabajo realizado para la construcción del
software de control vía Internet, en los reportes que los compañeros de electrónica
entregaran se podrá obtener información acerca de la configuración física de el robot.
Teniendo como objetivo describir el trabajo realizado para la construcción del software,
hemos organizado el reporte de forma que el lector se empape de los conocimientos
mínimos necesarios, para después de esto sumergirnos en el código y diseño del mismo.
En el anexo A se encuentra una descripción de las sondas Rover.
Figura 1. Ejemplo del uso de sondas Rover
4
El modelo que se desarrollo es una simplificación de la sonda Spirit ya que el robot
original es realmente una maquina increíblemente compleja, esta complejidad radica en
el hecho de que al ser un geólogo mecánico el robot cuenta con una cantidad de
instrumental especializado en la obtención de información de Marte.
El esquema de nuestro modelo se muestra en la Figura 2 siguiente:
Robot.
Algún Usuario.
Internet
Figura 2. Esquema modelo utilizado para el manejo vía remota
Como se nota en el esquema anterior el robot estará conectado a Internet por lo que la
sonda deberá de ser capas controlar este aspecto, los compañeros de electrónica
resolvieron este problema colocando una Computadora portátil (Lap) en el robot la
cual cuente con un medio de conexión inalámbrica a Internet (Una tarjeta PCMCI).
Nuestro trabajo se concentra en realizar las aplicaciones que ven los usuarios
conectados, colocar un servidor en la Lap, programar el software que procese las
peticiones de los usuarios, trasmitir las peticiones a los fierros que forman al robot en
este caso mediante una interfaz con el puerto Paralelo.
5
OBJETIVOS
Los objetivos primordiales de este proyecto son:
Vía una página Web manipular la sonda.
Transmitir el video de la cámara montada en la sonda, vía Internet.
Auque los objetivos son pocos, estos tienen un nivel de complejidad elevado y marcan
un reto para los programadores.
6
TEORIA
Este tipo de programas consta de dos partes una que es un formulario html el cual es el
que ve en el navegador de el usuario y otra que esta residente en el servidor la cual esta
escrita en algún lenguaje de alto nivel (C, C++, PERL, PASCAL, ETC.), la cual se
encarga de procesar los datos que llegan del navegador.
Este tipo de programación es muy utilizada pero presenta algunos inconvenientes como
lo son el hecho de que los lenguajes en los que están hechas las partes residentes en el
servidor no fueron diseñados para el trabajo con la Web, lo cual implica que la
complejidad se eleve, una solución posible es usar algún lenguaje que trabaje con la
Web sin tanto problema por ejemplo JAVA.
El lenguaje de programación JAVA es uno de los mas difundidos en la actualidad y con
un gran uso en el Web por lo que la gente de SUN a creado los servlets, que son a los
servidores lo que los applets (pequeños programas que corremos cuando estamos
conectados a Internet por ejemplo algunos chat´s) a los navegadores (browsers). Se
podría definir un servlet como un programa escrito en Java que se ejecuta en el marco
de un servicio de red, (un servidor http esto es un servidor que despliega las paginas
Web, por ejemplo), y que recibe y responde a las peticiones de uno o más clientes.
Figura 3. Arquitectura cliente-servidor
7
Además, los servlets se benefician de la gran capacidad de Java para ejecutar métodos
en ordenadores remotos, para la seguridad en la información, etc. Se podría decir que
las clases estándar de Java ofrecen resueltos muchos problemas que con otros lenguajes
tiene que resolver el programador.
CARACTERÍSTICAS DE UN SERVLET
Además de las características indicadas anteriormente, los servlets tienen las siguientes
características:
1. Son independientes del servidor utilizado y de su sistema operativo, lo que
quiere decir que a pesar de estar escritos en Java, el servidor puede estar escrito en
cualquier lenguaje de programación, obteniéndose exactamente el mismo resultado que
si lo estuviera en Java.
2. Los servlets pueden llamar a otros servlets, e incluso a métodos concretos de
otros servlets. De esta forma se puede distribuir de forma más eficiente el trabajo a
realizar. Por ejemplo, se podría tener un servlet encargado de la interacción con los
clientes y que llamara a otro servlet para que a su vez se encargara de la comunicación
con una base de datos. De igual forma, los servlets permiten redireccionar peticiones de
servicios a otros servlets (en la misma máquina o en una máquina remota).
3. Los servlets pueden obtener fácilmente información acerca del cliente (la
permitida por el protocolo HTTP), tal como su dirección IP, el puerto que se utiliza en
la llamada, el método utilizado (GET, POST, ...), etc.
4. Al igual que los programas CGI, los servlets permiten la generación dinámica
de código HTML dentro de una propia página HTML. Así, pueden emplearse servlets
para la creación de contadores, banners, etc.
Por estas razones es que en el desarrollo de este proyecto se decidió usar como lenguaje
de programación a JAVA.
8
PROGRAMA (SOFTWARE)
Ya hemos dado la razón por la cual decidimos utilizar JAVA como el lenguaje de
programación y además describimos sobre que norma de programación estamos
trabajando en este caso servlets para explicar como funciona un servlet tendríamos que
usar tal vez como mínimo de 15 a 20 paginas lo cual es demasiado para propósitos de
este reporte, por lo que hemos decidido ir describiendo el diseño de el software Spirit
ala par que una explicación de su código y de la programación de servlets, sin olvidar
que también hay una parte escrita en html.
Como se menciono anteriormente el programa esta basado en el paradigma de
CLIENTE-SERVIDOR el cual consta de tres partes:
1.-Una maquina que por algún medio de transmisión se conecta con otra para
solicitar un servicio (CLIENTE).
2.-Una maquina que esta esperando peticiones de otras maquinas para
resolverlas (SERVIDOR).
3.-Un canal de comunicación entre ambas maquinas (Internet).
Si esta explicación no es muy clara ver la figura 4.
Siguiendo este esquema nuestro programa contara de tres partes:
1. La pagina Web que el usuario vera en su maquina, con la cual ara las
peticiones al servidor.
2. La parte del servlet que se encarga de la comunicación entre las dos
maquinas manejo de Internet.
3. La parte del servlet que realiza las operaciones que solicito el usuario.
Para la programación de todas estas partes se utilizo el ambiente de desarrollo
JBUILDER perteneciente a BORLAND esta decisión se tomo gracias a que es un
ambiente bastante amigable, seguro, poderoso y con alto soporte por parte se su
fabricante (BORLAND), estas son consideraciones muy importantes ya que para
poder integrar todas las partes con algún otro ambiente de desarrollo seria mas difícil.
JBUILDER es una herramienta que engloba a el “compilador”de JAVA (el jdk1.3.1 es
un kit de desarrollo que además contiene otras tantas aplicaciones) , una manejador de
9
archivos html (paginas Web), un visualizador de archivos html, un servidor llamado
Tomcat, etc.
Figura 4. Pantalla de JBUILDER.
LA PAGINA
PAGINA WEB
Las páginas Web son documentos que utilizan hipertexto el cual esta definido en base
a un lenguaje de programación llamado HTML, el html es un conjuntos de tag
(etiquetas), las cuales sirven para dar el formato que nuestra página tiene esto es los
link(ligas), imágenes, texto, formularios.
La forma en que el html trabaja nos impide realizar tareas con una complejidad mayor a
la de desplegar objetos en el navegador por lo que el html cuenta con algunas
herramienta muy importante como lo son la posibilidad de usar scripts los cuales son
pequeños programas escritos en algún lenguaje de scripts (javascript, php, etc.) los
cuales nos permiten realizar algún trabajo, por ejemplo leer la hora de tu sistema y
mostrarla en el navegador, otra es el uso de formularios para enviar información y
recibir una respuesta después de ser procesada por un servidor, estas entre algunas
otras no menos importantes.
10
Una de estas herramientas como lo es el uso de formularios (ver Figura 5) es lo que
nosotros utilizaremos para comunicarnos con el servidor.
Un formulario es un conjunto de elementos que se pueden visualizar en el navegador,
los cuales sirven para capturar datos los cuales serán enviados posteriormente y botones
los cuales sirven de instrumento de control (cuando enviar, borrar los datos, etc.), algo
de teoría acerca de esto se presenta a continuación.
Figura 5. Un formulario muy común.
Veamos el código de este formulario.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<title>formularios- ejemplo 5</title>
<style type="text/css">
table{font-size:8pt;font-family:Verdana;}
td{font-size:8pt;font-family:Verdana;}
</style>
</head>
Codigo correspondiente a los
datos de la pagina y su estilo.
<body bgcolor="#000000" text=#ffffff> }color de fondo de la pagina y de la letra.
<form action="cgi-bin/mailto.cgi" method="post" >}programa en servidor que procesara los datos,
método como envía los datos
11
<table width="450" cellspacing="2" cellpadding="2" border="0">
<th >Por favor, rellena estos datos</th>
<tr>
<td width="180"><b>Nombre:</b></td>
<td width="260"><input type="text" maxlength="15" size="30" name="nombre"></td>}Se dice si es una entrada y
e que tipo, tamaño de la entrada y se le establece un nombre. (Proceso parecido a declarar una variable).
</tr>
<tr>
<td width="180"><b>Apellidos:</b></td>
<td ><input type="text" maxlength="25" size="30" name="apellidos"></td>
</tr>
<tr>
<td width="180"><b>Direción:</b></td>
<td><input type="text" maxlength="35" size="30" name="direccion"></td>
</tr>
<tr>
<td width="180"><b>Código Postal:</b></td>
<td ><input type="text" maxlength="5" size="4" name="direccion"></td>
</tr>
<tr>
<td width="180"><b>Marca tu equipo favorito:</b></td>
<td >
<input type="Radio" name="equipo" value="madrid" checked>Real Madrid
     <input type="Radio" name="equipo" value="atletico">Atlético de Madrid
</tr>
<tr>
<td width="180"><b>Marca tu música favorita:</b></td>
<td >
<input type="checkbox" name="musica" value="rock" checked>Rock
  <input type="checkbox" name="musica" value="pop" checked>Pop
  <input type="checkbox" name="musica" value="heavy">Heavy
  <input type="checkbox" name="musica" value="tecno">Tecno
</td>
</tr>
<tr>
<td width="180"><b>Elige un escritor:</b></td>
<td >
<select style="width:100px;">
<option value="Cervantes">Cervantes
<option value="Reverte">Reverte
<option value="Asimov">Asimov
</select>
</td>
</tr>
<tr>
<td width="180" valign="top"><b>?Algún comentario?</b></td>
<td>
<textarea name="comentario" cols="20" rows="10">
</textarea>
</td>
</tr>
<tr>
<td width="180" align="right"><input type="submit" value="enviar"></b></td>
12
<td align="left"><input type="reset" value="borrar"></td>
</tr>
</table>
</form>
</font>
</body>
</html>
Como se observa solo se comento parte de el código ya que es el mas importante y una
de esas partes es la etiqueta (tag), form (form action="cgi-bin/mailto.cgi"
method="post" >), la cual indica que se esta iniciando un formulario dice quien va
atender los datos y con que método los va a recoger o recibir.
CÓDIGO DE NUESTRA PÁGINA
La página que se muestra al usuario es de la siguiente forma:
Figura 6 Vistazo de la Página final.
Y esta basada en el envió de información tipo formulario aunque la información no es
capturadle en alguna caja de texto sino que cada botón manda un dato predeterminado.
13
La pagina esta formada por los siguientes archivos:
Figura 7 Archivos que forman ala pagina final.
Como se observa el numero de archivos que la compone es bastante abundante en
numero pero no en tamaño es por el hecho de que después de enviar un dato al
servidor este da una respuesta lo que implica dar un refresco a la pagina, pensemos los
datos viajan por Internet desde el servidor a nuestra maquina si se refresca (actualiza), la
pagina entonces todos los datos que componen a la pagina tienen que ir de el servidor a
tu navegador, pero si en lugar de refrescar toda la pagina solo refrescamos a el botón
que envió el dato solo tendremos la necesidad de mover de el servidor al navegador
pocos datos por lo tanto cada botón es una pagina, por eso de el gran numero de
paginas.
14
Veamos el código de un botón:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Hola</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
Datos pagina
<body>
<form action="/servletwebapp/camaraarriba" method="post"> } Se indica quien procesa el
dato enviado.
<div align="center">
<input type="image" SRC="images/flecha_arr.gif" WIDTH=30 HEIGHT=30
BORDER=0 ALT="Arriba">
</div>
Se muestra un
botón con forma
de la imagen
flecha_arr.gif
</form>
</body>
</html>
Como se habrán dado cuenta es igual que un formulario con una sola variable.
Algo que si nos complico la vida fue hacer un buen diseño el cual al final hicimos
con Dreamweaver MX 2004 por ejemplo algo que nos facilito fue la pagina principal este
código nos genero:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"
"http://www.w3.org/TR/html4/frameset.dtd">
<html>
<head >
<title>Robot Spirit</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" >
</head>
<frameset rows="10%,*" frameborder="no" border="0" framespacing="0">
<frameset rows="*" cols="80%,192" framespacing="0" frameborder="NO" border="0">
<frameset rows="*" cols="200,*" framespacing="0" frameborder="NO" border="0">
<frame src="StopIzquierda.html" name="leftFrame2" scrolling="NO" noresize>
<frame src="Titulo.html" name="topFrame" scrolling="NO" noresize>
</frameset>
<frame src="StopDerecha.html" name="rightFrame2" scrolling="NO" noresize>
</frameset>
<frameset cols="20%,*" frameborder="no" border="0" framespacing="0">
<frameset rows="33,*" frameborder="no" border="0" framespacing="0">
<frame src="TitleMovRobot.html" name="topFrame1" scrolling="NO" noresize>
<frameset rows="40,*" frameborder="no" border="0" framespacing="0">
<frame src="BtnArriba.html" name="topFrame2" scrolling="NO" noresize>
<frameset rows="40,*" frameborder="no" border="0" framespacing="0">
15
<frameset rows="*" cols="100,100" framespacing="0" frameborder="no" border="0">
<frame src="BtnIzq.html" name="topFrame3" scrolling="NO" noresize>
<frame src="BtnDerecho.html" name="rightFrame" scrolling="NO" noresize>
</frameset>
<frameset rows="60,*" frameborder="NO" border="0" framespacing="0">
<frame src="BtnAbajo.html" name="topFrame4" scrolling="NO" noresize>
<frameset rows="33,*" frameborder="NO" border="0" framespacing="0">
<frame src="titleMovCamara.htm" name="topFrame5" scrolling="NO" noresize>
<frameset rows="40,*" frameborder="NO" border="0" framespacing="0">
<frame src="BtnArribaP.html" name="topFrame6" scrolling="NO" noresize>
<frameset rows="40,*" frameborder="NO" border="0" framespacing="0">
<frameset rows="*" cols="100,*" framespacing="0" frameborder="NO" border="0">
<frame src="BtnIzqP.html" name="leftFrame1" scrolling="NO" noresize>
<frame src="BtnDerechoP.html" name="topFrame7" scrolling="NO" noresize>
</frameset>
<frameset rows="60,*" frameborder="NO" border="0" framespacing="0">
<frame src="BtnAbajoP.html" name="topFrame8" scrolling="NO" noresize>
<frameset rows="33,*" frameborder="NO" border="0" framespacing="0">
<frame src="titleMovCam.html" name="topFrame9" scrolling="NO" noresize>
<frameset rows="80,*" frameborder="NO" border="0" framespacing="0">
<frame src="BtnArribaC.html" name="leftFrame" scrolling="NO" noresize>
<frame src="BtnAbajoC.html" scrolling="NO" noresize></frameset>
</frameset>
</frameset>
</frameset>
</frameset>
</frameset>
</frameset>
</frameset>
</frameset>
</frameset>
<frameset rows="*" cols="80%,191" framespacing="0" frameborder="no" border="0">
<frameset rows="200,80" frameborder="yes" border="0" framespacing="0">
<frame src="Cuerpo.html" name="mainFrame">
<frame src="PiedePage.html" name="bottomFrame" scrolling="NO" noresize>
</frameset>
<frameset rows="33,*" frameborder="no" border="0" framespacing="0">
<frame src="titleMovBrazo.html" name="topFrame10" scrolling="NO" noresize>
<frameset rows="80,*" frameborder="NO" border="0" framespacing="0">
<frame src="BtnArribaH.html" name="topFrame11" scrolling="NO" noresize>
<frameset rows="60,*" frameborder="NO" border="0" framespacing="0">
<frame src="BtnAbajoH.html" name="topFrame12" scrolling="NO" noresize>
<frameset rows="33,*" frameborder="NO" border="0" framespacing="0">
<frame src="titleMovCodo.html" name="topFrame13" scrolling="NO" noresize>
<frameset rows="80,*" frameborder="NO" border="0" framespacing="0">
<frame src="BtnArribaCodo.html" name="topFrame14" scrolling="NO" noresize>
<frameset rows="60,*" frameborder="NO" border="0" framespacing="0">
<frame src="BtnAbajoCodo.html" name="topFrame15" scrolling="NO" noresize>
<frameset rows="33,*" frameborder="NO" border="0" framespacing="0">
<frame src="titleMovMano.html" name="topFrame16" scrolling="NO" noresize>
<frameset rows="80,*" frameborder="NO" border="0" framespacing="0">
<frame src="BtnArribaM.html" name="topFrame17" scrolling="NO" noresize>
<frame src="BtnAbajoM.html" name="rightFrame1" scrolling="NO" noresize>
</frameset>
</frameset>
16
</frameset>
</frameset>
</frameset>
</frameset>
</frameset>
</frameset>
</frameset>
</frameset>
</frameset>
<noframes><body>
</body></noframes>
</html>
Una cosa que se nos ocurrió en el transcurso de la programación fue realizar una
pequeña validación de usuario con la cual podemos impedir que usuarios no
autorizados manipulen el robot, la validación se da al entrar a la página si el usuario no
da una contraseña y login valido no lo dejamos acceder.
Figura 8 Solicitud de autentificación.
Su código es:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Autentificacion de Usuario</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<blockquote> 
</blockquote>
<blockquote> 
</blockquote>
<div align="center"></div>
<div align="center"></div>
<div align="center">
<table width="53%" height="280" border="0">
<tr>
17
<form action="/servletwebapp/autentificacion" method="post">
<th bgcolor="#CCCCFF" scope="col"><div align="center">
<p align="center">Login
<input name="Login" type="text" id="Login">
</p>
<p align="center">Password
<input name="Password" type="password" id="Contraseña" size="15">
</p>
<p> </p>
<p>
<input type="submit" name="Enviar" value="Enviar">
<input type="reset" name="Limpiar" value="Limpiar">
</p>
<p>  </p>
</div></th>
</form>
</tr>
</table>
</div>
</body>
</html>
Si el usuario no se logra identificar se lanza la siguiente pagina:
Figura 9 Pagina de respuesta a una autentificación fallida.
Como se observo cada botón es una pagina la cual es a su vez un formulario el cual
solicita un servlet así que ahora veamos los servlets.
18
LOS SERVLETS
Para no hacer muy tediosa la explicación del código de los servlets primero vamos a
mostrar una disección de uno de tantos servlets programados, para después profundizar
en algunos aspectos del mismo.
package robotspirit;}Paquete al que pertenece esto sirve para fijar algunos permisos de acceso.
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;
APIS que se utilizan (Como los include de C para cargar la librerías).
Hereda de la siguiente clase (HttpServlet).
public class ManoAbajo extends HttpServlet { }Crea una clase e nombre ManoAbajo.
private static final String CONTENT_TYPE = "text/html";}Tipo de texto MIME
//Initialize global variables
public void init() throws ServletException {
}
// Los servlet manejan las peticiones de los clientes por medio de su método service que a su vez las de lega
a //los métodos doGet y doPost.
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException,
IOException {
String userName8 = request.getParameter("UserName8");
if (userName8 == null) {
userName8 = "";
}
}
//Process the HTTP Post request
/* Los métodos de la clase HttpServlet que manejan peticiones de cliente toman dos argumentos.
1.
2.
Un objeto HttpServletRequest, que encapsula los datos desde el cliente.
Un objeto HttpServletResponse, que encapsula la respuesta hacia el cliente. */
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String userName8 = request.getParameter("UserName8"); // Obtiene el valor de la variable UserName8
cNComunicacionPuerto avance = new cNComunicacionPuerto(0x0C);// Llama al clase que se encarga de
//escribir en el puerto paralelo para que el robot se mueva.
if (userName8 == null) {
userName8 = "";
}
19
// Creamos la pagina de respuesta a la petición de el usuario en este caso una pagina idéntica al de solicitud.
response.setContentType(CONTENT_TYPE);
PrintWriter out = response.getWriter();
out.println("<HTML><HEAD><TITLE>");
//out.println(title);
out.println("</TITLE></HEAD><body bgcolor= "+"#ffffff" +">");
out.println("<form action=" + "\"" +"/servletwebapp/manoabajo" + "\"" +"method ="+ "\""
+"post"+"\""+">");
out.println("<div align="+ "\"" + "center"+"\"" +">");
out.println("<input type=" + "\"" + "image" + "\"" + "SRC=" + "\"" + "images/flecha_ab.GIF" + "\"" +
" WIDTH=30 HEIGHT=30 BORDER=0 ALT=" + "\"" + "Abajo" + "\"" + ">");
out.println("</div>");
out.println("</form>");
out.println("</body>");
out.println("</html>");
out.close();
}
}
//Clean up resources
public void destroy() {
}
Algo que se nota en el código anterior es que el método doPost es el mas expenso y es
que realiza el trabajo, esto es porque para manejar peticiones HTTP en un servlet,
extendemos la clase HttpServlet y sobrescribimos los métodos del servlet que manejan
las peticiones HTTP que queremos soportar en este caso doPost.
Tambien se observo que existen métodos vacíos como lo son INIT y DESTROY
esto se debe a lo siguiente, los Servlets tienen un Ciclo de vida el cual se explica a
continuación:
Cada servlet tiene el mismo ciclo de vida.
•
•
•
Un servidor carga e inicializa el servlet.
El servlet maneja cero o más peticiones de cliente.
El servidor elimina el servlet. (Algunos servidores sólo cumplen este paso
cuando se desconectan).
INICIALIZAR UN SERVLET
Cuando un servidor carga el un servlet, ejecuta el método init del servlet. La
inicialización se completa antes de manejar peticiones de clientes y antes de que el
servlet sea destruido.
Aunque muchos servlets se ejecutan en servidores multi-thread, los servlets no tienen
problemas de concurrencia durante su inicialización. El servidor llama sólo una vez al
20
método init, cuando carga el servlet, y no lo llamará de nuevo a menos que vuelva a
recargar el servlet. El servidor no puede recargar un servlet sin primero haber destruido
el servlet llamando al método destroy.
INTERACTUAR CON CLIENTES
Después de la inicialización, el servlet puede manejar peticiones de clientes. Esta parte
del ciclo de vida de un servlet se puede ver como el manejo de las peticiones doPost.
DESTRUIR UN SERVLET
Los servlets se ejecutan hasta que el servidor los destruye, por ejemplo, a petición del
administrador del sistema. Cuando un servidor destruye un servlet, ejecuta el método
destroy del propio servlet. Este método sólo se ejecuta una vez. El servidor no
ejecutará de nuevo el servlet, hasta haberlo cargado e inicializado de nuevo.
Figura 10 Esquema de vida de un servlet.
Las URLs de los servlets pueden utilizarse en etiquetas HTML, donde se podría
encontrar una URL de un script CGI-bin o una URL de fichero. En este caso como se
explicó en la parte de la página Web esta URL se coloco en el tag form.
Como se observo el código de este servlet no es muy complejo es el que se repite en
todos los demás siendo el servlet de autentificación el único que difiere por el hecho de
que su función es distinta pero el principio es el mismo.
Algo que falta de explicar el la clase cNComunicacionPuerto la cual es utilizada para
transmitir las ordenes recibidas de Internet a través de la interfaz conectada al puerto
paralelo. El código de est5a clase es el siguiente:
21
package robotspirit;
import parport.ParallelPort;
public class cNComunicacionPuerto {
public cNComunicacionPuerto(int x) {//Constructor de la clase con un parámetro.
write(x);// llama a su unico método(sin contar al constructor).
}
public void write(int x) {
ParallelPort lpt1 = new ParallelPort(0x378); /* 0x378 es generalmente la dirección de
LPT1 y con ella generamos una variable o clase mejor dicho de tipo ParallelPort la cual
esta en el API parport la cual nos facilita la escritura en puerto.*/
lpt1.write(x);/*Llamamos a un método de la clase lpt1 el cual tiene como función escribir
en puerto.*/
System.out.println("Salida en el puerto: " + x);/*Despliega en la consola el valor que
escribe en puerto.
}
}
El código de esta clase es muy simple gracias al uso de la API parport, esta API esta
diseñada en JAVA usando la modalidad de código nativo JNI. Esta API esta disponible en
Internet en el siguiente link http://www.geocities.com/Juanga69/parport/ y es propiedad de
su autor.
INTERNET
Como se menciono este proyecto usa el Internet para comunicarse por lo que nos
vemos en la necesidad de usar un servidor Web en este caso estamos usando el servidor
TOMCAT que viene en el JBUILDER y que además al estar escrito en JAVA nos da
un rendimiento mucho mejor este servidor es parte de un proyecto llamado JAKARTA
de el cual se puede obtener mas info0rmacion en Internet.
Para que el servidor funcione necesitamos montarlo, lo que se traduce en ponerlo a
trabajar, esto es en espera de solicitudes de los usuarios para resolverlas, en este caso
nuestro servidor estará dedicado a resolver las peticiones de la página de control de la
sonda Spirit.
Para que el servidor de un buen funcionamiento deba tener acceso a Internet
(obviamente!), tener una dirección IP fija, y estar escuchando un puerto.
22
El acceso a Internet se da por una conexión inalámbrica lo cual nos permite librarnos
de los cables la infraestructura necesaria para este fin es tentativamente un acces point y
una tarjeta pcmcia.
La necesidad de una dirección IP se entenderá si primero explicamos que es una
dirección IP.
Todo ordenador en Internet y toda persona que use Internet tiene su propia dirección
electrónica (IP address). Todas estas direcciones siguen un mismo formato. Para la
Universidad Autónoma Metropolitana su dirección es www.uam.mx donde uam es el
identificador ID o nombre de usuario que la Universidad Autónoma Metropolitana
utiliza para conectarse a la red.
Es así como el ordenador le conoce. La parte de la dirección que sigue al punto después
de uam identifica el dominio al que pertenece en este caso es un dominio geográfico
(mx) el cual se refiere a México.
Nunca hay espacios en blanco en una dirección de Internet. El nombre del servidor o
IP address está dividido en este caso en tres campos que se leen de derecha a izquierda.
El primer campo por la derecha es el identificador del país o, en el caso de EEUU, del
tipo de institución. Entre los posibles valores de este campo se pueden encontrar los
siguientes (utilizados como se ha dicho en Estados Unidos): com (organizaciones y
empresas comerciales), gov (gobierno), int (organización internacional), mil (militar),
net(organización de redes) y org (organizaciones sin ánimo de lucro). Fuera de Estados
Unidos el campo de la derecha se refiere al estado o país al que pertenece el servidor,
como por ejemplo:
mx:México
at: Austria au: Australia
ca: Canadá ch: Suiza
de: Alemania dk: Dinamarca
es: España fi: Finlandia
fr: Francia gr: Grecia
jp: Japón uk: Reino Unido
En realidad los ordenadores no se identifican mediante un nombre, sino mediante un
número: el llamado número o dirección IP, que es lo que el ordenador realmente
entiende. Los nombres son para facilitar la tarea a los usuarios, ya que son más fáciles
de recordar y de relacionar con la institución. Por ejemplo el número que corresponde
al servidor venturedark.no-ip.info es 200.65.18.1 . Es evidente que es más fácil recordar
el nombre que la dirección IP. En Internet existen unos servidores especiales, llamados
servidores de nombres o de direcciones, que mantienen unas tablas mediante las que se
puede determinar la dirección IP a partir del nombre.
Así pues, ¿qué es exactamente un URL? Pues podría concebirse como la extensión del
concepto de nombre completo de un archivo (path). Mediante un URL no sólo puede
23
apuntarse a un archivo en un directorio en un disco local, sino que además tal archivo y
tal directorio pueden estar localizados de hecho en cualquier ordenador de la red, con el
mismo o con distinto sistema operativo. Las URLs posibilitan el direccionamiento de
personas, ficheros y de una gran variedad de información, disponible según los distintos
protocolos o servicios de Internet. El protocolo más conocido es el HTTP, pero FTP y
las direcciones de e-mail también pueden ser referidas con un URL. En definitiva, un
URL es como la dirección completa de un determinado servicio: proporciona todos los
datos necesarios para localizar el recurso o la información deseada.
En resumen, un URL es una manera conveniente y fácil de referirse a un archivo o a
cualquier otro recurso electrónico
La sintaxis genérica de los URLs es la que se muestra a continuación:
método://servidor.dominio/ruta-completa-del-fichero donde método es una de las
palabras que describen el servicio: http, ftp, news,…, etc.
Enseguida se verá la sintaxis específica de cada método, pero antes conviene añadir
unas breves observaciones: En ocasiones el URL empleado tiene una sintaxis como la
mostrada, pero acabada con una barra (/). Esto quiere decir que no se apunta a un
archivo, sino a un directorio. Según como esté configurado, el servidor devolverá el
índice por defecto de ese directorio (un listado de archivos y subdirectorios de ese
directorio para poder acceder al que se desee), un archivo por defecto que el servidor
busca automáticamente en el directorio (de ordinario llamado Index.htm o Index.html)
o quizás impida el acceso si no se conoce exactamente el nombre del fichero al que se
quiere acceder (como medida de seguridad).
¿Cómo presentar un URL a otros usuarios? Se suele recomendar hacerlo de la siguiente
manera: <URL: método://ordenador.dominio/ruta-completa-del-fichero>
para distinguir así los URLs de los URIs (Uniform Resource Identification), que
representan un concepto similar pero no idéntico.
URLS DEL PROTOCOLO HTTP
HTTP
Como ya se ha dicho, HTTP es el protocolo específicamente diseñado para la World
Wide Web. Su sintaxis es la siguiente: http://<host>:<puerto>/<ruta> donde host es
la dirección del servidor WWW, el puerto indica a través de que "entrada" el servidor
atiende los requerimientos HTTP (puede ser omitido, en cuyo caso se utiliza el valor
por defecto, 80), y la ruta indica al servidor el path del fichero que se desea cargar (el
path es relativo a un directorio raíz indicado en el servidor HTTP).
Así, por ejemplo, http://www.msn.com/index/prev/welcome.htm accede a la Web de
Microsoft Network, en concreto al archivo welcome.htm (cuya ruta de acceso es
index/prev).
24
Como se explica en los párrafos anteriores las direcciones IP son los enlaces a nuestros
recursos y como se explico si es difícil memorizar una dirección imaginen que la
dirección a la que nos queremos conectar cambia al menos cada 12 horas esto hace
imposible que alguien se pueda conectar a ese recurso un ejemplo es el siguiente:
Tomando el IP de mi maquina en este momento el cual es, 200.65.18.1 les pido que se
conecten al estar conectados a mi pagina encuentran muchas cosas que le son de
utilidad y la desean descargar pero en ese instante no pueden, lo posponen para
después, imaginemos que se conectan al día siguiente pero o sorpresa la dirección IP
200.65.18.1 ya no existe y se preguntan que paso.
En el ejemplo anterior lo que paso es que mi dirección IP es dinámica lo cual implica
que se modifica, cambia o altera cada cierto tiempo lo cual hace difícil saber su valor a
cada momento, una posible solución es comprar una dirección IP fija la cual no altera
su valor nunca lo cual hace que nuestros recursos estén siempre a la mano.
Ya habiendo introducido los términos dirección IP y URL podemos decir la forma que
tendrá la dirección de acceso de nuestros recursos.
Ubicación de los servlet´s en el servidor.
http://nombre-de-máquina:puerto/servlet/nombre-servlet
Servlet a utilizar.
Como se puede observar la dirección se puede fragmenta en tres partes nombre-demáquina:puerto, ubicación de los servlets en el servidor y el nombre servlet a utilizar.
La parte de nombre-de-máquina:puerto aun se puede dividir en dos partes nombre-demáquina y puerto, ya realizada la explicación de el nombre-de-maquina (dirección IP),
nos resta explicar la parte de el puerto en esta sección de la dirección lo que especifica
es un punto de contacto con el Internet una canal de comunicación, esto es una zona
donde se plantara un escucha cuya misión es oír todas la peticiones dirigidas a el
mandarlas a donde debe y regresar la respuesta.
Ejemplos. Existen distintos puerto en una maquina los cuales tienen como misión
escuchar peticiones especificas :
25
Tipo de Solicitud.
Html
Ftp
Telnet
Puerto.
8080
21
23
Las demás partes del código se explican solas.
EL SERVIDOR
Como servidor para el proyecto montaremos el TOMCAT 4.0 con el cual hemos
estado trabajando ya que esta incluido en el JBUILDER así que para ponerlo a trabajar
tenemos que correr el JBUIEDER y abrir el proyecto y dar run.
EL VIDEO
Si recuerdan uno de los objetivos de este proyecto es trasmitir video por la Web para
poder saber donde y que pasa con el robot, este problema nos llevo días resolverlo y los
resultados no eran como para pavonearse de ellos así que en el afán de llegar a una
mejor solución y después de días de estudio y platicas con nuestro asesor llegamos a
una conclusión la cual era que la trasmisión de el video dependía demasiado de la
cámara que se utilizara y el tipo de programación que se realizara con ella así que la
solución perfecta fue comprar una cámara IP.
Una cámara IP, es una cámara la cual cuenta con una dirección IP fija la cual la
identifica en Internet esta propiedad nos permite tener una cámara que se muestra a el
mundo como un recurso mas el cual no necesita de una gran cantidad de código
diseñado y programado por nosotros para funcionar,
El principio de esta cámara es que tu la colocas donde desees y por medio de una
pagina Web que enlaces a su dirección IP puedas ver el video que ella trasmite.
Las necesidades que esta cámara tiene son tener acceso a Internet para poder transmitir
su información y una fuente de alimentación, así que como ven sus requerimientos son
mínimos y su utilidad es excelente para los propósitos del proyecto.
26
El video que esta cámara transmita será enlazado en la parte central de nuestra pagina.
En este sitio.
Figura 11 Vista del la pagina que controla el robot
27
REQUERIMIENTOS
REQUERIMIENTOS
REQUERIMIENTOS DE HARDWARE.
El sistema Robot Espirit es un sistema que trabaja bajo el esquema Cliente/Servidor
(alguien requiere un servicio y la solicita a quien lo proporciona/espera peticiones de
servicio y los cubre), por lo cual esta compuesto por dos partes una que se ejecuta en
un servidor y otra que se ejecuta en la maquina cliente en este caso la maquina de
cualquier persona conectada vía internet con la maquina servidor.
Como una la aplicación corre en “dos maquinas a la vez” (servidor y la maquina del
cliente), se tienen requerimientos diferentes para cada maquina los cuales listamos a
continuación.
Maquina Servidor.
Maquina servidor es una laptop ligera para poder estar montada en el robot con las
siguientes características:
Un puerto paralelo.
Una tarjeta PCMCIA.
Mínimo 256 Mbs. de memoria RAM.
Un procesador de al menos 1.2 Gbs. (preferente que
sea superior).
Un puerto USB para conectar la cámara.
El puerto paralelo se requiere ya que la interfaz de la Maquina servidor con los motores
de el robot se dará conectando un driver en este.
La tarjeta PCMCIA se requiere para el acceso a internet, como se diseño el proyecto el
robot debe estar libre de cualquier cable por lo que el internet es inalámbrico (wireless),
con lo cuan la tarjeta funcionara como un modem o tarjeta de red.
Los requerimientos de memoria y procesador van en caminados al manejo de el video
que será captado por la cámara para posterior mente ser trasmitido por la red.
28
La cámara contara con una dirección IP propia la calidad de la imagen influye en
el tiempo en que tarda en transmitir el video por lo que se debe usar una con una
calidad media para evitar que el canal de transmisión se sature demasiado.
Como ven los requisitos son muy genéricos pero algo se puntualiza es que la laptop
debe ser ligera por que el si el tamaño es grande se aumentara el gasto de energía de el
robot y puede generar desperfectos en el mismo.
Maquina Cliente.
Los requisitos de la maquina cliente solo se refieren al tipo de conexión que tiene a
internet y a su cantidad de memoria, ya que como el cliente o usuario va a recibir el
video de la cámara si su conexión es lenta no lo vera o tendrá problemas al abrir la
pagina.
Una conexión de mínimo 256kbs.
Mínimo de 256Mbs. en RAM.
Ya hablamos de que fierros se necesitan para instalar y ponerlo a trabajar pero el
sistema Robot Espirit, pero tambien se tiene algunos requerimientos de software.
REQUERIMIENTOS DE SOFTWARE.
El sistema fue creado para funcionar en una laptop la cual por sus caracteristicas es una
maquina relativamente reciente por lo cual nos topamos con algunas restricciones de
software, como lo son el tipo de sistema operativo que tiene instalado en este caso
Windows ME™, Windows XP Home™ o Windows XP Profecional™, por lo que la
programación se centro en este aspecto.
Es bien sabido que se podria a ver instalado cualquier otro sistema operativo como
Windows 98™, Linux, Unix™, etc., pero como los sistemas operativos mencionados
en el párrafo anterior son los que cuentan con mayor soporte tecnico en la actualidad y
para no meterse con problemas con la garantía de la maquina se decidió no cambiarlo
(sea esto por políticas internas).
En base a lo anterior se la siguiente la siguiente lista de requerimientos de software
para la maquina servidor:
Sistema Windows XP™ Home, Windows XP™ Profesional, o
Windows ME™.
Una versión de el servidor Tomcat preferentemente la versión 4.1
29
Si se utiliza una versión de Windows XP™ se requiere un driver
para .poder escribir en el puerto sea este USERPORT.
Software para tratar con la cámara sea en este caso WEDCAM32.
INSTALACIÓN Y CONFIGURACIÓN DE EL DRIVER USERPORT.
La instación de este driver consiste en:
Copiar el archivo UserPort.sys a el
directorio%WINDIR%\SYSTEM32\DRIVERS.
Iniciar el programa UserPort.exe y borrar las direcciones que no se van a
utilizar
Iniciar el mismo programa de la siguiente forma UserPort.EXE
X:\YOURDIR\UserPort.SYS y añadir las direcciones a utilizar.
30
ENTRAR AL SISTEMA
Para entrar en el sistema se tiene que conectar al servidor vía esta dirección wed,
http://localhost:8080/Robot_uam/servlet1
la cual los llevara a una pagina muy parecida al siguiente la cual es una pagina de
autentificación para filtrar la entrada de usuarios no autorisados.
31
Al ingresar una contraseña valida a la pagina anterior se despliega la pagina siguiente en la cual se pueden
distinguir las siguientes zonas las cuales por su identificación nos dan la idea de cual es la función de cada
Movimiento
hacia
delante,
atrás,
izquierda y
derecha de
el robot
Movimie
nto de el
brazo
(confor
mado
por tres
partes
mano,
codo,
hombro)
.
zona.
Área donde aparecerá la imagen de la cámara.
Como se vio en la parte anterior el software es muy sencillo de manejar.
Movimiento de la cámara.
Eleva el periscopio y lo rota.
32
CONCLUSIONES
El proyecto es un reto ya que su complejidad dista de ser simple, en el tiempo que mis
compañeros y yo hemos estado trabajando para el proyecto nos topamos con algunos
problema inherentes al proyecto como lo son los intervalos de activación de señales,
tipo de infraestructura a considerar, capacidades físicas de el robot, etc., así como
problemáticas correspondientes a la planificación de el proyecto (indecisión en el
esquema básico, retrasos en los insumos básicos, muy poco tiempo para la realización
de la programación y mucho menos tiempo para la etapa de implantación de el mismo).
Analizando la problemática a resolver notamos que es un problema muy común en los
ámbitos laborales de tipo industrial, pero que en los planes o esquemas de estudio de la
Universidad no se estudia es mas ni siquiera se plantea una base teórica para abordarlo,
lo cual nos llevo a encontrarnos en algunos momentos en puntos donde nuestros
conocimientos eran insuficientes para poder continuar lo que dios como resultado
noches de insomnio estudiando las tecnologías a probar (applets, servlet, cgi,…, etc.),
una experiencia inolvidable por supuesto pero tediosa en su momento.
Después de haber encajado la problemática del proyecto en los tipos que aparecen el la
industria nos dimos cuenta de la verdadera potencia del proyecto, sea pues que el
esquema desarrollado puede aplicarse a una amplia gama de problemas:;
Manipulación de robots industriales (soldadores, cortadores, …,etc. )
Exploración de zonas no aptas para las personas (la zona abismal en el océano,
minas, cráter de volcanes, …, etc.)
Manipulación de robots de vigilancia.
En conclusión este proyecto nos dejo una enorme y grata satisfacción.
33
ANEXO A
Los rovers
Cada rover es como un geólogo mecánico que trabaja en la superficie de Marte. Está formado por un
cuerpo central que soporta su instrumental y que se desplaza sobre ruedas, con unos computadores que
procesan la información, varios sistemas térmicos para controlar la temperatura interna, insolación, etc.,
una cabeza y un cuello que sirven para ofrecer un punto de vista humano a las cámaras fotográficas, un
brazo robótico y sistemas de baterías y comunicaciones.
Los Mars Exploration Rovers difieren en gran medida de su predecesor, el rover Sojourner de la Mars
Pathfinder. El Sojourner tenía 65 centímetros de largo y pesaba 10 Kg. Cada Mars Exploration Rover
tiene 1.6 metros de longitud y pesa 174 Kg. El Sojourner viajó una distancia total similar a la longitud
de un campo de fútbol durante sus 12 semanas de actividad en Marte. Se espera que cada Mars
Exploration Rover recorra entre seis y 10 veces esa distancia durante su misión principal de tres meses.
La sonda de aterrizaje Pathfinder, no el Sojourner, realizaba las principales tareas de comunicación de la
misión, además de las funciones de cámara y las informáticas. Los Mars Exploration Rovers
transportan un equipo abordo para realizar este trabajo y no necesitan del uso de sus cápsulas de
aterrizaje cuando comiencen a desplazarse por la superficie marciana.
En cada Mars Exploration Rover, la estructura del núcleo se halla formada por un material compuesto
con forma de panal, fabricado con un material de alta tecnología denominado aerogel. Este cuerpo
central, llamado “compartimento de electrónica tibia”, presenta en su parte superior una superficie
triangular denominada “cuello del equipamiento del rover”. Dicho cuello incluye tres antenas, el mástil
de la cámara y células de paneles solares. Otros paneles solares también están conectados mediante
bisagras a los bordes de este triángulo. Los paneles se hallan plegados para ajustarse dentro de la
cápsula de aterrizaje durante el viaje a Marte y se despliegan para formar un área total de 1.3 metros
cuadrados en tres capas de células fotovoltaicas. Cada capa está formada por diferentes materiales:
fosfuro de indio y galio, y arseniuro de galio y germanio. El conjunto puede producir cerca de 900
watios de energía cada día marciano. No obstante, al final de la misión de 90 días marcianos, la
capacidad de generar energía se habrá reducido hasta 600 watios por día debido a la presencia de polvo
acumulado y las variaciones estacionales en Marte. Los paneles solares recargan repetidamente las dos
baterías de litio dentro del compartimento de electrónica tibia.
Cada rover se halla asimismo equipado con un conjunto de seis ruedas, un sistema de suspensión que
dobla todas sus juntas en vez de usar resortes y que permite moverse por encima de rocas de diámetros
mayores que las ruedas (26 cm). La distribución de la masa del vehículo se halla dispuesta de tal modo
que el centro de masas se sitúa cerca del punto pivotal para el sistema de suspensión. Esto permite al
rover tolerar una inclinación de 45° en cualquier dirección sin volcar, aunque los computadores de a
bordo están programados para evitar inclinaciones de más de 30°. El manejo independiente de las
ruedas frontales y traseras permite al rover girar en un mismo sitio o conducir en arcos graduales.
34
El rover lleva un sistema de navegación y de evitación de riesgos que puede emplear para recorrer su
propio camino hacia un destino identificado dentro de un conjunto de instrucciones diarias. Puede
desplazarse a 5 cm/s en terreno plano, pero bajo control automático con evitación de riesgos se mueve
a una velocidad media de 1/5 parte de la anterior.
Los dos pares de estereocámaras de evitación de riesgos se hallan montadas por debajo del cuello del
rover: un par en la parte delantera del mismo y otro en la trasera. Además de ofrecer la posibilidad de
realizar la navegación automática, la situada en frente permite tomar imágenes de las actividades que
realiza el brazo robótico. Las otras dos estereocámaras se hallan en la parte alta de un mástil que se
eleva desde el cuello del rover: la cámara panorámica –incluída como uno de los instrumentos
científicos– y otro par de cámaras de campo ancho y de menor resolución. El mástil también se dobla
como un periscopio para que otro de los instrumentos (el espectrómetro de emisión termal en
miniatura) pueda realizar su trabajo.
El resto del instrumental científico se encuentra en el extremo del brazo y es el que se denomina
“sistema de despliegue de instrumental”, el cual se pliega bajo la parte delantera del rover cuando el
vehículo está desplazándose de un punto a otro. El brazo se extiende hacia delante cuando el rover se
encuentra en posición, para examinar una roca particular o un detalle del suelo.
Las baterías y otros componentes que no han sido diseñados para sobrevivir a las frías noches
marcianas se encuentran alojadas en el compartimento de electrónica tibia. Las temperaturas nocturnas
pueden disminuir hasta –105°C. Las baterías necesitan hallarse por encima de –20°C cuando
suministran energía, o por encima de 0°C cuando se recargan. El calor dentro del compartimiento de
electrónica proviene de una combinación de calentadores eléctricos, ocho unidades de calentamiento
mediante isótopos radiactivos y el propio calor emitido por los componentes electrónicos.
Cada sistema de calentamiento mediante isótopos radiactivos produce un watio de calor y contiene 2.7
gramos de dióxido de plutonio en una bolita con la forma y el tamaño de una goma de borrar de un
portaminas. Esta bolita se halla en una cápsula formada por una aleación de platino-rodio y rodeada de
múltiples capas de un compuesto de carbono y grafito, de tal modo que la unidad completa tiene el
tamaño y forma de una batería celular-C. Este diseño de múltiples capas protectoras ha sido
ampliamente probado y se espera que las unidades térmicas puedan contener el dióxido de plutonio
bajo un gran rango de posibilidades de accidentes durante el lanzamiento y reentrada orbital. Otras
sondas, incluyendo el rover Sojourner de la Mars Pathfinder, han empleado sistemas térmicos de
radioisótopos para mantener los sistemas electrónicos a una temperatura tal que se asegure su correcto
funcionamiento.
El ordenador en cada misión de los Mars Exploration Rovers trabaja con un microprocesador de 32-bit
Rad 6000, una versión adaptada a la radiación de los chips PowerPC empleados en algunos modelos de
ordenadores Macintosh, que opera a una velocidad de 20 millones de instrucciones por segundo. La
memoria de abordo incluye 128 megabytes de memoria RAM, aumentadas por 256 megabytes de
memoria flash y pequeñas cantidades de otras memorias no volátiles, que permiten al sistema retener
datos incluso sin emplear energía.
Los rovers, que aterrizarán en puntos distintos en la superficie, llevan una serie de instrumentos que
emplearán para estudiar el clima, el agua y la historia geológica de Marte.
Entre ellos se incluyen nueve cámaras (seis de navegación y tres para investigación científica):
- Dos Cámaras Panorámicas (Pancams), que se emplearán para obtener imágenes del terreno que rodea
a los rovers y elegir qué muestras de suelo y rocas serán estudiadas por otros instrumentos, buscando
35
formas del terreno que evidencien erosión por agua. Naturalmente, servirán para crear un mapa de la
zona de aterrizaje y guiar a los rovers en su viaje, enviando a la Tierra imágenes panorámicas de alta
resolución de la superficie. Estas cámaras se hallan montadas en el mástil de los rovers y ofrecerán
panoramas tridimensionales de la superficie marciana con tal aspecto y resolución como si fuese vista
por ojos humanos. Sus detectores son cámaras CCD que permiten realizar imágenes de 4000 x 24000
píxeles. El mástil permite que éstas puedan girar 360° e inclinarse 180° para poder realizar tomas del
panorama. Cada una de las Pancams incluyen ocho filtros por ojo; entre los dos ojos tienen en total 11
filtros de color únicos y otros dos para tomar imágenes del Sol. Las cámaras emplearán estos filtros
solares junto con los datos de la hora del día para determinar con precisión la posición, orientación y
dirección del rover. Los datos que se obtengan con todos los filtros servirán para estudiar la
composición mineral de las rocas y el suelo y ofrecer información sobre el polvo en la atmósfera de
Marte. Hasta la fecha, estas son los sistemas de toma de imágenes con mayor capacidad que jamás se
han enviado a la superficie de otro planeta.
Las cuatro Cámaras de Evitación de Riesgos o Hazcams (HAC) se hallan montadas en el cuerpo del
rover, concretamente en la parte baja del zona delantera y trasera del mismo y toman imágenes
tridimensionales en blanco y negro. Éstas sirven para asegurarse de que el rover no se pierde o choca
con obstáculos inesperados. Todas ellas tienen un campo de visión de 120° y fotografían el terreno
hasta una distancia de 3 metros de frente.
Dos cámaras de navegación montadas en el mástil del rover tomarán panorámicas tridimensionales en
blanco y negro. Cada una de ellas tiene un campo de visión de 45° y sirven como complemento al
sistema de navegación. Éstas cámaras, junto con las Hazcams ofrecerán una vista complementaria del
terreno.
-
El Sistema de Imagen Microscópica (Microscopic Imagers) observará los rasgos a pequeña
escala del suelo y rocas y en los sedimentos depositados por el agua. Cada sistema consiste en
la combinación de un microscopio y una cámara CCD (1024 x 1024 píxeles) y se halla situada
en el brazo robótico para poder tomar imágenes extremadamente cercanas de las rocas alteradas e inalteradas- y del suelo. Los análisis de éste sistema de imagen servirán para conocer
el tamaño y forma de los granos minerales en las rocas sedimentarias y otras características
superficiales, lo cual es fundamental para deducir si estos han sido o no afectados por el agua y
cómo tuvo lugar su transporte y depósito.
Además
de
sus
cámaras,
los
MER
cuentan
con
el
siguiente
instrumental:
- La Herramienta de Abrasión de Rocas (RAT o Rock Abrasion Tool) se empleará para eliminar la
cubierta superficial alterada de las rocas mediante abrasión, lo cual permitirá estudiar los minerales
inalterados con otros instrumentos. Cada RAT se encuentra en el brazo del rover, pesa menos de
720 gramos y puede crear un agujero de unos 45 milímetros de diámetro y 5 mm de profundidad
en la roca. Una vez la superficie fresca se halle expuesta, los científicos podrán examinar el área
estudiada con otro instrumental científico. La razón de producir esta abrasión es que el interior de
una roca puede ser muy diferente a su experior, más alterado. Esta diferencia es importante, ya que
los científicos pueden conocer cómo se formó la roca y cuáles fueron las condiciones ambientales
que produjeron su alteración. Una roca situada en la superficie marciana puede cubrirse de polvo y
meteorizarse, cambiando su composición química por el contacto con la atmósfera.
- Los Espectrómetro de Emisión Termal en Miniatura (Mini-TES o Miniature Thermal Emission
36
Spectrometers) nos mostrarán una imagen del entorno de los rovers en el infrarrojo y serán utilizado
conjuntamente con la cámara panorámica para identificar minerales superficiales asociados con la
acción del agua
- Los Espectrómetros Mössbaur serán situados frente a las rocas para intentar identificar minerales que
contengan hierro. Esto servirá para identificar el papel que el agua puede haber jugado en el pasado
durante la formación de los minerales de la roca y el grado de meteorización de éstas.
- Los Espectrómetros de Rayos X de Protones Alfa (Alpha Proton X-Ray Spectrometers) medirán las
concentraciones de elementos mayores en la roca y suelo marcianos, permitiendo conocer cómo se ha
formado y qué procesos de meteorización las han ido alterando con el tiempo.
- Sistemas magnéticos: cada rover cuenta con tres de estos sistemas que recogerán polvo atmosférico
para ser analizado por los demás instrumentos científicos (cámaras, espectrómetros...). Uno de éstos se
hallará situado en la herramienta de abrasión (RAT) para estudiar las propiedades del polvo de la capa
alterada de las rocas. La razón para estudiar dichos minerales radica en que éstos podrían ser
remanentes del pasado más húmedo de Marte.
La información anterior es amplia pero aun así incompleta sobre el proyecto Rover de
la NASA para mayor información consulte la pagina http://www.astroenlazador.com
de la cual fue extraído el texto anterior.
37
ANEXO B
BIBLIOGRAFIA.
García, J., Rodríguez, J., Imaz, A. Aprendiendo Servlets de Java como si estuviera en
segundo. Universidad de Navarra
Lemay, L., Cadenhead, R. Aprendiendo Java 2 en 21 Días. Editorial Prentice
Hall.
La biblia de HTML.
Información sobre las sondas Rover.
http://marsprogram.jpl.nasa.gov/marte/overview.html
http://marsprogram.jpl.nasa.gov/marte/missions/past/viking_sp.htm
Información API parport
http://www.geocities.com/Juanga69/parport/
Tutoriales sobre JAVA (servlets, applets,…, de todo lo que sea java)
http://www.programacion.com/
http://www.mundoc.net
http://www.abcdatos.com
http://java .programacion.net
http://www.laweddelprogramador.com
http://www.javahispano.com
Tutoriales HTML.
http://www.htmlweb.net
http://www.desarrolloweb.com/
Información JBUILDER
http://www.borland.com
38
Descargar