Plataforma FPGA para Robótica Móvil
por
Juan Carlos Moctezuma Eugenio
Tesis sometida como requisito parcial para obtener el grado de
MAESTRO EN CIENCIAS EN LA
ESPECIALIDAD DE CIENCIAS DE LA COMPUTACIÓN en el
Instituto Nacional de Astrofísica, Óptica y Electrónica INAOE
Febrero 2009 Tonantzintla, Puebla
Supervisada por:
Dr. Miguel Octavio Arias Estrada
©INAOE 2009 Derechos reservados
El autor otorga al INAOE el permiso de reproducir y distribuir
copias de esta tesis en su totalidad o en partes
Enestetrabajodetesissepresentaeldiseñoeimplementacióndeunaplataformadecontroly
procesamientobasadaenFPGAparaaplicacionesdeRobóticaMóvil.Elrobotdepruebausado
paravalidacióndelsistema estábasadoenunrobotmóvilprogramabledelacompañía iRobot
llamadoCreate.Tambiénseañadenotroselementoscomosonares,sensoresinfrarrojosybrazo
manipuladorpara aumentar lafuncionalidaddel robot.El diseñodelaplataformaFPGAestá
basado en elconcepto desistemas empotrados, asíque ofrece una arquitectura hardwareque
incluye: procesador,buses, memoria yperiféricos (e.g. co-procesadores,sensores, brazo robot,
controladores, etc.), todo dentro de un mismo chip, porlo que disminuyeel costo, tamaño y
consumodepotenciadelsistema.Asímismopermitelaexibilidaddeagregaromodicarnuevos
componentes hardware mediante la recongurabilidaddel FPGA. Además, el trabajo incluye
la parte software conformada por un sistema operativo (SO) basado en Linux que junto con
un conjunto de bibliotecas que permiten manipular y controlarlos componentes hardware de
laplataformaFPGA. Todaslasfunciones estánen lenguaje Cyseencuentranorganizadasen
diferentes niveles deabstracción, porejemplohayfunciones que seencuentranen unlenguaje
defácilusoparalosprogramadoresderobots.
Lanalidadprincipaldeestaplataformaesmostrarlasventajasqueofrecenlosdispositivos
FPGA para diseñar plataformas robóticas, ésto se logra mediante una serie de experimentos
realizadosenunambientedeprueba.Dentrodeestasventajas,principalmentesetiene elpoder
deparalelismoylaexibidadquemanejan losFPGAs.Porotrolado,laplataformapropuesta
tienela propiedad de ser escalablepara incorporar nuevos elementos hardware, ya sea senso-
res,actuadoresuotrotipodedispositivohardwaredeusocomúnparaaplicacionesenrobótica
móvil. Muchos de éstos sensores/actuadores necesitan algún tipo de interfaz o de algún pre-
procesamiento, el FPGA ofrece soluciones exibles para tratarestas necesidades. Además, la
plataformaFPGApermitequelaarquitectura softwarequedeabiertaparaincrementarlafun-
cionalidaddelamisma,comoporejemplolacreacióndemapas,algoritmosdevisión,cinématica
debrazosmanipuladores,etc.
Abstract
Thisthesispresentsthedesignandtheimplementationof aFPGA-basedroboticplatformfor
applications on Mobile Robotics. A test robot was used for validation and it is based on a
commercial programmable mobile robot called Create from iRobot company. Also test robot
includes other components like sonars, infrared sensors and a robotic arm. These additional
componentsare used to increase platform's functionality. In fact, this platform is acomplete
embedded system. Hardware side includes processor,buses, memory and peripherals(e.g. co-
processors,sensors,roboticarm,controllers,etc.),allthesecomponentsinsideofthesamechip,
thereforethe systemachievesa reductionin size,powerconsumption and cost.And allowsto
addorto modifynewhardwarecomponentsthroughFPGArecongurability.With respectto
software side, it includes a Linux-based Operating System (OS) with a set of libraries that
perform dierent funcionalities and manipulate all components on FPGA platform, all these
functions are written in C code and theyare organizedin dierent levels of abstraction, e.g.
therearefunctionseasy-understandingforroboticprogrammers.
The main purpose of this FPGA-based platform is to showthe advantages achievedwhen
FPGAsareusedtoimplementroboticplatforms,advantagessuchasexibilityofimplementing
dierenthardwarearquitecturesordierentembeddedLinux-basedOS,orpowerofparalelism
to accelerate data processing, among others. Another advantage is scalability, this platform
allows the addition of dierent kind of hardware component, protocol bus or custom digital
logic. Furthermore software architecture is open to increase its functionality, for example by
creatingnavigationmaps,visionalgorithms,roboticarmkinematics,etc.
Agradecimientos
AlConsejoNacionaldeCienciayTecnología(CONACYT)porelapoyoeconómicootorgado
atravésdelabecaparaestudiosdemaestría.
Al Instituto Nacional de Astrofísica, Óptica y Electrónica (INAOE) y a la Coordinación
de Ciencias Computaciones por todaslas facilidades y apoyosque me otorgarondurante mis
estudiosdemaestría.
Amiasesor,Dr. MiguelO.AriasEstrada,porsuapoyo,consejosymotivaciónquehicieron
posiblelarealizacióndeestatesis.
Amissinodales,Dra.AngélicaMuñozM.,Dr.LuisEnriqueSucarS.,Dr.EduardoMorales
M.,Dr. RenéArmando CumplidoP., porsusútilesobservacionesycomentariosqueayudaron
amejorarestatesis.
Índice general vii
Índice de guras ix
Lista de Tablas xi
1. Introducción 1
1.1. Antecedentes . . . 1
1.2. Objetivos . . . 3
1.3. Alcancesylimitaciones. . . 3
1.4. Organizacióndelatesis . . . 4
2. Plataformas para robótica móvil 7 2.1. Deniciones . . . 7
2.2. Plataformasdedesarrollo . . . 8
2.2.1. Softwarederobots . . . 9
2.2.2. Sistemasoperativos . . . 10
2.3. Plataformascomerciales . . . 12
2.3.1. HandyBoard . . . 12
2.3.2. BotBoard. . . 14
2.3.3. KoreBot . . . 15
2.3.4. Gumstix . . . 15
2.3.5. PlataformasparaVisión . . . 16
2.4. Resumendeplataformas . . . 19
3. Sistemasembebidos yFPGAs 21 3.1. Sistemasembebidos . . . 21
3.1.1. Características . . . 22
3.1.2. Componentes . . . 22
3.2. FPGAs . . . 23
3.3. SistemasembebidosenFPGAs . . . 26
3.4. Resumendelcapítulo. . . 28
4. PlataformaFPGA propuesta 29 4.1. Introducción. . . 29
4.2. Arquitecturahardware . . . 30
4.2.1. Procesador . . . 32
4.2.2. Memoria. . . 32
4.2.3. Buses . . . 33
4.2.4. Periféricos . . . 33
4.2.5. Co-procesadores . . . 34
4.3. Arquitecturasoftware . . . 35
4.3.1. Linuxembebido . . . 36
4.3.2. Capashardwareycontroladores/SO . . . 37
4.3.3. Capa funcionesbásicas. . . 39
4.3.4. Funcionesintermedias . . . 40
4.4. FuncionalidaddelaplataformaFPGA . . . 42
5. Experimentosy resultados 45 5.1. Implementación . . . 45
5.1.1. Material yequipodeimplementación. . . 45
5.1.2. Herramientasdeimplementación . . . 48
5.1.3. Desarrollodelaarquitecturahardware . . . 49
5.1.4. Desarrollodebibliotecassoftware. . . 56
5.1.5. DesarrolloparamontarLinuxenelFPGA. . . 56
5.2. Criteriosdeevaluaciónyambientedeprueba . . . 58
5.3. Experimentos . . . 59
5.3.1. Incorporarprotocolosdecomunicación . . . 59
5.3.2. Hardwareenparalelo:Sonares . . . 60
5.3.3. Co-procesadorparaimágenes . . . 61
5.3.4. Pruebasgenerales:Seguidordeparedylaberinto . . . 64
5.4. Discusión . . . 65
6. Conclusiones 73 6.1. Conclusiones . . . 73
6.2. Trabajosfuturos . . . 75
A.Implementaciónen EDK 77 A.1. Desarrollodelhardwaredelsistema . . . 77
A.2. Desarrollodelsoftwaredelsistema . . . 80
A.3. Periféricosdelsistema . . . 81
A.3.1. Sonares . . . 82
A.3.2. BusI2C . . . 83
A.3.3. Sensoresinfrarrojos . . . 84
A.3.4. Brazomanipulador AX-12. . . 84
A.3.5. Co-procesadorparaimágenes . . . 86
B.Funciones software para el robotde prueba 91 B.1. Biblioteca:RobotmóvilCreate . . . 91
B.2. Biblioteca:Sonares . . . 94
B.3. Biblioteca:Brújula . . . 95
B.4. Biblioteca:Sensoresinfrarrojos . . . 96
B.5. Biblioteca:Brazorobot . . . 97
B.6. Biblioteca:Co-procesadorparaimágenes . . . 98
C.Montar Linux en FPGAs 99
2.1. Programaciónderobots . . . 9
2.2. ambientesdeMicrosoftRoboticStudio© . . . 11
2.3. TarjetasHandyBoardyHandyCricket . . . 12
2.4. TarejetadeexpansióndelaHandyBoard . . . 13
2.5. TarjetaBotBoardII . . . 14
2.6. TarjetaKoreBot . . . 15
2.7. TarjetaGumstix . . . 16
2.8. TarjetaEyeBot . . . 17
2.9. TarjetaCMUcam3 . . . 18
3.1. Componentes deunsistemaembebido . . . 23
3.2. FPGAsdeAlterayXilinx . . . 24
3.3. EstructurainternadelFPGA . . . 25
3.4. Niveles deintegraciónensistemas embebidos . . . 27
3.5. SolucionesenprocesadoresparaXilinx . . . 28
4.1. TarjetaFPGApropuesta . . . 30
4.2. PartehardwaredelaplataformaFPGA . . . 31
4.3. Ejemplodeejecuciónsoftwarevshardware . . . 34
4.4. PartesoftwaredelaplataformaFPGA . . . 35
4.5. Arquitecturasoftware:caps hardwareycontroladores. . . 37
4.6. Interacciónentre lacapahardwareylacapacontroladores. . . 38
4.7. Arquitecturasoftware:capabásica . . . 39
4.8. Interacciónentre lacapabásicaylacapadecontroladores . . . 39
4.9. Arquitecturasoftware:capaintermedia. . . 41
4.10.Interaccióndelacapaintermedia ylacapabásica . . . 41
5.1. Robotmóvildeprueba. . . 46
5.2. Vistageneraldelrobotmóvildeprueba . . . 47
5.3. Acercamientosalrobotmóvildeprueba . . . 47
5.4. TarjetaFPGASP3E1600EMicroBlazeEdition . . . 48
5.5. DiagramaparaelmódulohardwaredelsonarSRF05 . . . 51
5.6. DiagramadelmódulohardwareparaelsonarPINGUltrasonic . . . 52
5.7. DiagramadeconexiónparaelbrazomanipuladorAX-12 . . . 54
5.8. Procesodeconvoluciónutilizandomúltiplesmóduloshardware . . . 55
5.9. Subsistemaparaelco-procesadordeimágenes . . . 55
5.10.Programacióndinámicadelco-procesadordeimágenes . . . 56
5.11.Ejemplodeaplicacionesdeusuario . . . 57
5.12.Ambientedepruebaparaelrobotmóvil . . . 59
5.13.Tipos deltrosquesepueden usarconelco-procesadordeimágenes . . . 62
5.14.Coecientesparaelltrogaussiano . . . 63
5.15.Pruebasgeneralesparaelrobotmóvil . . . 66
A.1. EntornodelXilinxPlatformStudio© . . . 78
A.2. EjemplodecomoagregarmódulosenXPS. . . 79
A.3. XPS:conexióndelasseñalesE/S . . . 79
A.4. XPS:asignacióndeespaciodememoria . . . 80
A.5. Cuadrodeconguraciónparaelsoftwaredel sistema . . . 81
A.6. GeneracióndelarchivoELF . . . 81
A.7. DiagramadelmódulohardwareSRF05. . . 83
A.8. SonarSRF02ybrújulaCMPS03 . . . 84
A.9. Sensordeproximidadyseguidordelínea . . . 85
A.10.BrazomanipuladorAX-12 . . . 85
A.11.DiagramadeconexiónparaelbrazoAX-12 . . . 86
A.12.Conexióndelco-procesadorparaimágenesconlainterfazFSL. . . 87
A.13.Subsistemaparaelco-procesadordeimágenes . . . 88
A.14.Efectodelaprogramacióndinámicaenelco-procesador . . . 89
C.1. Diagramadeunacompilación cruzada . . . 100
C.2. ConguraciónLinux-WindowsparamontarLinuxenunFPGA . . . 100
C.3. DiagramadeunaarquitecturasoftwareconLinuxembebido . . . 101
C.4. FlujodediseñoenPetalinux. . . 101
C.5. GeneracióndelaimagenPetalinux . . . 102
C.6. ProcesoparabajarlaimagendePetalinux. . . 103
2.1. Resumendelasplataformascomerciales . . . 20
4.1. FuncionescapacontroladoresparaelrobotCreate© . . . 38
4.2. FuncionesdelacapabásicaparaelrobotCreate© . . . 40
4.3. Funcionesparalacapaintermedia delrobotCreate© . . . 42
5.1. Resultadosdecorreccióndegiro . . . 60
5.2. Resultadosparalapruebadesonares. . . 61
5.3. Comparacióndelprocesodeconvoluciónentreimágenessoftwareyhardware . . 63
5.4. Resultadosparalapruebadelco-procesadordeimágenes . . . 64
5.5. Tabla comparativa de ventajas y desventajas de usar FPGAs en plataformas robóticas . . . 65
5.6. Comparativaentre laplataformaFPGAylasplataformascomerciales . . . 69
A.1. Tabladecontrolconalgunosdelosregistrospara losDynamixels . . . 87
B.1. FuncionesdelacapacontroladoresdelrobotCreate© . . . 91
B.2. FuncionesdelacapabásicaparaelrobotCreate© . . . 92
B.3. Funcionesdelacapaintermediapara elrobot Create© . . . 93
B.4. Funcionesparalossonares . . . 94
B.5. FuncionesparaelmóduloI2Cylabrújula . . . 95
B.6. Funcionesparalossensoresinfrarrojos . . . 96
B.7. Funcionesparaelbrazomanipulador . . . 97
B.8. Funcionesparaelco-procesador. . . 98
Introducción
1.1. Antecedentes
Elprincipalobjetivodelarobóticaeslaconstruccióndemáquinascapacesderealizartareas
con la exibilidad, la robustez y la eciencia que exhiben los seres humanos. Los robots son
potencialmente útiles en escenarios peligrosospara el serhumano, tediosos, difícileso simple-
menteincómodos.En estesentido,setienenalosbrazosrobotsqueseempleanenlasfábricas
deautomóvilesparasoldarypintar,losrobotsmóvilesqueseenvíanaMarteoalgúnlugaren
dondeelserhumanonopuedeingresar,obien losqueseusanparalimpiarcentralesnucleares,
asícomotambiénlosrobots deservicioenloshogares;todosellossonejemplosdeaplicaciones
realesenlascualesseutilizanrobotshoyendía.
Dentrodelcampodelarobóticaexisteunavertientellamadarobóticamóvil,lacualcomosu
nombresugieretrataconrobotsmóviles,loscualessepuedendenircomounacombinaciónde
varioscomponentestanto físicos(hardware)comocomputacionales(software).Un robotmóvil
puedeserconsideradocomounacoleccióndesubsistemasparalocomoción,sensado,ciertonivel
deinteligenciaycomunicaciónentresuscomponentes(Dudek &Jenkin,2000).
Existeunagranvariedadderobots:conruedas,conpatas,brazosmanipuladores,reptantes,
humanoides, trepadores, etc. La forma de locomociónes una característica importante en un
robotmóvil,peroloqueidenticadeunaformamáselacualquierroboteslaformaencomo
combinaasensores,actuadoresyprocesadores.
Lossensoresmidenalguna característicadelentornoopropia(e.g.cámaras,sonares,para-
choques,infrarrojos,etc.),mientras quelosactuadorespermitenalrobothaceralgo,esdecir,
llevaracaboalgunaacciónenrespuestaalosensado,generalmentemoverse(e.g.motores).Los
procesadoreshacenloscómputosnecesariosyrealizanelenlacelógicoentresensoresyactuado-
res,materializandoelcomportamientodelrobotenelentornodetrabajo(Bräunl,2006).Eneste
último punto puedehaberrobots cuyoelementoprocesadorseaunmicroprocesadorobien un
microcontrolador;ambosteniendosusventajasydesventajasdependiendodelafuncionalidady
capacidaddecómputoquesequieraenelrobot.Enlaactualidadhaaparecidounanuevaforma
para la construcción de plataformas robóticas, y es mediante FPGAs, con estos dispositivos
sebuscaque sepuedan usarlasventajasde unmicrocontroladoryun microprocesadoren un
mismodispositivo.TambiénlosFPGAsposeencaracterísticasdeparalelismoyreconguración,
las cuales son buenas opciones para mejorarel poder de cómputode un robot, por ejemplo,
para elprocesamiento de videoeimágenes en tiemporeal. Adicionalmente,elFPGA permite
integrarenunsolochip procesadores,periféricos,memoria,puertos,etc.,reduciendoelespacio,
peso, costoyconsumodepotenciadelaelectrónicadecontrolyprocesamientodelrobot.
Unaplataformarobóticaesunrobotjuntoconlatarjetacontroladora,éstaúltimafunciona
comocerebrodel sistema.Este tipodeplataformasrobóticasseutilizanenlaexperimentación
einvestigaciónenambientesreales.Lasplataformasrobóticasseempleanprincipalmente enla
fasededesarrollode proyectosdesistemas robotizados,porejemploseutilizanparalaprueba
yvalidación dearquitecturas decontrol,opara examinar algoritmosde navegación autónoma
osemi-autónoma,todomediante diferentes tiposdesensores, actuadoresydemás dispositivos
electrónicos.AsíquerobotscomoPioneer(MobileRobots, Septiembre2008),Khepera(Kteam,
Diciembre2008),pueden serconsideradascomoplataformasrobóticas.
Ahora bien, una plataforma de desarrollo o simplemente plataforma, se reere solamente
alatarjetacontroladora,en estesentido,tarjetascomo laKoreBot (Kteam,Diciembre2008),
Gumstix (Gumstix, Diciembre 2008), Handy Board (HandyBoard, Diciembre 2008), pueden
ser consideradas como plataformas. En este trabajo de tesis se propone una plataforma de
desarrollobasadaenFPGA,alaquesellamaPlataformaFPGA,conestaplataformaFPGA
sebuscaresaltarlasventajasque seobtienen sobrelasplataformasbasadasen procesadoreso
microcontroladores.
Porotrolado,elaugeactualdelosdispositivoselectrónicossedebealaumentodelacapa-
cidaddeintegracióndelosfabricantesdecircuitosintegradosdigitales, dispositivostalescomo
memorias, Micros-Controladores, PLDs (Programmble Logic Devices), CPLDs (Complex Pro-
grammableLogic Devices)yFPGAs(FieldProgrammableGateArrays).Perodichoaumentono
hubierasidoposiblesinuncambioprofundoenlosprocedimientosdediseño,quetuvieronque
pasar desermanualesaestar basadosen herramientas queconsisten en complejosprogramas
decomputadora,esdecir,programasqueutilizanasuvezvariasherramientasparapoderfun-
cionar,coordinarestas herramientasy hacerquetodofuncione bajounsoloprograma,esuna
tareadifícil.Enestesentido,dejadeserprácticodescribirsistemasdigitalesmedianteunesque-
máticoomediante ecuacionesbooleanas,yporello hasidonecesarioeldesarrollodelenguajes
dedescripcióndesistemasdigitalesllamadosHDLs(LenguajesdeDescripciónHardware),entre
loscuales los más usadosson Verilog y VHDL. Aunado aesto se han desarrolladopoderosas
herramientas quepermiten eldiseño desistemas digitales paravarias áreasde aplicación,por
ejemplo,laempresaXilinx(Xilinx,Diciembre2008)cuentaconvariasopcionescomoXilinxSys-
temGenerator©queesunaherramientaquetrabajabajoelentornoSimulinkdeMATLAB©y
permiterealizarsistemasdigitalesoptimizados paraprocesamientodigitaldeseñales.Otrahe-
rramientadelamismacompañíaesPlanAhead©quepermiteoptimizarlosdiseñosdesistemas
digitalesencuantoarestriccionesdeespacioytiempo,ademásdepermitirrealizarrecongura-
ciónparcialdentrodelFPGA.Otradelasherramientasimportantesylausadaenestetrabajo
esEDK(EmbeddedDesignKit),lacualpermiterealizarsistemasembebidosconunaltogrado
deabstracciónencuantoaldiseñodeloscomponentes, deestaforma,elusuarioseenfocaala
funcionalidaddesudiseño,másqueasuconstrucción(Xilinx-2,Febrero2008).
Uno de losdispositivosdigitales hardware máspoderososque existen enla actualidad son
losFPGAs.LosFPGAssondispositivosprogramablesdepropósitogeneralcongrancapacidad
deintegración,sonmatricesdecompuertasprogramablesenelcampo,esdecir,lafuncionalidad
delFPGAesdenida por unprogramadeusuarioenlugarde estardenida porelfabricante.
También los FPGAs poseen característicascomo paralelismo y recongurabilidadque losha-
censer dispositivos interesantes para serusados enla fabricación de plataformas para robots
móviles.LosFPGAsofrecenventajassobrelossistemasbasadosenmicroprocesadoresymicro-
controladores como el paralelismo, reconguración yrealización de sistemas embebidos en un
chip,talycomosepresentaalolargodeestetrabajo.
1.2. Objetivos
El objetivo general de esta tesis es: proponer una plataforma FPGA Hardware/Software
básicapara aplicacionesen robóticamóvil. El conceptobásico paraeste trabajosedeneen
lasección1.3
Paracumpliresteobjetivogeneral,sejaronlossiguientes objetivosparticulares:
DesarrollarunaarquitecturahardwarebasadaenFPGAparaintegrardeformafuncional
unrobotmóvilconsuscomponentes.
Desarrollar una arquitectura software que permita controlar los elementos hardware e
implementaraplicacionesenunlenguajedealtonivel.
Desarrollaruna plataformaFPGA quede soporte atres componentes principales: robot
móvil,brazomanipuladorysensores.
Validarlaplataformaconaplicacionesyexperimentosquereejenlasventajasdeusarel
FPGA.
1.3. Alcances y limitaciones
Enestetrabajoserealizaunaplataforma(i.e.tarjetacontroladora/procesadora)pararobots
móvilesbasadaenFPGAs.Laplataformadasoporteaunrobotmóvilcomercialdelacompañía
iRobot llamadoCreate©,el cualpara sulocomociónconstaconunarreglo depardiferencial
con dos ruedas de tracción y una rueda tipo caster. Este robot se usa como base para ser
controladomediantelaplataformaFPGA, esdecir,seaprovechalacarcasa,lapartemecánica
y la parte de control de motores del robot. Pero la plataforma FPGA no ésta sujeta sólo a
este tipo de robot, es decir, la plataforma FPGA puede ser independiente del tipo de robot
móvil utilizado,siempreycuandoelrobot móviltengaunainterfaz abajonivel yesainterfaz
puedaserimlementadaconlalógicadelFPGA,entonceselrobotmóvilpuedeserincorporado
ycontroladomediantelaplataformaFPGA.LaplataformaFPGAtambiéncuentaconsensores
yactuadores, en concretocuenta con unbrazomanipulador,cinco sonares, unabrújula y dos
sensoresinfrarrojos.Laincorporacióndeestossensoresmuestralaexibilidaddelaplataforma
FPGA para poder incorporar una gran variedad de sensores/actuadores,nuevamente el tipo
deinterfaz de lossensores/actuadorestiene quesercompatible conlosrecursosdel FPGA, la
interfaz en un sensor/actuador comercial para robótica en la mayoría de los casos puede ser
incorporadousandolalógicadelFPGA.
ElalcanceprincipaldeestetrabajoesrealizarunaplataformabasadaenFPGApararobótica
móvil con elementos comunes en este tipo de robots, así como el proporcionar una serie de
experimentosquehagannotarqueunaplataformabasadaenFPGAstieneciertasventajascon
respecto a las plataformas basadas en microprocesadores o microcontroladores tradicionales.
Dentro de estos experimentos se tiene:añadir distintos tipos de sensoresa la plataforma con
elobjetivode demostrarquenoimportalaformade comunicacióndelossensores,siempre se
podráintegrarlamayoríadelossensoresutilizadosenrobótica.Otroexperimento eselprobar
elbeneciodel usodeco-procesadores,aumentandoasíelpoderdecómputoenunsistema,en
estecaso,serealizanpruebasdeprocesamientodeimágenesanivelhardware,aprovechandoel
paralelismoqueofrecenlosFPGAs.
La plataformapropuesta eneste trabajoes básica,donde básica signicaquedasoporte
sóloparaalgunossensores/actuadorestípicosdeunrobotmóvil(e.g.sonares,brújulaysensores
infrarrojos)ydasoportetambiénparaelcontroldeunrobotmóvilcomercial.Paraestetrabajo
loselementosquecontrolalaplataformaFPGAson:robotCreate,sonares,sensoresinfrarrojos
(de proximidad y seguidor de línea), brazo manipulador, control de motores (i.e. ruedas del
para controlar los elementos de la plataforma en un lenguaje que sea fácil de usar para los
programadoresconvencionales de robots, éstas funciones seencuentrandivididas en capas de
abstracción.
En cuanto alambientede prueba, setrabajaen unambiente estructuradoespecícamente
paravalidarelfuncionamientodelaplataformaFPGA.Eltipodeambienteesinteriorconcier-
tosobjetosextraparaeldesarrollodelosexperimentoscomomarcasenelsuelo,objetosparaser
transportados,basesparasostenerobjetos,entreotros.Laspruebasqueserealizanestánorien-
tadasprincipalmente alcorrectofuncionamientodelaplataformamásqueaprobaralgoritmos
inteligentes denavegación,odeevasióndeobstáculos,odecinemáticadelbrazomanipulador,
etc. Sin embargo, la plataforma debefacilitar la integración de este tipo de algoritmoscomo
trabajosfuturos.
LaplataformaFPGAestádivididaendospartes:laarquitecturahardwareylaarquitectura
software, aunque ambas partes funcionan en conjunto. La parte hardware debe tener toda el
hardware necesaria para dar soporte tanto al robot móvil como a lossensores. Mientras que
a nivel software, se debe ofrecer toda la programación necesaria y un conjunto de funciones
parapodermanipularelhardware delrobot. Ambasarquitecturas estánhechaspara quesean
abiertas, es decir, que se puedan añadir más componentes y funcionalidades tanto a nivel
hardwarecomosoftware.
La nalidad de incorporar el brazo manipulador es sólo para dar mayorfuncionalidad al
robot, nosepretendenexplorar nuevostécnicasparael manejode lacinemáticadelbrazo. El
brazosoloesusadopara transportarobjetos deunlugaraotroenelambiente deprueba.Las
funciones de alto nivel que seofrecen para el brazo permiten movercada uno de los motores
así como manipular sus parámetros (e.g. torque, ángulo de giro, velocidad de giro, etc.). Sin
embargo,la plataforma softwareesta diseñada para poder programarla cinemáticadel brazo
comountrabajofuturo.
Finalmente con este trabajo sepropone una plataforma para robots móviles en donde se
aprovechen las ventajas que ofrecen los dispositivosFPGA (e.g. paralelismo, reconguración)
para incrementar el desempeño delrobot. Laplataforma FPGA propuestaen este trabajono
ofrece ventajas signicativas aparentes, más bien los experimentos realizados y los resutados
obtenidos tienenel objetivode darun primer paso ydejar indicios clarosdelas posibilidades
que pueden alcanzarsepara realizaruna plataforma más robusta (i.e. soportar algoritmosde
visióneimplementar tareasen hardware queayuden alprocesador)ycompleta (i.e.que sirva
paradarsoporteamúltiplesrobots,sensoresyactuadores)quemuestrenelverdaderopotencial
deusardispositivosFPGAs.
1.4. Organización de la tesis
En esta tesis se propone una plataforma FPGA, cuya arquitecturas hardware y software
están orientadaspara aplicacionesen robótica móvil. La tesis seencuentraorganizada en seis
capítulos.
En elcapitulo 1sepresenta unabreveintroducciónaltrabajo ademásde losobjetivos,los
alcancesylaslimitaciones.En elcapítulo2semuestranlosfundamentosteóricosdelasplata-
formasexistentesenelmercadopararobóticamóvil,suscaracterísticas,algunasespecicaciones
decómoestánconstruidasycualessonlosprincipalessensoresyactuadoresconlosquecuentan.
Porotro ladoen el capítulo 3se expone brevemente lo que sonlos sistemas embebidos y los
FPGAsydecomoestosdossepuedenfusionarparaformarsistemascompletosenunsolodis-
positivo.Enelcapítulo4sepresentaeldiseñodelaplataformaFPGA,laplataformasedivide
en la parte hardware y la parte software, seilustran las funcionalidades de cada componente
delaplataforma asícomolasventajas queofrecelaimplementaciónenFPGA. En elcapítulo
5se muestrala implementación de laplataforma FPGA asícomo los experimentos y resulta-
dosobtenidos,también sedenen las característicasdel robot móvil de prueba queseutiliza.
vericar que la plataforma funciona correctamente yotros que muestran las ventajas de usar
FPGAs.Finalmente en elcapítulo 6 sedan aconocer lasconclusiones ylostrabajos afuturo
delatesis.
Plataformas para robótica móvil
2.1. Deniciones
Antes decomenzar aanalizaralgunas de lasplataformas para robóticamóvil que existen,
es necesario realizaralgunas deniciones que seseguirán en este trabajo de tesis y asíevitar
ambiguedades.Lassiguientesdenicionesestánrelacionadasconeltérminoplataforma,algu-
nosfabricantes einstitucionessiguenestas denicionesyporloquerespectaaestetrabajo se
tomarándelasiguientemanera:
Plataforma/Plataformade desarrollo. Eltérminoplataforma(oplataformadedesarrollo)
para estetrabajosereere aunatarjeta controladorapararobotsmóviles,esdecir,una
tarjeta que ofrece hardware (e.g. memorias, puertos de expansión, conectores, procesa-
dores,microcontroladores,FPGAs, etc.) y software (e.g. herramientasde programación,
ambientes de simulación, bibliotecas de funciones, etc.) que sirve para controlar robots
móviles. De estamanera tarjetascomo EyeBot, Gumstix, KoreBot, pueden ser conside-
radas como plataformas. Así que cuandose vea el términoplataforma (o plataforma de
desarrollo) se debe pensar en una tarjeta controladora, existen plataformas basadas en
microprocesadoresoenmicrocontroladores.
PlataformaFPGA. Es una tarjeta controladora/procesadora que funciona como cerebro
paralosrobotsmóvilesyqueestabasadaenunFPGA.Dichatarjetatiene alFPGAco-
moelementoprincipaljuntoconotroselementosadicionales(e.g.memoriasROM,FLASH,
RAM, conectores, botones, leds, pantallas LCD, etc.). Además dentro del FPGA seen-
cuentra implementado un sistema embebido que sirve para realizartareas de control y
procesamientodedatos.
Plataformarobótica. Seconsideraunaplataformarobóticaalrobotmóviljuntoconsutar-
jeta controladora,deestamaneralosrobotsquesevenden comercialmente (e.g.Pioneer,
PowerBot,Kephera,Surveyor,etc.)pueden serconsideradosplataformasrobóticas.
Lasplataformas robóticasseempleanprincipalmente enproyectosdeinvestigación,en donde,
porejemplo,seutilizanparalapruebayvalidacióndearquitecturasdecontrol,oparaexaminar
algoritmosdenavegaciónautónomaosemi-autónomaycuentancondiferentestiposdesensores,
actuadoresydemásdispositivoselectrónicos.
Una de las razones principales por la que grupos de investigación en robótica optan por
desarrollar sus propios prototipos de plataformas robóticas es el poder explorar y proponer
nuevos algoritmosynuevas alternativasarquitecturales anivel hardware que puedan sermás
interesantes(i.e.exibles,conmayorpoderdecómputo,etc.)comparadasconlasyaexistentes.
Esporéstoquevariasinstitucionesuniversitariasycentros deinvestigación entodoelmundo
handesarrolladodiversosrobotsexperimentales.
Ahorabien,existendiferentesnivelesdeprototipos,ungrupodeinvestigaciónpuederealizar
todalaplataformarobóticadesdecero,esdecir,conseguirlosmotores,ruedas,carcasa,sensores
(inclusoconstruirlos desde laelectrónica), etc., eir construyendo elrobot dependiendo de las
necesidades del proyecto. Esta forma puede ofrecer un robot totalmente hecho a la medida
pero difícil ytediosode realizar.Unaforma másdirectade construiruna plataforma robótica
es conseguir partes yaelaboradas (i.e. un robot comercialcon las necesidades de locomoción
sucientes, sensores especiales para robots y otros aditamentos como brazos manipuladores,
cámaras,etc.),eirconstruyendolaplataformauniendotodasestaspartes.Estotienelaventaja
dequesepuedeconstruirunrobot móvil tancomplejocomoserequiera,conlaspartes quese
necesiten,queseaaltamentemodular, expansibleyexible.
Con loanterior, laventajade construir una plataforma robóticapropia esprincipalmente
en la exibilidad y escalabilidad que se obtienen. La exibilidad se logra cuando se tiene un
dispositivo en el cual se pueda implementar una gran variedad de módulos electrónicos, que
puedanserprobadosunayotravezenelmismodispositivo,esdecir,dispositivosquepermitan
implementarunagranvariedaddearquitecturashardwarequeseadecuenalasnecesidadesdel
proyecto.Enlapartesoftwaretambiéntienequehaberexibilidad,esdecir,poderimplementar
variostiposdesistemasoperativosdeacuerdoalascaracterísticasqueseesténbuscando.Porlo
querespectaalaescalabilidad,unaplataformahardwaredebetenerlosrecursossucientespara
poderle añadir más dispositivos, protocolos de comunicación, sensores, procesadores, etc., sin
tenerquemodicartodoogranpartedelsistema.Anivelsoftware,seesperaquelaplataforma
sea escalable,esdecir, tener toda lainfraestructura abajonivel para poder implementar una
arquitectura software máselaboraday queéstasepueda ampliarpara realizarfuncionescada
vez máscomplejas,nuevamentesin tenerquerediseñartodalainfraestructurasoftwarequeya
setiene.
Las plataformas permiten al usuario programar de una manera más fácil sus algoritmos.
También una plataforma puede ofrecer distintas opciones a nivel hardware que permitan al
usuarioenriquecerlosrecursosconlosquecuentayasípoderrealizaraplicacionescadavezmás
complejas(Muñozetal.,2006).Enlasiguientesecciónsehablaendetalledelasplataformasde
desarrollo.
2.2. Plataformas de desarrollo
Lasplataformas dedesarrollosonlastarjetascontroladorasque sepueden adquirircomer-
cialmente obienrealizarlasdeformapersonalizada, ysirvenparacontrolarelrobotmóvil.
Lasaplicacionescon robotsmóvilespresentancadavezmayorcomplejidadyofrecenmayor
funcionalidad. De ahí la importancia de tener toda una infraestructura necesaria para poder
solventartodaesacomplejidad yfuncionalidadquepuedetener unrobotenespecíco.Enesta
parteesdondesedaelorigenyladiferenciaentrelapartehardwareylapartesoftwaredeuna
plataforma.
Lapartehardwareestodalaestructurafísicadelatarjetaelectrónicaquecontrolaalrobot.
Estaelectrónicageneralmenteconstadeunatarjetaquecontienedispositivoselectrónicospara
controlartodoslos elementos (i.e. sensores,actuadores, motores, cámaras,etc.) comoun con-
junto. Dentro deesta tarjeta,lacual podría considerarsecomo elcerebrodel robot, setienen
memoriasROM,RAM,FLASH,convertidoresA/D,convertidoresdenivelesdevoltaje,proce-
sadores,microcontroladores, FPGAs,DSPs, etc.Para poder controlarycoordinartodosestos
dispositivosserequieredesoftware.
Porloque respectaala parte softwarede laplataforma, setiene que elmodoen como se
programanlosrobotsha idoevolucionando. Históricamentelosrobots eran desarrollosúnicos,
no se producían en serie, y los programas de control se construían empleando directamente
loscontroladores(drivers)paraaccederalosdispositivossensorialesydeactuación.Elsistema
datosdelossensoresyenviarconsignasalosactuadores,invocandodirectamente lasfunciones
delabibliotecaqueofrecíaelfabricante ensus controladores.
Con el asentamiento de los fabricantes, el trabajo de muchos gruposde investigación y el
crecimiento en las aplicacionesrobóticas en cuanto a complejidad han ido apareciendoplata-
formasdedesarrolloqueofrecencapasdeabstracciónanivelsoftware,lascualessimplicanel
procesodeprogramacióndeaplicacionesrobóticas.Lascapasdeabstracciónenunaplataforma
de desarrollo ofrece acceso más sencillo a sensoresy actuadores, suelen incluir un modelo de
programación que establece una determinadaorganización del software y permite manejar la
crecientecomplejidad delcódigocuandoseincrementalafuncionalidaddelrobot(Cañasetal.,
2004;Cañas&Matellán,2002).El diseñadorprogramasusaplicacionesrobóticasnalessobre
estascapasdeabstracción,tal ycomo lomuestralagura2.1.
Figura 2.1: Programación de robots sobre controladores especícos de sensores y actuadores
(izquierda),sobrecapasdeabstracciónquehacenelmanejodelhardwaremássencillo(derecha),
yaquelascapasdeabstracciónofrecenbibliotecasdefuncionesqueestánenunlenguajefamiliar
paraunprogramadorconvencionalderobots.
Normalmenteelsoftwaredelasplataformasofrecenunaccesoabstractoysimpleasensoresy
actuadores.Porejemplo,sisedisponedeunrobotPioneerequipadoconunsensorláserSTICK,
laaplicaciónpuede acceder asus medicionesatravésde lasfunciones dela plataformaARIA
(MobileRobots,Septiembre2008)opedirlasyrecogerlasdirectamenteatravésdelpuertoserie.
El acceso abstracto también se ofrece para losactuadores. Por ejemplo, en vez de ofrecer
comandosdevelocidadparacadaunadelasdosruedasenunrobotconarreglopardiferencial,
sepuedeofrecerunasencillainterfazdeV-W(velocidaddetracciónydegiro)paralaactuación
motriz,lacualseencarga dehacerlastransformacionesoportunas,deenviaracadaruedalas
consignasnecesariasparaqueelrobotconsigaesasvelocidadescomandadasdetracciónygiro.
La uniformidad en las funciones software para el acceso al hardware es el primer paso para
favorecerlareutilizacióndesoftwaredentrodelarobótica.
Enlassiguientesdosseccionessehablaacercadelascaracterísticasquedebetenerelsoftware
paraunrobotmóvil,ademásseanalizanunpocolasdiferentesopcionesquesetienenencuanto
alossistemasoperativosqueexistenpararobotsmóviles.
2.2.1. Software de robots
Lacreacióndeaplicacionespararobotsnodiereenlogeneraldelacreacióndeaplicaciones
enotrosámbitosdelsoftware.Elprogramadortienequeescribirlaaplicaciónenciertolenguaje,
compilar y enlazar su códigocon las bibliotecas de la plataforma y/o del sistema operativo,
y nalmente ejecutarla en los procesadores abordo del robot. Aunque la dinámica sea simi-
lar, las aplicaciones de robots móviles sí presentan requisitos especícos que condicionan las
Escribirprogramaspararobotsmóvilesesunatareacomplicada,yaquelosrobotssonsiste-
mascomplejos,requierende estarsensandocontinuamenteyalmismo tiempotomar acciones.
Acontinuaciónsepresentanalgunascondicionespropiasdeestetipodeaplicaciones.
Losprogramasderobotsmóvilesestándirectamenteconectadosaambientesdeprueba,a
travésdesensoresyactuadores.Estoimplicaqueelsoftwaredebeserágil,tomardecisiones
con rapidez para controlar los actuadores. Por esta razón, se requiere de actuación en
tiemporeal 1
,sinoestricto,almenosblando 2
.
Una aplicación de robots móvilestípicamente debe estarpendiente de varias fuentes de
actividad yobjetivos alavez.Porelloestasaplicacionessuelenserconcurrentes,eneste
sentido,lossistemasoperativospararobotsdeberíanincorporarmecanismosdemultitarea
ycomunicacióndeinterprocesos.
Otracuestiónrelevantequedebencontemplarlasaplicacionesessuinterfazgráca.Aun-
quelainterfazgrácanoesindispensableparagenerarymaterializarelcomportamiento
autónomo en elrobot, normalmente resulta útil como herramienta deinteracción conel
usuario,yaseaparavisualizarresultados,depurar,seleccionaropciones,etc.
Los programadores de robots se enfrentan a una creciente heterogeneidad, en distintos
sentidos, que diculta su tarea. En cuanto al hardware, existe una gran diversidad de
dispositivos de percepcióny de actuación,así como de interfacesconlas cuales unpro-
gramador debe estar familiarizado si quiere escribir programasfuncionales para robots.
En cuanto al software, las aplicaciones de robots no cuentan con un marco estable, no
hay estándares abiertos que propicien la colaboración, la reutilización y la integración
decódigo.Esta faltasedebeenpartealaheterogeneidadimplícitaenrobótica,tantoen
hardwarecomoensoftwareyenpartealainmadurezdelmercadoderobotsprogramables.
Aunquehoyendíaexisteninteresantesalternativaseimportantesavancescomoporejem-
plo el software Player/Stage (PlayerStage,Junio 2008) oel Robotic Studio de Microsoft
(RoboticStudio,Junio2008).
2.2.2. Sistemas operativos
Lamisión principal delsistema operativo(SO) esofreceralosprogramasunaccesobásico
alhardwaredelrobot,permitirlamanipulaciónyusodeestehardwaredemaneratransparente
desdeestosprogramas.FundamentalmenteelSOdebeincorporarcontroladoresquedensoporte
softwaredebajonivelalosdispositivosfísicos.Elsistemaoperativosueleincluirtambiénsoporte
parael hardwarede comunicaciones(e.g. tarjetasde redinalámbricas,protocolosserial,USB,
etc.)yparaloselementosdeinteraccióndelrobot(e.g.botonesfísicos,interruptores,pantallas,
etc).
Gran parte delos robotsactualesincluyen sistemas operativosde propósito especíco.Sin
embargo,desde hace algún tiempo se ha extendido el usode sistemas operativosde propósi-
to general, empleandoen el robot bien computadoras portátiles ocomputadorasde escritorio
empotradas.El motivoprincipalde laamplia aceptacióndelosSOdepropósitogeneralessin
duda la ventajosarelación prestaciones-precio. Existen por otra parte algunas desventajas al
usarestetipodecomputadoras,comoeltamaño,potenciacomputacionallimitadaparaciertas
aplicaciones,consumodepotencia,nopuedenoptimizarseconfacilidadconrespectoalhardware
queusaporserdeusogenérico,entreotras.
1
Unsistemaentiemporealsignicaquelastareasquerealizadebenproducirsedentrodeunosintervalosde
tiempodeterminadosporladinámicadelsistemafísicoquesupervisanocontrolan.
2
Enunsistemadetiemporealblandoseintentancumplir losplazosdeejecución,peroencasoquealguna
LossistemasoperativosdepropósitogeneralcomoLinuxoWindowssehanadentradoenel
mundo delosrobots. Estos sistemas,ademásde loscontroladoreshardware,incluyen abstrac-
ciones y un conjunto extenso de bibliotecas genéricas, útiles para la programación de robots,
talescomolasbibliotecaseinterfacesparamultitarea,comunicacioneseinterfacesgrácas.
Hablandoen unsentidogeneral, GNU/Linux,esunsistema operativoquehaganadogran
aceptaciónenlacomunidadrobótica,porelpotentesoportedeGNU/Linuxparalamultitarea,
las comunicaciones remotas y las bibliotecas grácas existentes en ese entorno lo hacen un
sistema operativorelevantepara lasaplicacionesde robotsmóviles.En particularGNU/Linux
proporciona herramientas ecientes y exibles que permiten abordar con éxito la naturaleza
concurrente,distribuida y la necesidad de visualización típicas de los programaspara robots
(Cañasetal.,2004).
Recientementesehanhechoesfuerzosparadesarrollarsistemasoperativosenfocadosúnica-
mentearobots,unejemplodeelloeselRoboticStudiodeMicrosoft(RoboticStudio,Junio2008),
elcualsepuededenircomounainterfazvisualbasadaenWindowsparaelcontrolysimulación
derobotsmóviles,gura2.2.
Figura2.2:MicrosoftRoboticStudio: ambientesdeprogramaciónysimulación.Figuratomada
deRoboticStudio(Junio2008)
Robotics Studio está especialmente diseñado para programadores académicos, de entrete-
nimiento o comerciales y soporta una gran variedad de hardware para robots. Dentro de las
característicasprincipalesdeestaherramientaestán:
Plataformadedesarrollopara aplicacionesenrobótica.Herramientadeprogramaciónvi-
sual para creary depuraraplicaciones robóticas.El desarrolladorpuede interactuar con
Simulación3-D. Lasimulaciónrealista estáprovistaporel motorPhysX de AGEIA. Se
posibilitalasimulaciónporsoftware.
Entorno de ejecución orientado aservicios. El desarrolladorpuede acceder fácilmente a
lossensoresy actuadoresde losrobots, pormediode unalibrería deimplementaciónde
concurrenciabasadaen.NET. Lacomunicaciónestásbasadaenmensajes,permitiendola
comunicaciónentre módulos.
Existen otros ejemplos interesante de sistemas operativos para robots son el proyecto Pla-
yer/Stage (PlayerStage,Junio2008)yEvolution Robotics (Evolution,Agosto2008).
2.3. Plataformas comerciales
Enestasecciónsehablayseanalizanlascaracterísticasprincipalesdealgunasdelasplata-
formascomercialesexistentesenelmercado.Estasplataformassonalgunasdelasmásutilizadas
poracadémicos,estudiantesycentrosdeinvestigaciónengeneralyaqueofrecenunabuenavarie-
daddeprestacionesanivelhardwareyherramientassoftwareparapoderprogramarlas.Además
estastarjetassonunabuenaalternativaparaprobardesdealgoritmossimplesdecontrolhasta
algoritmosmáscomplejoscomodenavegación,seguimiento,visión,entreotros.
2.3.1. Handy Board
Handy Board (HandyBoard,Diciembre 2008)es unatarjeta controladorapara robots am-
pliamente utilizadaenelmercado. Estatarjetafue desarrolladaenel InstitutoTecnológicode
Massachusetts (MIT) por Fred G. Martin. La Handy Board es usada principalmente en las
universidades y por usuariospara proyectos académicos de mediana complejidad (i.e. control
demotores,controldemenosdetressonares,robots pequeñosde dimensionesaproximadasde
40 × 40
cm ysoportepara unos cuantos sensores más).En la gura2.3 semuestra la tarjetaHandyBoardylaversiónsimplicadaHandyCricketdelacualsehablamásadelante.
Figura2.3:TarjetaHandyBoard(izquierda)yunaversiónsimplicadallamadaHandyCricket
(derecha).Ambastarjetassonusadascomocontroladoresderobots,sirvenparaaplicacionesde
medianonivelendondenoserequiereprocesargrandescantidadesdedatos,comoporejemplo
en algunos algoritmosde visión por computadoracomo larecuperación en 3D, extracción de
movimientoyseguimientomultiobjetivo,entreotros.Figuratomada deHandyBoard(Diciem-
bre2008)
DentrodelascaracterísticasimportantesdelaHandyBoardsetiene:
Relojdesistemaa2MHz
32KBdememoriaRAM
SoporteparamotoresDC,sensoresIR,bus SPI
Busdeexpansiónparaconectarotrastarjetas
Existen una tarjeta de expansión para la Handy Board, la cual añade otras características,
básicamente da mayorsoporte para controlar más dispositivos. Dentro de las características
principales de esta tarjeta de expansiónestán: 10 entradasanalógicas adicionales, 4 entradas
para sensores LEGO, 9 salidasdigitales, 6 señales para el control de servos,conector para el
sonarPolaroid6500y unáreadeprototipadodepropósitogeneral, éstaúltimaesuna especie
deprotoboard.Lagura2.4muestralatarjetadeexpansiónparalaHandy Board.
Figura 2.4: Tarjeta de expansión para la Handy Board. La tarjeta de expansión le da mayor
funcionalidada la Handy Board y da soportea más sensors y actuadores. Figura tomada de
HandyBoard(Diciembre2008)
En cuanto al software para programar la Handy Board se tienen 2 opciones: programar
directamente el microcontrolador con las herramientas de Motorola, o bien se puede usar la
herramienta Interactive C, ésta última es la más común. Interactive C (IC) es multi-tarea y
consiste en uncompilador y unmódulo de lenguaje máquina que funciona en tiempode eje-
cución(run-time machinelanguage). ICesunsubconjuntodel lenguajeC,incluyendoalgunas
estructuras de control, declaración de variables globales, locales, arreglos, apuntadores, entre
otrascaracterísticas.
Existe una versiónmodicada de la Handy Board llamada Handy Cricket (HandyBoard,
Diciembre2008).Handycricketesmenospotente quelaHandyBoardencuantoadesempeño
computacional,perolaHandyCrickettienelasventajasdesermáspequeña,ligeraybarataque
laHandy Board. En cuanto al softwareque usalaHandy Cricket,utiliza ellenguajeCricket
Logo,elcualesunaversiónsimplicadadellenguajeLogo.Acontinuaciónseenlistanalgunas
delascaracterísticasmásimportantesdelatarjetaHandyCricket:
Control paramotoresyluces.
Aplicacionesdeestetipodetarjeta:controlderobotspequeños, juguetesautomatizados,
lecturadetemperatura,etc.
Busde expansiónpormediodelcualsepueden conectardiversastarjetaspara controlar
másmotores,servos,desplegadores,reelevadores.
2.3.2. Bot Board
LaBotBoardII,desarrolladaporLynxmotion(Lynxmotion,Diciembre2008),esunatarjeta
quedasoporteavariosmicrocontroladoresBasicAtomdelamismacompañía.Latarjetaintegra
variosperiféricosparacontrolarmotoresyalgunossensoresperoquesucaracterísticaprincipal
es que puede ser controlada hasta por 6 diferentes microcontroladores de 24 ó 28 pines. La
gura2.5 muestra laBot Board junto con los microcontroladoresque soporta. Dentro de las
característicasprincipalesdeestatarjetaestán:
DasoporteparaservosymotoresDC
Entradasanalógicasydigitales
PuertoPS2paraconectaruncontroladorPlayStation
Interfaz de usuario por medio de leds y botones, en donde el usuario se da cuenta del
estadodelatarjeta
Bocinaparagenerarsonidosmediantecomandosespeciales
Figura 2.5: Tarjeta Bot Board II y los microcontroladores que pueden ser utilizados en ella.
FiguratomadadeLynxmotion(Diciembre2008)
En cuanto alsoftwareque seutilizapara programarlaBotBoard,seusaelAtomProLan-
guage, elcualesuna versiónlimitadadellenguajeBasic ytiene uncompiladorelcualincluye
funcionesespecícasparacontrolarlosperiféricosdelatarjeta.
Encuantoalastarjetasdeexpansión,setienenalatarjetaSSC-32quesirveparacontrolar
2.3.3. KoreBot
KoreBotesunatarjetadelaempresaK-team(Kteam,Diciembre2008)quefuediseñadapara
incrementareldesempeñodelrobotmóvilKoala.Estatarjetaposeeunsistemaoperativoembe-
bidobasadoenLinuxparaelfácildesarrollodeaplicaciones,estábasadaenunmicroprocesador
XSCALEPXA-255a400MHzytienelassiguientescaracterísticas:
MemoriaRAMde64MBymemoriaashde32MB.
BusI2C,SPI/SSP
InterfazUARTBluetooth
TarjetadesonidoAC97
50pinesE/Sdepropósitogeneral
ControladorLCD
PinesparaseñalesPWM
Enlagura2.6semuestralatarjetaKoreBotlacualtieneeltamañoaproximadodeunatarjeta
de crédito. En cuanto a las tarjetas de expansión, KoreBot tiene la capacidad de poder ser
conectadaconotrosmódulos delamismacompañía,comoelKoreMotor,KoreSound,KoreIO,
los cuales sirven para conectar motores DC, conectar señales de audio y puertos E/S tanto
analógicoscomodigitalesrespectivamente.
ElsoftwarequeseutilizaesunadistribucióndeLinux2.4.19yunprogramadorfamiliarizado
con Linux puede desarrollar aplicaciones para la KoreBot (Kteam, Diciembre 2008), sólo es
necesariotenerlasherramientasdecompilación-cruzada(cross-compilation)parapoderejecutar
elprogramaenlaplataformaKoreBot.
KoreBot es utilizada como cerebro para los robots Kephera III de la misma compañía.
También seusa en el Spiderbot el cuales un robot con patas y algunos otros proyectosen
centrosdeinvestigación.
Figura2.6:TarjetaKoreBotusadaparaaplicacionesembebidasderobótica,aunquetambiénse
usaparaaplicacionesdepropósitogeneral.Figura tomadadeKteam(Diciembre2008)
2.3.4. Gumstix
Gumstix (Gumstix, Diciembre 2008) es la marca registrada de una computadora en una
tarjetabasadaenelprocesadorIntelXScale(400MHz-600MHz).Alatarjetasepuedeacceder
empotradoy es utilizada para aplicacionesde propósito general, es simplemente una compu-
tadorapequeña que ofrececiertasprestaciones encuanto adesempeño yperiféricos.La gura
2.7muestralatarjetaGumstix VerdexPro,lacualesunadelastarjetasmáspopularesdentro
delagamaGumstix. Lascaracterísticasprincipalesdeestatarjetason:
64MBdeRAMy16MBdememoriaFlash
adaptadormicro-SD
3conectoresde60,80y24pinesparaconectartarjetasdeexpansión
InterfazUSB
3puertosUART
hasta90pinesE/S
BusI2CyBluetooth
Figura 2.7: Tarjeta Gumstix utilizada como computadora pequeña de propósito general, es
pequeña yliviana. GumstixesparecidaalaKoreBot,sóloque estaúltima estáorientadama-
yormenteparaaplicacionesrobóticas.FiguratomadadeGumstix(Diciembre2008)
2.3.5. Plataformas para Visión
Existenalgunasplataformasdedicadasalapartedevisiónenlosrobots. Lavisiónesquizá
unodelossensoresmásimportantes enunrobot.La visióncomputacionalesuna delasáreas
deinvestigacióncon muchointerés, yaqueel proveerdel sentidode lavista aunrobotmóvil
puede darle ventajas similares de navegación, localización y percepción que a los animales o
personas. Desafortunadamente los algoritmos de visión computacional son muy demandantes
computacionalmente (del ordende varios GOPS)para tareas de complejidad medianay alta,
estoha llevado alosalgoritmosasersimplicados parapoderusarlos en robóticamóvil. Una
alternativaesintegrarelprocesamientoalacámara(Rodriguez&Arias,2002;Arias&Torres,
2001),yasídescargaralprocesadordetareasdebajoniveldelavisión.Siguiendoestalosofía
sehandiseñadoalgunas plataformasparavisión robótica.Acontinuación seanalizandospla-
EyeBot
EyeBot (Eyebot, Diciembre 2008) es una tarjeta controladora para robots, la cual puede ser
usadaenrobots conruedas,robotscaminantes, etc.Sebasaenunmicrocontroladorde32bits
con un desplegador grácoy una cámara digital en escala de grises o acolor. La cámara es
unatarjetaapartedelaEyebotyseconectadirectamente alEyeBot.Estopermiteprogramar
potentesaplicacionessinlanecesidaddeunacomputadoragrandeypesadaquetengaquecargar
elrobotyademássintenerquesacricarlapropiedaddevisióndelrobot.Lagura2.8muestra
latarjetaEyeBotylacámaracompatibleconestetipodetarjeta.
Figura2.8:TarjetaEyebot(izquierda)ycámaraEyeCamcompatibleconEyeBot(derecha).La
tarjeta EyeBot seusa para aplicaciones sencillas de visión y maneja algunos motores. Figura
tomadadeEyebot(Diciembre2008)
DentrodelascaracterísticasprincipalesdelatarjetaEyeBotestán:
Programacióndeaplicacionesquecontenganprocesamientodeimágenes
Extensiónparacontrolarmecanismosysensorespropios
LCD grande(64x128pixels)
ProgramaciónmediantelenguajeColenguajeensamblador
2puertosseriales
puertosdigitalesdeE/S
puertosanalógicos
micrófonoybocina
En cuanto a la cámara EyeCam se tiene que es una cámara acolor de 24 bits de resolución
porpixel,tieneunabajaresolución(
80 × 60
)yunamedianaresolución(480 × 640
),utilizaunsensorcontecnologíaCMOS,elcualtiene unmejorrangodebrilloquelascámarasCCD,otra
característicadelaEyeCam essutamaño(
3 × 3,4
cm).ElsoftwarequesenecesitaparaprogramarlaEyeBotylaEyeCamsellamaRoBIOS,que
consisteenunconjuntodebibliotecasqueofrecendiferentesfuncionesparaelprocesamientode
imágenes, salidaalLCD,conguraciónde lacámara, semáforos,manejo temporizadores, con-
trolde puertosseriales, etc.Dentro delasfunciones deprocesamiento deimágenessetiene:el
operadorlaplaciano,operadordesobel,operadordedithering,diferenciadeimágenesyconver-
sióndeimagenRGB aescaladegrises.EyeCamesunatarjetaquetiene pocasoperacionesde
CMUcam
CMUcam(CMUcam,Diciembre2008)esundispositivodebajocostousadoparaaplicacionesde
visiónpor computadora. Básicamente lagama decámarasCMUcams (CMUcam1,CMUcam2
y CMUcam3) se basan en una cámara de video pequeña y un microcontroladorcon interfaz
serial.LaCMUcamfuepensadaparaserliviana,pequeñaydebajocosto,ademásdepoderser
usadaporotrosmicrocontroladorescomotarjetaqueseadhiereaunaplataformamásgrande.
LaCMUcampuederealizartareasdeprocesamientodeimágenesydeseguimientodepequeños
objetos dentro de la imagen, la plataforma CMUcam es muy utilizada en los robots móviles
para agregarlela capacidadde visión a losrobots. Lacámara originalmente fue hecha por la
universidaddeCarnegie-Mellonydespuéssulicenciafuedadaparavariosfabricantes.Lagura
2.9muestralatarjetaCMUcam3,lacualtiene untamañopequeño(5.5x5.7cm).
Figura2.9:CMUcam3,tarjetabasadaenunmicrocontroladoryunacámaraparatareasdevisión
por computadora.LaCMUcam3 ofrecemayores ventajas sobrela tarjetaEyeBotencuanto a
lasoperacionesquepuederealizarsobrelasimágenescapturadas.Figura tomadadeCMUcam
(Diciembre2008)
Dentrodelasprincipalescaracterísticasdeestaplataformasetienen:
BasadaenunsensorCMOSOmnivision
Resoluciónde352x288RGB color
Cargaimágenesenmemoriaaunavelocidadde26FPS
EntornodedesarrollodecódigoabiertoparaWindowsyLinux
Controlahasta4servos
EmulacióndelatarjetapredecesoraCMUcam2
Sirvepara aplicacionesen Robótica,vigilancia,proyectosacadémicos,juguetesinteracti-
vos,reconocimientodeobjetos,etc.
La CMUcam3 puede programarse convarios imágenes rmware 3
. En donde dichas imágenes
pueden desempeñar diferentes y especícas tareas, por ejemplo se pueden programar aplica-
ciones de seguimiento, reconocimiento de rostros,vigilancia, etc. Si el usuario desarrollauna
3
Firmware esunbloquedeinstruccionesdeprogramaparapropósitosespecícos,yseencuentragrabadoen
unamemoriadetiponovolátil(e.g.ROM),elrmwareestablecelalógicademásbajonivelparacontrolarlos
aplicación propia necesita cargar en memoria Flash dicho programa, esto puede lograrse por
mediodelpuerto serial yusandounautilidaddeprogramación.Dentrodelasoperacionesque
puederealizarlaCMUcam3están:recortarunaseccióndelaimagen,submuestreodeimágenes,
funcionesdeconvoluciónyumbral,entreotras.EngenerallaCMUcam3ofrecemejordesempeño
encuantoalasoperacionesquepuederealizarquelaEyeCam.
2.4. Resumen de plataformas
Paranalizarenlatabla2.1seresumenlascaracterísticasmásimportantesdelasplatafor-
mascomerciales.Dondesepuedencompararlasdiversasopcionesquesetienenparatrabajaro
adquiriralgunadeestastarjetas.Alnaldelcapítulo5sevuelveacompararestasmismasplata-
formascomercialesconlaplataformaFPGApropuestaenestetrabajo.Adicionalmentesehace
unaestimación dela potenciacomputacional decada unade lastarjetaspara tenerunpunto
adecuadodecomparación,ydondeestapotenciacomputacionalgeneralmentenoesmencionado
abiertamentepor elfabricante.Lapotenciacomputacionalesunaestimaciónbasadaeneltipo
deCPU usadoy lafrecuencia deoperacióndelreloj. En estesentidolatarjeta Gumstixes la
máspotentecomputacionalmente.Lasprincipaleslimitantesquetienenestetipodetarjetasco-
mercialesesquealgunasfueronhechassolamentepararealizartareasdecontrolyporellousan
microcontroladores, algunasotrascomo la Gumstixy KoreBot tienenmayorpotenciacompu-
tacionalporelusodemicroprocesdores,otrascomolaEyeBotyCMUcam3hacenprocesamiento
paratareas devisiónpero porsísolassoportanuna cantidadlimitadadesensores/actuadores,
másbien seusan para incorporarsecomo unsensor inteligente aotraplataforma. Esto lleva
atenerdiversasplataformascomercialesparausosyobjetivosdiferentes,teniendoqueadquirir
varias de ellas para diferentes proyectosde robótica. Una opcióninteresante podríaser tener
una plataformaque pueda servirpara diferentes usosy objetivos, aparteque ofrezcarecursos
sucientesparatenerunapotenciacomputacionalaceptable(comolaKoreBotoGumstix).En
elsiguiente capítulo sepresentanlosdispositivosFPGA yeltema de sistemas empotradosen
FPGAs,endondesepodrávisualizarqueestetipodedispositivos(FPGA)puedencontrarestar
laslimitantes delasplataformascomerciales.
20CAPÍTULO2.PLATAFORMASPARAROBÓTICAMÓVIL
uC
Cricket
uC
+procesador
uC
uP uP uC uP
Procesador Motorola8bit
68HC11
2MHz
Microchip8bit
PIC16C715
4MHz
BasicAtom-
Pro16bit
H8/3664F
100KIPS
Intel32bit
XSCALE
PXA-255
400MHz
Verdexpro
Marvell
PXA270
400-600MHz
Motorola68332
32bitController
25MHz
NXPLPC2106
ARM7
60MHz
Potenciacomp.
estimada
0.5-1MIPS 1-2MIPS 0.1MIPS 200-300MIPS 200-500MIPS 15-20MIPS 40-50MIPS
Softwarede
programación
InteractiveC CricketLogo AtomPro
Language
Linux2.4.19 Linux2.6.27 RoBIOS CustomCcode
Memoria 32kB 4kB 4kB 64MB 64MB 1MB 64KB
Características
ysoportepara
Senso-
res/Actuadores
-4motoresDC
(1A)
-pantallaLCD
-7entradas
analógicas
-9entradas
digitales
-2IR
(trans/recep)
-Bocina
-4motoresDC
-1sensoresIR
-6sensores
digitales
-8servos
-bocina
-Bocina
-PlayStation
Conector
-Leds,botones
-16pinesE/S
-16bus
(Servos,
motoresDC,
pinesE/S)
-Socket24/28
pines
-1KB-250
Interfaz(3
Seriales,4USB,
1I2C,1SPI,1
AC97,53
GPIOs)
-2RS232
-1USBCliente
-USBhost
-3UARTs
-hasta90
GPIOs
-1I2CBus
-1Bluetooth
-cameradigital
-2motoresDC
conencoders
-12servos
-6sensoresIR
(o6entradas
digitales)
-2parachoques
(o2entradas
digitales)
-6entradas
analógicas
-LCD,bocina
-sensorRGB
color352x288
-4servos
Protocolos -SPI -IR -UART -I2C
-UART
-SPI
-USB
-I2C
-UART
-USB
-Bluetooth
-UART -UART
-SPI
Expansión -conectorSPI
-conector
analógico
-Tarjetade
Expansión
(sensores
analógicos,
LEGO,salidas
digitales,
servos)
-BusPort
(tarjetasde
display,motores
DC,servos,
reles,leds,etc)
-SSC-32
-SaberTooth
-KoreMotor(4
motoresDC)-
KoreConnect
(RS232yUSB)
-KoreSound
(audioE/S)
-KoreIO(pines
E/Sanalógicos,
salidas
digitales,
servos)
-RoboAudio
-Robostix(SPI,
I2C)
-GPSstix
(GPS,Audio,LCD,USB) -EyeCam
(sensorCMOS)
640x480pixels
Precio(USD) $299 $139 $25
+$60
processsor
$440
+$190expan.
$159
+($30-$130)
$1,000 $239
Tamaño(cm) 10.8x8 5.7x4.8 10x8 8.5x5.7 8x2 10.6x10 5.5x5.7
Peso(grs) 200aprox. <200 90aprox 35 8 115aprox 200aprox
Alimentación 12vDC,
500mA
5-6vDC,
500mA
9-5vDC,
500-250mA
5vDC,
250mA
3.6V-5.0VDC,
500mAaprox
7.2-9vDC,
270mA
5vDC,
130mA
Tabla2.1:Resumendelaspropiedadesdealgunasdelasplataformascomercialesmásutilizadaspararobotsmóvilesqueexistenenelmercado.
Sistemas embebidos y FPGAs
EnestasecciónsedaunabreveintroducciónteóricaalosconceptosdeSistemasEmbebidos
(SE)ydelosFPGAs,yaquelalaplataformapropuestaenestetrabajoestabasadaenrealizar
unSE enunFPGA.
3.1. Sistemas embebidos
Un sistema embebido o empotrado (Embedded System) es un sistema computacional de
propósito especial que se integra en un solo circuito integrado (o pocos circuitos integrados
íntimamente acopladosen un espacio reducido) un sistema computacional completo, esto es,
integraprocesadores,memoriasRAM, ROM,periféricos,buses, etc.Un SE estádiseñadopara
desempeñar unafunción/tareaenespecícoyusualmenteconpocosrequerimientos.Yaqueun
SEestáenfocadoparatareasespecícas,éstesepuedeoptimizar,reduciendoelcostoytamaño
del producto nal. Así que dos de las características principales son el precio y el consumo.
Puestoquelossistemasembebidossepuedenfabricarpordecenasdemillaresopormillonesde
unidades,unadelasprincipalesventajasesquesepuedenreducirloscostos,yaquesuelenusar
unprocesadoryuna memoriarelativamentepequeños(Donetal.,2005).
Los sistemas embebidos (SE) son sistemas altamente integrados. Suelen ocuparmuy poco
espacio y tener un consumo de potencia reducido. Con la entrada al mercado de lasFPGAs
los SEs aún se pueden reducir más, y se puede hablar de sistemas SoC (system on a chip, o
sistemaenuncircuitointegrado), esdecirtodounsistema compuestodeprocesador,memoria
ycircuitosdeapoyopersonalizadospuedenentrarenunsolocircuitointegrado.Laimportancia
de un SE también radica en su potenciacomputacional, yaque está optimizado en cuanto a
espacioycapacidaddeprocesamiento ysóloocupalosrecursosnecesariosparadesempeñar la
tareaparaelquefuehecho.
Un SEpuedellegarafuncionaraunaescalacompetitivadeMIPS (MegaInstruccionesPor
Segundo),mientrasqueunaPCpuedellegarafuncionaravariasGOPS(GigaOperacionesPor
Segundo),peroladesventajadeestoúltimoeslanecesidaddellevarunaLaptopounaPCenel
sistema,siendoparaciertotipodedispositivos(e.g.comoalgúnrobotmóvilpequeño)unacarga
grandeypesada,ademásdefuncionarconprocesadoresestrictamente secuenciales,impidiendo
asíexplotarelparalelismonecesarioparaalgunasaplicaciones.
Físicamente,unSEpuedeserdesdedispositivosdeusodiariocomo relojesdigitales,repro-
ductoresMP3,celulares,lavadorashastainstalacionesgrandescomouncontroladordelucesde
tráco,controladoresen fábricasosistemas enplantas nucleares.En términosde complejidad
un SE puede ir desde algo simple, porejemplo con un microcontrolador hasta sistemas más
elaboradoscon múltiples unidades,periféricos y redes montadas dentro deun mismo chasis o
estructurafísica.
3.1.1. Características
Dentrodelascaracterísticasmásimportantesdeunsistemaembebidosetienenlassiguientes:
Un SE está diseñado para realizaruna oalgunas tareas especícas, adiferencia de una
computadoradepropósitogeneral,diseñadaparadesempeñarmúltiplestareasdediferente
índole.
UnSEnosiempreesunbloqueseparadoocompletoporsísolo,muchasvecesesintroducido
físicamente dentrodel dispositivoalcualvaacontrolar.Porejemploen unautomóvil se
tienendecenasdesistemasembebidosfuncionando,sinembargodescubrirlosasimplevista
resultadifícilporqueseencuentranenformadeaireacondicionado,reproductordemúsica,
automatizacióndefrenos,etc.
ElsoftwareescritoparaunSE,avecesesllamadormware,esguardadoenunamemoria
FLASHdeloschips,másqueenundiscoduro.Estesoftwareamenudoseejecutaymaneja
pocosrecursoshardware.
En general,un SE consiste de un sistema con microprocesadorcuyohardware y software es-
tánespecícamentediseñadosyoptimizadospararesolverunproblemaconcretoecientemente,
comopor ejemploaparatoselectrodomésticos,controladoresdeprocesosenuna empresa,con-
troladoresdesemáforo,etc. NormalmenteunSE interactúacontinuamenteconelentornopara
vigilarocontrolaralgúnprocesomedianteunaseriedesensores.ElhardwaredeunSEsediseña
normalmenteaniveldecircuitosintegrados,odeinterconexióndePCBs,buscandolamínima
circuiteríayelmenortamañoparaunaaplicaciónenparticular.Otraalternativaeseldiseñoa
niveldePCBs queconsisteenelensambladode placasconmicroprocesadorescomercialesque
respondennormalmenteaunestándarcomoelPC-104.Esta últimasoluciónaceleraeltiempo
dediseño pero nooptimizani eltamaño delsistema,ni el númerodecomponentes utilizados,
ni elcosteunitario.En general,unsistema embebido simplecontaráconunmicroprocesador,
memoria,unos cuantos periféricos de E/S y un programadedicado a una aplicaciónconcreta
almacenadopermanentementeenlamemoria.Eltérminoembebidooempotradohacereferencia
alhechodeque lacomputadora estáencerradaoinstalada dentrodeunsistema mayorysu
existenciacomocomputadora puedenoseraparente.
MuchosSEssonsistemasdetiemporeal.Un sistemadetiemporealdeberesponder,dentro
de un intervalo restringido de tiempo, a eventos externos mediante la ejecución de la tarea
asociada con cada evento. Los sistemas de tiemporeal sepueden caracterizarcomo blandos 1
oduros(soft / hard).Si unsistema de tiempo realblando nocumple consus restriccionesde
tiempo,simplementesedegradaelrendimientodelsistema,perosielsistemaesdetiemporeal
duronocumple consusrestriccionesdetiempo,elsistema fallará.
Un SE complejo puede utilizar unsistema operativo como apoyopara la ejecución de sus
programas. La utilización de un sistema operativo de tiempo real (RTOS) es común en los
sistemas embebidos, un RTOS es un sistema operativo diseñado y optimizado para manejar
fuertesrestriccionesdetiempo(Li&Lao,2003).
3.1.2. Componentes
Comomuestralagura3.1unsistemaembebidoestácompuestoporcuatroelementosprin-
cipales:CPU,memoria,busesyperiféricos,aunquepuedehaberotroscomponentesdependiendo
del sistema.El CPU es elelemento procesadorde datosy puede serun microprocesador,mi-
crocontrolador,DSPobienunFPGA.Enloselementosdememoriavanalmacenadostantolos
datos comoel propioprogramaque ejecuta elsistema,también lamemoriapuede servirpara
guardarunsistema operativoobien comomemoriacache.En cuantoalosperiféricos estodo
1
Enunsistemadetiemporealblandoseintentancumplir losplazosdeejecución,peroencasoquealguna
aquelloqueelsistematieneparacomunicarseconelmundo exterior,puedenserelementosde
comunicación, sensores,motores, antenas, etc., aunquepuede haber periféricos quefuncionen
internamente.Ynalmentedebehaberconexionesquepuedan comunicaryuniratodosestos
elementos y para eso están losbuses, losencargados decolocarlas reglas de intercambiode
datosentre losdistintoscomponentesdelsistema.
Figura3.1:Componentesqueformanunsistemaembebido:Procesador,Buses,MemoriayPe-
riféricos.Una delascaracterísticasesquetodoseencuentraenunsolocircuitointegrado oen
unconjuntoreducidodecircuitosintegrados
Hablando enmás detalle deloscomponentes deun SE,setieneque enla partecentral se
encuentraelmicroprocesador,microcontrolador,DSP,etc.EsdecirlaCPUounidadqueaporta
elprocesamientodedatosalsistemaylagestióndetareasyrecursoshardware.Lacomunicación
adquieregranimportanciaenlosSEs.Lonormalesqueelsistemapuedacomunicarsemediante
interfacesestándardecable oinalámbricas,porejemplo RS232,RS485,SPI, I²C,CAN, USB,
IP,WiFi, GSM,GPRS, etc.Puedehabertambiénunsubsistemadepresentaciónquesueleser
unapantallagráca,táctil,LCD,alfanumérico,etc.
Sedenominanactuadores(tambiénconocidoscomoactivadoresoaccionadores)alosposibles
elementoselectrónicosqueelsistemaseencargadecontrolar.Puedeserunmotoreléctrico, un
conmutadortiporele,unosleds,etc.
Tambiénpuedehaberunmóduloderelojqueeselencargadodegenerarlasdiferentesseñales
derelojapartirde unúnicoosciladorprincipal.El tipo deosciladoresimportante porvarios
aspectos:porlafrecuencianecesaria,porlaestabilidadyporelconsumodecorrienterequerido.
Otromóduloimportanteeseldeenergía,elcualseencargadegenerarlastensionesycorrientes
necesariasparaalimentar losdiferentescircuitosdel sistema.Elconsumodeenergíapuede ser
determinanteeneldesarrollodealgunosSEsquenecesariamentesealimentanconbaterías,por
loqueeltiempodeusodelSEsueleserladuracióndelacargadelasbaterías.
3.2. FPGAs
LosFPGAs (Field Programmable Gate Arrays)están revolucionandolamanera enque los
diseñadoresdesistemasimplementanlógicadigital,reducenradicalmenteloscostosyeltiempo
de desarrollo para implementar sistemas digitales completos dentro de un solo chip (Xilinx,
Diciembre2008).
Undiseñadordesistemaselectrónicosdisponedediversasopcionesparaimplementarlógica