Migración del ejercicio pick and place a gazebo Harmonic

Semana 3 ·

Objetivos

En este trabajo he desarrollado una solución completa del ejercicio de Pick & Place utilizando Gazebo Harmonic. El objetivo principal ha sido adaptar el flujo de trabajo existente en RoboticsAcademy, originalmente basado en Gazebo Classic, a la nueva arquitectura de Harmonic, comprendiendo tanto el control del robot mediante MoveIt como la interacción con objetos en el simulador.

Tareas realizadas:

- Desarrollo de la solución de Pick & Place

He implementado una solución secuencial para el ejercicio de Pick & Place utilizando las funciones del HAL, como MoveAbsJ, MoveJoint, MoveRelLinear y GripperSet. La solución sigue una estructura modular en la que, para cada objeto, se realiza un ciclo completo de recogida y colocación: movimiento a una posición aproximada, descenso controlado, cierre del gripper, elevación, transporte mediante puntos intermedios y liberación en el destino correspondiente. Además, se han definido puntos de transición para evitar colisiones y mejorar la estabilidad del movimiento del robot.

- Adaptación del HAL a Gazebo Harmonic

He analizado y utilizado una versión adaptada del HAL para Gazebo Harmonic, en la que el control del robot se realiza mediante servicios de cinemática inversa (IK) proporcionados por MoveIt2 y ejecución de trayectorias mediante ros2_control. A diferencia de Gazebo Classic, en esta versión el agarre de objetos no se basa en un plugin físico por defecto, sino en la interacción con un plugin específico de tipo LinkAttacher que permite crear y eliminar uniones entre enlaces.

- Implementación y depuración del plugin LinkAttacher

Se ha trabajado en la implementación de un plugin compatible con Gazebo Harmonic para simular el agarre de objetos. Este plugin crea uniones de tipo DetachableJoint entre el efector final del robot y el objeto, replicando el comportamiento del plugin de Gazebo Classic. Durante el desarrollo se han identificado y solucionado varios problemas, especialmente relacionados con la operación de detach, que requería eliminar correctamente la entidad del joint dentro del Entity Component Manager para liberar el objeto.

- Integración con ROS 2 y gestión de dependencias

Se ha configurado la comunicación mediante servicios ROS 2 (AttachLink y DetachLink), utilizando el paquete linkattacher_msgs. Además, se han resuelto problemas de compilación relacionados con dependencias no incluidas en el workspace, asegurando que todos los paquetes necesarios estuvieran disponibles y correctamente enlazados durante el proceso de build con colcon.

- Análisis de diferencias entre Gazebo Classic y Harmonic

Finalmente, se ha realizado un análisis comparativo entre ambos entornos de simulación. En Gazebo Classic, el agarre se implementa mediante joints creados directamente en el motor físico, mientras que en Gazebo Harmonic es necesario gestionar explícitamente los componentes del ECS. Esto implica un mayor control sobre la creación y eliminación de uniones, pero también una mayor complejidad en la implementación.

← Volver a Semana 3

- solución