Desarrollo de un algoritmo de estimación de estado para robots cuadrúpedos utilizando el filtro de Kalman extendido invariante y estimaciones de contacto en ROS

En el campo de la robótica móvil, la estimación precisa del estado en tiempo real es esencial para la ejecución óptima de tareas. Este trabajo de grado, realizado como parte de una pasantía de investigación en la Universidad de Sao Paulo, se enfoca en la implementación y evaluación de un algoritmo d...

Full description

Autores:
Castaño Vanegas, Sofia Milagros
González Riascos, Jhon Edward
Tipo de recurso:
Trabajo de grado de pregrado
Fecha de publicación:
2025
Institución:
Universidad Autónoma de Occidente
Repositorio:
RED: Repositorio Educativo Digital UAO
Idioma:
spa
OAI Identifier:
oai:red.uao.edu.co:10614/16021
Acceso en línea:
https://hdl.handle.net/10614/16021
https://red.uao.edu.co/
Palabra clave:
Ingeniería Mecatrónica
InEKF (filtro de Kalman extendido invariante)
Estimación de Estado
Robots Cuadrúpedos
Algoritmos genéticos
Optimización de Parámetros
InEKF (Invariant extended Kalman filter)
State estimation
Quadruped robots
Genetic algorithms
Parameter optimization
Rights
openAccess
License
Derechos reservados - Universidad Autónoma de Occidente, 2025
id REPOUAO2_8aefd1e48986ed2246733e97363f957f
oai_identifier_str oai:red.uao.edu.co:10614/16021
network_acronym_str REPOUAO2
network_name_str RED: Repositorio Educativo Digital UAO
repository_id_str
dc.title.spa.fl_str_mv Desarrollo de un algoritmo de estimación de estado para robots cuadrúpedos utilizando el filtro de Kalman extendido invariante y estimaciones de contacto en ROS
title Desarrollo de un algoritmo de estimación de estado para robots cuadrúpedos utilizando el filtro de Kalman extendido invariante y estimaciones de contacto en ROS
spellingShingle Desarrollo de un algoritmo de estimación de estado para robots cuadrúpedos utilizando el filtro de Kalman extendido invariante y estimaciones de contacto en ROS
Ingeniería Mecatrónica
InEKF (filtro de Kalman extendido invariante)
Estimación de Estado
Robots Cuadrúpedos
Algoritmos genéticos
Optimización de Parámetros
InEKF (Invariant extended Kalman filter)
State estimation
Quadruped robots
Genetic algorithms
Parameter optimization
title_short Desarrollo de un algoritmo de estimación de estado para robots cuadrúpedos utilizando el filtro de Kalman extendido invariante y estimaciones de contacto en ROS
title_full Desarrollo de un algoritmo de estimación de estado para robots cuadrúpedos utilizando el filtro de Kalman extendido invariante y estimaciones de contacto en ROS
title_fullStr Desarrollo de un algoritmo de estimación de estado para robots cuadrúpedos utilizando el filtro de Kalman extendido invariante y estimaciones de contacto en ROS
title_full_unstemmed Desarrollo de un algoritmo de estimación de estado para robots cuadrúpedos utilizando el filtro de Kalman extendido invariante y estimaciones de contacto en ROS
title_sort Desarrollo de un algoritmo de estimación de estado para robots cuadrúpedos utilizando el filtro de Kalman extendido invariante y estimaciones de contacto en ROS
dc.creator.fl_str_mv Castaño Vanegas, Sofia Milagros
González Riascos, Jhon Edward
dc.contributor.advisor.none.fl_str_mv Castillo García, Javier Ferney
dc.contributor.author.none.fl_str_mv Castaño Vanegas, Sofia Milagros
González Riascos, Jhon Edward
dc.contributor.corporatename.spa.fl_str_mv Universidad Autónoma de Occidente
dc.contributor.jury.none.fl_str_mv Mena Moreno, Juan Carlos
dc.subject.proposal.spa.fl_str_mv Ingeniería Mecatrónica
InEKF (filtro de Kalman extendido invariante)
Estimación de Estado
Robots Cuadrúpedos
Algoritmos genéticos
Optimización de Parámetros
topic Ingeniería Mecatrónica
InEKF (filtro de Kalman extendido invariante)
Estimación de Estado
Robots Cuadrúpedos
Algoritmos genéticos
Optimización de Parámetros
InEKF (Invariant extended Kalman filter)
State estimation
Quadruped robots
Genetic algorithms
Parameter optimization
dc.subject.proposal.eng.fl_str_mv InEKF (Invariant extended Kalman filter)
State estimation
Quadruped robots
Genetic algorithms
Parameter optimization
description En el campo de la robótica móvil, la estimación precisa del estado en tiempo real es esencial para la ejecución óptima de tareas. Este trabajo de grado, realizado como parte de una pasantía de investigación en la Universidad de Sao Paulo, se enfoca en la implementación y evaluación de un algoritmo de filtro de Kalman extendido Invariante para la estimación de estado en un robot cuadrúpedo. Mientras que los algoritmos actuales suelen fusionar sensores exteroceptivos y propioceptivos, lo que requiere altos recursos computacionales, esta investigación propone una solución robusta, basada únicamente en tres mediciones específicas: IMU, estimaciones de contacto y cinemática de los efectores finales. Siguiendo una metodología basada en el Proceso Racional Unificado, se desarrolló una estructura de sistema que incluye la comunicación con el robot cuadrúpedo B2 mediante el paquete ros_control, junto con un estimador de contacto basado en la ecuación dinámica de cuerpo rígido y el uso de la librería Pinocchio para calcular la cinemática de los efectores finales. También se emplearon simulaciones controladas y algoritmos genéticos para optimizar los parámetros del algoritmo. Los resultados de las pruebas en recorridos cortos y largos mostraron una raíz del error cuadrático medio promedio de 0.15 para trayectos cortos y 0.19 para trayectos largos, considerados dentro del rango de precisión moderada (entre 0.05 y 0.25 ) válida para trayectorias generales de entornos industriales. Además, se alcanzó un tiempo de ejecución en tiempo real menor a 200 , cumpliendo con los criterios establecidos de rendimiento y eficiencia. El sistema demostró ser robusto y eficiente, proporcionando mediciones precisas incluso en condiciones de perturbación. Finalmente, el algoritmo desarrollado es completamente parametrizable, lo que abre la puerta a futuras mejoras y a su integración con otros robots cuadrúpedos. Además, se destaca la posibilidad de combinarlo con técnicas basadas en referencias externas, lo que permite un enfoque integral y adaptable
publishDate 2025
dc.date.accessioned.none.fl_str_mv 2025-03-06T13:48:58Z
dc.date.available.none.fl_str_mv 2025-03-06T13:48:58Z
dc.date.issued.none.fl_str_mv 2025-02-13
dc.type.spa.fl_str_mv Trabajo de grado - Pregrado
dc.type.coarversion.fl_str_mv http://purl.org/coar/version/c_970fb48d4fbd8a85
dc.type.coar.eng.fl_str_mv http://purl.org/coar/resource_type/c_7a1f
dc.type.content.eng.fl_str_mv Text
dc.type.driver.eng.fl_str_mv info:eu-repo/semantics/bachelorThesis
dc.type.redcol.eng.fl_str_mv http://purl.org/redcol/resource_type/TP
dc.type.version.eng.fl_str_mv info:eu-repo/semantics/publishedVersion
format http://purl.org/coar/resource_type/c_7a1f
status_str publishedVersion
dc.identifier.citation.spa.fl_str_mv Castaño Vanegas, S. M. y González Riascos, J. E. (2025). Desarrollo de un algoritmo de estimación de estado para robots cuadrúpedos utilizando el filtro de Kalman extendido invariante y estimaciones de contacto en ROS. (Pasantía de investigación). Universidad Autónoma de Occidente. Cali. Colombia. https://hdl.handle.net/10614/16021
dc.identifier.uri.none.fl_str_mv https://hdl.handle.net/10614/16021
dc.identifier.instname.spa.fl_str_mv Universidad Autónoma de Occidente
dc.identifier.reponame.spa.fl_str_mv Respositorio Educativo Digital UAO
dc.identifier.repourl.none.fl_str_mv https://red.uao.edu.co/
identifier_str_mv Castaño Vanegas, S. M. y González Riascos, J. E. (2025). Desarrollo de un algoritmo de estimación de estado para robots cuadrúpedos utilizando el filtro de Kalman extendido invariante y estimaciones de contacto en ROS. (Pasantía de investigación). Universidad Autónoma de Occidente. Cali. Colombia. https://hdl.handle.net/10614/16021
Universidad Autónoma de Occidente
Respositorio Educativo Digital UAO
url https://hdl.handle.net/10614/16021
https://red.uao.edu.co/
dc.language.iso.spa.fl_str_mv spa
language spa
dc.relation.references.none.fl_str_mv [1] C. Semini, P.-B. Wieber, y P.-B. Wieber Legged, “Legged Robots”, Robots. Encyclopedia of Robotics, p. 10, 2020, doi: 10.1007/978-3-642-41610-1_59-1ï.
[2] H. Taheri y N. Mozayani, “A study on quadruped mobile robots”, el 1 de diciembre de 2023, Elsevier Ltd. doi: 10.1016/j.mechmachtheory.2023.105448.
[3] T.-Y. Lin, R. Zhang, J. Yu, y M. Ghaffari, “Legged Robot State Estimation using Invariant Kalman Filtering and Learned Contact Events”, jun. 2021, [En línea]. Disponible en: http://arxiv.org/abs/2106.15713
[4] R. Hartley, M. G. Jadidi, J. W. Grizzle, y R. M. Eustice, “Contact-Aided Invariant Extended Kalman Filtering for Legged Robot State Estimation”, may 2018.
[5] P. Fankhauser, M. Bjelonic, C. D. Bellicoso, T. Miki, y M. Hutter, Robust Rough-Terrain Locomotion with a Quadrupedal Robot. Brisbane, Australia: 8 IEEE International Conference on Robotics and Automation (ICRA), 2018. doi: 10.1109/ICRA.2018.8460731.
[6] D. Wisth, M. Camurri, y M. Fallon, “VILENS: Visual, Inertial, Lidar, and Leg Odometry for All-Terrain Legged Robots”, jul. 2021, doi: 10.1109/TRO.2022.3193788.
[7] M. Fourmy, T. Flayols, N. Mansard, y J. Solà, “Contact forces pre-integration for the whole body estimation of legged robots”, 2021, doi: 10.1109/ICRA48506.2021.9561037ï.
[8] M. Menner y K. Berntorp, “Simultaneous State Estimation and Contact Detection for Legged Robots by Multiple-Model Kalman Filtering”, abr. 2024, [En línea]. Disponible en: http://arxiv.org/abs/2404.03444
[9] M. Camurri, M. Ramezani, S. Nobili, y M. Fallon, “Pronto: A Multi-Sensor State Estimator for Legged Robots in Real-World Scenarios”, Front Robot AI, vol. 7, jun. 2020, doi: 10.3389/frobt.2020.00068.
[10] J. De León, R. Cebolla, y A. Barrientos, “A sensor fusion method for pose estimation of c-legged robots”, Sensors (Switzerland), vol. 20, núm. 23, pp. 1–38, nov. 2020, doi: 10.3390/s20236741.
[11] D. Belter y M. R. Nowicki, “Optimization-based legged odometry and sensor fusion for legged robot continuous localization”, Rob Auton Syst, vol. 111, pp. 110–124, ene. 2019, doi: 10.1016/j.robot.2018.10.013.
[12] C. Ding, L. Zhou, Y. Li, y X. Rong, “A Novel Dynamic Locomotion Control Method for Quadruped Robots Running on Rough Terrains”, IEEE Access, vol. 8, pp. 150435–150446, 2020, doi: 10.1109/ACCESS.2020.3016312.
[13] Z. Yoon, J. H. Kim, y H. W. Park, “Invariant Smoother for Legged Robot State Estimation With Dynamic Contact Event Information”, IEEE Transactions on Robotics, vol. 40, pp. 193–212, 2024, doi: 10.1109/TRO.2023.3328202.
[14] Y. Gao, C. Yuan, y Y. Gu, “Invariant Filtering for Legged Humanoid Locomotion on Dynamic Rigid Surfaces”, ene. 2022, [En línea]. Disponible en: http://arxiv.org/abs/2201.10636
[15] S. Teng, M. W. Mueller, y K. Sreenath, “Legged Robot State Estimation in Slippery Environments Using Invariant Extended Kalman Filter with Velocity Update”, abr. 2021, [En línea]. Disponible en: http://arxiv.org/abs/2104.04238
[16] R. Hartley, M. Ghaffari, R. M. Eustice, y J. W. Grizzle, “Contact-Aided Invariant Extended Kalman Filtering for Robot State Estimation”, The International Journal of Robotics Reasearch, vol. 39, núm. 4, pp. 361–539, ene. 2020, doi: https://doi.org/10.1177/027836491989438.
[17] Z. Cong, A. Honglei, C. Wu, L. Lang, Q. Wei, y M. Hongxu, “Contact Force Estimation Method of Legged-Robot and Its Application in Impedance Control”, IEEE Access, vol. 8, pp. 161175–161187, 2020, doi: 10.1109/ACCESS.2020.3021080.
[18] M. Maravgakis, D.-E. Argiropoulos, S. Piperakis, y P. Trahanias, “Probabilistic Contact State Estimation for Legged Robots using Inertial Information”, mar. 2023, [En línea]. Disponible en: http://arxiv.org/abs/2303.00538
[19] D. Youm, H. Oh, S. Choi, H. Kim, y J. Hwangbo, “Legged Robot State Estimation With Invariant Extended Kalman Filter Using Neural Measurement Network”, feb. 2024, [En línea]. Disponible en: http://arxiv.org/abs/2402.00366
[20] T. D. Barfoot, State estimation for robotics. Cambridge University Press, 2022. doi: 10.1017/9781009299909.
[21] J. Solà, J. Deray, y D. Atchuthan, “A micro Lie theory for state estimation in robotics”, dic. 2018, [En línea]. Disponible en: http://arxiv.org/abs/1812.01537
[22] J. Ancizar, C. Cárdenas, M. Antonio, N. Arias, y A. O. Bravo, “Análisis y aplicación del filtro de kalman a una señal con ruido aleatorio”, Scientia et Technica Año XVIII, vol. 18, núm. 1, 2013.
[23] G. Cassiano y D. S. Netto, “Aplicação do Filtro de Kalman na estimação dinâmica de estados do sistema elétrico de potência”, Universidade Federal de Uberlˆandia, Uberlandia, MG, 2023. Consultado: el 2 de octubre de 2024. [En línea]. Disponible en: https://repositorio.ufu.br/bitstream/123456789/41547/1/Aplica%C3%A7%C3%A3oFiltroKalman.pdf
[24] A. Barrau y S. Bonnabel, “The invariant extended Kalman filter as a stable observer”, IEEE Trans Automat Contr, vol. 62, núm. 4, abr. 2017, doi: 10.1109/TAC.2016.2594085.
[25] J. Badia Torres, “Kinematic and dynamic study of a quadruped robot”, Master tesis, Universitat Politécnica de Catalunya, Catalunya, 2024. Consultado: el 9 de octubre de 2024. [En línea]. Disponible en: https://upcommons.upc.edu/bitstream/handle/2117/404921/Quadruped_Report.pdf;jsessionid=2C98B26442CAA66200B2CD40937995A7?sequence=5
[26] G. D. G. Pedro et al., “Quadruped Robot Control: An Approach Using Body Planar Motion Control, Legs Impedance Control and Bézier Curves”, Sensors, vol. 24, núm. 12, jun. 2024, doi: 10.3390/s24123825.
[27] Unitree Robotics, “B2 SDK development guide ”, Unitree Documentation Center. Consultado: el 3 de septiembre de 2024. [En línea]. Disponible en: https://support.unitree.com/home/en/B2_developer/About%20B2
[28] O. E. Ramos, “Componentes de un Robot (II)”, 2020. Consultado: el 7 de octubre de 2024. [En línea]. Disponible en: http://oramosp.epizy.com/teaching/201/fund-robotica/clases/1_Componentes_Robot_II.pdf?i=1
[29] Docker Inc, “What is Docker?”, Docker Documentation. Consultado: el 10 de noviembre de 2024. [En línea]. Disponible en: https://docs.docker.com/get-started/docker-overview/
[30] F. E. Fernandes Junior, “Uma introdução ao Robot Operating System (ROS)”, Embarcados. Consultado: el 11 de octubre de 2024. [En línea]. Disponible en: https://embarcados.com.br/uma-introducao-ao-robot-operating-system-ros/
[31] Open Robotics, “ROS_control”, ROS.org. Consultado: el 12 de octubre de 2024. [En línea]. Disponible en: https://wiki.ros.org/ros_control
[32] J. Carpentier et al., “The Pinocchio C++ library-A fast and flexible implementation of rigid body dynamics algorithms and their analytical derivatives The Pinocchio C++ library A fast and flexible implementation of rigid body dynamics algorithms and their analytical derivatives”, en SII 2019 - International Symposium on System Integrations, Paris, France, ene. 2019. [En línea]. Disponible en: https://laas.hal.science/hal-01866228v2
[33] F. Farshidian, “OCS2: An open source library for Optimal Control of Switched Systems”. Consultado: el 15 de noviembre de 2024. [En línea]. Disponible en: https://leggedrobotics.github.io/ocs2/overview.html#citing-ocs2
[34] D. Goldberg, Genetic Algorithms in Search, Optimization and Machine Learning. Boston, MA, EEUU: Addison-Wesley Longman Publishing Co., Inc., 1989.
[35] G. Hutcheson, “Ordinary Least-Squares Regression”, en The SAGE Dictionary of Quantitative Management Research, SAGE Publications, 2011, pp. 224–228. Consultado: el 13 de noviembre de 2024. [En línea]. Disponible en: https://datajobs.com/data-science-repo/OLS-Regression-%5BGD-Hutcheson%5D.pdf
[36] L. Olivera, G. Duarte, V. Suzano, y L. Dos Santos, “Legged Robotics Workspace”, 2023. Consultado: el 4 de septiembre de 2024. [En línea]. Disponible en: https://github.com/leggedrobotics-usp/legged_ws
[37] R. Hartley, M. Ghaffari, J. Grizzle, y R. Eustice, “invariant-ekf”, 2018. Consultado: el 9 de octubre de 2024. [En línea]. Disponible en: https://github.com/RossHartley/invariant-ekf/tree/devel?tab=readme-ov-file
[38] R. Hartley, J. Ghaffari, J. Grizzle, y R. Eustice, “invariant-ekf-ros”, 2018. Consultado: el 9 de octubre de 2024. [En línea]. Disponible en: https://github.com/RossHartley/invariant-ekf-ros
[39] A. Simpkins, “Real-Time Control in Robotic Systems”, en s, Robotic Systems - Applications, Control and Programming, A. Dutta, Ed., InTech, 2012. Consultado: el 2 de diciembre de 2024. [En línea]. Disponible en: http://www.intechopen.com/books/robotic-systems-applications-control-and-programming/realtime-control-inrobotic-systems
[40] J. Berlin et al., “Trajectory Generation for Mobile Robots in a Dynamic Environment using Nonlinear Model Predictive Control”, en IEEE International Conference on Automation Science and Engineering, IEEE Computer Society, ago. 2021, pp. 942–947. doi: 10.1109/CASE49439.2021.9551644.
[41] L. Olivera, “Linux-stuffs”, 2021. Consultado: el 4 de septiembre de 2024. [En línea]. Disponible en: https://github.com/lomcin/linux-stuffs
[42] Q. Liao y S. Yanxing, “legged_control”, 2022. Consultado: el 11 de septiembre de 2024. [En línea]. Disponible en: https://github.com/qiayuanl/legged_control
[43] Q. Liao, B. Zhang, X. Huang, X. Huang, Z. Li, y K. Sreenath, “Berkeley Humanoid: A Research Platform for Learning-based Control”, jul. 2024, [En línea]. Disponible en: http://arxiv.org/abs/2407.21781
[44] Unitree Robotics, “Unitree_SDK2”, 2024. Consultado: el 4 de septiembre de 2024. [En línea]. Disponible en: https://github.com/unitreerobotics/unitree_sdk2
[45] Unitree Robotics, “Unitree_ros2”, 2024. Consultado: el 5 de septiembre de 2024. [En línea]. Disponible en: https://github.com/unitreerobotics/unitree_ros2
[46] A. Barrau, “Non-linear state error based extended Kalman filters with applications to navigation”, PhD, l’École nationale supérieure des mines de Paris, Paris, Francia, 2015. [En línea]. Disponible en: https://pastel.hal.science/tel-01344622v1
[47] S. Seabold y P. Josef, “statsmodels: Econometric and statistical modeling with python”, en 9th Python in Science Conference, 2010.
dc.rights.spa.fl_str_mv Derechos reservados - Universidad Autónoma de Occidente, 2025
dc.rights.coar.fl_str_mv http://purl.org/coar/access_right/c_abf2
dc.rights.uri.eng.fl_str_mv https://creativecommons.org/licenses/by-nc-nd/4.0/
dc.rights.accessrights.eng.fl_str_mv info:eu-repo/semantics/openAccess
dc.rights.creativecommons.spa.fl_str_mv Atribución-NoComercial-SinDerivadas 4.0 Internacional (CC BY-NC-ND 4.0)
rights_invalid_str_mv Derechos reservados - Universidad Autónoma de Occidente, 2025
https://creativecommons.org/licenses/by-nc-nd/4.0/
Atribución-NoComercial-SinDerivadas 4.0 Internacional (CC BY-NC-ND 4.0)
http://purl.org/coar/access_right/c_abf2
eu_rights_str_mv openAccess
dc.format.extent.spa.fl_str_mv 84 páginas
dc.format.mimetype.none.fl_str_mv application/pdf
dc.publisher.spa.fl_str_mv Universidad Autónoma de Occidente
dc.publisher.program.spa.fl_str_mv Ingeniería Mecatrónica
dc.publisher.faculty.spa.fl_str_mv Facultad de Ingeniería y Ciencias Básicas
dc.publisher.place.spa.fl_str_mv Cali
institution Universidad Autónoma de Occidente
bitstream.url.fl_str_mv https://red.uao.edu.co/bitstreams/892b795d-5d70-48dc-8347-23e81b04ee1d/download
https://red.uao.edu.co/bitstreams/8b994df8-b428-4f8d-9ce4-f051a8093fcd/download
https://red.uao.edu.co/bitstreams/fde8d290-ad32-4487-adf6-29318864445f/download
https://red.uao.edu.co/bitstreams/1f8035c2-88d0-471a-85bd-31f1759f88c0/download
https://red.uao.edu.co/bitstreams/e779854e-5aff-40b0-87f8-de50cd05d62a/download
https://red.uao.edu.co/bitstreams/bdb17bbb-3ac8-4d9c-a309-6e383d5babb0/download
https://red.uao.edu.co/bitstreams/5a7e1eb6-fe87-4d8e-b7b5-f245b837a3c0/download
https://red.uao.edu.co/bitstreams/7d9aa56f-6193-49a6-a709-31f4882eef17/download
https://red.uao.edu.co/bitstreams/2794e0d7-5992-4204-8f72-07914ce5a5d8/download
https://red.uao.edu.co/bitstreams/cfa69618-3b77-4103-9b1d-c90c3acb19a3/download
https://red.uao.edu.co/bitstreams/4cf7127b-d5c5-4bc6-86ac-0d7151d854b1/download
bitstream.checksum.fl_str_mv 5f73c1c36f07df361c841ea59acec5f0
0d91bcbafa606c6f05d18f99bdebe7b4
7d1e4bae93226f657585c07c70e6f2d7
5c2a3c959943f4600c52aba50d2ce53b
6987b791264a2b5525252450f99b10d1
47fec8bcb4f637bc4d45fffcfbb75690
e631dcb48705ec4d7552d0adaf850a68
85c68a3033378faf3f1fcdaa5bb0e16d
0ed004b9f1c372a3fd7aa4c9fa2dac92
c9a65d3526d6827205d8bd54490fa9de
e2ba81cbe13e6f39e021402113b67cd2
bitstream.checksumAlgorithm.fl_str_mv MD5
MD5
MD5
MD5
MD5
MD5
MD5
MD5
MD5
MD5
MD5
repository.name.fl_str_mv Repositorio Digital Universidad Autonoma de Occidente
repository.mail.fl_str_mv repositorio@uao.edu.co
_version_ 1831928667798765568
spelling Castillo García, Javier FerneyCastaño Vanegas, Sofia MilagrosGonzález Riascos, Jhon EdwardUniversidad Autónoma de OccidenteMena Moreno, Juan Carlosvirtual::5963-12025-03-06T13:48:58Z2025-03-06T13:48:58Z2025-02-13Castaño Vanegas, S. M. y González Riascos, J. E. (2025). Desarrollo de un algoritmo de estimación de estado para robots cuadrúpedos utilizando el filtro de Kalman extendido invariante y estimaciones de contacto en ROS. (Pasantía de investigación). Universidad Autónoma de Occidente. Cali. Colombia. https://hdl.handle.net/10614/16021https://hdl.handle.net/10614/16021Universidad Autónoma de OccidenteRespositorio Educativo Digital UAOhttps://red.uao.edu.co/En el campo de la robótica móvil, la estimación precisa del estado en tiempo real es esencial para la ejecución óptima de tareas. Este trabajo de grado, realizado como parte de una pasantía de investigación en la Universidad de Sao Paulo, se enfoca en la implementación y evaluación de un algoritmo de filtro de Kalman extendido Invariante para la estimación de estado en un robot cuadrúpedo. Mientras que los algoritmos actuales suelen fusionar sensores exteroceptivos y propioceptivos, lo que requiere altos recursos computacionales, esta investigación propone una solución robusta, basada únicamente en tres mediciones específicas: IMU, estimaciones de contacto y cinemática de los efectores finales. Siguiendo una metodología basada en el Proceso Racional Unificado, se desarrolló una estructura de sistema que incluye la comunicación con el robot cuadrúpedo B2 mediante el paquete ros_control, junto con un estimador de contacto basado en la ecuación dinámica de cuerpo rígido y el uso de la librería Pinocchio para calcular la cinemática de los efectores finales. También se emplearon simulaciones controladas y algoritmos genéticos para optimizar los parámetros del algoritmo. Los resultados de las pruebas en recorridos cortos y largos mostraron una raíz del error cuadrático medio promedio de 0.15 para trayectos cortos y 0.19 para trayectos largos, considerados dentro del rango de precisión moderada (entre 0.05 y 0.25 ) válida para trayectorias generales de entornos industriales. Además, se alcanzó un tiempo de ejecución en tiempo real menor a 200 , cumpliendo con los criterios establecidos de rendimiento y eficiencia. El sistema demostró ser robusto y eficiente, proporcionando mediciones precisas incluso en condiciones de perturbación. Finalmente, el algoritmo desarrollado es completamente parametrizable, lo que abre la puerta a futuras mejoras y a su integración con otros robots cuadrúpedos. Además, se destaca la posibilidad de combinarlo con técnicas basadas en referencias externas, lo que permite un enfoque integral y adaptableIn the field of mobile robotics, real-time state estimation is essential for the optimal execution of tasks. This thesis, carried out as part of a research internship at the University of São Paulo, focuses on the implementation and evaluation of an Invariant Extended Kalman Filter algorithm for state estimation in a quadruped robot. While current algorithms often fuse exteroceptive and proprioceptive sensors, requiring high computational resources, this research proposes a robust solution based solely on three specific measurements: IMU, contact estimates, and the kinematics of the end-effectors. Following a methodology based on the Unified Rational Process, a system structure was developed, which includes communication with the B2 quadruped robot using the ros_control package, along with a contact estimator based on the rigid body dynamics equation and the use of the Pinocchio library for calculating the kinematics of the end-effectors. Controlled simulations and genetic algorithms were also employed to optimize the algorithm parameters. The test results on both short and long trajectories showed an average RMSE of 0.15 for short paths and 0.19 for long paths, considered within the moderate accuracy range (between 0.05 and 0.25 ), valid for general trajectories in industrial environments. Additionally, real-time execution time was achieved under 200 , meeting the established performance and efficiency criteria. The system proved to be robust and efficient, providing accurate measurements even under perturbation conditions. Finally, the developed algorithm is fully parameterizable, opening the door for future improvements and integration with other quadruped robots. Additionally, the possibility of combining it with techniques based on external references is highlighted, allowing for an integrated and adaptable approachPasantía de investigación (Ingeniero Mecatrónico)-- Universidad Autónoma de Occidente, 2025PregradoIngeniero(a) Mecatrónico(a)84 páginasapplication/pdfspaUniversidad Autónoma de OccidenteIngeniería MecatrónicaFacultad de Ingeniería y Ciencias BásicasCaliDerechos reservados - Universidad Autónoma de Occidente, 2025https://creativecommons.org/licenses/by-nc-nd/4.0/info:eu-repo/semantics/openAccessAtribución-NoComercial-SinDerivadas 4.0 Internacional (CC BY-NC-ND 4.0)http://purl.org/coar/access_right/c_abf2Desarrollo de un algoritmo de estimación de estado para robots cuadrúpedos utilizando el filtro de Kalman extendido invariante y estimaciones de contacto en ROSTrabajo de grado - Pregradohttp://purl.org/coar/resource_type/c_7a1fTextinfo:eu-repo/semantics/bachelorThesishttp://purl.org/redcol/resource_type/TPinfo:eu-repo/semantics/publishedVersionhttp://purl.org/coar/version/c_970fb48d4fbd8a85[1] C. Semini, P.-B. Wieber, y P.-B. Wieber Legged, “Legged Robots”, Robots. Encyclopedia of Robotics, p. 10, 2020, doi: 10.1007/978-3-642-41610-1_59-1ï.[2] H. Taheri y N. Mozayani, “A study on quadruped mobile robots”, el 1 de diciembre de 2023, Elsevier Ltd. doi: 10.1016/j.mechmachtheory.2023.105448.[3] T.-Y. Lin, R. Zhang, J. Yu, y M. Ghaffari, “Legged Robot State Estimation using Invariant Kalman Filtering and Learned Contact Events”, jun. 2021, [En línea]. Disponible en: http://arxiv.org/abs/2106.15713[4] R. Hartley, M. G. Jadidi, J. W. Grizzle, y R. M. Eustice, “Contact-Aided Invariant Extended Kalman Filtering for Legged Robot State Estimation”, may 2018.[5] P. Fankhauser, M. Bjelonic, C. D. Bellicoso, T. Miki, y M. Hutter, Robust Rough-Terrain Locomotion with a Quadrupedal Robot. Brisbane, Australia: 8 IEEE International Conference on Robotics and Automation (ICRA), 2018. doi: 10.1109/ICRA.2018.8460731.[6] D. Wisth, M. Camurri, y M. Fallon, “VILENS: Visual, Inertial, Lidar, and Leg Odometry for All-Terrain Legged Robots”, jul. 2021, doi: 10.1109/TRO.2022.3193788.[7] M. Fourmy, T. Flayols, N. Mansard, y J. Solà, “Contact forces pre-integration for the whole body estimation of legged robots”, 2021, doi: 10.1109/ICRA48506.2021.9561037ï.[8] M. Menner y K. Berntorp, “Simultaneous State Estimation and Contact Detection for Legged Robots by Multiple-Model Kalman Filtering”, abr. 2024, [En línea]. Disponible en: http://arxiv.org/abs/2404.03444[9] M. Camurri, M. Ramezani, S. Nobili, y M. Fallon, “Pronto: A Multi-Sensor State Estimator for Legged Robots in Real-World Scenarios”, Front Robot AI, vol. 7, jun. 2020, doi: 10.3389/frobt.2020.00068.[10] J. De León, R. Cebolla, y A. Barrientos, “A sensor fusion method for pose estimation of c-legged robots”, Sensors (Switzerland), vol. 20, núm. 23, pp. 1–38, nov. 2020, doi: 10.3390/s20236741.[11] D. Belter y M. R. Nowicki, “Optimization-based legged odometry and sensor fusion for legged robot continuous localization”, Rob Auton Syst, vol. 111, pp. 110–124, ene. 2019, doi: 10.1016/j.robot.2018.10.013.[12] C. Ding, L. Zhou, Y. Li, y X. Rong, “A Novel Dynamic Locomotion Control Method for Quadruped Robots Running on Rough Terrains”, IEEE Access, vol. 8, pp. 150435–150446, 2020, doi: 10.1109/ACCESS.2020.3016312.[13] Z. Yoon, J. H. Kim, y H. W. Park, “Invariant Smoother for Legged Robot State Estimation With Dynamic Contact Event Information”, IEEE Transactions on Robotics, vol. 40, pp. 193–212, 2024, doi: 10.1109/TRO.2023.3328202.[14] Y. Gao, C. Yuan, y Y. Gu, “Invariant Filtering for Legged Humanoid Locomotion on Dynamic Rigid Surfaces”, ene. 2022, [En línea]. Disponible en: http://arxiv.org/abs/2201.10636[15] S. Teng, M. W. Mueller, y K. Sreenath, “Legged Robot State Estimation in Slippery Environments Using Invariant Extended Kalman Filter with Velocity Update”, abr. 2021, [En línea]. Disponible en: http://arxiv.org/abs/2104.04238[16] R. Hartley, M. Ghaffari, R. M. Eustice, y J. W. Grizzle, “Contact-Aided Invariant Extended Kalman Filtering for Robot State Estimation”, The International Journal of Robotics Reasearch, vol. 39, núm. 4, pp. 361–539, ene. 2020, doi: https://doi.org/10.1177/027836491989438.[17] Z. Cong, A. Honglei, C. Wu, L. Lang, Q. Wei, y M. Hongxu, “Contact Force Estimation Method of Legged-Robot and Its Application in Impedance Control”, IEEE Access, vol. 8, pp. 161175–161187, 2020, doi: 10.1109/ACCESS.2020.3021080.[18] M. Maravgakis, D.-E. Argiropoulos, S. Piperakis, y P. Trahanias, “Probabilistic Contact State Estimation for Legged Robots using Inertial Information”, mar. 2023, [En línea]. Disponible en: http://arxiv.org/abs/2303.00538[19] D. Youm, H. Oh, S. Choi, H. Kim, y J. Hwangbo, “Legged Robot State Estimation With Invariant Extended Kalman Filter Using Neural Measurement Network”, feb. 2024, [En línea]. Disponible en: http://arxiv.org/abs/2402.00366[20] T. D. Barfoot, State estimation for robotics. Cambridge University Press, 2022. doi: 10.1017/9781009299909.[21] J. Solà, J. Deray, y D. Atchuthan, “A micro Lie theory for state estimation in robotics”, dic. 2018, [En línea]. Disponible en: http://arxiv.org/abs/1812.01537[22] J. Ancizar, C. Cárdenas, M. Antonio, N. Arias, y A. O. Bravo, “Análisis y aplicación del filtro de kalman a una señal con ruido aleatorio”, Scientia et Technica Año XVIII, vol. 18, núm. 1, 2013.[23] G. Cassiano y D. S. Netto, “Aplicação do Filtro de Kalman na estimação dinâmica de estados do sistema elétrico de potência”, Universidade Federal de Uberlˆandia, Uberlandia, MG, 2023. Consultado: el 2 de octubre de 2024. [En línea]. Disponible en: https://repositorio.ufu.br/bitstream/123456789/41547/1/Aplica%C3%A7%C3%A3oFiltroKalman.pdf[24] A. Barrau y S. Bonnabel, “The invariant extended Kalman filter as a stable observer”, IEEE Trans Automat Contr, vol. 62, núm. 4, abr. 2017, doi: 10.1109/TAC.2016.2594085.[25] J. Badia Torres, “Kinematic and dynamic study of a quadruped robot”, Master tesis, Universitat Politécnica de Catalunya, Catalunya, 2024. Consultado: el 9 de octubre de 2024. [En línea]. Disponible en: https://upcommons.upc.edu/bitstream/handle/2117/404921/Quadruped_Report.pdf;jsessionid=2C98B26442CAA66200B2CD40937995A7?sequence=5[26] G. D. G. Pedro et al., “Quadruped Robot Control: An Approach Using Body Planar Motion Control, Legs Impedance Control and Bézier Curves”, Sensors, vol. 24, núm. 12, jun. 2024, doi: 10.3390/s24123825.[27] Unitree Robotics, “B2 SDK development guide ”, Unitree Documentation Center. Consultado: el 3 de septiembre de 2024. [En línea]. Disponible en: https://support.unitree.com/home/en/B2_developer/About%20B2[28] O. E. Ramos, “Componentes de un Robot (II)”, 2020. Consultado: el 7 de octubre de 2024. [En línea]. Disponible en: http://oramosp.epizy.com/teaching/201/fund-robotica/clases/1_Componentes_Robot_II.pdf?i=1[29] Docker Inc, “What is Docker?”, Docker Documentation. Consultado: el 10 de noviembre de 2024. [En línea]. Disponible en: https://docs.docker.com/get-started/docker-overview/[30] F. E. Fernandes Junior, “Uma introdução ao Robot Operating System (ROS)”, Embarcados. Consultado: el 11 de octubre de 2024. [En línea]. Disponible en: https://embarcados.com.br/uma-introducao-ao-robot-operating-system-ros/[31] Open Robotics, “ROS_control”, ROS.org. Consultado: el 12 de octubre de 2024. [En línea]. Disponible en: https://wiki.ros.org/ros_control[32] J. Carpentier et al., “The Pinocchio C++ library-A fast and flexible implementation of rigid body dynamics algorithms and their analytical derivatives The Pinocchio C++ library A fast and flexible implementation of rigid body dynamics algorithms and their analytical derivatives”, en SII 2019 - International Symposium on System Integrations, Paris, France, ene. 2019. [En línea]. Disponible en: https://laas.hal.science/hal-01866228v2[33] F. Farshidian, “OCS2: An open source library for Optimal Control of Switched Systems”. Consultado: el 15 de noviembre de 2024. [En línea]. Disponible en: https://leggedrobotics.github.io/ocs2/overview.html#citing-ocs2[34] D. Goldberg, Genetic Algorithms in Search, Optimization and Machine Learning. Boston, MA, EEUU: Addison-Wesley Longman Publishing Co., Inc., 1989.[35] G. Hutcheson, “Ordinary Least-Squares Regression”, en The SAGE Dictionary of Quantitative Management Research, SAGE Publications, 2011, pp. 224–228. Consultado: el 13 de noviembre de 2024. [En línea]. Disponible en: https://datajobs.com/data-science-repo/OLS-Regression-%5BGD-Hutcheson%5D.pdf[36] L. Olivera, G. Duarte, V. Suzano, y L. Dos Santos, “Legged Robotics Workspace”, 2023. Consultado: el 4 de septiembre de 2024. [En línea]. Disponible en: https://github.com/leggedrobotics-usp/legged_ws[37] R. Hartley, M. Ghaffari, J. Grizzle, y R. Eustice, “invariant-ekf”, 2018. Consultado: el 9 de octubre de 2024. [En línea]. Disponible en: https://github.com/RossHartley/invariant-ekf/tree/devel?tab=readme-ov-file[38] R. Hartley, J. Ghaffari, J. Grizzle, y R. Eustice, “invariant-ekf-ros”, 2018. Consultado: el 9 de octubre de 2024. [En línea]. Disponible en: https://github.com/RossHartley/invariant-ekf-ros[39] A. Simpkins, “Real-Time Control in Robotic Systems”, en s, Robotic Systems - Applications, Control and Programming, A. Dutta, Ed., InTech, 2012. Consultado: el 2 de diciembre de 2024. [En línea]. Disponible en: http://www.intechopen.com/books/robotic-systems-applications-control-and-programming/realtime-control-inrobotic-systems[40] J. Berlin et al., “Trajectory Generation for Mobile Robots in a Dynamic Environment using Nonlinear Model Predictive Control”, en IEEE International Conference on Automation Science and Engineering, IEEE Computer Society, ago. 2021, pp. 942–947. doi: 10.1109/CASE49439.2021.9551644.[41] L. Olivera, “Linux-stuffs”, 2021. Consultado: el 4 de septiembre de 2024. [En línea]. Disponible en: https://github.com/lomcin/linux-stuffs[42] Q. Liao y S. Yanxing, “legged_control”, 2022. Consultado: el 11 de septiembre de 2024. [En línea]. Disponible en: https://github.com/qiayuanl/legged_control[43] Q. Liao, B. Zhang, X. Huang, X. Huang, Z. Li, y K. Sreenath, “Berkeley Humanoid: A Research Platform for Learning-based Control”, jul. 2024, [En línea]. Disponible en: http://arxiv.org/abs/2407.21781[44] Unitree Robotics, “Unitree_SDK2”, 2024. Consultado: el 4 de septiembre de 2024. [En línea]. Disponible en: https://github.com/unitreerobotics/unitree_sdk2[45] Unitree Robotics, “Unitree_ros2”, 2024. Consultado: el 5 de septiembre de 2024. [En línea]. Disponible en: https://github.com/unitreerobotics/unitree_ros2[46] A. Barrau, “Non-linear state error based extended Kalman filters with applications to navigation”, PhD, l’École nationale supérieure des mines de Paris, Paris, Francia, 2015. [En línea]. Disponible en: https://pastel.hal.science/tel-01344622v1[47] S. Seabold y P. Josef, “statsmodels: Econometric and statistical modeling with python”, en 9th Python in Science Conference, 2010.Ingeniería MecatrónicaInEKF (filtro de Kalman extendido invariante)Estimación de EstadoRobots CuadrúpedosAlgoritmos genéticosOptimización de ParámetrosInEKF (Invariant extended Kalman filter)State estimationQuadruped robotsGenetic algorithmsParameter optimizationComunidad generalPublicationd88e33d6-c779-438e-a67b-055547347e60virtual::5963-1d88e33d6-c779-438e-a67b-055547347e60virtual::5963-1https://scienti.minciencias.gov.co/cvlac/visualizador/generarCurriculoCv.do?cod_rh=0000194654virtual::5963-1ORIGINALT11327_Desarrollo de un algoritmo de estimación de estado para robots cuadrúpedos utilizando el filtro de Kalman extendido invariante y estimaciones de contacto en ROSpdfT11327_Desarrollo de un algoritmo de estimación de estado para robots cuadrúpedos utilizando el filtro de Kalman extendido invariante y estimaciones de contacto en ROSpdfArchivo texto completo del trabajo de grado, PDFapplication/pdf1221379https://red.uao.edu.co/bitstreams/892b795d-5d70-48dc-8347-23e81b04ee1d/download5f73c1c36f07df361c841ea59acec5f0MD51T11327A_Anexo A. Manual de usuario para el framework de estimación de estado.pdfT11327A_Anexo A. Manual de usuario para el framework de estimación de estado.pdfAnexo A. Manual de usuario para el framework de estimación de estadoapplication/pdf495362https://red.uao.edu.co/bitstreams/8b994df8-b428-4f8d-9ce4-f051a8093fcd/download0d91bcbafa606c6f05d18f99bdebe7b4MD52T11327B_Anexo B. Video de funcionamiento en tiempo real del algoritmo InEKF.MP4T11327B_Anexo B. Video de funcionamiento en tiempo real del algoritmo InEKF.MP4Anexo B. Video de funcionamiento en tiempo real del algoritmo InEKFvideo/mp4125090505https://red.uao.edu.co/bitstreams/fde8d290-ad32-4487-adf6-29318864445f/download7d1e4bae93226f657585c07c70e6f2d7MD53TA11327_Autorización trabajo de grado.pdfTA11327_Autorización trabajo de grado.pdfAutorización para publicación del trabajo de gradoapplication/pdf322321https://red.uao.edu.co/bitstreams/1f8035c2-88d0-471a-85bd-31f1759f88c0/download5c2a3c959943f4600c52aba50d2ce53bMD54LICENSElicense.txtlicense.txttext/plain; charset=utf-81672https://red.uao.edu.co/bitstreams/e779854e-5aff-40b0-87f8-de50cd05d62a/download6987b791264a2b5525252450f99b10d1MD55TEXTT11327_Desarrollo de un algoritmo de estimación de estado para robots cuadrúpedos utilizando el filtro de Kalman extendido invariante y estimaciones de contacto en ROSpdf.txtT11327_Desarrollo de un algoritmo de estimación de estado para robots cuadrúpedos utilizando el filtro de Kalman extendido invariante y estimaciones de contacto en ROSpdf.txtExtracted texttext/plain104320https://red.uao.edu.co/bitstreams/bdb17bbb-3ac8-4d9c-a309-6e383d5babb0/download47fec8bcb4f637bc4d45fffcfbb75690MD56T11327A_Anexo A. Manual de usuario para el framework de estimación de estado.pdf.txtT11327A_Anexo A. Manual de usuario para el framework de estimación de estado.pdf.txtExtracted texttext/plain6927https://red.uao.edu.co/bitstreams/5a7e1eb6-fe87-4d8e-b7b5-f245b837a3c0/downloade631dcb48705ec4d7552d0adaf850a68MD58TA11327_Autorización trabajo de grado.pdf.txtTA11327_Autorización trabajo de grado.pdf.txtExtracted texttext/plain5429https://red.uao.edu.co/bitstreams/7d9aa56f-6193-49a6-a709-31f4882eef17/download85c68a3033378faf3f1fcdaa5bb0e16dMD510THUMBNAILT11327_Desarrollo de un algoritmo de estimación de estado para robots cuadrúpedos utilizando el filtro de Kalman extendido invariante y estimaciones de contacto en ROSpdf.jpgT11327_Desarrollo de un algoritmo de estimación de estado para robots cuadrúpedos utilizando el filtro de Kalman extendido invariante y estimaciones de contacto en ROSpdf.jpgGenerated Thumbnailimage/jpeg7008https://red.uao.edu.co/bitstreams/2794e0d7-5992-4204-8f72-07914ce5a5d8/download0ed004b9f1c372a3fd7aa4c9fa2dac92MD57T11327A_Anexo A. Manual de usuario para el framework de estimación de estado.pdf.jpgT11327A_Anexo A. Manual de usuario para el framework de estimación de estado.pdf.jpgGenerated Thumbnailimage/jpeg10148https://red.uao.edu.co/bitstreams/cfa69618-3b77-4103-9b1d-c90c3acb19a3/downloadc9a65d3526d6827205d8bd54490fa9deMD59TA11327_Autorización trabajo de grado.pdf.jpgTA11327_Autorización trabajo de grado.pdf.jpgGenerated Thumbnailimage/jpeg13636https://red.uao.edu.co/bitstreams/4cf7127b-d5c5-4bc6-86ac-0d7151d854b1/downloade2ba81cbe13e6f39e021402113b67cd2MD51110614/16021oai:red.uao.edu.co:10614/160212025-03-07 03:01:52.89https://creativecommons.org/licenses/by-nc-nd/4.0/Derechos reservados - Universidad Autónoma de Occidente, 2025open.accesshttps://red.uao.edu.coRepositorio Digital Universidad Autonoma de Occidenterepositorio@uao.edu.coPHA+RUwgQVVUT1IgYXV0b3JpemEgYSBsYSBVbml2ZXJzaWRhZCBBdXTDs25vbWEgZGUgT2NjaWRlbnRlLCBkZSBmb3JtYSBpbmRlZmluaWRhLCBwYXJhIHF1ZSBlbiBsb3MgdMOpcm1pbm9zIGVzdGFibGVjaWRvcyBlbiBsYSBMZXkgMjMgZGUgMTk4MiwgbGEgTGV5IDQ0IGRlIDE5OTMsIGxhIERlY2lzacOzbiBhbmRpbmEgMzUxIGRlIDE5OTMsIGVsIERlY3JldG8gNDYwIGRlIDE5OTUgeSBkZW3DoXMgbGV5ZXMgeSBqdXJpc3BydWRlbmNpYSB2aWdlbnRlIGFsIHJlc3BlY3RvLCBoYWdhIHB1YmxpY2FjacOzbiBkZSBlc3RlIGNvbiBmaW5lcyBlZHVjYXRpdm9zLiBQQVJBR1JBRk86IEVzdGEgYXV0b3JpemFjacOzbiBhZGVtw6FzIGRlIHNlciB2w6FsaWRhIHBhcmEgbGFzIGZhY3VsdGFkZXMgeSBkZXJlY2hvcyBkZSB1c28gc29icmUgbGEgb2JyYSBlbiBmb3JtYXRvIG8gc29wb3J0ZSBtYXRlcmlhbCwgdGFtYmnDqW4gcGFyYSBmb3JtYXRvIGRpZ2l0YWwsIGVsZWN0csOzbmljbywgdmlydHVhbCwgcGFyYSB1c29zIGVuIHJlZCwgSW50ZXJuZXQsIGV4dHJhbmV0LCBpbnRyYW5ldCwgYmlibGlvdGVjYSBkaWdpdGFsIHkgZGVtw6FzIHBhcmEgY3VhbHF1aWVyIGZvcm1hdG8gY29ub2NpZG8gbyBwb3IgY29ub2Nlci4gRUwgQVVUT1IsIGV4cHJlc2EgcXVlIGVsIGRvY3VtZW50byAodHJhYmFqbyBkZSBncmFkbywgcGFzYW50w61hLCBjYXNvcyBvIHRlc2lzKSBvYmpldG8gZGUgbGEgcHJlc2VudGUgYXV0b3JpemFjacOzbiBlcyBvcmlnaW5hbCB5IGxhIGVsYWJvcsOzIHNpbiBxdWVicmFudGFyIG5pIHN1cGxhbnRhciBsb3MgZGVyZWNob3MgZGUgYXV0b3IgZGUgdGVyY2Vyb3MsIHkgZGUgdGFsIGZvcm1hLCBlbCBkb2N1bWVudG8gKHRyYWJham8gZGUgZ3JhZG8sIHBhc2FudMOtYSwgY2Fzb3MgbyB0ZXNpcykgZXMgZGUgc3UgZXhjbHVzaXZhIGF1dG9yw61hIHkgdGllbmUgbGEgdGl0dWxhcmlkYWQgc29icmUgw6lzdGUuIFBBUkFHUkFGTzogZW4gY2FzbyBkZSBwcmVzZW50YXJzZSBhbGd1bmEgcmVjbGFtYWNpw7NuIG8gYWNjacOzbiBwb3IgcGFydGUgZGUgdW4gdGVyY2VybywgcmVmZXJlbnRlIGEgbG9zIGRlcmVjaG9zIGRlIGF1dG9yIHNvYnJlIGVsIGRvY3VtZW50byAoVHJhYmFqbyBkZSBncmFkbywgUGFzYW50w61hLCBjYXNvcyBvIHRlc2lzKSBlbiBjdWVzdGnDs24sIEVMIEFVVE9SLCBhc3VtaXLDoSBsYSByZXNwb25zYWJpbGlkYWQgdG90YWwsIHkgc2FsZHLDoSBlbiBkZWZlbnNhIGRlIGxvcyBkZXJlY2hvcyBhcXXDrSBhdXRvcml6YWRvczsgcGFyYSB0b2RvcyBsb3MgZWZlY3RvcywgbGEgVW5pdmVyc2lkYWQgIEF1dMOzbm9tYSBkZSBPY2NpZGVudGUgYWN0w7phIGNvbW8gdW4gdGVyY2VybyBkZSBidWVuYSBmZS4gVG9kYSBwZXJzb25hIHF1ZSBjb25zdWx0ZSB5YSBzZWEgZW4gbGEgYmlibGlvdGVjYSBvIGVuIG1lZGlvIGVsZWN0csOzbmljbyBwb2Ryw6EgY29waWFyIGFwYXJ0ZXMgZGVsIHRleHRvIGNpdGFuZG8gc2llbXByZSBsYSBmdWVudGUsIGVzIGRlY2lyIGVsIHTDrXR1bG8gZGVsIHRyYWJham8geSBlbCBhdXRvci4gRXN0YSBhdXRvcml6YWNpw7NuIG5vIGltcGxpY2EgcmVudW5jaWEgYSBsYSBmYWN1bHRhZCBxdWUgdGllbmUgRUwgQVVUT1IgZGUgcHVibGljYXIgdG90YWwgbyBwYXJjaWFsbWVudGUgbGEgb2JyYS48L3A+Cg==