Etapa 1
Iniciando mi camino hacia la Robótica de Enjambre con ROS 2 Humble en WSL.
Primer paso: configuración del entorno y nodos básicos de teleoperación. Próximo paso: Control autónomo con Python


Hacía un tiempo ya había instalado y configurado WSL y ROS 2, así que esta vez lo que hice fue verificaciones:
En PowerShell
wsl -l -v
Y obtuve:
PS C:\WINDOWS\System32> wsl -l -v
NAME STATE VERSION
* Ubuntu Stopped 2
Luego en Ubuntu (WSL):
lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 22.04.5 LTS
Release: 22.04
Codename: jammy
Luego en Ubuntu:
printenv ROS_DISTRO
humble
Luego verificamos la configuración del entorno:
Qué es lo que hace este paso: ROS 2 es un conjunto de cientos de programas guardados en una carpeta oculta (/opt/ros/humble). Linux, por defecto, no sabe que están ahí.
setup.bash: Es un mapa. Le dice a Linux: «Oye, si el usuario escriberos2, busca en esta carpeta».~/.bashrc: Es un archivo que se ejecuta automáticamente cada vez que abres una terminal nueva.- El objetivo: Automatizar el proceso para que no tengas que «cargar el mapa» manualmente cada vez que abras una ventana.
En Ubuntu:
tail ~/.bashrc
Y obtuve:
# this, if it's already enabled in /etc/bash.bashrc and /etc/profile
# sources /etc/bash.bashrc).
if ! shopt -oq posix; then
if [ -f /usr/share/bash-completion/bash_completion ]; then
. /usr/share/bash-completion/bash_completion
elif [ -f /etc/bash_completion ]; then
. /etc/bash_completion
fi
fi
source /opt/ros/humble/setup.bash
Al ver esa última línea, ya sabemos que el entorno está bien configurado.
Finalmente, ejecutamos la simulación: en una terminal corremos
ros2 run turtlesim turtlesim_node
Y en otra corremos:
ros2 run turtlesim turtle_teleop_key
Etapa 2
Aprendiendo la arquitectura de nodos y tópicos en ROS 2 Humble. Implementé mi primer publicador en Python para controlar un robot diferencial (simulado) de forma autónoma. Próximo paso: Control de lazo cerrado
Etapa 3
Implementando Control de Lazo Cerrado en ROS 2
Siguiendo mi camino hacia la Robótica de Enjambre (Swarm Robotics), he estado profundizando en la arquitectura de ROS 2 Humble.
Hoy implementé mi primer nodo de Control de Lazo Cerrado (Closed-Loop Control) en Python. A diferencia de la teleoperación básica, este agente es autónomo:
- Percibe: Se suscribe al tópico
/posepara leer sus propios sensores (Odometría). - Decide: Calcula el error de posición y orientación respecto al objetivo en tiempo real.
- Actúa: Un controlador proporcional (P) ajusta dinámicamente la velocidad lineal y angular (
cmd_vel) para corregir la trayectoria.
El resultado es un comportamiento orgánico donde el robot ‘busca’ su objetivo y aterriza suavemente en las coordenadas designadas (x,y).
Este es el bloque constructivo fundamental (Behavior 0) sobre el cual construiré comportamientos más complejos de evasión y coordinación de enjambres.

Etapa 4
Continuando con mi inmersión intensiva en ROS 2 Humble antes de la Winter School de Munich sobre Maritime robotics.
Hoy di el salto de simulaciones 2D a entornos físicos con Gazebo y TurtleBot3. El objetivo no era solo mover el robot, sino entender su sistema de percepción.
En las imágenes se puede apreciar la correlación entre el mundo simulado y la ‘visión’ del robot:
- Entorno: Configuración de objetos primitivos (Cubo, Esfera, Cilindro) en Gazebo.
- Percepción: Visualización de la nube de puntos del LIDAR (LDS-01) en RViz2, donde se observa cómo el sensor reconstruye la geometría de los obstáculos en tiempo real a través del tópico
/scan.
Listo para aplicar estos conceptos de sensado y actuacion en robots reales la próxima semana.
