Clase 02 - Laboratorio
Instalación de ROS2
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.
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.
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
$ 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
Recuerda volver a configurar el entorno y configurar el ROS_DOMAIN_ID
correctamente
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}"