Objetivos
En este trabajo he comenzado explorando el entorno de desarrollo de RoboticsAcademy, entendiendo su arquitectura general y el flujo completo desde el código del ejercicio hasta la simulación en Gazebo. El objetivo principal ha sido comprender cómo se ejecuta un ejercicio robótico sin interactuar directamente con ROS a bajo nivel.
Tareas realizadas:
- Análisis del HAL (Hardware Abstraction Layer)
He analizado el archivo hal.py, que actúa como una capa de abstracción entre el código del ejercicio y el robot simulado. Este archivo encapsula toda la complejidad de ROS 2, MoveIt y Gazebo, ofreciendo una API sencilla con funciones como MoveLinear, MoveAbsJ o GripperSet, que permiten controlar el robot sin necesidad de programar nodos ROS manualmente. El HAL no implementa directamente la lógica del robot, sino que reutiliza paquetes externos, en concreto ros2_SimRealRobotControl, desde donde se importan clases y mensajes mediante rutas dinámicas obtenidas con ament_index_python. De este modo, el HAL actúa como un “pegamento” que conecta distintos subsistemas.
- Uso de Gazebo Classic
Uno de los puntos clave del análisis ha sido entender qué partes del sistema dependen específicamente de Gazebo Classic. En el HAL se utilizan servicios como AttachLink y DetachLink, proporcionados por un plugin de Gazebo Classic, que permiten simular el agarre de objetos mediante la creación y destrucción de uniones rígidas entre enlaces. Este mecanismo no simula un agarre físico real, sino un agarre lógico, suficiente para ejercicios educativos como Pick & Place. Esto explica por qué este ejercicio no es compatible directamente con Gazebo Harmonic, ya que dichos servicios no existen en esa versión del simulador.