Robótica

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 escribe ros2, 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:

  1. Percibe: Se suscribe al tópico /pose para leer sus propios sensores (Odometría).
  2. Decide: Calcula el error de posición y orientación respecto al objetivo en tiempo real.
  3. 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:

  1. Entorno: Configuración de objetos primitivos (Cubo, Esfera, Cilindro) en Gazebo.
  2. 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.