Sistema de tracción

Introducción

El caddy eléctrico está equipado con un sistema de control en velocidad y tracción que garantiza un rendimiento confiable y eficiente.

El corazón del sistema de control es un Curtis Controller 1234, reconocido por su fiabilidad y precisión en la gestión de la potencia entregada al motor. 

Este controlador permite dos modos de funcionamiento: manual mediante pedal o automático, adaptándose a diferentes necesidades de conducción. El modo automático funciona a través de su comunicación CAN bus, que asegura una integración sencilla y robusta con otros sistemas electrónicos.

photo_2025-08-04_23-54-50.jpg

Por su parte, el sistema de tracción está impulsado por un motor eléctrico de 3.3 kW y 4800 rpm, el cual proporciona la potencia suficiente para mover el caddy con soltura, incluso en terrenos inclinados o con carga adicional. Esta combinación permite alcanzar un equilibrio óptimo entre eficiencia energética y desempeño, convirtiéndolo en una solución práctica y sostenible para el transporte en campos de golf, resorts o áreas residenciales.

En resumen, el controlador Curtis 1234 y el motor de 3.3 kW, junto con su doble modo de operación y conectividad CAN, hacen del caddy un vehículo versátil, confiable y de bajo mantenimiento, con una excelente relación entre potencia y eficiencia.

Paquete de ROS 2

Repositorio caddy_ai2_ros2_control_hardware_curtis_motor_driver:


El repositorio caddy_ai2_ros2_control_hardware_curtis_motor_driver implementa la integración de un driver para motor Curtis dentro de la arquitectura ROS 2 control, permitiendo gestionar un caddy eléctrico (carrito de golf) desde un sistema robótico.


La comunicación con el motor se realiza a través de CAN bus (Controller Area Network), lo que asegura robustez y fiabilidad en la transmisión de comandos. El sistema está diseñado para trabajar con una frecuencia de control de 25 Hz, garantizando un comportamiento estable en tiempo real.


Entre sus características principales se encuentran:


Interfaz Hardware en ROS 2: el repositorio define un hardware interface plugin capaz de interactuar con el controlador Curtis, permitiendo la publicación y recepción de comandos de velocidad.


Soporte para CAN en Linux: incluye instrucciones para configurar interfaces USB-to-CAN, crear interfaces virtuales (vcan), y gestionar permisos via /etc/sudoers o grupos de usuario.


Dependencias clave:


libsocketcan y libsocketcanpp para manejar la comunicación CAN en C++.

can-utils, herramienta común en Linux para monitoreo y pruebas sobre buses CAN.

Soporte específico para el adaptador Ixxat USB-to-CAN V2 compact.


Facilidad de prueba: se pueden crear interfaces virtuales (vcan_motor_drv o vcan_steer_drv) para simular el bus y publicar comandos con ROS 2 sin necesidad de hardware físico.


Gestión en ROS 2: el driver se lanza como un controller dentro de ros2_control y permite enviar comandos, por ejemplo:


En conjunto, este stack permite controlar el motor eléctrico de 3.3 kW del caddy a través del controlador Curtis 1234, gestionando modos de operación y facilitando la integración con arquitecturas robóticas modernas.

Análisis software del sistema de tracción con ROS 1

https://github.com/racarla96/ros1_caddy_ai2_rbcar_robot/tree/indigo-devel/curtis_motordrive

A continuación se presenta un análisis general del código contenido en el archivo curtis_controller.cpp del paquete curtis_controller, que forma parte del sistema de control para un motor drive basado en ROS:


1. Arquitectura General y Objetivos


2. Máquina de Estados

El funcionamiento central del controlador se organiza en una máquina de estados implementada en el método controlLoop(), la cual revisa el valor de la variable state y ejecuta la función correspondiente. Los estados son definidos mediante constantes (probablemente en el paquete robotnik_msgs::State):


3. Flujo de Ejecución y Control


4. Interacción mediante ROS


5. Gestión de Errores y Seguridad


Conclusión

El código del CurtisController está organizado de forma modular y robusta, utilizando una máquina de estados que permite gestionar de manera clara las diferentes fases de la operación:

En resumen, se trata de un controlador para sistemas embebidos en robótica que integra comunicación a bajo nivel (CAN) con la capa de mensajería y servicios de ROS, siguiendo un patrón basado en estados que facilita tanto la operación normal como el manejo de situaciones de error o emergencia.