Instalar micro-ROS en la Pico
micro-ROS lleva ROS 2 a microcontroladores con recursos limitados. A continuación se describe cómo configurar el build system para la Raspberry Pi Pico utilizando el Pico SDK oficial.
Prerrequisitos
- Toolchain Arm (
arm-none-eabi-gcc), CMake y Ninja. - ROS 2 Humble (o posterior) instalado en tu sistema.
- Repositorio
micro_ros_setupclonado en el workspace de ROS 2. - Pico SDK inicializado (
PICO_SDK_PATH).
Configurar el workspace
source /opt/ros/humble/setup.bash
mkdir -p ~/micro_ros_ws/src
cd ~/micro_ros_ws/src
git clone https://github.com/micro-ROS/micro_ros_setup.git
cd ..
colcon build
source install/local_setup.bash
Crear firmware para la Pico
- Importa los repositorios necesarios:
ros2 run micro_ros_setup create_firmware_ws.sh freertos raspberripi_pico
- Descarga dependencias:
ros2 run micro_ros_setup configure_firmware.sh freertos raspberripi_pico
- Compila con opciones personalizadas (Wi-Fi deshabilitada por defecto):
ros2 run micro_ros_setup build_firmware.sh
- El resultado (
firmware.uf2) se genera enfirmware/build. Cópialo a la Pico en modo BOOTSEL.
Ejemplo: nodo ping
Tras flashear, conecta la Pico por USB y ejecuta en el host:
ros2 run micro_ros_agent micro_ros_agent serial --dev /dev/ttyACM0 -b 115200
En otra terminal:
ros2 topic echo /micro_ros/ping
Deberías ver paquetes periódicos generados por el firmware de ejemplo.
Personalizar el proyecto
- Edita
firmware/freertos_apps/apps/ping_pong/main.cpara crear tus propios nodos. - Ajusta memoria en
pico_hw_description.cmakesegún tus necesidades de pila y heap. - Integra sensores usando
rclcy colas de mensajes confiables (rmw_microxrcedds).
Buenas prácticas
- Actualiza periódicamente
micro_ros_setuppara obtener parches de compatibilidad. - Usa colcon profiles para separar builds de depuración y liberación.
- Registra el hash del commit del Pico SDK y micro-ROS en tu documentación.
- Automatiza generación de
.uf2en CI para mantener firmware consistente.
Siguiendo estos pasos ejecutarás micro-ROS en la Raspberry Pi Pico con el SDK oficial listo para integrarse en sistemas ROS 2.
