scieee Science in your language
[es] (orig)

Desarrollo y modelado 3D de planta termosolar

Abstract

En un mundo donde la demanda energética es cada vez mayor, a la par que cada día se intenta apostar cada vez más por la sostenibilidad ambiental, no parece viable dejar de apostar por la generación eléctrica a partir de energías renovables. La obtención de ella a partir del Sol en plantas termosolares es una rama más de todo el árbol de opciones disponibles. En paralelo a lo anterior, y en concreto en los últimos años, el crecimiento de las nuevas tecnologías aplicadas a la robotización y automatización de tareas en la industria han abierto un nuevo paradigma. Las plantas de generación no se quedan atrás, y la incorporación de estos nuevos métodos es algo que, al igual que en muchos otros campos, puede proporcionar muchas ventajas. A lo largo de este proyecto se desarrolla un entorno de simulación de una planta termosolar real, con el fin de dotarla de capacidad de interacción con futuros modelos que se incorporen a ella. Esto permite disponer de todo un campo de pruebas de cara a ensayos y pruebas de cualquier tipo de robot enfocado a la inspección, soporte o vigilancia de la planta, entre otros. Para ello, y usando como base ROS y Gazebo, se diseña y programa una simulación de planta termosolar a partir de una real, intentando ser lo más fiel posible a esta. En gran parte, esto es posible gracias a que se crean los modelos existentes en la planta desde cero, usando Blender, manteniendo así el mayor nivel de detalle posible siempre que el rendimiento de la simulación no se vea afectado. Una vez se incorporan estos modelos a la simulación, es posible realizar diferentes análisis dinámicos de cara a obtener el mejor método para el movimiento general de la planta. Por otro lado, también se realiza una gestión y automatización de los elementos de la planta mediante XML y Python. Esto implica adaptar el sistema de comunicación de ROS a las diferentes tareas que surgen, sobre todo dado el elevado número de modelos con el que se trabaja, así como los diferentes casos puntuales que deban ser tratados con distinción respecto al resto. Por último, se incorpora a la simulación un robot de inspección básico, el cual es controlado manualmente por teclado y permite mostrar cual es el comportamiento general de un elemento externo a la planta cuando es introducido en la simulación. Esto sienta las bases a futuros proyectos complementarios y de ampliación de diversos enfoques.

Read accessible full text

Desarrollo y modelado 3D de planta termosolar

Author: Mayoral Briz, Eduardo
Year: 2021
Source: https://idus.us.es/bitstreams/1a7e26fd-895f-4a4a-ad37-c7c29135808c/download
Equa ion Chap e 1 Sec ion 1
Au o : Edua do Mayo al B iz
Tu o es: An onio J. Gallego Len
Ramón A. Ga cía Rod íguez
Se illa, 2021
T abajo Fin de Más e
Más e Uni e si a io en Ingenie ía Indus ial
Desa ollo y modelado 3D de plan a e mosola
Dp o. de Ingenie ía de Sis emas y Au omá ica
Escuela Técnica Supe io de Ingenie ía
Uni e sidad de Se illa
iii
T abajo Fin de Más e
Más e Uni e si a io en Ingenie ía Indus ial
Desa ollo y modelado 3D de plan a e mosola
Au o :
Edua do Mayo al B iz
Tu o :
An onio J. Gallego Len
P o eso
Ramón A. Ga cía Rod íguez
P o eso
Dp o. de Ingenie ía de Sis emas y Au omá ica
Escuela Técnica Supe io de Ingenie ía
Uni e sidad de Se illa
Se illa, 2021
P oyec o Fin de Ca e a: Desa ollo y modelado 3D de plan a e mosola
Au o :
Edua do Mayo al B iz
Tu o es:
An onio J. Gallego Len
Ramón A. Ga cía Rod íguez
El ibunal nomb ado pa a juzga el P oyec o a iba indicado, compues o po los siguien es miemb os:
P esiden e:
Vocales:
Sec e a io:
Acue dan o o ga le la cali icación de:
Se illa, 2021
El sec e a io del T ibunal

ii
A mi amilia, mi pa eja y mis
amigos
A mis maes os
ix
Ag adecimien os
Es e abajo no hubie a conocido nunca un inal si no hubie a sido po el apoyo incondicional de mi amilia, de
Ma ía y de odos mis amigos, y ep esen a un p ecioso b oche inal a oda es a e apa de es udios uni e si a ios
en la Escuela de la que, a pesa de las di icul ades, gua da é un boni o ecue do.
G acias ambién a An onio y Ramón po oda la ayuda, el ap endizaje, y po en ende con paciencia en odo
momen o mi si uación pe sonal a lo la go del desa ollo del abajo.
No hab ía log ado es e éxi o si cualquie a de es as piezas del puzle no hubie a es ado en su si io.
G acias a odos.
Edua do Mayo al B iz
Se illa, 2021
4.4 Modelado de un colec o 38
4.5 Modelado de un lazo 39
5 Dinámica de la simulación 43
5.1 Mo imien o de un colec o 43
5.1.1 Idea inicial: uso de opics de Gazebo 44
5.1.2 C eación de plugins p opios como p ime a al e na i a 45
5.1.3 Idea inal: con ol en bucle ce ado 45
5.2 Mo imien o de un lazo 50
5.3 Ges ión de a ios lazos 51
5.4 Sc ip s de au oma ización del mo imien o 54
5.4.1 De ección de opics ac i os 54
5.4.2 Escucha en posición de eposo 54
5.4.3 Mo imien o gene al 55
6 Implemen ación del obo de inspección 57
6.1 Modelado del obo 57
6.2 Con ol manual del obo 58
7 Conclusiones y líneas u u as 61
Anexo A. Código implemen ado 63
A.1 Lanzamien o de la simulación: mul i_lazo_main.launch 63
A.2 Gene ación de un modelo de lazo: mul i_lazo_main.launch 66
A.3 Mundo de la simulación (SDF): simple.wo ld 67
A.4 Modelo de lazo (URDF): lazo.u d 72
A.5 Sc ip pa a senso en modo espe a: home_lis ene .py 75
A.6 Sc ip pa a gene ación de opics: opic_pub_gene a o .py 76
A.7 Sc ip pa a au oma ización de mo imien o: mo e_au o.py 77
Re e encias 81
Glosa io 83

x ii
ÍNDICE DE FIGURAS
Figu a 1-1. Módulo cap ado (P o e mosola , 2020). 2
Figu a 1-2. Esquema simpli icado de la plan a. 2
Figu a 2-1. Dis ibuciones ROS en los úl imos cinco años (ROS Wiki, 2018). 5
Figu a 2-2. Ejemplo de la unción del ROS Mas e , de izquie da a de echa (ROS Wiki, 2018). 7
Figu a 2-3. Ejemplo básico del Compu a ion g aph de ROS (The Robo ics Back-End, 2021). 8
Figu a 2-4. Modi icación implemen ada en .bash c. 9
Figu a 2-5. Ejemplo de la je a quía de a chi os den o del wo kspace (De elop Pape , 2020). 10
Figu a 2-6. O ganización del paque e p cplan . 10
Figu a 2-7. Inicialización y compilación del wo kspace. 14
Figu a 3-1. In e az de Gazebo as la p ime a ejecución. 16
Figu a 3-2. Ejemplo de a chi o .launch básico. 17
Figu a 3-3. Resul ado de q _g aph as ejecu a el a chi o .launch básico (nodos en elipses, opics en
ec ángulos). 17
Figu a 3-4. Apa ado de las ísicas en el a chi o .wo ld. 19
Figu a 3-5. Apa ado de la escena en el a chi o .wo ld. 20
Figu a 3-6. Apa ado de la iluminación en el a chi o .wo ld. 20
Figu a 3-7. Ma e ial implemen ado pa a el suelo en la simulación. 22
Figu a 4-1. A la izquie da, modo edición. A la de echa, modo obje o. 26
Figu a 4-2. De izquie da a de echa: au osmoo h aplicado con ángulos de 0º, 15º, 30º y 90º. 27
Figu a 4-3. Aplicación de ex ude: en el cen o, po de ec o; a la de echa, ex ude indi idual. 28
Figu a 4-4. Aplicación de inse aces en la ca a supe io de un cubo. 28
Figu a 4-5. Aplicación de be el en la ca a supe io de un cubo. 28
Figu a 4-6. Aplicación de loop cu en un cilind o pa a pos e io ex usión. 29
Figu a 4-7. Aplicación de spin en un cuad ado, usando 12 pasos y 360º de gi o. 29
Figu a 4-8. Uso de a ay con o ación pa a c ea una cadena a pa i del modelo de un eslabón. 31
Figu a 4-9. De izquie da a de echa, uso de boolean con pa áme os union, di e ence e in e sec . 31
Figu a 4-10. Uso de mi o sob e el eje en e de, y pos e io uso de a ay. 31
Figu a 4-11. Aplicación de solidi y en supe icie cilínd ica. 32
Figu a 4-12. De izquie da a de echa: modelo o iginal; subdi ision su ace aplicado una ez; subdi ision su ace
aplicado es eces. 32
Figu a 4-13. Base y eje de las pa as del módulo. 33
Figu a 4-14. Modelo inal del sopo e del módulo. 34
Figu a 4-15. Mallado de la pa ábola c eada y de los sopo es del ubo po ado del líquido. 35
Figu a 4-16. Mallado del eje y la es uc u a que sopo an la pa ábola. 35
Figu a 4-17. Modelo inal de la pa ábola. 36
Figu a 4-18. Rende izado on al del módulo comple o. 37
Figu a 4-19. Rende izado ase o del módulo comple o. 37
Figu a 4-20. Modelo de un módulo simpli icado. 38
Figu a 4-21. Modelo de colec o a pa i del modelo de módulo simple. 39
Figu a 4-22. Modelo de lazo a pa i del modelo de colec o . 39
Figu a 4-23. Uniones en e colec o es que compa en eje de gi o. 40
Figu a 4-24. Unión en e colec o es, pe pendicula al eje de gi o. 41
Figu a 4-25. Unión en e colec o es y dis ibución gene al. 42
Figu a 5-1. Bloque de ansmisión usado pa a el con ol de un colec o . 46
Figu a 5-2. A chi o de con igu ación YAML pa a con ola un colec o . 46
Figu a 5-3. En ojo, mensaje de e o ob enido al inicia la p ime a simulación con ROS Con ol. 47
Figu a 5-4. Nodo gene ado de modelos. 47
Figu a 5-5. Nodo de ca ga de con olado es. 48
Figu a 5-6. Nodo publicado del es ado del obo . 48
Figu a 5-7. Uso de os opic pa a mo e un modelo a la posición angula 1,2 adianes. 48
Figu a 5-8. Message Publishe de q . 49
Figu a 5-9. Visualizado g á ico de q . 49
Figu a 5-10. Dynamic Recon igu e de q . 50
Figu a 5-11. A chi o lazo_con ol.yaml. 50
Figu a 5-12. Nodo de ca ga de con olado es pa a un lazo. 51
Figu a 5-13. Esquema de lanzamien o de la simulación. 52
Figu a 5-14. F agmen o del nue o a chi o de lanzamien o de modelos usando namespaces. 52
Figu a 5-15. O ganización de los lazos en la simulación. 53
Figu a 5-16. Clase Lazo c eada pa a egis a las ca ac e ís icas de cada eje. 55
Figu a 6-1. Plugin usado pa a el mo imien o del obo y a gumen os de en ada. 57
Figu a 6-2. Aspec o isual del obo de inspección. 58
Figu a 6-3. Pa áme os y nodo de gene ación del obo de inspección. 58
Figu a 6-4. Con ol manual po eclado del obo de inspección. 59
1
1 INTRODUCCIÓN
on nume osas las di e en es ecnologías usadas en la ac ualidad pa a la gene ación de ene gía eléc ica.
Den o de las conside adas como eno ables, una de las más ex endidas y con mayo po encial es la que
ap o echa la adiación sola pa a ello, que a su ez se di ide en ene gía sola o o ol aica y é mica. Si
bien la p ime a es más conocida en é minos gene ales, habiendo llegado incluso a nues os p opios hoga es
pa a desa olla au oconsumo eléc ico, a lo la go del p esen e abajo la idea cen al de gene ación se á basada
en la segunda.
La ene gía sola é mica se basa en el ap o echamien o de la ene gía sola pa a p oduci calo . Ob enido dicho
calo , podemos emplea lo de di e en es o mas: desde labo es domés icas como la cocina, la cale acción en el
hoga o la ob ención de agua calien e, has a g andes p ocesos indus iales con o os ines. Dependiendo del
sec o en el que nos encon emos, los angos de empe a u a en los que nos mo amos se án muy di e en es, y
po an o los ma e iales necesa ios pa a los p ocesos (La Ene gía Sola , 2019).
El caso que se a a á a lo la go de es e abajo co esponde al de una plan a e mosola de colec o es cilind o
pa abólicos, donde se hace un ap o echamien o como el mencionado con an e io idad a ni el indus ial. Como
en la mayo ía de las plan as de dicho ipo, el in es la ob ención de ene gía eléc ica a pa i del calo ob enido
median e di e en es elemen os alojados en una zona de po encia pa a la con e sión.
Es posible encon a di e en es ipos de plan as e mosola es. Los más comunes son los siguien es:
• Cen al e mosola de o e. Se compone de una se ie de helios a os y de un ecep o . Los p ime os, que
se encon a án en una si uación o denada en el e eno y con una o ien ación conc e a pa a cada uno,
e lejan la luz del sol, con el in de que los ayos sean ecibidos po el ecep o . Es e úl imo, si uado
gene almen e en una o e, ecibi á oda la luz, alcanza á la mayo densidad de po encia, y con ello un
aumen o de la empe a u a.
• Cen al de colec o es cilind o pa abólicos. Di ie e con la an e io en la o ma de lle a el calo a la zona
de po encia. En es e caso, se compone de nume osos colec o es de o ma cilind o pa abólica, po cuyos
ejes ocales se hace pasa un ciclo ce ado de un de e minado luido. De es a o ma, odos los ayos que
e lejan en la pa ábola a e izan en el ubo que con iene dicho luido, ele ando conside ablemen e la
empe a u a de es e. G acias al es ado en el que uel e el líquido a la zona de po encia, ob enemos el
calo necesa io pa a la ans o mación.
• Cen al de colec o es F esnel. La idea de uncionamien o es simila a la de colec o es cilind o
pa abólicos. Algunas de las di e encias p incipales son una mayo dis ancia ocal, el uso de elemen os
e lec o es planos y la necesidad de un meno espacio. De es a o ma, y en líneas gene ales, es e mé odo
esul a más sencillo de cons ui y económico, aunque es de meno e iciencia.
S

