Clase 02 - Laboratorio

Instalación de ROS2

Antes de iniciar

Se necesitan todas las últimas actualizaciones de Windows instaladas


1️⃣ Instalar WSL

    $ wsl --install
Ver salida
La operación solicitada requiere elevación.
Descargando: Subsistema de Windows para Linux 2.4.13
Instalando: Subsistema de Windows para Linux 2.4.13
Se ha instalado Subsistema de Windows para Linux 2.4.13.
Instalando componente opcional de Windows: VirtualMachinePlatform

Herramienta Administración y mantenimiento de imágenes de implementación
Versión: 10.0.26100.1150

Versión de imagen: 10.0.26100.3624

Habilitando características
[==========================100.0%==========================]
La operación se completó correctamente.
La operación solicitada se realizó correctamente. Los cambios se aplicarán una vez que se reinicie el sistema.
La operación solicitada se realizó correctamente. Los cambios se aplicarán una vez que se reinicie el sistema.
Recomendación

Se recomienda reiniciar la PC después de esta instalación inicial para finalizar el setup


2️⃣ Instalar Ubuntu WSL

Para ver todas las distribuciones y versiones disponibles:

    $ wsl --list --online
Ver salida
A continuación, se muestra una lista de las distribuciones válidas que se pueden instalar.
Instalar con "wsl.exe --install <Distro>".

NAME                            FRIENDLY NAME
AlmaLinux-8                     AlmaLinux OS 8
AlmaLinux-9                     AlmaLinux OS 9
AlmaLinux-Kitten-10             AlmaLinux OS Kitten 10
Debian                          Debian GNU/Linux
SUSE-Linux-Enterprise-15-SP5    SUSE Linux Enterprise 15 SP5
SUSE-Linux-Enterprise-15-SP6    SUSE Linux Enterprise 15 SP6
Ubuntu                          Ubuntu
Ubuntu-24.04                    Ubuntu 24.04 LTS
kali-linux                      Kali Linux Rolling
openSUSE-Tumbleweed             openSUSE Tumbleweed
openSUSE-Leap-15.6              openSUSE Leap 15.6
Ubuntu-18.04                    Ubuntu 18.04 LTS
Ubuntu-20.04                    Ubuntu 20.04 LTS
Ubuntu-22.04                    Ubuntu 22.04 LTS
OracleLinux_7_9                 Oracle Linux 7.9
OracleLinux_8_7                 Oracle Linux 8.7
OracleLinux_9_1                 Oracle Linux 9.1

Para instalar

    $ wsl --install -d Ubuntu-24.04
Ver salida
Descargando: Ubuntu 24.04 LTS
Instalando: Ubuntu 24.04 LTS
Distribución instalada correctamente.

3️⃣ Ejecutar y configurar Ubuntu

    $ wsl -d Ubuntu-24.04
Ver salida
Provisioning the new WSL instance Ubuntu-24.04
This might take a while...
Create a default Unix user account: ubuntu
New password:
Retype new password:
passwd: password updated successfully
To run a command as administrator (user "root"), use "sudo <command>".
See "man sudo_root" for details.

Note

Continuar con la creación de usuario y contraseña

↪️ Continuar con la guía para Ubuntu 24.04


Traducido de documentation.ubuntu.com/wsl

Actualizar el sistema
    $ sudo apt update
    $ sudo apt upgrade -y

1️⃣ Habilitar repositorios

    $ sudo apt install software-properties-common curl -y
    $ sudo add-apt-repository universe

Agregar la key GPG de ROS 2

    $ sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg

Agregar repositorio a la source list

    $ echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(. /etc/os-release && echo $UBUNTU_CODENAME) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null

2️⃣ Instalar ROS 2

Actualizar repositorios apt y asegurar que los paquetes se encuentren actualizados

    $ sudo apt update && sudo apt upgrade -y

Instalación Desktop: ROS, RViz, demos, etc.

    $ sudo apt install ros-jazzy-desktop -y

Traducido de docs.ros.org

1️⃣ Instalar Docker

2️⃣ Instalar Extensiones devcontainer

3️⃣ Crear devcontainer.json

