ebook img

android robot interface PDF

164 Pages·2012·31.17 MB·Spanish
by  
Save to my drive
Quick download
Download
Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.

Preview android robot interface

UNIVERSIDAD POLITÉCNICA DE MADRID           DEPARTAMENTO DE AUTOMÁTICA INGENIERÍA ELECTRÓNICA E INFORMÁTICA INDUSTRIAL               División de Ingeniería de Sistemas y Automática (DISAM)           ARI Android Robot Interface             Android Robot Interface     AUTOR: Francisco Javier Mata Sanz   TUTOR: Carlos Hernández Corbato Ricardo Sanz Bravo Resumen Este proyecto trata sobre el diseño de una interfaz gráfica de control basada en Android. La interfaz diseñada ARI, Android Robot Interface, permite el control de robotsqueimplementanelsistemaROS,RobotOperatingSystem. ElsistemaoperativoROSesunframeworkquepermiteeldesarrollodesoftwarepara aplicacionesrobóticas.LabasedeROSconsisteenproporcionarunsistemaoperativo conlafuncionalidaddeunclústerinformáticoheterogéneo.ROSfuedesarrolladoen 2007bajoelnombrede"switchyard"porelStanfordArtificialIntelligenceLaboratory, con apoyo del proyecto Stanford AI Robot (STAIR). A partir de 2008, el desarrollo continuó principalmente en Willow Garage, un instituto de investigación de robótica conmásdeveinteinstitucionesquecolaboranenunmodelodedesarrollofederado. Laaplicación estádesarrolladapara funcionarsobreel sistemaoperativo Android. Al contrario que otros sistemas operativos para dispositivos móviles como iOS o Windows Phone, Android se desarrolla de forma abierta. La estructura del sistema operativo Android se componede aplicaciones quese ejecutan en unframeworkJava de aplicaciones orientadas a objetos. Estas aplicaciones corren sobre el núcleo de las bibliotecas de Java en una máquina virtual Dalvik con compilación en tiempo de ejecución. Dalvikeslamáquinavirtualqueutilizalaplataforma,diseñadaporDanBornstein concontribucionesdeotrosingenierosdeGoogle.Dalvikestáoptimizadapararequerir poca memoria y está diseñada para permitir ejecutar varias instancias de la máquina virtual simultáneamente, delegando en el sistema operativo subyacente el soporte de aislamientodeprocesos,gestióndememoriaehilos. ARIpermitealusuarioelcontroldesistemasrobóticosdesarrolladosenelequipo de investigación de ASLab. El Laboratorio de Sistemas Autónomos (ASLab) es un grupode investigación centradoenel desarrollodelatecnología necesariaparaobtener sistemasautónomosyrobustos. Los Sistemas Autónomos (AS), suponen la parte más emocionante para la investigación técnica. Son verdaderamente sistemas muy complicados y se hacen absolutamente carísimos en el esfuerzo. Es necesaria una gran capacidad tanto de concentración,como deabstracción paraconseguirrealizar avances enlainvestigación deestatécnica. ANDROIDROBOTINTERFACE II FranciscoJavierMataSanz RESUMEN ASLabestáconcienciadoypreparadoparacambiarelpuntodevistaqueaportan losmodelostípicosenlainvestigaciónacadémica.Pero,enciertosentido,serealizan actividades desde una postura de miras al mundo industrial. Se pretende desarrollar tecnologíaparasistemasautónomosenelmundoreal,deformaquesedotaráalosseres humanosdelibertaddesupervisiónunavezquequeelsistemaestéenfuncionamiento. Ellosseráncapacesdeauto-gestionarse. Dentro del proyecto ASys existe una parte de prueba de los sistemas de control desarrollados.ElrobotHiggsesunadeesaspartes,enconcretodelASysRobotControl Testbed (RCT), seleccionadapara lademostración de ladimensión cognitiva másalta enunsistemafísico. La aplicación ARI es la herramienta de control de los sistemas robóticos desarrollados por el equipo de investigación de ASLab , ofreciendo al usuario una interfazportátilysencillaparalainteraccióncondichossistemas. ANDROIDROBOTINTERFACE III FranciscoJavierMataSanz ParatiabueloPaco, estosiguesignificandomuchoparamí. Volvamosacompartirlojuntos. Elquehacomenzadobien, estáalamitaddelaobra. QUINTO HORACIO FLACO Máslevaleaunhombretenerlabocacerrada, yquelosdemáslecreantonto, queabrirlayquelosdemásseconvenzandequeloes. PITÁGORAS DE SAMOS Agradecimientos Este proyecto no habría sido posible de no ser por todas aquellas personas que me apoyan. Siempre lo han hecho y espero que nunca dejen de hacerlo. En muchas ocasionesésteapoyotehacesermásfuerte,hacerfrentealosproblemas,yplantarcara atodoloquesetevengaencima.Nosoypartidariodetirarlatoalla,nuncahepensado enellocomoalgoposible.Siporelcontrario,optaspor abandonarenelintento,puede que nunca se llegue a apreciar ese esfuerzo. La clave está en poner ganas, coger aire, resoplar,levantarlavistayenfrentarseaello. A lo largo de estos últimos cinco años me he visto en situaciones difíciles, complicadas. No es fácil salir de casa para estudiar en otro lugar. Por ello quiero agradecer la experiencia de vida que he compartido con mis compañeros de piso, Miquel,JaviyFer. ARicardoSanzyCarlosHernández,directorycoordinadordeesteproyecto,porsu apoyo, orientacióny ayuda enel desarrollo delmismo, así comosu disposiciónplena pararesolvercualquiertipodeduda.Agradecertambiénelhabercompartidotodasu experienciaconmigo,yaqueheaprendidoamanejarme enunáreaquenoseenseñaen ningunaparte,sinoqueseadquiereconlaexperienciadeunomismo. A mis amigos de infinita paciencia. He aprendido de cada uno cosas distintas, a convivir, a sentir interés por temas que nunca me hubiera planteado explorar por mi cuenta. Atodamifamilia,portodoloquehahechopormí.Amistías,NinesyLoli,que siempremehanofrecidosucariñoyanimadoparaconseguiraquelloporloqueluché. A mi abuelo Pepe, porque siempre quiere lo mejor para toda su familia y se esfuerza al máximo en que así sea, eso tampoco se enseña en ningún lado, sólo de observar y comprender.GraciasatitambiénabueloPaco,porque creo queesteespírituingenieril proviene plenamente de tu estilo de vida. A mis abuelas, por tantas oraciones y por preocuparse a todas horas por mi bienestar. Siempre sabré que estaréis cuidando de nosotros,vuestrosnietos,delamejormaneraquesabéis. Finalmente a mis padres y a mis hermanas, por la educación que he recibido de vosotros,porquecadadíaaprendoasermejorpersonacuandoosveoyporqueaúnnos quedamuchoporcompartir,vivirysentirjuntos.Osquieromucho. ANDROIDROBOTINTERFACE V FranciscoJavierMataSanz DOCUMENTO I MEMORIA Índice I. Memoria 8 1. Introducción 9 1.1. AutonomousSystems,ASys . . . . . . . . . . . . . . . . . . . . . . 9 1.2. AutonomousSystemsLaboratory,ASLab . . . . . . . . . . . . . . . 10 1.3. HiggsRobot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 1.3.1. EstructuradeHiggs . . . . . . . . . . . . . . . . . . . . . . . . . 10 1.3.1.1. Laplataforma . . . . . . . . . . . . . . . . . . . . . . . . . . 11 1.3.1.2. Componentesembarcados . . . . . . . . . . . . . . . . . . . 13 1.3.1.3. Sistemasadicionales . . . . . . . . . . . . . . . . . . . . . . 14 1.3.2. Descripciónfuncionaldelrobot . . . . . . . . . . . . . . . . . . 14 1.4. Motivaciónyobjetivos . . . . . . . . . . . . . . . . . . . . . . . . . 14 2. ESTADODELARTE 17 2.1. Android . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 2.1.1. Historiayprecedentes . . . . . . . . . . . . . . . . . . . . . . . 17 2.1.2. Actualizaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 2.1.3. Características . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 2.2. ROS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 2.2.1. ROSfuerte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 2.2.2. ROSJava . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 2.3. Sistemasdistribuidosdecomponentes . . . . . . . . . . . . . . . . . 26 2.3.1. Propiedadesdelossistemasdistribuidos . . . . . . . . . . . . . . 27 3. ENTORNODEDESARROLLO 29 3.1. SistemaOperativo:Ubuntu . . . . . . . . . . . . . . . . . . . . . . . 29 3.2. ROS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 3.3. PlataformadedesarrolloEclipse . . . . . . . . . . . . . . . . . . . . 32 3.3.1. ADTPlugin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 4. ARQUITECTURADESISTEMA 34 4.1. ArquitecturadelsistemaHiggs . . . . . . . . . . . . . . . . . . . . . 34 4.2. ArquitecturadeAndroid . . . . . . . . . . . . . . . . . . . . . . . . 40 ANDROIDROBOTINTERFACE 2 FranciscoJavierMataSanz DOCUMENTOI.MEMORIA (cid:167) ÍNDICE 4.3. ArquitecturadeROS . . . . . . . . . . . . . . . . . . . . . . . . . . 46 5. ARI:AndroidRobotInterface 50 5.1. CreacióndelproyectoAndroid . . . . . . . . . . . . . . . . . . . . . 50 5.2. Diseñográfico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 5.2.1. ComponentesgráficosenARI . . . . . . . . . . . . . . . . . . . 55 5.3. Desarrollosoftware . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 6. RESULTADOSYCONCLUSIONES 80 7. DESARROLLOFUTURO 82 8. PLANIFICACIÓNYALCANCEDELPROYECTO 84 8.1. Estructuradedescomposicióndeltrabajo . . . . . . . . . . . . . . . . 84 8.2. DiagramadeGantt . . . . . . . . . . . . . . . . . . . . . . . . . . . 88 BIBLIOGRAFÍA 90 II. Anejos 91 1. Manualdeusuario 92 1.1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92 1.2. AsusTransformerPrime . . . . . . . . . . . . . . . . . . . . . . . . 92 1.3. Iniciodelaaplicación . . . . . . . . . . . . . . . . . . . . . . . . . . 94 1.4. RobotROS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 1.4.1. SystemStateViewer . . . . . . . . . . . . . . . . . . . . . . . . 97 1.4.2. RobotOperation . . . . . . . . . . . . . . . . . . . . . . . . . . 99 1.5. Clienteremoto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105 1.5.1. Menúdeopcionesdelclienteremoto . . . . . . . . . . . . . . . . 108 1.6. Apagadodelaaplicación . . . . . . . . . . . . . . . . . . . . . . . . 117 III. Código fuente 120 1. CódigoJavadelaaplicación 121 1.1. MainActivity.java . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121 1.2. RosActivityRobot.java . . . . . . . . . . . . . . . . . . . . . . . . . 124 1.3. NodeMainExecutorService.java . . . . . . . . . . . . . . . . . . . . . 128 1.4. RosRobot.java . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132 1.5. TeleopFragment.java . . . . . . . . . . . . . . . . . . . . . . . . . . 136 1.6. NodeListFragment.java . . . . . . . . . . . . . . . . . . . . . . . . . 139 1.7. RosDataObserver.java . . . . . . . . . . . . . . . . . . . . . . . . . . 141 1.8. VirtualJoystickView.java . . . . . . . . . . . . . . . . . . . . . . . . 142 ANDROIDROBOTINTERFACE 3 FranciscoJavierMataSanz Índice de figuras 1. RobotHiggs.ObjetivodeldesarrollodelRCT.Bancodepruebasdesistemas autónomos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 2. TeléfonoHipTop,primerteléfonoquemarcaríalalíneadelosSmartphones. 18 3. HTCDream,elprimerteléfonoAndroiddelahistoria. . . . . . . . . . . . 18 4. Android1.5Cupkake . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 5. Android1.6Donut . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 6. Android2.0Eclair . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 7. Android2.2Froyo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 8. Android2.3Gingerbread . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 9. Android4.0IceCreamSandwich . . . . . . . . . . . . . . . . . . . . . . 21 10. Conversiónde.jara.dex . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 11. ÚltimaactualizacióndeROS:ROSFUERTE . . . . . . . . . . . . . . . . 24 12. ROSJavapermitióeldesarrollodeaplicacionesparaAndroid. . . . . . . . 25 13. RobotquepuedesermanejadoconunSmartphoneconAndroid. . . . . . . 25 14. Arquitecturadeunsistemadistribuido. . . . . . . . . . . . . . . . . . . . . 26 15. Ubuntu10.04LucidLynx . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 16. ROS:RoboticOperatingSystem . . . . . . . . . . . . . . . . . . . . . . . 31 17. EntornodedesarrolloEclipseClassic.Versión4.2. . . . . . . . . . . . . . 32 18. AndroidDeveloperToolsPlugin . . . . . . . . . . . . . . . . . . . . . . . 33 19. Vistageneraldeflujosdemensajesdelsistema. . . . . . . . . . . . . . . . 35 20. VistageneraldelsistemarobóticoHiggs. . . . . . . . . . . . . . . . . . . 36 21. Histogramaparalacomprensióndelafigura20. . . . . . . . . . . . . . . . 37 22. LocalizaciónatravésdelpaquetedeROSamcl. . . . . . . . . . . . . . . . 38 23. Intefaz provista por elnodo move_basepara la comunicacióncon el resto de componentes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 24. Mapadecostedelrobotdurantelasimulación. . . . . . . . . . . . . . . . 39 25. Trayectoriasdevalorcalculadasporelpaquetebase_local_planner. . . . . 39 26. ArquitecturadepiladelsistemaAndroid. . . . . . . . . . . . . . . . . . . 40 27. VersionesdelKerneldeLinuxdeAndroid . . . . . . . . . . . . . . . . . . 41 28. KerneldeLinuxdeAndroid . . . . . . . . . . . . . . . . . . . . . . . . . 42 29. LibreríasdelsistemaoperativoAndroid . . . . . . . . . . . . . . . . . . . 42 ANDROIDROBOTINTERFACE 4 FranciscoJavierMataSanz DOCUMENTOI.MEMORIA (cid:167) ÍNDICE 30. EntornodeejecucióndelsistemaoperativoAndroid . . . . . . . . . . . . . 43 31. FrameworkdeaplicacionesdelsistemaoperativoAndroid . . . . . . . . . 44 32. MultimediaensistemaoperativoAndroid . . . . . . . . . . . . . . . . . . 45 33. AplicacionesdelsistemaoperativoAndroid . . . . . . . . . . . . . . . . . 46 34. ControldelatrayectoriadeunamasasuspendidadeuncablemedianteROS. 48 35. ArquitecturaROSdelsistemadecontroldeunamasasuspendida. . . . . . 48 36. CreacióndeunproyectoAndroidenEclipse. . . . . . . . . . . . . . . . . 52 37. JerarquíadevistasdelainterfazdeusuarioAndroid. . . . . . . . . . . . . 53 38. EjemplodecódigoXMLdelainterfazgráficadeAndroid . . . . . . . . . 54 39. DiferentestemasdeAndroid. . . . . . . . . . . . . . . . . . . . . . . . . . 55 40. BarradesistemadeARI. . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 41. NotificacionesenAndroid. . . . . . . . . . . . . . . . . . . . . . . . . . . 56 42. Ejemplodebarradeacciones. . . . . . . . . . . . . . . . . . . . . . . . . 57 43. BarradeaccionesdeARI. . . . . . . . . . . . . . . . . . . . . . . . . . . 57 44. ListadeinformaciónROSenARI. . . . . . . . . . . . . . . . . . . . . . . 58 45. ScrollerenelsistemaAndroid. . . . . . . . . . . . . . . . . . . . . . . . . 59 46. SpinnerdeopcionesdeARI. . . . . . . . . . . . . . . . . . . . . . . . . . 59 47. BotonesenelsistemaAndroid. . . . . . . . . . . . . . . . . . . . . . . . . 60 48. CasillasdetextodeARIparacaptarinformaciónnecesaria. . . . . . . . . . 61 49. CuadrosdediálogoenAndroid . . . . . . . . . . . . . . . . . . . . . . . . 61 50. AvisodeconfirmaciónAndroid. . . . . . . . . . . . . . . . . . . . . . . . 62 51. Diagramaparalautilizacióndeavisosdeconfirmación. . . . . . . . . . . . 63 52. VersionesdelsistemaoperativoAndroid. . . . . . . . . . . . . . . . . . . 64 53. InterfazvisualdelaactividadprincipaldeARI. . . . . . . . . . . . . . . . 66 54. InterfazvisualdelaactividaddecontroldelrobotdeARI. . . . . . . . . . 66 55. DiagramadesecuenciadelciclodevidadeunaActividadAndroid. . . . . 67 56. ImplementacióndelosmétodosdelciclodevidadeunaactividadAndroid. 68 57. DiseñodelfuncionamientodefragmentosenARI. . . . . . . . . . . . . . 70 58. Fragmentos”NodeListFragment”y”NodeInfoFragment”deARI. . . . . . 70 59. MétodosqueimplementaelFragmentoTeleopFragmentdeARI. . . . . . . 71 60. DiagramadesecuenciadelciclodevidadeunFragmentAndroid. . . . . . 73 61. Diagrama de secuencia del ciclo de vida de ambos modos de un Servicio Android. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 62. EstructuradeDescomposicióndelTrabajo . . . . . . . . . . . . . . . . . 84 63. EstructuradeDescomposicióndelTrabajo . . . . . . . . . . . . . . . . . 85 64. EstructuradeDescomposicióndelTrabajo . . . . . . . . . . . . . . . . . 85 65. EstructuradeDescomposicióndelTrabajo . . . . . . . . . . . . . . . . . 86 66. EstructuradeDescomposicióndelTrabajo . . . . . . . . . . . . . . . . . 86 67. EstructuradeDescomposicióndelTrabajo . . . . . . . . . . . . . . . . . 87 ANDROIDROBOTINTERFACE 5 FranciscoJavierMataSanz

Description:
La interfaz diseñada ARI, Android Robot Interface, permite el control de robots que GIMP 2.6.8 sólo disponible desde los repositorios. Posee un
See more

The list of books you might like

Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.