In oducción
2
1.1 Plan a e mosola de colec o es cilind o pa abólicos
Como se ha comen ado an e io men e, en el p esen e p oyec o se abaja á en base a una cen al de colec o es
cilind o pa abólicos. El p incipio undamen al de es a es la o ma geomé ica pa abólica de los cap ado es. A lo
la go de ellos, y eco iendo el eje ocal de la pa ábola, discu e el luido que a acumulando el calo ob enido
po la e lexión de los ayos del Sol. Po o o lado, es os cap ado es ienen un mo imien o o a o io, y modi ican
su o ien ación de o ma que su exposición sola , y con ello la ans e encia de calo con el luido, sea la máxima
posible.
Figu a 1-1. Módulo cap ado (P o e mosola , 2020).
La es uc u a más básica de la plan a es un módulo, como el que podemos e en la Figu a 1-1. El
encadenamien o en línea ec a de un de e minado núme o de módulos da luga a un colec o . El núme o de
módulos en un colec o , aunque es a iable según el diseño ealizado, es á en o no a los doce, quedando una
longi ud inal de colec o de ap oximadamen e 150 me os.
En cada uno de los bucles que ealiza el luido pa a calen a se, eco e un o al de cua o colec o es. Es os es án
si uados en pa ejas de dos, de o ma que cada pa se si úa en un mismo eje de gi o. De es a o ma, el líquido
luye po los dos p ime os colec o es en un sen ido, y po los o os dos en el sen ido con a io. Es e bucle
comple o o mado po los cua o colec o es se denomina lazo.
Figu a 1-2. Esquema simpli icado de la plan a.
3
3
Desa ollo y modelado 3D de plan a e mosola
Así, la es uc u a gene al de la plan a queda ía como se e en la Figu a 1-2: un pa de ube ías gene ales, de g an
amaño, hacen las unciones de en ada y salida de la zona de po encia; de la ube ía con líquido ío se ami ican
o as más pequeñas, que eco e án cada uno de los lazos. Finalmen e, se ealiza un eco ido in e so, y odas
las pequeñas ami icaciones (ya con el líquido a empe a u a máxima) concu en en la ube ía gene al de líquido
calien e, que llega á has a la zona de po encia.
1.2 Obje i os
Tal y como se desa olla á en los p óximos capí ulos, se elabo a á un modelo en 3D de una plan a e mosola ,
el cual se inco po a á pos e io men e a una simulación dinámica u ilizando Gazebo y ROS. El obje i o inal es
ob ene un modelo de plan a que desa olle un mo imien o lo más iel a la ealidad posible. Pa a ello, se usa án
con olado es PID pa a los ejes de gi o de cada uno de los colec o es. De es a o ma, esul a á un sis ema en el
cual el mo imien o de cada colec o es independien e.
Po no ma gene al, ealiza án un mo imien o de seguimien o al Sol pa a maximiza el núme o de ayos de luz
inciden es. Sin emba go, hab á casos en los que alguno deba man ene se en la posición de eposo pa a, po
ejemplo, ecibi un man enimien o p og amado o una epa ación.
Así, ob end emos un modelo del complejo en el cual se pod á hace una simulación dinámica en iempo eal, y
en el que exis en una se ie de ísicas y colisiones que pe mi i án la in e acción con o os u u os elemen os
in oducidos en la simulación. Finalmen e, se inco po a á un sencillo obo de inspección con olado
manualmen e capaz de in e ac ua con los elemen os p esen es en el modelo, que sien a las bases a u u as ideas
de con inuación o ampliación del p esen e abajo.
El obje i o del p esen e p oyec o es dispone de una simulación dinámica de una plan a e mosola al comple o,
en la cual puedan inco po a se di e en es modelos adicionales de ca a a la ealización de p uebas y mejo as en
la plan a. Lo modelos se eplica án, an o isual como ísicamen e, g acias al mo o de ísicas y colisiones en la
simulación. De es a o ma, se dispond ía de un en o no ideal de p uebas, debido a que el compo amien o
dinámico de la plan a se á lo más pa ecido posible a la ealidad.
Pa a llega a dicho obje i o inal, es necesa io i alcanzando o os an os in e medios. En p ime luga , se á
p io i a io con igu a co ec amen e el en o no de abajo donde se desa olla á la simulación. Dicho en o no
es a á o mado en conjun o po ROS y Gazebo. Es o implica que, más allá de con igu a ambos so wa es po
sepa ado, se á necesa io con igu a odas las dependencias y elaciones en e ellos, de ca a a que el
uncionamien o del conjun o sea el opo uno. En pa alelo a ello, se á ecomendable ealiza p uebas con modelos
muy básicos pa a comp oba el uncionamien o y pos e io men e ex apola lo a los modelos de la plan a, pa a
o ganiza la depu ación de e o es.
El siguien e paso es desa olla desde ce o los di e en es modelos 3D en Blende . Se comenza á con el diseño
de un módulo, pasando po el de un colec o , y llegando al de un lazo. Es os modelos se án o iginales pa a es e
p oyec o, y se c ea án omando como base di e en es e e encias en plan as eales. En cada uno de los pasos se
debe á comp oba que los modelos se ca gan co ec amen e en ROS, y que Gazebo es capaz de da isualización
a es os sin ningún p oblema.
También se á undamen al desa olla el código que desc iba cada uno de los modelos c eados, así como de
odos los elemen os pa ícipes en la simulación: di isiones de los modelos, a iculaciones y elaciones en e
ellos; ca ac e ís icas ísicas como masas, ine cias y ozamien os; y aspec os isuales, an o de la escena como de
los p opios modelos.
Una ez de inido lo an e io , uno de los obje i os cla es se á p og ama oda la dinámica, desde un simple
módulo has a la o alidad de la plan a. En un comienzo, se es udia án las di e sas al e na i as pa a capaci a de
mo imien o a un módulo: in eg ación de la ges ión del mo imien o en Gazebo/ROS, ipo de con ol aplicado,
elemen os mecánicos y con olado es necesa ios.
In oducción
4
T as consegui aplica es o al elemen o más pequeño de la simulación, se con inua á p obando en colec o es y
lazos. Una ez que el con ol manual sea posible, se p ocede á a la au oma ización del mo imien o de oda la
plan a. Se á necesa io p og ama en Py hon o C++ las ó denes del mo imien o de cada uno de los módulos, así
como de las di e en es excepciones que se p esen en en la plan a.
Además, ambién se á obliga o io p og ama odos los senso es y ac uado es adicionales, así como los sc ip s
necesa ios pa a ges iona el in e cambio de in o mación po mensajes en e los di e en es módulos de Gazebo y
ROS. Es o alcanza á cie a complejidad cuando el núme o de elemen os a con ola en pa alelo sea más
nume oso, ya que en a á en juego la capacidad de compu ación del o denado , y se á necesa io un análisis de
las ísicas de la simulación pa a su op imización.
Finalmen e, se modela á un sencillo obo de inspección pa a in oduci lo en la simulación. Se con ola á
manualmen e po eclado g acias a un plugin de la lib e ía ROS, el cual end á que se eadap ado según las
ca ac e ís icas del modelo c eado. Es e se á capaz de in e ac ua con los elemen os p esen es en el modelo
gene al de la plan a.
Es o sien a las bases a u u as ideas de con inuación o ampliación del p esen e abajo, en el cual se pod á
dispone de odo un en o no de p uebas pa a in eg a nue os modelos en la plan a y ealiza un es udio dinámico
de ellos y las colisiones con la plan a e mosola .
5
2 ROS
n la ac ualidad, exis en mul i ud de pla a o mas o ien adas a la p og amación de obo s. De en e odas
ellas, ROS (Robo Ope a ing Sys em) des aca po se una pla a o ma de código abie o que p o ee
se icios que espe a íamos ob ene de un sis ema ope a i o: abs acción de ha dwa e, paso de mensajes
en e p ocesos, capacidad de gene a y co e código, y con ol de disposi i os de bajo ni el, en e o os.
ROS nace en el año 2007 bajo el nomb e de Swi chya d, como un p oyec o de la Uni e sidad de S an o d. Un
año después, se ía la s a -up Willow Ga age la enca gada del desa ollo, donde se dio la mayo pa e de es e.
En 2013, se unda la Open Sou ce Robo ics Founda ion (OSRF), o ganización que en la ac ualidad se enca ga
del man enimien o ac i o (Joseph, 2017).
El p incipal obje i o de ROS no eside en se la pla a o ma de so wa e obó ico con más ca ac e ís icas.
Realmen e, ROS busca la modula idad y la eu ilización: que cada uno de los p ocesos desa ollados sea
ácilmen e acoplable a o os. Además, busca se un conjun o li iano, independien e del lenguaje usado y
escalable.
Hoy en día, ROS se ha desa ollado pa a se ejecu ado en pla a o mas basadas en Unix, siendo el so wa e de
p uebas habi ual an o Ubun u como Mac OS X. Sin emba go, la comunidad colabo a y con ibuye dando
sopo e pa a o as pla a o mas Linux, así como Windows median e i ualización (ROS Wiki, 2018).
Figu a 2-1. Dis ibuciones ROS en los úl imos cinco años (ROS Wiki, 2018).
ROS se p esen a en di e sas dis ibuciones con el paso de los años, de un modo simila a como lo hace Ubun u
(Figu a 2-1). De hecho, aunque no es algo obliga o io, cada una de es as dis ibuciones es án pensadas pa a se
usadas con una de e minada e sión de Ubun u. Al igual que es e, man ienen una se ie de ca ac e ís icas
E
ROS
12
que mues a en de alle la es uc u a de un mensaje conc e o.
• ospack: Se usa pa a ob ene in o mación sob e los paque es ROS disponibles en el sis ema, desde
lis ados, has a es uc u as de dependencia en e los di e en es paque es.
2.3.3 Comandos de ejecución
Es os comandos se u ilizan pa a comenza la ejecución, así como pa a inicia nue os ejecu ables una ez que
ROS se es á ejecu ando.
• osco e: Al ejecu a es e comando, lanzamos un conjun o de p og amas que se enca gan de inicializa
odo el ecosis ema de ROS. Más allá de lanza el Mas e , es ic amen e necesa io pa a que los nodos
puedan comunica se en e ellos, ambién se enca ga de inicia el se ido de pa áme os y el nodo
osou , enca gado de lle a el egis o de las ejecuciones.
• os un: Nos pe mi e lanza un ejecu able sin ene que na ega de o ma manual has a la u a que lo
con iene. Bas a con añadi como a gumen os el paque e y el nomb e del a chi o pa a ejecu a lo.
• oslaunch: Es e comando es de los más ú iles. Pe mi e lanza una simulación median e la ejecución
de un a chi o de ex ensión .launch, esc i o en o ma o XML. En dicho a chi o podemos ealiza
di e sas a eas, en e las que se pod ían des aca el ajus e de los alo es iniciales del se ido de
pa áme os, la posibilidad de lanza múl iples nodos al mismo iempo, o pode anida o os a chi os de
lanzamien o c eando lanzamien os anidados. Además, al ejecu a es e comando, au omá icamen e se
inicializan odos los p og amas que lo hacen cuando ejecu amos osco e, po lo que no es necesa io
usa es e úl imo comando si u ilizamos oslaunch.
2.3.4 Comandos de he amien as g á icas
Median e los siguien es comandos se ob iene la posibilidad de da a la in o mación un aspec o isual, que
ayuda á a e la de una o ma mucho más ápida y e icien e. Los más des acados son:
• q _g aph: Lanza una in e az g á ica con odos los nodos y opics que encuen e en ejecución, de
una o ma o denada, y mues a de una o ma sencilla el lujo de la in o mación. Es posible e esca la
in e az pa a i iendo los cambios en iempo eal, así como modi ica di e sas opciones en unción del
con enido que se desee e .
• q _plo : Nos pe mi e isualiza en una in e az isual el con enido de uno o a ios opics a lo la go
del iempo. De es a o ma, se pueden elabo a g á icas de da os en iempo eal, pa a analiza y compa a
da os de di e en es opics. En conc e o, a lo la go de es e abajo es a he amien a ha sido muy ú il pa a
unea los PID de los ejes de gi o, ya que se puede e la espues a del eje an e una en ada de e minada
a medida que cambian los pa áme os del con olado en iempo eal.
2.3.5 O os comandos
• osclean: Se usa pa a limpia a chi os del en o no de ROS, como po ejemplo los egis os. También
nos p opo ciona in o mación sob e el espacio usado en disco, si se ejecu a con el lag check. Po
úl imo, con el lag pu ge bo a emos los egis os acumulados, siemp e que con i memos que los
a chi os a bo a son los deseados y e i emos pé didas i epa ables.
• os e sion: Nos dice la e sión de ROS sob e la que se es á abajando.