Ver contenido del archivo
devcontainer.json
// For format details, see https://aka.ms/devcontainer.json.
{
    "name": "TUAR - ROS2 Jazzy",
    // Or use a Dockerfile or Docker Compose file. More info: https://containers.dev/guide/dockerfile
    "image": "registry.gitlab.com/acapovilla/ros-docker-images/ros2/jazzy-noble-desktop-full:latest",
    // Workspace setup
    "workspaceMount": "source=${localWorkspaceFolder},target=/workspaces/catkin_ws,type=bind,consistency=cached",
    "workspaceFolder": "/workspaces/catkin_ws",
    "remoteUser": "ubuntu",
    "containerUser": "ubuntu",

    // Features to add to the dev container. More info: https://containers.dev/features.
    "features": {
        "ghcr.io/devcontainers/features/common-utils:2": {
            "installZsh": true,
            "installOhMyZsh": true,
            "installOhMyZshConfig": true,
            "nonFreePackages": true,
            "username": "ubuntu",
            "userUid": "automatic",
            "userGid": "automatic"
        }
    },

    // Use 'forwardPorts' to make a list of ports inside the container available locally.
    // "forwardPorts": [],

    // Use 'postCreateCommand' to run commands after the container is created.
    // "postCreateCommand": "uname -a",

    // Configure tool-specific properties.
    "customizations": {
        "vscode": {
            "extensions": [
                "ms-vscode.cpptools",
                "ms-iot.vscode-ros",
                "twxs.cmake",
                "mutantdino.resourcemonitor",
                "donjayamanne.python-environment-manager",
                "KevinRose.vsc-python-indent",
                "VisualStudioExptTeam.vscodeintellicode",
                "ms-python.vscode-pylance",
                "ms-vscode.cmake-tools"
            ]
        }
    },

    // Uncomment to connect as root instead. More info: https://aka.ms/dev-containers-non-root.
    // "remoteUser": "root"

    "containerEnv": {
        // Display configuration
        "DISPLAY": "${localEnv:DISPLAY}"
    },
    "mounts": [
        // X-Server
        "type=bind,source=/tmp/.X11-unix,target=/tmp/.X11-unix,readonly=false"
    ],
    "runArgs": [
        "--device=/dev/dri:/dev/dri",
        "--privileged",
        "--volume=/dev:/dev",
        "--net=host"
    ],
    "onCreateCommand": "echo 'source /opt/ros/$ROS_DISTRO/setup.bash' >> /home/ubuntu/.bashrc",
    "postCreateCommand": "sudo apt update && rosdep update"
}

Configuración del entorno

Configurar el entorno:

    $ source /opt/ros/jazzy/setup.bash

Variables de entorno: ROS_DOMAIN_ID

    $ printenv | grep -i ROS

Obtener ayuda desde la terminal:

    $ ros2 --help

Emisor / Receptor

Instalación de paquetes de demostración: demo-nodes-py

    $ sudo apt install ros-jazzy-demo-nodes-py

Ver paquetes instalados:

    $ ros2 pkg executables

Nodos talker y listener

Ejecutar nodos

  $ ros2 run <nombre_paquete> <nombre_ejecutable>

    $ ros2 run demo_nodes_py talker

y en otra terminal

    $ ros2 run demo_nodes_py listener
Tip

Recuerda volver a configurar el entorno y configurar el ROS_DOMAIN_ID correctamente


Tip

Para detener el nodo: Ctrl+C

Listar los nodos

    $ ros2 node list

Obtener información

  $ ros2 node info <nombre_nodo>

    $ ros2 node info /talker

Topics

Listar los topics

    $ ros2 topic list

Obtener información

Información acerca del topic: ros2 topic info <nombre_topic>


    $ ros2 topic info /chatter

Información acerca del tipo de topic: ros2 topic type <nombre_topic>


    $ ros2 topic type /chatter

Medir la frecuencia con la que se publican mensajes: ros2 topic hz <nombre_topic>


    $ ros2 topic hz /chatter

Ver los mensajes que pasan por un topic

  $ ros2 topic echo <nombre_topic>

    $ ros2 topic echo /chatter

Mensajes

Obtener información

  $ ros2 interface show <nombre_del_tipo_de_mensaje>

Ejemplo

    $ ros2 interface show std_msgs/msg/String

Publicar mensajes

  $ ros2 topic pub <nombre_del_topic>
      <nombre_del_tipo_de_mensaje> '<contenido>'

Ejemplo

    $ ros2 topic pub /chatter std_msgs/msg/String "{data: Mensaje de prueba}"