13
Desa ollo y modelado 3D de plan a e mosola
2.4 Ins alación y con igu ación de ROS
Como se ha comen ado en pun os an e io es, a la ho a de elegi qué e sión de ROS se debe usa hay que ene
en cuen a ambién la del sis ema ope a i o. En el ac ual abajo, y debido a la e sión de Ubun u ins alada, lo
más adecuado ha sido usa ROS Melodic. Ya no solo po i en cie o modo empa ejada a dicha e sión del
sis ema ope a i o, sino po que ambién iene cie o bagaje y uso en la comunidad. Es o se á siemp e un pun o a
a o a la ho a de la esolución de posibles e o es, consul a de dudas o ecepción de sopo e en la web.
2.4.1 Ins alación
Aunque se pod ía ealiza una ins alación desca gando el código uen e y compilándolo, es o iene cie a
complejidad y no se ecomienda hace . No malmen e, es algo a e i a a no se que se le dé un uso a ni el expe o
y se dispongan de los conocimien os pa a ealiza lo sin p oblemas. En es e caso, se ealiza á una ins alación
di ec a desde los eposi o ios.
En p ime luga , hay que asegu a se que la lis a de paque es Debian disponibles es á ac ualizada, pa a lo que se
usa el siguien e comando:
>> sudo ap upda e
A con inuación, se pod á ins ala ROS con di e en es comandos, en unción de las lib e ías y he amien as
complemen a ias que que amos ene disponibles. Podemos op a po una opción básica, sin he amien as en e
usua io-in e az; una opción de esc i o io, que complemen a a la an e io ins alando he amien as como q ,
RViz, y algunas lib e ías de obo gené icos; y una opción de ins alación o al, que ambién incluye simulado es
y lib e ías de pe cepción, an o en 2D como 3D.
En es e caso conc e o, se ha op ado po la opción in e media, la de esc i o io. En p ime luga , es o es debido a
que Ubun u es á ins alado en una pa ición del disco du o con un espacio algo educido. Po o o lado, los
complemen os que da la e sión o al no o man pa e de los obje i os p opues os en el abajo, ya que se
ins ala á y usa á el simulado Gazebo. En cualquie caso, si ue an necesa ias algunas de las he amien as no
ins aladas en un comienzo, siemp e se pueden ins ala a pos e io i indi idualmen e.
Pa a ins ala la e sión elegida, se usa:
>> sudo ap ins all os-melodic-desk op
Tal y como se ha comen ado an e io men e, si ue a necesa ia la ins alación de una he amien a complemen a ia
ue a del paque e po de ec o, se pod ía ins ala de la misma o ma as busca la con el siguien e comando:
>> ap sea ch os-melodic
T as es o, ROS queda ía ins alado.
2.4.2 Con igu ación del en o no de abajo
Una ez ealizada la ins alación, se deben es uc u a los di ec o ios en los que se abaja á. En p ime luga , es
necesa io c ea una nue a ca pe a en el di ec o io que se quie a, la cual se á el wo kspace, y se llama á TFM. A
su ez, den o de es a, es necesa io c ea o a ca pe a con el nomb e s c. Den o de es a úl ima, se debe usa el
siguien e comando:
>> ca kin_ini _wo kspace
Con es e comando se hab á con igu ado la ca pe a TFM como wo kspace, y se hab á c eado el a chi o
CMakeLis s. x de dicho en o no. Es e úl imo se enlaza á con ca kin, el sis ema de compilación.
ROS
14
A con inuación, se lanza el siguien e comando pa a compila odo el wo kspace ( e Figu a 2-7). Es e ejecu a
un conjun o de ó denes de compilación en cadena, y c ea las ca pe as necesa ias en caso de que es as no exis an.
Es o sucede á únicamen e en la p ime a compilación. El comando es:
>> ca kin_make
Con es o, el en o no de desa ollo queda inicializado. A pa i de aquí, se hab án c eado las ca pe as build y
de el. Es a úl ima con iene el a chi o se up.bash, al que hab á que hace sou ce cada ez que que amos
inicializa ROS en un nue o e minal.
Figu a 2-7. Inicialización y compilación del wo kspace.
Como ya se comen ó en el capí ulo 2.2, pa a e i a ene que ejecu a el se up.bash en cada nue o e minal que
se ejecu e, se ía con enien e añadi las líneas pe inen es al a chi o .bash c. Hay que ene en cuen a que, si po
cualquie mo i o hay más de una e sión de ROS ins alada, en dicho a chi o sólo podemos hace e e encia a
la e sión que se aya a usa .
A con inuación, sólo queda c ea an os paque es como se desee. Pa a ello, bas a con hace cd a la ca pe a s c y
ejecu a el comando ca kin_c ea e_pkg <nomb e> <dependencias>. En el a gumen o co espondien e
a <nomb e>, se especi ica á el nomb e del paque e que se c ea á. En <dependencias>, se debe hace
e e encia a oda dependencia que se quie a añadi . Po ejemplo, en el caso del paque e c eado pa a el p esen e
p oyec o, se desea ene la posibilidad de compila an o en Py hon como C++. Po ello, las dependencias se án
las lib e ías ospy y oscpp, espec i amen e. Po an o, el comando inal a ejecu a en es e caso se ía el
siguien e:
>> ca kin_c ea e_pkg p cplan ospy oscpp
Se pod ía ealiza es e p oceso an as eces como paque es se deseen c ea . Cada uno pod á ene nomb e y
dependencias di e en es, y se compila án sepa adamen e, dado que cada paque e es la unidad mínima de
compilación pa a ca kin.
A pa i de es e momen o, solo queda ía comenza a ag ega ca pe as y a chi os al paque e pa a do a lo de
uncionalidad. Aunque es o se puede hace de di e sos modos, lo no mal es usa un IDE po simplicidad y
comodidad. Al abaja en ROS se usa án di e en es o ma os de a chi os, po lo que esul a ap opiado pode
ap o echa las en ajas de dicho so wa e, en luga de modi ica a chi os con cualquie edi o de ex o plano.
Du an e el p esen e abajo, se ha abajado usando el IDE Eclipse. El p ime paso es c ea un p oyec o nue o,
acío, el cual asocia emos a la u a del wo kspace c eado. En segundo luga , con igu amos el edi o pa a que
econozca el lenguaje deseado según la ex ensión del a chi o con el que se abaje. También es posible ins ala
complemen os que po de ec o no se ins alan con Eclipse, como el edi o de Py hon.
15
3 GAZEBO
azebo es un so wa e de código abie o en ocado a la simulación obó ica, que cuen a con el mo o de
ísicas ODE, en e o os, y un ende izado median e OpenGL. En sus inicios, en e 2004 y 2011, se
desa olla como una pa e de Playe P ojec , des inado a c ea so wa e lib e pa a la in es igación en
obó ica y sis emas de senso es. Pos e io men e, siguiendo un camino simila al de ROS, pasa a se un p oyec o
independien e desde que Willow Ga age comienza a da le sopo e. Pos e io men e, se á la OSRF la enca gada
de man ene el p oyec o de Gazebo.
Hoy en día, Gazebo cuen a con la posibilidad de usa di e en es mo o es pa a las ísicas, más allá del usado po
de ec o, ODE. Sopo a la c eación de di e en es en o nos ambien ales, ende izando de una o ma ealis a
somb as, iluminación y ex u as. Pe mi e la c eación de modelos ealmen e complejos, así como la in e acción
en e ellos median e plugins pa a con ola senso es, ac uado es o cáma as.
En los úl imos años, desde su conside ación como p oyec o independien e, son di e sos los concu sos y
compe iciones que se han celeb ado u ilizando a Gazebo como base. En e ellos, los más conocidos son la
DARPA Robo ics Challenge (2012-2015), NASA Space Robo ics Challenge (2016-2017) o la Toyo a P ius
Challenge (2016-2017) (Wikipedia, 2021).
3.1 Ins alación de Gazebo
A di e encia de ROS, la ins alación de Gazebo y su con igu ación se ealiza de una o ma mucho más sencilla.
El p ime hecho pa a ene en cuen a es que la e sión de Gazebo sea aco de a la que se haya ins alado de ROS.
El desa ollo de ambas pla a o mas es sepa ado, sin emba go, no odas las e siones son compa ibles y es
ecomendable segui las ins ucciones de ins alación que nos p opo ciona Gazebo según la e sión de ROS
ins alada.
En el caso del p esen e abajo, al habe ins alado p e iamen e ROS Melodic, es necesa io ins ala la e sión 9.0
de Gazebo. Al exis i e siones pos e io es, las cuales no in e esa ins ala po que hab ía p oblemas de
compa ibilidad con ROS, es necesa io ce cio a se de que la e sión ins alada es la co ec a. Así, se debe e i a
la ins alación ápida de Gazebo, ya que usa ía la e sión más ecien e. Es necesa io ealiza una ins alación
pe sonalizada donde indiquemos la e sión eque ida.
Pa a ello, se ins ala á Gazebo desde el eposi o io de la OSRF, el cual se con igu a con los siguien es comandos:
>> sudo sh -c 'echo "deb
h p://packages.os ounda ion.o g/gazebo/ubun u-s able `lsb_ elease -
cs` main" > /e c/ap /sou ces.lis .d/gazebo-s able.lis '
>> wge h ps://packages.os ounda ion.o g/gazebo.key -O - | sudo
ap -key add -
Con ello, se ha con igu ado el PC pa a que acep e la ins alación de paque es de dicho eposi o io. A pa i de
aquí ins ala la e sión deseada de Gazebo, p e ia ac ualización de la base de da os de Debian, y po úl imo
comp oba que el so wa e unciona co ec amen e. Pa a ello se in oduce en el e minal:
G
Gazebo
16
>> sudo ap -ge upda e
>> sudo ap -ge ins all gazebo9
>> gazebo
Si odo ha salido bien, no hab á ningún mensaje de e o , y as ejecu a el úl imo comando se pod á isualiza
la in e az de Gazebo al y como se ap ecia en la Figu a 3-1.
Figu a 3-1. In e az de Gazebo as la p ime a ejecución.
Una pa icula idad de lanza Gazebo del modo an e io es que el comando usado ealmen e lanza dos comandos
dis in os. Po un lado, lanza gzse e . Pod íamos conside a lo como la pa e se ido , y se enca ga de p ocesa
y simula las ísicas, senso es o ende izado en e o as an as cosas. Po o o, ambién co e el comando
gzclien , el cual p opo ciona la in e az g á ica pa a isualiza la simulación, así como con oles pa a
in e eni en algunos aspec os de la simulación. Se comunican en e ellos median e di e en es lib e ías de
Gazebo, y pueden se lanzados po sepa ado desde el e minal median e el uso de cada comando asignado.
A es o se debe suma la exis encia de ROS, y el hecho de que ambién debe es a conec ado an o con el se ido
como con el clien e de Gazebo si que emos ealiza una simulación conjun a. La mejo opción pa a lanza una
simulación en la que odos es os pun os se in e conec en es median e el uso del comando oslaunch
mencionado en el capí ulo 2.3.3, como se e á en el siguien e pun o.
3.2 Simulaciones conec ando Gazebo y ROS
Como se ha comen ado en capí ulos an e io es, an o ROS como Gazebo son independien es en e sí, pudiendo
cada uno desa olla di e en es unciones sin la necesidad del o o. Sin emba go, ambién exis e la posibilidad
de usa los en conjun o, de o ma que Gazebo dé una ep esen ación isual de odo lo p og amado en ROS y
ice e sa, ob eniendo en ROS in o mación ex aída de la simulación de ísicas en Gazebo. Pa a ello, es necesa io
lanza ambos en conjun o, y el mejo modo es median e el comando oslaunch y un a chi o de ex ensión
.launch, el cual se analiza á a con inuación en base al ejemplo mos ado en la Figu a 3-2.
17
Desa ollo y modelado 3D de plan a e mosola
Figu a 3-2. Ejemplo de a chi o .launch básico.
Los a chi os de ex ensión .launch son esc i os en lenguaje XML. En la Figu a 3-2 se ap ecia un ejemplo muy
básico, que nos pe mi e lanza ROS y Gazebo al mismo iempo. Suponiendo que dicho a chi o se llama a
basico.launch, y que pe enecie a al paque e p cplan , pa a ejecu a lo bas a con esc ibi en el e minal el siguien e
comando:
>> oslaunch p cplan basico.launch
En es e ins an e se pod á obse a cómo apa ece el clien e de Gazebo ca gando un mundo. A la ez, en el
e minal se e á cómo se ha ejecu ado implíci amen e la o den osco e as ejecu a el comando especi icado.
De es a o ma, se inicializa ROS, y Gazebo se ejecu a como un nodo más de odos los que pueden exis i en el
ecosis ema. Pa a ene una idea más g á ica de los nodos que se ejecu an, se puede usa el comando q _g aph
en un nue o e minal (Figu a 3-3).
Figu a 3-3. Resul ado de q _g aph as ejecu a el a chi o .launch básico (nodos en elipses,
opics en ec ángulos).

Gazebo
18
Si se analiza el a chi o basico.launch, di e enciamos dos pa es den o de las e ique as <launch>. En p ime
luga , exis en una se ie de a gumen os a los que se les especi ican cie os alo es po de ec o. Todos es os
a gumen os pueden se ambién de inidos en la línea de comandos, al lanza el comando oslaunch. Tienen
di e sas unciones según el alo booleano que adop en: gui ca ga á la in e az g á ica; headless lanza á la
simulación sin clien e, solo con se ido ; y pause comenza á la simulación en pausa.
La segunda pa e es la comp endida en e las e ique as <include>. Se usa dicha e ique a cuando que amos
anida o o a chi o launch y que sea ejecu ado al alcanza es a línea. En es a ocasión, se lanza el a chi o
emp y_wo ld.launch, el cual es un a chi o p ede inido en el paque e gazebo_ os que lanza un mundo o almen e
acío, como el que se ap ecia en la Figu a 3-1. Como se es á lanzando o o a chi o dis in o, ambién se
especi ican una se ie de a gumen os que modi ican el compo amien o del segundo a chi o lanzado,
emp y_wo ld.launch.
Como se pod á obse a , en algunos de es os a gumen os no se da un alo booleano, si no que se ealiza una
e e encia al alo de o o a gumen o an e io . Po ejemplo, en el a gumen o headless, en luga de especi ica
un alo , se le dice que use el mismo que se especi icó en el a gumen o del p ime a chi o .launch, de o ma
que se c ea una dependencia. Es o se hace median e la línea alue=”$(a g headless)”.
La línea más impo an e de las p esen adas es la que de ine el a gumen o wo ld_name. En es e caso, en luga
de asigna un alo booleano, se especi ica la u a de un a chi o .wo ld. Es os a chi os, basados en SDF, de inen
el mundo que ca ga á Gazebo. Si no se especi ica a ninguno, ca ga ía un mundo acío sin suelo, po lo que si
se añadie an modelos cae ían al acío. Pa a e i a es o, se ha c eado el a chi o simple.wo ld, que con iene un
mundo que sólo dispone de suelo y Sol. Como emos en la Figu a 3-2, se usa la o den $( ind p cplan )
pa a que busque el mundo en dicha u a, y pos e io men e se indican las ca pe as donde se encuen a y el nomb e
y ex ensión del a chi o.
A pa i de es e pun o, bas a ía con comenza a diseña un mundo pa a el en o no de la simulación, así como
inclui los di e en es modelos eque idos. Po o o lado, en el a chi o .launch se pod án añadi líneas con
di e sas unciones, desde anida o os a chi os de lanzamien o, has a o as pa a c ea nodos en ROS a pa i de
lib e ías.
3.3 C eación de mundos
En Gazebo, un mundo es un a chi o de ex ensión .wo ld que de ine la desc ipción, condiciones y p opiedades
del en o no donde se desa olla la simulación. P incipalmen e, se ecogen ca ac e ís icas como modelos, la
escena, las ísicas o los plugins, aunque ambién se pod ía incidi en aspec os secunda ios como las condiciones
a mos é icas, la g a edad o el campo magné ico. Como se menciona en los pun os an e io es, gene almen e es e
a chi o se á ca gado en Gazebo al inicio de la simulación. Pos e io men e, se pueden modi ica algunos
aspec os, incluso añadi modelos desc i os en o os a chi os.
En el p esen e abajo se ha usado el mundo pa a desc ibi dos bloques de elemen os. Po un lado, los modelos
es á icos, como pueden se la zona de po encia, los caminos y el suelo, así como los ma e iales y ex u as que
los de inen. Po o o, se de inen pa áme os abs ac os como la escena (colo es ambien ales, somb as, nubes), la
iluminación, la posición inicial de la cáma a, o las ísicas. Es e úl imo ac o esul a de g an impo ancia, ya que
es necesa io ajus a sus componen es pa a op imiza el endimien o de la simulación.
Pa a comenza un mundo nue o, lo ideal es ob ene una plan illa p opo cionada en la web de Gazebo, que
con iene únicamen e suelo y Sol, desde la cual pa i y comenza a modi ica y añadi el es o de los elemen os.
O a opción se ía ab i el clien e de Gazebo y gua da desde la aplicación el mundo en el luga deseado. En
cualquie caso, es o sien a una base. Sin emba go, pa a segui desc ibiendo el mundo pod emos op a , a g andes
asgos, po dos opciones: añadi y edi a obje os en el clien e e i gua dando, o modi ica el a chi o en o ma o
XML usando la desc ipción SDF.
19
Desa ollo y modelado 3D de plan a e mosola
3.3.1 Modi icación manual
En p ime luga , se puede op a po ealiza modi icaciones manualmen e en el clien e. Gazebo iene un modo
edición que pe mi e añadi y modi ica obje os en iempo eal, lo que es á muy bien pa a ealiza p uebas, ya
que podemos e los di e en es modelos añadidos en la misma simulación, sin necesidad de einicia la.
Po el con a io, es e mé odo solo da opción a c ea modelos muy básicos, ya que solo pueden usa se o mas
p imi i as como es e as, cubos o cilind os. También pe mi e in oduci o os elemen os, como a iculaciones.
Además, exis e una amplia base de da os con modelos complejos que se pueden añadi a la simulación con un
solo clic.
Se pod ía deci que es e es el mejo mé odo pa a do a al modelo de una es uc u a básica ap oximada, que luego
pod ía a ina se mucho más cambiando el código uen e del a chi o. Es po ello po lo que, gene almen e, se usa
la desc ipción SDF en luga de ealiza modi icaciones manualmen e en el clien e.
3.3.2 Modi icación en sc ip s SDF
La con igu ación de los a chi os .wo ld ambién puede ealiza se modi icando el código del p opio a chi o, el
cual se esc ibe en SDF, un o ma o del lenguaje XML. En gene al, se usa SDF pa a desc ibi mundos, así como
modelos. Se pod ía op a po desc ibi un modelo en el mismo a chi o del p opio mundo. Sin emba go, si dicho
modelo ue a de al a complejidad se pod ía op a po desc ibi lo en un a chi o sepa ado y pos e io men e
inclui lo e e enciando el a chi o y su u a. Es a úl ima opción es la mejo de ca a a gene a a ios modelos
iguales.
Figu a 3-4. Apa ado de las ísicas en el a chi o .wo ld.
Como se mencionaba an e io men e, apa e de de ini modelos, en el a chi o .wo ld in oduci emos aspec os
elacionados con las ísicas de la simulación, la escena o la iluminación. En la Figu a 3-4 se pueden ap ecia
algunos de los alo es es ipulados pa a las ísicas con igu adas en el p esen e abajo. En p ime luga , es
necesa io da un nomb e único, y po o o lado especi ica el ipo de mo o que se usa á. En es e caso es ODE,
el usado po de ec o.
Los alo es max_s ep_size, eal_ ime_ ac o y eal_ ime_upda e_ a e son c í icos pa a hace
que la simulación sea luida. El p ime o de ellos co esponde al iempo máximo en el que un obje o de la
simulación puede in e ac ua con el mundo. El segundo ep esen a el alo obje i o pa a el cocien e elocidad
de simulación en e elocidad eal, el cual se es ablece á en uno siemp e que se quie a alcanza una elocidad
de simulación al menos igual a la ealidad. El úl imo alo es el a io al que se ac ualizan las ísicas del mo o .
Se ha encon ado una mejo a undamen al a la ho a de modi ica los pa áme os p ime o y e ce o. El alo po
de ec o de la ac ualización de las ísicas e a una ecuencia de 1000 Hz, lo que p o oca un endimien o muy
bajo en simulaciones ca gadas de elemen os, sob e odo en compu ado as cuyo ha dwa e no es el más
ac ualizado. Po o o lado, si se quie en ob ene esul ados lógicos sin al e a el ac o de iempo eal, es necesa io
Gazebo
20
man ene cons an e el p oduc o en e el p ime y e ce pa áme o. De ahí que los alo es hayan cambiado a
0.005 (o iginalmen e 0.001) y 200.
Figu a 3-5. Apa ado de la escena en el a chi o .wo ld.
Po o o lado, ya mi ando den o de las e ique as <ode>, se ha conseguido una mejo a de endimien o
es ableciendo el ipo de sol e en ápido, así como educiendo el núme o de i e aciones, especi icado en el campo
<i e s>. T as ealiza odos los cambios mencionados, se ha obse ado que la simulación mejo a
sus ancialmen e, an o en p ocesamien o como en núme o de FPS mos ados po el clien e. La con igu ación
inicial e a muy exigen e, y aunque puede se ú il en o as aplicaciones, en un caso con mo imien os len os como
el que se es udia no es necesa io exigi an o.
Algo simila sucede en los campos asociados a la escena y la iluminación. En el p ime o (Figu a 3-5) se de inen
los colo es de las luces ambien e y del ondo, las somb as, ca ac e ís icas del cielo y o as p opias de la in e az
como los ejes de coo denadas. En el segundo (Figu a 3-6), ca ac e ís icas especí icas de la iluminación y la
capacidad de p oduci somb as. Se obse a una mejo a de endimien o si se desac i an las somb as en ambos
campos, sob e odo cuando la simulación se compone de muchos modelos.
Figu a 3-6. Apa ado de la iluminación en el a chi o .wo ld.
Si bien a lo la go del p esen e pun o la desc ipción se ha cen ado en ísicas, escena e iluminación, es o es po que
son los que se han modi icado signi ica i amen e. Exis en o os campos que no se han incluido en la desc ipción
del mundo debido a que sus alo es po de ec o, es deci , los que oma si es os no se incluyen en el a chi o, son
álidos pa a la simulación. En e ellos se pod ían des aca , po ejemplo, algunos que pe mi en in oduci audio,
ien o o una can idad de modelos epe idos en un pa ón especi icado.
21
Desa ollo y modelado 3D de plan a e mosola
1.1.1.1 Desc ipción de modelos
Como ya se ha comen ado, den o del mundo los modelos pueden se desc i os manualmen e, o bien incluidos
e e enciándolos. Es o a ia á según las necesidades, si bien pa a modelos únicos y con una es uc u a sencilla
lo mejo es segui la p ime a de las al e na i as. A con inuación, se ealiza una b e e desc ipción de los apa ados
pa a ene en cuen a pa a su desc ipción.
En p ime luga , cada modelo que se de ina debe ene un nomb e único de o ma obliga o ia. También se
pueden es ablece cie os pa áme os no eque idos pe o muy ú iles, como pueden se <s a ic>, pa a hace el
modelo inamo ible; <sel _collide>, pa a de ini si deben exis i las colisiones en e di e en es pa es de un
mismo modelo; o <pose>, pa a de ini la posición del modelo median e un ec o de seis componen es.
En pa alelo a los an e io es, ambién se de inen los campos <plugin>, <join > y <link>. El p ime o se á de
u ilidad cuando que amos que el modelo ejecu e código p og amado en un a chi o de inido pa a modi ica su
compo amien o. Median e el segundo, <join >, se de inen las a iculaciones que es a án p esen es en el
modelo, así como el ipo de a iculación, el eje de gi o o su posición, en e o os.
Po úl imo, en <link> se de inen cada uno de los bloques que o man el modelo. Al igual que con las
a iculaciones, se pod án usa an os como sean necesa ios. Apa e de pa áme os complemen a ios como los
mencionados den o de la e ique a de modelo, en p ime luga , se deben especi ica las ine cias. Pos e io men e,
hay dos g andes bloques que apa ece án en la mayo ía de las ocasiones, <collision> y < isual>.
El p ime o de ellos indica á la o ma y ca ac e ís icas del bloque de ca a a la compu ación de las ísicas y
colisiones, mien as que el segundo da á una desc ipción me amen e isual. En ambos campos pod emos
es ablece pa áme os como la posición, el mayo núme o de con ac os admi idos (pa a el bloque de colisiones)
o la anspa encia (pa a el bloque isual). Sin emba go, más allá de es o, ambos compa en en su in e io el
bloque <geome y>, que de ine la geome ía del bloque en cues ión.
Es obliga o io de ini la e ique a de geome ía. Exis e la opción de no ep esen a la, median e el pa áme o
<emp y>, pe o se debe especi ica . Aquí se de ine la geome ía de di e en es o mas. La más sencilla es usando
una e ique a pa a o mas p imi i as, como <box> pa a ep esen a una caja, <sphe e> pa a una es e a, o
<ellipsoid> pa a un elipsoide.
Sin emba go, lo no mal es usa geome ías más complejas. Pa a ello, se usa la e ique a <mesh>. Es a nos pe mi e
ca ga un modelo 3D diseñado median e so wa e especí ico pa a ello. En el p esen e abajo, es o ha sido algo
undamen al, ya que ha sido necesa io elabo a un modelo p opio en Blende de los colec o es usados, siendo
imposible elabo a los en de alle usando únicamen e o mas p imi i as.
Los modelos impo ados pueden ene dis in os o ma os. En es e caso se ha abajado con los o ma os Collada
(.dae) pa a las ep esen aciones isuales, y con .s l pa a las colisiones. Al se ca gados en Gazebo, el p ime o
nos da una ep esen ación iel al modelo, así como los p opios ma e iales de inidos en el so wa e 3D. Po el
con a io, los a chi os STL nos dan una geome ía ap oximada, sin ma e iales ni ex u as, pe o su icien e pa a
desc ibi una geome ía de colisiones de cie a calidad.
3.3.2.1 Inclusión de modelos y ma e iales pe sonalizados
Los modelos ambién pueden se desc i os de la misma o ma a la mencionada an e io men e, y se gua dados
en un a chi o de ex ensión .sd pa a se impo ados en un mundo de o a o ma. Es o es muy ú il cuando se
quie e ca ga un modelo de inido en epe idas ocasiones.
Pa a comenza , la impo ación de modelos en un mundo se ealiza median e la e ique a <include>. Den o de
ella especi ica emos obliga o iamen e un nomb e único pa a el modelo, así como la u a donde se debe busca
el a chi o a ca ga . Opcionalmen e, se puede indica o o pa áme o, como po ejemplo la posición.
Algo a ene muy en cuen a es que Gazebo sea capaz de encon a la u a especi icada en la base de da os de los
modelos. Pa a ello, en el sis ema en el que se abaje, se debe ealiza una modi icación en la a iable de en o no
$GAZEBO_MODEL_PATH, y añadi a ella la u a donde se aloja án los modelos que se ayan a inclui . Si es o no
se ealiza de o ma co ec a, Gazebo no se á capaz de ca ga el modelo en la simulación, y además no da á
ningún ipo de mensaje de e o .
Po o o lado, algo muy u ilizado an o en modelos desc i os manualmen e como en los incluidos po e e encia
Modelado en 3D con Blende
28
Figu a 4-3. Aplicación de ex ude: en el cen o, po de ec o; a la de echa, ex ude indi idual.
• Inse aces (I). Pe mi e inc us a ca as adicionales al conjun o de ca as seleccionadas (Figu a 4-4). Po
ejemplo, si ealizamos es a ope ación a un cuad ado, se c ea á o o cuad ado más pequeño den o de
es e, conse ando el cen o. El espacio es an e se á ocupado po cua o nue as ca as poligonales con
o ma de apecio, esul ado de uni los é ices del cuad ado an iguo con el nue o.
Figu a 4-4. Aplicación de inse aces en la ca a supe io de un cubo.
• Be el (C l+B). El biselado se enca ga de sua iza los bo des de un obje o (Figu a 4-5). Se aplica sob e
odo en a is as con exac amen e dos ca as adyacen es, aunque ambién puede usa se el biselado de
é ices. Exis en mul i ud de pa áme os pa a de ini el biselado, aunque des acan el ancho, pa a
selecciona a que al u a de la ca a comienza el sua izado, y el núme o de segmen os, que de ine el
núme o de nue as ca as que se c ea án (y, po an o, lo sua e que pa ece á el bo de).
Figu a 4-5. Aplicación de be el en la ca a supe io de un cubo.

29
Desa ollo y modelado 3D de plan a e mosola
• Loop cu (C l+R). En el modo edición, es a he amien a pe mi e ealiza una se ie de co es en la
selección pa a di idi el elemen o. Po ejemplo, si se usa en una ca a ec angula , pod emos ajus a el
núme o de co es con la ueda del a ón, pa a luego elegi dónde si ua los mo iendo el a ón. Es un
ope ado muy ú il pa a di idi geome ía en un de e minado núme o de pa es iguales, po ejemplo,
pa a ex ui solamen e una pa e conc e a de una ca a, como se ap ecia en la Figu a 4-6.
Figu a 4-6. Aplicación de loop cu en un cilind o pa a pos e io ex usión.
• Kni e (K). Pa iendo desde un pun o inicial en una selección, pe mi e ealiza co es manuales en la
geome ía, en línea ec a, a medida que seleccionamos nue os pun os. Dispone de algunos con oles
opcionales que acili an su uso, como po ejemplo pa a selecciona el cen o de una a is a, o pa a da
cie a inclinación al co e. Sin emba go, es una he amien a que no se ecomienda usa al da di e sos
p oblemas como el duplicado de é ices o la c eación de co es inconexos.
• Spin. Se usa pa a ex ui una supe icie, a la ez que se o a en o no a un de e minado pun o (Figu a
4-7). Po ejemplo, al hace lo sob e un cí culo y ex ui en 360º, se c ea á un polied o con o ma de anillo
ci cula . Es posible ajus a di e sos pa áme os, como el eje de gi o, el núme o de copias de la igu a
(y, po an o, la sua idad esul an e) o la usión au omá ica de é ices. Es a úl ima p opiedad,
denominada Au o Me ge, es de g an u ilidad, y ambién apa ece en o os ope ado es. Pe mi e es ablece
un umb al de dis ancia, que se i á como lími e pa a usiona dos é ices cuando en e es os no se
supe e dicha dis ancia.
Figu a 4-7. Aplicación de spin en un cuad ado, usando 12 pasos y 360º de gi o.
Modelado en 3D con Blende
30
4.1.2 Modi icado es
Los modi icado es en Blende se enca gan de ealiza ope aciones au omá icas, pa a sus i ui o os p ocesos que
end ían que esol e se manualmen e de una o ma muy ediosa. Se pueden añadi a ios modi icado es a un
mismo obje o o elemen o geomé ico, quedando apilados en lo que Blende llama The Modi ie S ack.
Una pa icula idad de los modi icado es es que, como es de espe a , el o den en el que se apliquen hace que el
p oduc o inal cambie. Po ello, es undamen al de e mina el o den co ec o en la pila de modi icado es. Po
o o lado, es posible selecciona si que emos isualiza los cambios que p oduzcan es os modi icado es en los
dis in os modos (obje o, edición, iewpo o ende izado). El modi icado no aplica á cambios en la selección
has a que no se aplique. Una ez ealizada es a ope ación no se pod á deshace , y debe se ealizada en la pila
de a iba hacia abajo, ya que el p og ama igno a á los modi icado es que no es én aplicados.
Blende posee una g an can idad de modi icado es, aunque en el p esen e ex o se cub i án los que se conside an
undamen ales pa a ope aciones básicas. Se ag upan en cua o ipos (Blende Re e ence Manual, 2021):
• Modi y. Son simila es a las he amien as de de o mación comen adas an e io men e, aunque no a ec an
de o ma di ec a a la geome ía de los modelos. Más bien, modi ican o os da os, como po ejemplo las
no males de un g upo de ca as o las p opiedades de un g upo de é ices.
• Gene a e. Es el g upo con más modi icado es, así como el que posee los más usados pa a un modelado
básico. Es as he amien as, an o cons uc i as como des uc i as, a ec an a la opología del mallado de
una o ma global.
• De o m. A ec an ambién de o ma global en el modelo, aunque a di e encia de los an e io es no
modi ican la opología, únicamen e la o ma del obje o.
• Physics. En ocados a la simulación de las ísicas, no son necesa ios en un modelado es á ico, siendo
ú iles pa a o os usos como el modelado de es imen as, colisiones o luidos.
Cada modi icado suele ene g an can idad de opciones, que a ían según la he amien a usada. Sin emba go,
exis en una se ie de opciones comunes a odos ellos que son de g an u ilidad. En e las más eseñables des acan
los g upos de é ices y el uso de ex u as.
Los g upos de é ices pe mi en de ini di e en es conjun os a los que se aplica á, o no, el modi icado en
cues ión. De es a o ma, se pueden dispone mallas que su i án di e en es cambios según los g upos de é ices
c eados den o de ellas, así como de los modi icado es aplicados.
Po o o lado, las ex u as son ideales pa a con ola el e ec o de un modi icado , ac uando como una másca a.
El alo en e ce os y unos que oman los píxeles de una imagen en el canal de g ises esul a ideal pa a ponde a
el e ec o del modi icado , ac uando la ex u a como un ac o dinámico que mul iplica al modi icado . Además,
en algunos de ellos se pod án ap o echa incluso los canales RGB de la imagen.
Al ealiza un modelo como el eque ido en el p esen e abajo, aun eniendo cie a complejidad geomé ica, la
mayo ía de los modi icado es usados son del ipo Gene a e, y pun ualmen e alguno de ipo De o m. Los
modi icado es del es o de g upos es án en ocados a o os obje i os, como puede se la pos e io animación de
es os modelos. De en e los usados, a con inuación, se comen an algunos de los modi icado es más des acables:
• A ay. Es u ilizado pa a ealiza copias de un modelo. Po ello, esul a de g an u ilidad pa a elabo a
modelos de cie a epe i i idad. Pe mi e de e mina el núme o de copias, así como la dis ancia en e
ellas, ela i a o absolu a. También es posible indica un obje o, como una cu a c eada po el usua io,
a lo la go de la cual deben c ea se las copias, como se emplea en la Figu a 4-8 pa a gi a los eslabones
de la cadena. Es o ha sido de g an u ilidad pa a eplica un módulo y c ea un colec o a pa i de a ios
módulos.
31
Desa ollo y modelado 3D de plan a e mosola
Figu a 4-8. Uso de a ay con o ación pa a c ea una cadena a pa i del modelo de un eslabón.
• Boolean. Pe mi e aplica ope aciones booleanas a dos obje os, como la in e sección, la unión y la
di e encia en e ellos (Figu a 4-9). Po ejemplo, a pa i de un cilind o y un cubo, podemos ob ene la
igu a esul an e de usa el cilind o como pe o ado del cubo. En el p esen e p oyec o se ha u ilizado
es e modi icado pa a ep esen a modelos de ube ías y ejes. Sin emba go, es necesa io e isa el
mallado esul an e, ya que la he amien a p esen a allos en algunas mallas más complejas.
Figu a 4-9. De izquie da a de echa, uso de boolean con pa áme os union, di e ence e in e sec .
• Mi o . Realiza una unción de sime ía, pa a duplica el obje o a lo la go de un eje o plano (Figu a
4-10). Cuen a con di e sas opciones más allá del eje de sime ía pa a elabo a los nue os modelos,
como po ejemplo el uso de o os obje os como espejo. Es o ha sido una he amien a undamen al en la
elabo ación del modelo de un lazo, ya que se puede c ea po sime ía a pa i del modelo del colec o .
Figu a 4-10. Uso de mi o sob e el eje en e de, y pos e io uso de a ay.
Modelado en 3D con Blende
32
• Solidi y. Median e es e modi icado es posible do a a una supe icie de cie a p o undidad (Figu a
4-11). Dispone de di e sas opciones en el modo complejo, en ocado a a a mallados muy elabo ados.
Sin emba go, bas a usa el modo sencillo y el espeso deseado pa a una malla en o ma de supe icie si
es a no es demasiado compleja. A p io i, pod ía pensa se que con el comando de ex usión se pod ía
ealiza es a labo . Sin emba go, en cie as supe icies como la c eada pa a la pa ábola del módulo, lo
ideal es aplica es e modi icado , capaz de añadi el g oso po la ca a de la supe icie que no a ec a a
las p opiedades de e lexión de ayos en el in e io de la pa ábola.
Figu a 4-11. Aplicación de solidi y en supe icie cilínd ica.
• Subdi ision Su ace. En su modo simple, oma el mallado del obje o indicado y añade una subdi isión.
Po ejemplo, an e un cuad ado, es e modi icado con e i ía su malla en o os cua o cuad ados
conse ando las dimensiones del obje o o iginal. Exis e o o modo que usa el algo i mo de Ca mull-
Cla k, y que añade al simple un sua izado (Figu a 4-12). El uso ecu si o de es e modi icado se emplea
pa a do a al modelo de un mayo sua izado, a cos a de un mayo núme o de elemen os en el mallado
y, po an o, de un mayo impac o en el p ocesamien o pa a el o denado . (Blende Re e ence Manual,
2021)
Figu a 4-12. De izquie da a de echa: modelo o iginal; subdi ision su ace aplicado una ez;
subdi ision su ace aplicado es eces.
4.2 Modelado de un módulo
Debido a las nume osas he amien as que p opo ciona Blende , como las que se han comen ado an e io men e,
la mayo ía del diseño manual del modelo se cen a en un módulo, así como en las ube ías y sopo es que los
in e conec an. El es o puede se alcanzado con cie a acilidad si se usan de o ma co ec a los ope ado es y
modi icado es opo unos. Además, si se consigue ealiza el modelo e implemen a con éxi o la simulación de
33
Desa ollo y modelado 3D de plan a e mosola
un solo módulo, el es o se á cues ión de escala lo p og amado a o os modelos supe io es (colec o es y lazos).
Dadas las ca ac e ís icas del mo imien o del módulo en la simulación, se pod ía deci que el modelo con a á
con dos pa es undamen ales: una es á ica, o mada po las pa as que hacen de sopo e del módulo; y o a
dinámica, comp endida po el eje de gi o, la pa ábola y su es uc u a de sopo e, y el ubo po ado del líquido
jun o a su es uc u a. Po an o, lo ideal es ealiza el modelo en una posición de o igen, y luego sepa a y expo a
los mallados de cada una de las dos pa es mencionadas.
4.2.1 Sopo e
Pa a el sopo e, de aho a en adelan e las pa as, se ha comenzado el modelo dando g oso a un ec ángulo que
ha á de sopo e pa a ambas. T as ealiza una subdi isión del mallado de la capa supe io , se han ex uido dos
cuad ados en el plano e ical que o man las pa as, con cie a inclinación. Pos e io men e, es as se unen en o o
polied o ec angula simila al in e io abajando los é ices y a is as. Po úl imo, en la ca a supe io se inse a
un cubo, el cual se aguje ea á pa a da paso al eje de la pa ábola. Es o se ealiza una ez que es á diseñada,
median e un modi icado booleano de di e encia.
Figu a 4-13. Base y eje de las pa as del módulo.
Como se obse a en la Figu a 4-13, pa a inaliza el modelo se ha aplicado un sua izado selec i o en cie as
zonas, sob e odo en los polied os ec angula es que unen ambas pa as, y en el cubo que con iene el eje de gi o.
Además, bas a con ealiza el modelado manual de las pa as de un lado del módulo. Las o as se inco po a án al
modelo una ez se diseñe la pa ábola y su eje median e un modi icado mi o , y u ilizando como espejo la
p opia pa ábola. De es a o ma, las pa as queda án a la misma dis ancia, o almen e simé icas espec o al cen o
de g a edad de la pa ábola (Figu a 4-14).

Modelado en 3D con Blende
34
Figu a 4-14. Modelo inal del sopo e del módulo.
4.2.2 Pa ábola
Es a pa e del modelo es más compleja que la an e io , an o po la can idad de elemen os a diseña como po la
o ma de es os. El elemen o p incipal en o no al que se disponen el es o de los elemen os es la supe icie
pa abólica. Pa a el diseño de es a, aunque se puede ealiza manualmen e con las he amien as que p opo ciona
Blende y una buena e e encia, se ha p e e ido op a po un complemen o opcional que pe mi e el azado de
supe icies más complejas y su gene ación a pa i de da os ma emá icos.
El AddOn en conc e o es “Add Mesh: Ex a Objec s”, y es posible ins ala lo desde Blende con una simple
búsqueda en el menú de complemen os. Una ez hecho, a la ho a de inse a una malla nue a se nos o ece án
muchas más posibilidades, en e las que se p esen a una pa a in oduci una supe icie idimensional según una
ecuación ma emá ica pa a el eje Z.
Pa a la o ien ación eque ida en la pa ábola, se abaja á en el plano XZ, po lo que la ecuación gene al de la
pa ábola se á la siguien e:
(𝑥 − ℎ)2= 4𝑝(𝑧 − 𝑘) ,
(4–1)
Donde el é ice de la pa ábola es a á en las coo denadas (h, k), el oco es a á en las coo denadas (h, k+p) y la
di ec iz (el eje del ubo po ado del líquido) se á una ec a de ecuación 𝑧 = 𝑘 − 𝑝. Sin emba go, Blende
equie e especi ica la supe icie en el eje Z, po lo que, despejando, la ecuación a in oduci cambia á a la
siguien e o ma:
𝑧 = (𝑥 − ℎ)²
4𝑝 + 𝑘
(4–2)
Po sencillez en la ecuación, se oma á como é ice de la pa ábola el o igen de coo denadas de Blende . Es o
no supone un p oblema, ya que luego se pod á desplaza la pa ábola cómodamen e al luga necesa io. Po o o
lado, es ablece á una dis ancia ocal p de 1.8 me os. Po an o:
ℎ, 𝑘 = 0
𝑝 = 1,8
(4–3)
Sus i uyendo los alo es an e io es en la ecuación (4-2), ob enemos la ecuación inal a in oduci en Blende :
35
Desa ollo y modelado 3D de plan a e mosola
𝑧 = 𝑥²
7,36
(4–4)
Figu a 4-15. Mallado de la pa ábola c eada y de los sopo es del ubo po ado del líquido.
Además de lo an e io , ambién se equie en cie os alo es complemen a ios pa a pode c ea la pa ábola. Po
un lado, las subdi isiones en los ejes X e Y, y, po o o lado, los lími es de los ejes X e Y. Las subdi isiones
se án un núme o en e o en cada eje, que ep esen an cada uno de los planos que o ma án la pa ábola. A mayo
subdi isión, la cu a se á más ealis a y menos plana. Sin emba go, es o conlle a un cos e compu acional pa a
ene en cuen a. En el caso ac ual, se ha usado una subdi isión en cada eje de 32.
Po o o lado, es necesa io de ini los lími es de la cu a en los ejes. Es os i án de e minados en unción del
amaño inal deseado pa a la pa ábola. Además, hay que ene en cuen a que es os lími es se dan espec o al
o igen de coo denadas, po lo que hab á que indica los lími es como la mi ad del alo deseado. Como se desean
pa ábolas con un ancho de 5 me os y un la go de 7,8 me os, los alo es en Blende se án, espec i amen e,
𝑥𝑚𝑎𝑥 = 2,5 e 𝑦𝑚𝑎𝑥 = 3,9.
Con odo lo an e io , se dispone de una supe icie pa abólica con las ca ac e ís icas deseadas, como se ap ecia
en la Figu a 4-15. Únicamen e queda ía da le g oso , pa a lo que se u iliza el modi icado pa a solidi ica .
Aunque se pod ía ealiza de o ma manual median e ex usión, esul a más complejo ealiza lo en una sola
Figu a 4-16. Mallado del eje y la es uc u a que sopo an la pa ábola.
Modelado en 3D con Blende
36
di ección. Si no se hicie a de dicho modo, las p opiedades geomé icas de la pa ábola se e ían a ec adas. Po
ello, se op a po da g oso con el modi icado en la di ección ex e io de la pa ábola.
A con inuación, ya es posible modela un cilind o que, unido a la ca a ex e io de la pa ábola a lo la go del eje
Y, ha á las unciones de eje de gi o en el mo imien o del módulo. También se c ean o os es cilind os en
pa alelo, de un adio meno , pa a da o ma a la es uc u a. Pa a c ea las conexiones en e ellos, bas a con
ealiza lo una ez en el ex emo del módulo y usa el modi icado a ay pa a que se dis ibuyan sus epe iciones
a lo la go del eje. Con odo ello, queda c eada la es uc u a y la pa e ex e io de la pa ábola (Figu a 4-16).
Pa a la zona in e io , es necesa io c ea es polied os ec angula es, que ha án de sopo e pa a el ubo, y uni los
a la ca a in e io . En el o o ex emo, se acopla un pequeño cilind o de un diáme o lige amen e supe io al del
ubo po ado de líquido. Finalmen e, bas a con c ea el cilind o del ubo po ado y usa un modi icado
booleano pa a que quede po den o de los es cilind os de los sopo es.
Figu a 4-17. Modelo inal de la pa ábola.
A lo la go de odo es e p oceso, es muy posible encon a di icul ades e incohe encias en el mallado, sob e odo
a la ho a de inco po a nue os elemen os y usiona los con los exis en es median e modi icado es. Po ello, es
necesa io analiza el mallado, modi icando é ice a é ice en las zonas a ec adas pa a co egi la malla.
También es con enien e usa el biselado pa a e i a bo des a ilados y da un aspec o más ealis a, así como
sua izados en las zonas opo unas median e la aplicación en de e minados conjun os de é ices. De es a o ma,
se ob iene un modelo inal de pa ábola como el mos ado en la Figu a 4-17.
37
Desa ollo y modelado 3D de plan a e mosola
Figu a 4-18. Rende izado on al del módulo comple o.
Finalmen e, as compone el módulo en su conjun o, se han ealizado unos ende izados con el mayo de alle
posible del modelo. Pa a ello, ha sido necesa io inco po a en Blende a ios pun os de luz, así como una cáma a
a pa i de la cual ob ene las imágenes. La posición y o ien ación de los elemen os es cla e a la ho a de in en a
ob ene una imagen inal que ealce los pe iles del modelo, así como los pa áme os de ajus e de la cáma a.
Figu a 4-19. Rende izado ase o del módulo comple o.
En la Figu a 4-18 y Figu a 4-19 podemos ap ecia un ende izado desde una is a on al y ase a,
espec i amen e. La ob ención de una imagen ende izada en e a una simple cap u a de pan alla del modelo
pe mi e obse a con mayo lujo de de alle el compo amien o del modelo en e a la luz y las somb as gene adas,
así como un aspec o ealis a de los ma e iales aplicados en el desa ollo del modelo.
Dinámica de la simulación
44
se engloba a odo es o a su ez en o o a chi o que ges ione odos los elemen os de la simulación, se hab á
conseguido au oma iza el mo imien o de oda la plan a, incluidos los pa os y pues as en ma cha
indi idualizados de los elemen os que se desee.
5.1.1 Idea inicial: uso de opics de Gazebo
En un comienzo, se in en a do a al modelo de cie o mo imien o de la mane a más sencilla posible. Pa a ello,
la p ime a idea es publica un mensaje po e minal en un opic de Gazebo, de o ma que podamos indica una
posición conc e a a cualquie elemen o in oducido en la simulación. T as ealiza una búsqueda de los opics
disponibles cuando se inicia la simulación, pa ece ap opiado publica mensajes en el opic
/gazebo/se _link_s a e. Al igual que es e, ambién exis e o o pa a modelos, aunque el obje i o en es e
caso es mo e solo el link supe io , la pa ábola.
Pa a ealiza una publicación se usa el comando os opic pub. T as esc ibi dicho comando, y usando la ecla
de abulación en el e minal, se pueden isualiza odos los opics disponibles donde se á posible publica
mensajes. Así mismo, una ez esc i o el opic en cues ión, si se pulsa abulado se au ocomple a á el comando
siemp e que sea necesa io añadi más in o mación, como po ejemplo el ipo de mensaje o algún a gumen o
eque ido pa a el uncionamien o.
Teniendo en cuen a odo lo an e io , y as ejecu a la simulación, se ejecu a el siguien e comando en una nue a
en ana del e minal:
>> os opic pub /gazebo/se _link_s a e gazebo_msgs/LinkS a e
'{link_name: link_pa abola, pose: { posi ion: { x: 0, y: 0, z: 0 },
o ien a ion: {x: 0, y: 0, z: 0, w: 0 } }, wis : { linea : { x: 0, y:
0, z: 0 }, angula : { x: 0, y: 1, z: 0} }, e e ence_ ame: link_pa as
}'
En dicho comando se especi ica un gi o de la pa ábola en adianes. En el ins an e de la ejecución, la pa ábola
alcanza la posición deseada. Sin emba go, as ello, lejos de man ene la posición especi icada, es a comienza a
ealiza mo imien os lib emen e has a e o na a la posición de equilib io. Es deci , con es e comando se
consigue si ua al modelo en una posición deseada, aunque no man ene lo en ella.
Pa a in en a da solución a es o se in en a complemen a el comando os opic con el lag - , que pe mi e
hace que la publicación se ejecu a de o ma ecu si a con una ecuencia conc e a especi icada po el usua io.
Po ejemplo, ejecu ando os opic pub - 10, consegui emos que el mensaje deseado se publique con una
ecuencia de 10 Hz.
A p io i, se pod ía pensa que con una ecuencia de e minada se pod ía e i a que el modelo comience a oscila ,
y se ía una o ma de man ene lo es á ico en la posición especi icada. Sin emba go, es o no sucede como se
piensa, debido a que el comando mue e el modelo desde la posición de eposo has a la especi icada. Si se
es ablece la ecu si idad en la ejecución, lo que se consigue es ealiza es e mo imien o de una o ma muy
ápida, no ija lo en la posición de des ino. Se p o oca una o ación caó ica, la cual no supone ningún ipo de
solución al p oblema exis en e.
T as busca o os opics donde p ac ica un mé odo simila , no se encuen an al e na i as pa a consegui lo
deseado. Sin emba go, al menos ha sido posible e i ica que el mo imien o del modelo es el co ec o, ya que
la pa ábola se man iene ijada al eje du an e el gi o en odo momen o, así como las pa as pe manecen es á icas
y unidas al suelo.
Po an o, se á necesa io busca al e na i as que ayan más allá de abaja con simples publicaciones en opics
exis en es. P obablemen e, el p incipal allo haya sido in en a ealiza la comunicación de o ma di ec a con
Gazebo. Lo ideal es ealiza oda la compu ación y el in e cambio de mensajes en ROS, y deja a Gazebo
únicamen e como isualizado pa a la simulación y como uen e de da os pa a conoce los pa áme os en iempo
eal de los obje os de la simulación.

45
Desa ollo y modelado 3D de plan a e mosola
5.1.2 C eación de plugins p opios como p ime a al e na i a
Una o ma dis in a de p ocede pa a busca solución al p oblema exis en e es la c eación de plugins p opios.
Es os son agmen os de código que pueden es a esc i os en Py hon o en C++, y que se componen de ó denes
p opias de lib e ías de ROS pa a do a de cie a uncionalidad a los modelos o el mundo de la simulación. Es os
plugins pueden ambién c ea se pa a modi ica elemen os di ec amen e en Gazebo, hecho que, como sucedía en
la al e na i a an e io , no si e de mucho dados los obje i os de es e abajo.
Pa a desa olla un plugin es necesa io ene bas an e conocimien o de las lib e ías y de las unciones que o o gan
es as. Es o se acen úa más aún cuando en an so wa es adicionales, como en es e caso Gazebo, ya que es
necesa io conoce bien cómo se in eg an con ROS. Más allá de es o, como es de espe a , es necesa io un ni el
medio en p og amación de dichos lenguajes si se quie e ealiza con cie a luidez.
Cuando se c een plugins, es necesa io e e encia los en la a iable $PLUGIN_PATH. De lo con a io, ROS se á
incapaz de encon a los. Además, es necesa io con igu a de o ma co ec a el a chi o CMakeLis s, pa a
especi ica las dependencias y componen es necesa ios. Así, no hab á p oblemas a la ho a de compila los
plugins con la o den ca kin_make as ealiza alguna modi icación en ellos.
En p ime luga , se ealizó un plugin pa a mo e un modelo, el cual unciona co ec amen e, así como ambién
o o wo ld plugin capaz de modi ica pa áme os del en o no de la simulación e imp imi mensajes po pan alla.
Sin emba go, empiezan a su gi p oblemas cuando se quie en modi ica elemen os den o del modelo, como los
links y las a iculaciones.
La complejidad ealizando el plugin deseado aumen a bas an e. Empieza a se necesa io el uso de ó denes a más
bajo ni el, pa a ealiza modi icaciones que, en la mayo ía de las ocasiones, suelen esol e se median e lib e ías.
Po odo ello, an es de p osegui con es e mé odo se in en an busca o as al e na i as que o ezcan mayo
e sa ilidad con meno desempeño.
5.1.3 Idea inal: con ol en bucle ce ado
5.1.3.1 La lib e ía ROS Con ol
Todo lo comen ado en los dos pun os an e io es, más allá de la complejidad que implica, no dejan de se más
que soluciones de con ol en bucle abie o. Sin emba go, aunque su implemen ación ampoco esul a sencilla,
exis en al e na i as que pe mi en implemen a un con ol en bucle ce ado.
La opción omada en es e caso, que es la que se ha implemen ado con éxi o desde es e pun o has a el inal del
p oyec o, es el con ol en bucle ce ado g acias al uso de ROS Con ol. Se a a de una se ie de paque es que
pe mi en implemen a con olado es y hace los gené icos pa a odos los obo s. Pa a ello, se oma como en ada
el es ado de la a iculación del ac uado , con el in de con ola la salida median e un mecanismo en bucle
e oalimen ado, no malmen e un PID.
Aunque es posible elabo a desde ce o cualquie ipo de con olado , lo no mal es usa alguno de los ya exis en es
en la lib e ía os_con olle s, o al menos pa i desde ellos pa a modi ica los. Den o de dicha lib e ía, se
encuen an di e sos con olado es de posición, elocidad y es ue zo, en e o os. En el p esen e abajo se ha
usado un con olado de es ue zo basado en posición, es deci , se co ige la posición angula de la a iculación
aplicando cie a ue za.
Sin emba go, uno de los pun os po los que no se ha omado es a al e na i a has a el inal es po la can idad de
modi icaciones eque idas espec o a lo abajado an e io men e. En e los p incipales incon enien es pa a el
uso de ROS Con ol en e a lo que se ha desa ollado has a el p esen e capí ulo, así como algunas nue as
cues iones pa a ene en cuen a, des aca lo siguien e:
• Modelado en URDF. El ipo de a chi o pa a la desc ipción de modelos es URDF, siendo imposible el
uso de SDF como has a aho a. Es o implica ealiza una aducción de los a chi os desa ollados, así
como de los modelos c eados has a aho a.
• E o en ex u as impo adas. Los a chi os collada ( o ma o .dae) impo ados en los a chi os SDF
pe mi ían man ene las ex u as y ma e iales diseñados en el so wa e de modelado en 3D. Sin emba go,
Dinámica de la simulación
46
al impo a los en a chi os URDF, es as ca ac e ís icas no son ep esen adas en Gazebo, apa eciendo los
modelos en un colo blanco o almen e plano. La única o ma de da colo es usando colo es y ma e iales
como se explica en el capí ulo 3.3.2.1, aunque es muy complejo alcanza la calidad que apo a el uso de
los que con iene la malla o iginal. Po odo ello, pa a la elabo ación de modelos en URDF bas a con
impo a la malla de colisiones ( o ma o .s l), an o pa a el apa ado espec i o como pa a el isual.
• Bloque ansmission. En el a chi o URDF, es necesa io c ea una nue a e ique a llamada ansmission.
Es o ep esen a una in e az en la que se c ea un ac uado pa a cada a iculación que se desee con ola
(Figu a 5-1). Su unción p incipal es man ene cons an e la po encia del eje, es deci , el p oduc o de la
ue za aplicada po su elocidad (ROS Wiki, 2018). Es necesa io indica el ipo de ansmisión usada,
en es e caso una simple, así como la educción mecánica.
Figu a 5-1. Bloque de ansmisión usado pa a el con ol de un colec o .
• A chi os de con igu ación YAML. En ROS, el uso de es os a chi os es necesa io pa a es ablece la
con igu ación de los pa áme os del pa ame e se e al ejecu a cualquie nodo. En conc e o, al usa
ROS Con ol, en es e a chi o es ablecemos los pa áme os p opo cional, in eg al y de i a i o del
con olado PID, así como ambién la asa de e esco de publicación del alo de posición del eje
(Figu a 5-2). Es os alo es son obliga o ios pa a el uncionamien o de los con olado es. Sin emba go,
es os pueden se modi icados incluso du an e el iempo de ejecución, median e la ejecución de
comandos desde el e minal.
Figu a 5-2. A chi o de con igu ación YAML pa a con ola un colec o .
T as sol en a odos los incon enien es mencionados en los pun os an e io es, se encuen a un e o al in en a
ejecu a la simulación. Dicho e o su ge cuando ROS no es capaz de ca ga el ipo de con olado eque ido,
debido que no exis e. En conc e o, se puede e el mensaje ob enido en el e minal as in en a inicia la
simulación en la Figu a 5-3.
Al comp oba los paque es ins alados cuando se con igu ó inicialmen e ROS, se comp ueba que los
con olado es no exis en en ningún di ec o io, a di e encia de lo que se indica en la ins alación gene al de ROS.
Es o es debido a que, debido a p oblemas de segu idad en los eposi o ios de ins alación de ROS, cambia on las
cla es de segu idad de es os, y po consecuencia la ubicación de los paque es pa a la ins alación de los
con olado es.
Pa a sol en a dicho e o , es necesa io ac ualiza las cla es de los eposi o ios. En p ime luga , median e el
47
Desa ollo y modelado 3D de plan a e mosola
siguien e comando en un nue o e minal se bo an las cla es exis en es:
>> sudo ap -key del 421C365BD9FF1F717815A3895523BAEEB01FA116
A con inuación, pa a in oduci la nue a cla e, se usa el comando:
>> sudo -E ap -key ad --keyse e 'hkp://keyse e .ubun u.com:80' --
ec -key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
Po úl imo, es necesa io ejecu a un úl imo comando, as el cual no se ecibi á ningún ipo de ad e encia as
in en a ac ualiza los eposi o ios:
>> sudo ap clean && sudo ap upda e
Con odo ello, quedan con igu ados co ec amen e los eposi o ios, as lo cual se pueden ins ala las lib e ías
con odos los con olado es con éxi o. Después de ello, no apa ecen mensajes de e o al inicia la simulación y
es a se ejecu a sin ningún p oblema.
Sin emba go, pa a llega a es e pun o ha sido necesa io modi ica los a chi os de lanzamien o en ROS, dado que
aho a in e ienen en la simulación nue os nodos, gene ados po las nue as lib e ías añadidas. En conc e o, los
nue os nodos son los siguien es:
• Nodo gene ado de modelos (u d _spawne ). Se ealiza una ca ga de la con igu ación de los pa áme os
del PID, necesa ios pa a ejecu a el nodo de gene ación del modelo (Figu a 5-4). Además, es necesa io
especi ica las coo denadas idimensionales de posición donde se gene a á el modelo, lo cual se ealiza
en las líneas p e ias a la de inición del nodo.
• Ca ga y ejecución de con olado es. Es e nodo se enca ga de gene a un con olado asociado a un
modelo. Es necesa io especi ica en los a gumen os los con olado es que se desean ca ga de en e los
disponibles en el a chi o de con igu ación YAML. No es necesa io ca ga los odos, sin emba go, si es
necesa io que se de inan en dicho a chi o si se quie en ca ga en la simulación, de ahí la impo ancia
del a chi o de con igu ación YAML (Figu a 5-5).
Figu a 5-3. En ojo, mensaje de e o ob enido al inicia la p ime a simulación con ROS Con ol.
Figu a 5-4. Nodo gene ado de modelos.
Dinámica de la simulación
48
• Nodo publicado del es ado del obo . Dicho nodo se enca ga de publica la in o mación de es ado de
las di e en es pa es del obo pa a pode analiza la en RViz, so wa e diseñado pa a la isualización y
e i icación del uncionamien o del modelo c eado. Además, se especi ica que se publique dicha
in o mación con una ecuencia exac a de 5 Hz (Figu a 5-6).
T as inco po a las líneas an e io es al a chi o de lanzamien o e inicia la simulación, ya es posible comenza a
lanza comandos pa a cambia la posición del modelo gene ado. El sis ema se ha con igu ado de o ma que,
desde un nue o e minal, se publique en un de e minado opic la posición angula a la que se desea manda el
colec o , en adianes. Pa a mayo sencillez, la posición ce o es la que oma el colec o cuando es á o almen e
e ical.
En conc e o, es a in o mación debe se publicada en un opic con el nomb e del modelo en cues ión, seguido del
nomb e del con olado . Den o de es e, exis en a ios opics donde publica in o mación, en e ellos los que
pe mi en cambia los pa áme os del PID. Sin emba go, es necesa io acudi al opic …/command median e la
o den os opic pa a publica la in o mación de la posición. Pa a más ayuda, lo ideal es usa el au ocomple ado
en el e minal, median e el abulado , ya que se indica au omá icamen e el ipo de mensaje y la o ma de
in oduci el mismo, como se puede ap ecia en la Figu a 5-7.
Una ez ejecu ada la o den, se obse a cómo el modelo en cues ión comienza a mo e se con des ino a dicha
posición. Sin emba go, se obse a que sob epasa dicha posición po su p opia ine cia, y comienza a oscila en
o no a la posición obje i o. Es o es debido a que los alo es del PID con igu ado no son los adecuados, y es
necesa io ecalcula los de ca a a un uncionamien o óp imo según las ca ac e ís icas ísicas del modelo.
5.1.3.2 Sin onización manual del PID
Pa a ello, se ealiza á una sin onización manual del con olado g acias a la in e az q _gui. Es a pe mi e
isualiza e in e ac ua con ROS de una o ma más au oma izada y isual: desde publica mensajes p og amados
en de e minados opics, incluso median e unciones, has a la isualización g á ica del con enido de los opics,
pasando po la capacidad de con igu a de o ma dinámica cie os pa áme os, en el iempo de la ejecución.
Se ap o echa án las unciones mencionadas an e io men e pa a la sin onización. En p ime luga , con la
simulación inicializada y en un nue o e minal, se ejecu a á la in e az g á ica con el siguien e comando:
>> os un q _gui q _gui
Figu a 5-5. Nodo de ca ga de con olado es.
Figu a 5-6. Nodo publicado del es ado del obo .
Figu a 5-7. Uso de os opic pa a mo e un modelo a la posición angula 1,2 adianes.
49
Desa ollo y modelado 3D de plan a e mosola
Una ez den o de ella, en la pes aña Plugins, y den o de Topics, se usa el Message Publishe (Figu a 5-8). En
es e apa ado, se dispone de un publicado de mensajes, que esc ibi á en el opic elegido y a una ecuencia
de e minada. Pa a ello, se elige el opic …/command de cualquie modelo gene ado, con una ecuencia de 50
Hz, y se in oduce en el panel con la c uz e de.
Se desea p o oca un mo imien o sinusoidal en un colec o . Pa a ello, en el campo da a, in oducimos una
unción seno de ampli ud 2, en la cual el alo i ep esen a el iempo en la simulación. Una ez in oducida la
exp esión, se comenza án a publica mensajes una ez quede ma cado el ic neg o a la izquie da del nomb e del
opic.
T as ello, es posible isualiza en Gazebo como el colec o ealiza un mo imien o oscila o io cons an e, aunque
no como se ha es ablecido. El mo imien o con igu ado an e io men e, en el opic …/command, es la señal de
en ada, y el que se isualiza en Gazebo es la salida. A con inuación, la idea es modi ica los pa áme os del PID
en iempo eal, de o ma que la salida sea lo más pa ecida posible a la en ada, con una eacción ápida.
Pa a pode compa a en ada y salida, se usa á el isualizado de da os g á icos. Pa a ello, en la pes aña Plugins
y pos e io men e Visualiza ion, se selecciona la o den Plo . Pa a añadi la in o mación a mos a en la g á ica,
en p ime luga , se elige el opic de en ada, donde se publica la in o mación (…/command/da a). Po o o lado,
se in oduce la posición eal del eje, la salida, in oduciendo el opic (…/s a e/p ocess_ alue). De es e
modo, podemos compa a isualmen e ambas cu as, con el in de ap oxima las lo máximo posible (Figu a
5-9).
Figu a 5-8. Message Publishe de q .
Figu a 5-9. Visualizado g á ico de q .

Dinámica de la simulación
50
Po úl imo, sólo queda ene la capacidad de modi ica los alo es del PID en iempo eal pa a mejo a la
espues a del con olado . Pa a ello se ab e la pes aña de Plugins, Con igu a ion y pos e io men e Dynamic
Recon igu e. Como ep esen a la Figu a 5-10, apa ecen unos con olado es en o ma de ba a pa a cada uno de
los pa áme os, y es posible iendo si la espues a mejo a o empeo a en unción de cómo se modi iquen. Aunque
es e p oceso se hace a ojo, lo ideal es comenza modi icando la cons an e in eg al pa a mejo a la espues a en
iempo pe manen e, seguido de una modi icación de la p opo cional pa a agiliza la espues a.
Figu a 5-10. Dynamic Recon igu e de q .
T as ob ene unos alo es ace ados pa a el con olado , se obse a como la espues a mejo a no ablemen e. La
oscilación al alcanza la posición obje i o es nula, ambién g acias a que la elocidad angula del mo o de la
a iculación se ha limi ado numé icamen e en el modelo URDF del colec o . Po ello, se puede da po inalizada
la sin onización del PID, siemp e que no se ealice ninguna modi icación de las p opiedades ísicas y
geomé icas del colec o .
5.2 Mo imien o de un lazo
Una ez con igu ado co ec amen e el mo imien o pa a un colec o , el siguien e paso es impo a el modelo de
lazo pa a llega al mismo in. En es e caso, a di e encia del an e io , el modelo de lazo cuen a con dos ejes de
gi o dis in os que ac úan independien emen e, aunque pe manecen al mismo modelo.
En el modelo de colec o , el modelo cons aba de dos pa es básicas: una es á ica (pa as) y o a dinámica
(pa ábola). Sin emba go, en el modelo de lazo exis en dos pa es dinámicas, las cuales se iden i ica án como
pa ábola de en ada y pa ábola de salida. No es necesa io dis ingui las pa es es á icas, y pa ece mejo idea
auna las odas en una sola.
Figu a 5-11. A chi o lazo_con ol.yaml.
51
Desa ollo y modelado 3D de plan a e mosola
Así mismo, en el modelo URDF del lazo ha sido necesa io in oduci una nue a a iculación, habiendo aho a
dos dis in as, así como dos bloques dis in os de ipo ansmission. Debido a ello, lo ideal es de ini un nue o
con olado , pasando a habe dos dis in os, uno pa a la pa ábola de en ada y o o pa a la de salida. Po an o, es
necesa io c ea un a chi o de con igu ación YAML nue o (Figu a 5-11), en el cual se especi iquen po sepa ado
los pa áme os de cada con olado .
La c eación de un nue o a chi o de con igu ación de pa áme os es algo obliga o io, ya que al in oduci un
nue o con olado es e iene que sabe dónde encon a los pa áme os con los cuales inicializa se. Sin emba go,
en el caso que nos a añe, y al se idén ico el con ol de dos colec o es dis in os den o de un mismo lazo, bas a
con eplica las ca ac e ís icas del con olado ya diseñado, cambiando únicamen e el nomb e pa a pode
dis ingui los.
Po o o lado, ambién es necesa io modi ica el a chi o de lanzamien o de la simulación, en los pun os
mencionados en el capí ulo 5.1.3.1. En conc e o, se c ea á un nue o a chi o pa a el lanzamien o y con ol del
lazo pa a no pe de la posibilidad de lanza un colec o indi idualmen e si ue a necesa io.
De ca a al nue o a chi o, el obo cambia á de nomb e y pasa á de colec o a lazo. Po ello, es necesa io cambia
el nomb e de es e allá donde se mencione. Además, hay que hace alusión al nue o con olado inco po ado,
pa a lo que es necesa io añadi lo como un a gumen o más en el nodo enca gado de gene a y ejecu a los
con olado es.
Como se puede ap ecia en la Figu a 5-12 si se obse an los a gumen os especi icados al nodo, se puede e
que, apa e del join _s a e_con olle (enca gado de publica el es ado de odas las a iculaciones exis en es), se
ca gan dos con olado es de eje dis inguidos po las palab as in y ou , los cuales se asocia án a las pa ábolas de
en ada y salida, espec i amen e.
De la o ma en la que se ha p ocedido en la simulación, el con ol mínimo se ealiza sob e un solo eje, el cual
con iene dos colec o es. En la ealidad, el con ol se ealiza de o ma indi idual pa a cada colec o . Se ha
decidido no p ocede de es a o ma en el abajo debido a que es o implica ía duplica el núme o de con olado es
p esen es en la simulación, y conlle a una pé dida de endimien o impo an e al gene a nume osos modelos.
Sin emba go, si se quisie a ealiza , bas a ía con ex apola el mé odo seguido an e io men e, desde un colec o
a un lazo, pa a añadi an os ejes como se deseen.
5.3 Ges ión de a ios lazos
Pa a comple a la gene ación de modelos en la simulación, el úl imo paso es eplica el núme o de lazos en
di e en es posiciones de acue do con la o ganización que p esen a la plan a e mosola al comple o. Pa a ello, se
ap o echa á una ca ac e ís ica de los a chi os de lanzamien o de la simulación, y es que den o de ellos es
posible anida o os a chi os de lanzamien o, de o ma que ejecu ando el p ime o ambién se es én lanzando a
la ez odos los que es e incluya.
De es a o ma, la idea pasa po diseña un a chi o de lanzamien o p incipal, en el cual se lance en p ime a
ins ancia el mundo de la simulación, y seguidamen e se ejecu en cada uno de los a chi os de lanzamien o de un
lazo, especi icando pa a cada uno de ellos la posición conc e a en la que se gene a án den o del mundo de la
simulación. Se puede ap ecia un esumen esquema izado del p oceso de lanzamien o de la simulación en la
Figu a 5-13.
Figu a 5-12. Nodo de ca ga de con olado es pa a un lazo.
Dinámica de la simulación
52
Sin emba go, la implemen ación de la idea plan eada no es inmedia a, y su gen e o es al in en a inicializa una
simulación con a ios lazos. Es o es debido a que, al gene a a ios modelos iguales, ambién lo hacen los opics
que se c ean a pa i de ese modelo. Es es e el e o del que ape cibe ROS, ya que no es posible de ini a ios
opics con el mismo nomb e.
Como solución a dicho e o , se p opone la di e si icación de cada uno de los lazos median e el uso de espacio
de abajos en los a chi os de lanzamien o (namespaces). El uso de es a e ique a, englobando a odo el modelo
indi idual de cada lazo, pe mi e do a a cada uno de ellos de un nomb e conc e o, el cual puede se
p opo cionado como a gumen o desde el a chi o p incipal al igual que sucede con la posición. Pa a ello, hab á
que añadi el namespace en cada pa áme o que a ec e al modelo, como se puede ap ecia en ama illo en la
Figu a 5-14.
O o pun o en el que es necesa io in e eni si se aplica la medida an e io es en el modelo URDF del lazo. En
dicho a chi o, en la e ique a <plugin>, se equie e esc ibi el espacio de abajo del obo , den o de
< obo Namespace>. Si se especi ica un nomb e en es e pun o, se ob end án mensajes de e o , ya que los
espacios de abajo en URDF y a chi o de lanzamien o se án disco dan es. La solución pa a e i a lo es elimina
dicha línea en el a chi o URDF, ya que de es a o ma ca ga á como espacio po de ec o el usado en el a chi o
de lanzamien o.
Figu a 5-13. Esquema de lanzamien o de la simulación.
Figu a 5-14. F agmen o del nue o a chi o de lanzamien o de modelos usando namespaces.
53
Desa ollo y modelado 3D de plan a e mosola
La dis ibución pa a denomina los di e en es lazos gene ados en la simulación sigue un o den po le as, según
la ila a la que pe enezcan, y un o den numé ico según su posición den o de dicha ila. Po an o, cuando se
desee ealiza una publicación pa a mo e un de e minado colec o , se á necesa io de e mina p ime o el nomb e
del lazo, y pos e io men e si se a a del eje de en ada o el de salida. De es a o ma, si se quisie a mo e el eje
de salida del e ce lazo de la ila “B” ( e Figu a 5-15 pa a en ende la o ganización), a la posición 0.5 ad, se
usa á el siguien e comando:
>> os opic pub -1
/lazoB3/pa as_pa abola_ou _posi ion_con olle /command
s d_msgs/Floa 64 “da a: 0.5”
Dada la dis ibución de lazos empleada en la plan a, y ya que se desea que es os se si úan de o ma simé ica
espec o a la zona cen al de po encia, es necesa io ealiza modi icaciones en los lazos de las ilas “B” y “D”
espec o al modelo o iginal. Pa a ello, al y como se comen ó en el capí ulo 4.5, se ha c eado un modelo de lazo
simé ico al o iginal, que pe mi e da la dis ibución deseada a la plan a.
Un p oblema que ha su gido en ocasiones pun uales, sin segui un pa ón de e minado, es un compo amien o
ex año en los modelos gene ados. De o ma ocasional, en es os se p oduce un emblo en los ex emos,
independien emen e de si se han gene ado solos o jun o a o os modelos. Pun ualmen e, o o e o ha sido la
colisión en e modelos cuando se gene an jun os.
Pa a soluciona el p ime o de los e o es, ha sido necesa io modi ica las masas e ine cias de los a chi os URDF,
con la consecuen e esin onización de los con olado es PID, ya que pa ece se que el mo o de ísicas de Gazebo
p esen a algunos allos. Po o o lado, pa a sol en a el segundo allo, se ha modi icado la posición de cada uno
de los modelos dejando una sepa ación su icien e que e i e la colisión en e ellos, así como se ha ele ado en
unos cen íme os su posición pa a hace que no p esen en p oblemas al in e pone se con el suelo.
Has a es e pun o, se ha conseguido hace unciona co ec amen e una simulación de 20 lazos, dis ibuidos en 4
ilas dis in as. Los alo es adop ados son los que pe mi en que, compu acionalmen e, la simulación sea luida.
En el caso de dispone de un PC con ca ac e ís icas supe io es, es posible modi ica ácilmen e el núme o de
lazos ejecu ados, así como la dis ibución de es os, pe sonalizando el a chi o de lanzamien o p incipal,
mul i_lazo_main.launch.
Figu a 5-15. O ganización de los lazos en la simulación.

61
7 CONCLUSIONES Y LÍNEAS FUTURAS
l desa ollo del p esen e abajo ha plan eado e os y di icul ades de di e sa na u aleza, los cuales han
llegado a implica mucho abajo en ano, o bien en una di ección que no e a del odo la co ec a pa a el
obje i o deseado. Los emas a ados desde el p incipio has a el inal del p oyec o equie en de un
ap endizaje muy p o undo desde el comienzo. Po o o lado, a medida que se a anza en los di e en es pasos del
p oyec o, siemp e se encuen an nue as o mas de p ocede que supe an an o en sencillez como en e iciencia a
las an e io es.
Aunque no se dispone de mé icas pa a analiza el endimien o gene al de la simulación, más allá de las que
apo a Gazebo, pa ece lógico pensa que la dimensión de la plan a y los u u os modelos pa a añadi a es a
depende án en g an medida de la capacidad compu acional del PC que ejecu e la simulación. En el ac ual, y con
las dimensiones de plan a comen adas en el abajo, se llega a alcanza un ac o de iempo eal ce cano al 0.8,
lo cual indica que la simulación no es capaz de mo e se en iempo eal. En el mejo de los casos, es e cocien e
debe ía se 1, lo que implica ía que los iempos de simulación y eal son coinciden es.
O o aspec o pa a ene en cuen a es la complejidad de los modelos inco po ados a Gazebo. Si bien desde un
comienzo se ideó diseña un módulo lo más de allado posible, el so wa e de la simulación pa ece unciona
mucho mejo con mallados con meno can idad de pun os. Desde es e pun o de is a, mien as más se
simpli iquen los modelos, así como las mallas de las colisiones, mejo endimien o y luidez se ob end án en la
simulación.
Es e abajo sien a las bases pa a una u u a ampliación de la plan a, an o en núme o de lazos, como en di e en es
obo s pa a inspección y di e sas a eas. La idea es pode ap o echa que el mo imien o de la plan a es á
comple amen e au oma izado, así como ambién es posible de ec a en odo momen o si los modelos
in oducidos colisionan con algún elemen o pe enecien e a la plan a. Todos los modelos en es a han sido
diseñados de o ma que su malla es o almen e coinciden e con su isualización.
Como ideas gene ales, se pod ía añadi un obo más elabo ado que ealice u as p og amadas y a eas de
man enimien o. Exis en di e sos senso es y cáma as en ROS que pe mi i ían do a a cualquie obo de es as
uncionalidades. Así mismo, siguiendo las pau as mencionadas en el capí ulo 6, la inclusión de cualquie
elemen o diseñado en la simulación es casi i ial.
E
63
ANEXO A. CÓDIGO IMPLEMENTADO
con inuación, se expond án los agmen os de código más des acados que pe mi en ejecu a la
simulación. Es os i án esc i os en dis in os lenguajes, sob e odo XML y Py hon, y se complemen an
con más código que no se ha añadido debido a que no se conside a esencial.
A.1 Lanzamien o de la simulación: mul i_lazo_main.launch
<?xml e sion="1.0" encoding="UTF-8"?>
<launch>
<a g name=" obo " de aul ="machines"/>
<a g name="debug" de aul =" alse"/>
<a g name="gui" de aul =" ue"/>
<a g name="headless" de aul =" alse"/>
<a g name="pause" de aul =" alse"/>
<include ile="$( ind gazebo_ os)/launch/emp y_wo ld.launch">
<a g name="wo ld_name" alue="$( ind
p cplan )/wo lds/simple.wo ld"/>
<a g name="paused" alue="$(a g pause)"/>
<a g name="use_sim_ ime" alue=" ue"/>
<a g name="gui" alue="$(a g gui)"/>
<a g name="headless" alue="$(a g headless)"/>
<a g name="debug" alue="$(a g debug)"/>
</include>
<!-- spawn de los lazos -->
<include ile="$( ind p cplan )/launch/mul i_lazo_spawn_ obo .launch">
<a g name=" obo _name" alue="lazoA5" />
<a g name="pos_x" alue="-110" />
<a g name="pos_y" alue="125" />
</include>
<include ile="$( ind
p cplan )/launch/mul i_lazo_espejo_spawn_ obo .launch">
<a g name=" obo _name" alue="lazoB5" />
<a g name="pos_x" alue="-110" />
<a g name="pos_y" alue="-125" />
</include>
<include ile="$( ind p cplan )/launch/mul i_lazo_spawn_ obo .launch">
<a g name=" obo _name" alue="lazoA4" />
<a g name="pos_x" alue="-90" />
<a g name="pos_y" alue="125" />
</include>
A
Anexo A. Código implemen ado
64
<include ile="$( ind
p cplan )/launch/mul i_lazo_espejo_spawn_ obo .launch">
<a g name=" obo _name" alue="lazoB4" />
<a g name="pos_x" alue="-90" />
<a g name="pos_y" alue="-125" />
</include>
<include ile="$( ind p cplan )/launch/mul i_lazo_spawn_ obo .launch">
<a g name=" obo _name" alue="lazoA3" />
<a g name="pos_x" alue="-70" />
<a g name="pos_y" alue="125" />
</include>
<include ile="$( ind
p cplan )/launch/mul i_lazo_espejo_spawn_ obo .launch">
<a g name=" obo _name" alue="lazoB3" />
<a g name="pos_x" alue="-70" />
<a g name="pos_y" alue="-125" />
</include>
<include ile="$( ind p cplan )/launch/mul i_lazo_spawn_ obo .launch">
<a g name=" obo _name" alue="lazoA2" />
<a g name="pos_x" alue="-50" />
<a g name="pos_y" alue="125" />
</include>
<include ile="$( ind
p cplan )/launch/mul i_lazo_espejo_spawn_ obo .launch">
<a g name=" obo _name" alue="lazoB2" />
<a g name="pos_x" alue="-50" />
<a g name="pos_y" alue="-125" />
</include>
<include ile="$( ind p cplan )/launch/mul i_lazo_spawn_ obo .launch">
<a g name=" obo _name" alue="lazoA1" />
<a g name="pos_x" alue="-30" />
<a g name="pos_y" alue="125" />
</include>
<include ile="$( ind
p cplan )/launch/mul i_lazo_espejo_spawn_ obo .launch">
<a g name=" obo _name" alue="lazoB1" />
<a g name="pos_x" alue="-30" />
<a g name="pos_y" alue="-125" />
</include>
<include ile="$( ind p cplan )/launch/mul i_lazo_spawn_ obo .launch">
<a g name=" obo _name" alue="lazoC1" />
<a g name="pos_x" alue="20" />
<a g name="pos_y" alue="125" />
</include>
<include ile="$( ind
p cplan )/launch/mul i_lazo_espejo_spawn_ obo .launch">
<a g name=" obo _name" alue="lazoD1" />
<a g name="pos_x" alue="20" />
<a g name="pos_y" alue="-125" />
</include>
<include ile="$( ind p cplan )/launch/mul i_lazo_spawn_ obo .launch">
<a g name=" obo _name" alue="lazoC2" />
65
Desa ollo y modelado 3D de plan a e mosola
<a g name="pos_x" alue="40" />
<a g name="pos_y" alue="125" />
</include>
<include ile="$( ind
p cplan )/launch/mul i_lazo_espejo_spawn_ obo .launch">
<a g name=" obo _name" alue="lazoD2" />
<a g name="pos_x" alue="40" />
<a g name="pos_y" alue="-125" />
</include>
<include ile="$( ind p cplan )/launch/mul i_lazo_spawn_ obo .launch">
<a g name=" obo _name" alue="lazoC3" />
<a g name="pos_x" alue="60" />
<a g name="pos_y" alue="125" />
</include>
<include ile="$( ind
p cplan )/launch/mul i_lazo_espejo_spawn_ obo .launch">
<a g name=" obo _name" alue="lazoD3" />
<a g name="pos_x" alue="60" />
<a g name="pos_y" alue="-125" />
</include>
<include ile="$( ind p cplan )/launch/mul i_lazo_spawn_ obo .launch">
<a g name=" obo _name" alue="lazoC4" />
<a g name="pos_x" alue="80" />
<a g name="pos_y" alue="125" />
</include>
<include ile="$( ind
p cplan )/launch/mul i_lazo_espejo_spawn_ obo .launch">
<a g name=" obo _name" alue="lazoD4" />
<a g name="pos_x" alue="80" />
<a g name="pos_y" alue="-125" />
</include>
<include ile="$( ind p cplan )/launch/mul i_lazo_spawn_ obo .launch">
<a g name=" obo _name" alue="lazoC5" />
<a g name="pos_x" alue="100" />
<a g name="pos_y" alue="125" />
</include>
<include ile="$( ind
p cplan )/launch/mul i_lazo_espejo_spawn_ obo .launch">
<a g name=" obo _name" alue="lazoD5" />
<a g name="pos_x" alue="100" />
<a g name="pos_y" alue="-125" />
<a g name="pos_z" alue="0.5" />
</include>
<!-- spawn del obo de dos uedas, pa a p uebas de inspeccion -->
<a g name="u d _m2w " de aul ="$( ind p cplan )/u d /big_m2w .u d " />
<pa am name=" obo _desc ip ion" command="ca $(a g u d _m2w )" />
<node name="m2w _spawn" pkg="gazebo_ os" ype="spawn_model"
ou pu ="sc een"
a gs="-u d -pa am obo _desc ip ion -model m2w -x 25 -y 0 -z 0.5"
/>
</launch>

Anexo A. Código implemen ado
66
A.2 Gene ación de un modelo de lazo: mul i_lazo_main.launch
<?xml e sion="1.0" encoding="UTF-8"?>
<launch>
<!-- ca gamos el modelo en el pa am. se e con el nomb e
obo _desc ip ion: -->
<a g name="u d _ obo _ ile" de aul ="$( ind p cplan )/u d /lazo.u d "
/>
<pa am name=" obo _desc ip ion" command="ca $(a g u d _ obo _ ile)" />
<a g name=" obo _name" de aul ="lazo" />
<a g name="pos_x" de aul ="0.0" />
<a g name="pos_y" de aul ="0.0" />
<a g name="pos_z" de aul ="0.0" />
<g oup ns="$(a g obo _name)"> <!-- lo ponemos en g upo pa a dis ingui
cuando engamos +1 colec o -->
<!-- ca ga de con ig. de con olado es -->
< ospa am ile="$( ind p cplan )/con ig/lazo_con ol.yaml"
command="load" ns="/$(a g obo _name)" />
<pa am name="/$(a g obo _name)/ obo _desc ip ion" command="ca $(a g
u d _ obo _ ile)" />
<node name="u d _spawne " pkg="gazebo_ os" ype="spawn_model"
espawn=" alse" ou pu ="sc een"
a gs="-u d -x $(a g pos_x) -y $(a g pos_y) -z $(a g pos_z)
-model $(a g obo _name) -pa am /$(a g obo _name)/ obo _desc ip ion"/>
<!-- ca ga (y ejecu a) los con olado es. Elegimos los que que amos de
los especi icados en el con ig -->
<node name="con olle _spawne " pkg="con olle _manage " ype="spawne "
espawn=" alse" ou pu ="sc een"
a gs="--namespace=/$(a g obo _name) /$(a g
obo _name)/join _s a e_con olle
/$(a g
obo _name)/pa as_pa abola_in_posi ion_con olle
/$(a g
obo _name)/pa as_pa abola_ou _posi ion_con olle ">
</node>
<!-- obo s a e publishe . nos se i a pa a isualiza el obo en
Viz pun ualmen e-->
<!-- <node name=" obo _s a e_publishe " pkg=" obo _s a e_publishe "
ype=" obo _s a e_publishe " espawn=" alse" ou pu ="sc een">
<pa am name="publish_ equency" ype="double" alue="5.0" />
</node>
-->
</g oup>
</launch>
67
Desa ollo y modelado 3D de plan a e mosola
A.3 Mundo de la simulación (SDF): simple.wo ld
<?xml e sion="1.0" ?>
<sd e sion="1.6">
<wo ld name="simple">
<physics name=" isicas_agiles" ype="ode">
<max_s ep_size>0.005</max_s ep_size>
< eal_ ime_ ac o >1</ eal_ ime_ ac o >
< eal_ ime_upda e_ a e>200</ eal_ ime_upda e_ a e>
<ode>
<sol e >
< ype>quick</ ype>
<i e s>50</i e s>
<so >1.3</so >
</sol e >
</ode>
</physics>
<scene>
<ambien >0.4 0.4 0.4 1</ambien >
<backg ound>0.7 0.7 0.7 1</backg ound>
<shadows>0</shadows>
<sky>
<clouds>
<speed>7</speed>
<humidi y>5</humidi y>
<mean_size>0.3</mean_size>
</clouds>
</sky>
<g id>0</g id>
<o igin_ isual>0</o igin_ isual>
</scene>
<!-- modelo de suelo pe sonalizado con ex u as -->
<include>
<u i>model://g ound</u i>
<name>my_g ound</name>
</include>
<!-- modelo de suelo/ca e e a pe sonalizado con ex u as pa a las
ube ias -->
<include>
<u i>model://pipe_pa h</u i>
<name>le _pipe_pa h</name>
<pose>0 -233 0.02 0 0 0</pose>
</include>
<include>
<u i>model://pipe_pa h</u i>
<name>mid_le _pipe_pa h</name>
<pose>0 -118.93 0.02 0 0 0</pose>
</include>
<include>
<u i>model://pipe_pa h</u i>
<name>mid_pipe_pa h</name>
<pose>0 0 0.02 0 0 0</pose>
</include>
Anexo A. Código implemen ado
68
<include>
<u i>model://pipe_pa h</u i>
<name>mid_ igh _pipe_pa h</name>
<pose>0 118.93 0.02 0 0 0</pose>
</include>
<include>
<u i>model://pipe_pa h</u i>
<name> igh _pipe_pa h</name>
<pose>0 233 0.02 0 0 0</pose>
</include>
<!-- modelos de ca e e a pe sonalizado con ex u as pa a ehiculos -->
<include>
<u i>model:// oad</u i>
<name>low_ oad</name>
<pose>125 0 0.04 0 0 0</pose>
</include>
<include>
<u i>model:// oad</u i>
<name>mid_ oad</name>
<pose>0 0 0.04 0 0 0</pose>
</include>
<include>
<u i>model:// oad</u i>
<name>high_ oad</name>
<pose>-125 0 0.04 0 0 0</pose>
</include>
<model name="zona_po encia">
<pose>0 0 0 0 0 0</pose>
<s a ic> ue</s a ic>
<link name="base">
<sel _collide>0</sel _collide>
<pose>0 0 10 0 0 0</pose>
<ine ial>
<ine ia>
<ixx>1000</ixx>
<ixy>0</ixy>
<ixz>0</ixz>
<iyy>1000</iyy>
<iyz>0</iyz>
<izz>1000</izz>
</ine ia>
<mass>10000.0</mass>
</ine ial>
<!-- diseño basico de cen al de po encia -->
<collision name="base_collision">
<pose>0 0 -10 0 0 0</pose>
<geome y>
<box>
<size>29.8 15 6</size>
</box>
</geome y>
</collision>
< isual name="base_ isual">
<pose>0 0 -10 0 0 0</pose>
<geome y>
69
Desa ollo y modelado 3D de plan a e mosola
<box>
<size>30 15 6</size>
</box>
</geome y>
<ma e ial>
<ambien >0.2 0.2 0.2 1</ambien >
<di use>0.1 0.1 0.1 1</di use>
<specula >0.05 0.05 0.05 1</specula >
<emissi e>0 0 0 0</emissi e>
</ma e ial>
</ isual>
< isual name="base_ isual_2">
<pose>0 0 -8.5 0 0 0</pose>
<geome y>
<box>
<size>28 12 4</size>
</box>
</geome y>
<ma e ial>
<ambien >0.3 0.3 0.3 1</ambien >
<di use>0.3 0.3 0.3 1</di use>
<specula >0.1 0.1 0.1 1</specula >
<emissi e>0 0 0 0</emissi e>
</ma e ial>
</ isual>
<collision name="cyl_collision">
<pose>0 0 0 0 0 0</pose>
<geome y>
<cylinde >
< adius>10</ adius>
<leng h>20</leng h>
</cylinde >
</geome y>
</collision>
< isual name="cyl_ isual">
<pose>0 0 0 0 0 0</pose>
<geome y>
<cylinde >
< adius>10</ adius>
<leng h>20</leng h>
</cylinde >
</geome y>
<ma e ial>
<ambien >0.35 0.35 0.35 1</ambien >
<di use>0.35 0.35 0.35 1</di use>
<specula >0.15 0.15 0.15 1</specula >
<emissi e>0 0 0 0</emissi e>
</ma e ial>
</ isual>
<collision name="cyl_collision_2">
<pose>0 0 10 0 0 0</pose>
<geome y>
<cylinde >
< adius>9.5</ adius>
<leng h>0.6</leng h>
</cylinde >
</geome y>
</collision>
< isual name="cyl_ isual_2">
<pose>0 0 10 0 0 0</pose>
<geome y>
Anexo A. Código implemen ado
76
A.6 Sc ip pa a gene ación de opics: opic_pub_gene a o .py
impo ospy
de gene a o ():
opic_lis = ospy.ge _published_ opics()
opic_lis .so ()
# opics con iene los lazos duplicados
opics = []
o x in opic_lis :
i "lazo" and "join " in x[0]:
opics.append(x[0][1:7])
lazos = lis (se ( opics))
lazos.so ()
pub_s = []
o x in opics:
pub_s .append(x + '/pa as_pa abola_in_posi ion_con olle /command')
pub_s .append(x + '/pa as_pa abola_ou _posi ion_con olle /command')
sub_s = []
home_s = []
home_comm = []
names =[]
o y in lazos:
sub_s .append(y + '/pa as_pa abola_in_posi ion_con olle /s a e')
sub_s .append(y + '/pa as_pa abola_ou _posi ion_con olle /s a e')
home_s .append(y + '/home_sens_in')
home_s .append(y + '/home_sens_ou ')
home_comm.append(y + '/home_comm_in')
home_comm.append(y + '/home_comm_ou ')
names.append(y + '_in')
names.append(y + '_ou ')
# s ings con odos los opics necesa ios
e u n home_s , sub_s , pub_s , home_comm, names

77
Desa ollo y modelado 3D de plan a e mosola
A.7 Sc ip pa a au oma ización de mo imien o: mo e_au o.py
impo ospy
om s d_msgs.msg._Floa 64 impo Floa 64
om s d_msgs.msg impo Bool
om senso _msgs.msg impo Join S a e
om con ol_msgs.msg._Join Con olle S a e impo Join Con olle S a e
om opic_pub_gene a o impo gene a o
class Lazo:
de __ini __(sel , pub, pos_comm, home_comm, home_sens, home_going,
inish, names):
sel .pub = pub # publishe
sel .pos_comm = pos_comm # o den de posicion
sel .home_comm = home_comm # o den de i a home
sel .home_sens = home_sens # senso home
sel .home_going = home_going # lazo yendo a home
sel . inish = inish # lazo ha inalizado ciclo
sel .names = names # nomb e del lazo
de home_callback(da a, a g):
opic = a g[0]
home_lis = a g[1]
pubs = a g[2]
ound_index=False
o i, x in enume a e(home_lis ):
i opic in x:
index=i
ound_index=T ue
i da a.da a == T ue:
pubs[index].home_sens = T ue
else:
pubs[index].home_sens = False
de home_comm_callback(da a, a g):
opic = a g[0]
home_comm_lis = a g[1]
pubs = a g[2]
ound_index=False
o i, x in enume a e(home_comm_lis ):
i opic in x:
index=i
ound_index=T ue
i da a.da a == T ue:
pubs[index].home_comm = T ue
else:
pubs[index].home_comm = False
de mo e():
ospy.ini _node('mo e', anonymous=T ue)
pub_s = gene a o ()[2]
home_s = gene a o ()[0]
home_comm = gene a o ()[3]
names = gene a o ()[4]
Anexo A. Código implemen ado
78
# c eacion lis a de publishe s de clase Lazo, una po eje de gi o (2 po
lazo en Gazebo)
pubs = []
o i, x in enume a e(pub_s ):
pubs.append(Lazo( ospy.Publishe (x, Floa 64, queue_size=100) , 0.0,
False, False, False, False, names[i]))
# c eacion de subsc ibe s al senso home, uno po eje de gi o (2 po lazo
en Gazebo)
o y in home_s :
ospy.Subsc ibe (y, Bool, home_callback, (y, home_s , pubs))
# c eacion de subsc ibe s home_comm, uno po eje de gi o (2 po lazo en
Gazebo)
o z in home_comm:
ospy.Subsc ibe (z, Bool, home_comm_callback, (z, home_comm, pubs))
a e = ospy.Ra e(0.5) # 0.5hz, cada 2 segundos
num_lazos_ in = 0
daycoun = 1
do mi = 0.5
while no ospy.is_shu down():
o lazo in pubs:
# casuis ica pa a cada eje de lazo:
# m o au oma ico en condiciones no males, siguiendo al Sol
i lazo.pos_comm>-1.5 and lazo.home_comm==False and
lazo. inish==False and lazo.home_going==False:
lazo.pos_comm -= 0.05
lazo.pub.publish(lazo.pos_comm)
# uel a a posicion Home as acaba un dia
eli lazo.pos_comm<-1.5 and lazo.home_comm==False and
lazo. inish==False:
ospy.login o("%s --> Ciclo dia io inalizado, ol iendo a
home",lazo.names)
lazo.home_going=T ue
lazo.pos_comm=1.5
lazo.pub.publish(lazo.pos_comm)
# se ha mandado un lazo a epa a o ya es á yendo a home
i lazo.home_comm==T ue o lazo.home_going==T ue:
i lazo. inish==False:
i lazo.home_sens==False:
ospy.login o("%s --> Mandando colec o a
home",lazo.names)
lazo.pos_comm=1.5
lazo.pub.publish(lazo.pos_comm)
else:
lazo. inish=T ue
lazo.home_going=False
ospy.login o("%s --> Dia %d inalizado. Colec o
epa ando",lazo.names, daycoun )
num_lazos_ in += 1
# el lazo ha llegado al inal
i lazo.home_sens==T ue and lazo.home_going==T ue and
lazo. inish==False:
lazo. inish=T ue
lazo.home_going=False
79
Desa ollo y modelado 3D de plan a e mosola
ospy.login o("%s --> Dia %d inalizado.
Du miendo."%(lazo.names, daycoun ))
num_lazos_ in += 1
# espe a que lleguen odos los lazos al inal, y ese ea
i num_lazos_ in==len(pubs):
o x in pubs:
x. inish=False
x.home_going=False
ospy.login o("Dia %d inalizado. Du miendo."%(daycoun ))
daycoun += 1
num_lazos_ in = 0
ospy.sleep(do mi )
ospy.login o("Comienza un nue o día!")
# publicación de in o gene al
ospy.login o("%s --> pos_comm: %0.2 , home_comm: %d,
home_going: %d, inish: %d" %(lazo.names, lazo.pos_comm, lazo.home_comm,
lazo.home_going, lazo. inish))
ospy.login o("%s --> num_lazos_ in: %d, daycoun : %d"
%(lazo.names, num_lazos_ in, daycoun ))
p in (" ")
a e.sleep()
i __name__ == '__main__':
y:
mo e()
excep ospy.ROSIn e up Excep ion:
pass
81
REFERENCIAS
Blende Re e ence Manual. (oc ub e de 2021). Ob enido de Blende Re e ence Manual:
h ps://docs.blende .o g/manual/es/la es /
De elop Pape . (2020). Ob enido de h ps://de eloppape .com/s udy-no es-o -au olabo -2-5-3-wo king-space-
and-compiling-sys em-o - os/
Geek Gas eiz. (1 de no iemb e de 2018). Ob enido de h ps://geekgas eiz.wo dp ess.com/2018/11/01/ os2- s-
os-1-mig amos/
Joseph, L. (2017). ROS Robo ics P ojec s. Pack Publishing.
La Ene gía Sola . (2019). Ob enido de h ps://www.laene giasola .o g/ene gia- e mica-sola /
OGRE Wiki. (6 de julio de 2012). Ob enido de h ps://wiki.og e3d.o g/Ma e ials
P o e mosola . (2020). Ob enido de h ps://helioscsp.com/concen a ed-sola -powe -sky uel-comple es-
e iciency- es ing-o - he-sky ough-dsp-collec o /
Quigley, M., Ge key, B., & D. Sma , W. (2016). P og amming Robo s wi h ROS. O'Reilly.
ROS Wiki. (8 de agos o de 2018). Ob enido de h p://wiki. os.o g/
The Robo ics Back-End. (2021). Ob enido de h ps:// obo icsbackend.com/ q -g aph- isualize-and-debug-you -
os-g aph/
Wikipedia. (21 de agos o de 2021). Ob enido de h ps://en.wikipedia.o g/wiki/Gazebo_simula o

83
GLOSARIO
APIs: Applica ion P og amming In e ace (In e az de P og amación de Aplicaciones) 7
FPS: F ames Pe Second (Imágenes Po Segundo) 20
LTS: Long Te m Suppo (Sopo e a La go Plazo) 6
ODE: Open Dynamics Engine (Mo o de Dinámicas Abie o) 15
OGRE: Objec O ien ed G aphics Rende ing Engine 22
POSIX: Po able Ope a ing Sys em In e ace 6
ROS: Robo Ope a ing Sys em 3
SDF: Simula ion Desc ip ion Fo ma (Fo ma o de Desc ipción de Simulación) 11
STL: STe eo Li hog aphy 21
TCP/IP: T ansmission Con ol P o ocol/In e ne P o ocol 8
UDP: Use Da ag am P o ocol 8
URDF: Uni e sal Robo Desc ip ion File (A chi o de Desc ipción Uni e sal de Robo ) 11
YAML: YAML Ain' Ma kup Language 46