Skip to content

Instalando WSL-ROS2 en Windows

Aplicable a: Computadoras personales (no administradas) con Windows 10 u 11

El Entorno de Simulación WSL-ROS2

Para apoyar este curso hemos creado un entorno personalizado de ROS 2 que se ejecuta en Windows 10 u 11 usando el Windows Subsystem for Linux (WSL). Lo llamamos "WSL-ROS2" y está disponible a través del equipo del laboratorio.

Note

Cuando recibas el enlace de descarga de WSL-ROS2, recibirás también instrucciones de instalación. Recomendamos que sigas las instrucciones proporcionadas en esta página, ya que esta página se mantendrá más actualizada a lo largo del semestre.

Requisitos Previos

  1. Tu computadora debe estar ejecutando Windows 10 Build 19044 o superior, o Windows 11.
  2. Actualiza los controladores de GPU de tu máquina.
  3. Instala o actualiza WSL:
    1. Si aún no tienes WSL instalado en tu máquina, sigue estas instrucciones para instalarlo.
    2. Si ya tienes WSL instalado en tu máquina, sigue estas instrucciones para actualizarlo.
  4. Instala el Windows Terminal.
  5. Instala Visual Studio Code y la extensión WSL para VS Code.
  6. Instala el VcXsrv Windows X Server.

Instalación

  1. Solicita el enlace de descarga al coordinador del laboratorio.

  2. El enlace te permitirá descargar WSL-ROS2 en tu máquina como un archivo .zip (~2 GB).

  3. En tu computadora, crea una nueva carpeta en la raíz de tu unidad C:\ llamada WSL-ROS2.

  4. Guarda el archivo .zip en esta nueva carpeta (C:\WSL-ROS2\)

  5. Inicia PowerShell, luego ejecuta los siguientes comandos en orden:

    1. Identifica el archivo zip:

      $zipFile = Get-ChildItem "C:\WSL-ROS2\WSL-ROS2_*_SDS.zip" | 
          Sort-Object Name -Descending | 
          Select-Object -First 1
      
    2. Extráelo:

      Expand-Archive -Path $zipFile.FullName `
          -DestinationPath "C:\WSL-ROS2\" -Force
      
    3. Identifica el archivo .tar extraído:

      $tarFile = Get-ChildItem "C:\WSL-ROS2\wsl-ros2-v*.tar" | 
          Sort-Object Name -Descending | 
          Select-Object -First 1
      
    4. Impórtalo como una distribución WSL:

      wsl --import WSL-ROS2 "$env:localappdata\WSL-ROS2" `
          $tarFile.FullName --version 2
      
  6. Esto puede tardar un par de minutos. Una vez completado, puedes verificar que fue exitoso con el siguiente comando:

    wsl -l -v
    

    Donde WSL-ROS2 debería estar listado.

  7. A continuación (opcional), abre la aplicación Windows Terminal, luego:

    1. Ve a Configuración (Ctrl+,)
    2. En Perfiles en el menú de la izquierda, encuentra WSL-ROS2 (o desplázate más abajo y haz clic en el botón Agregar un nuevo perfil para crearlo).
    3. Configura los ajustes para el perfil WSL-ROS2 como se muestra a continuación:

    4. Luego, en Inicio (de regreso en el menú de la izquierda), bajo Perfil predeterminado, selecciona WSL-ROS2 de la lista desplegable.

      Esto asegurará que cada vez que abras la aplicación Windows Terminal o presiones el botón Nueva Pestaña () se lance por defecto una Instancia de Terminal WSL-ROS2.

Configuración Inicial

Dentro de una instancia de terminal WSL-ROS2, necesitarás ejecutar algunos comandos iniciales para configurar las cosas.

  1. Primero, ejecuta el siguiente comando para intentar usar el soporte nativo de Interfaz Gráfica de Usuario (GUI) (que debería funcionar si seguiste todos los requisitos previos anteriores):

    echo "export XSERVER=false" > $HOME/.rigsa/xserver.sh
    
  2. Luego, vuelve a hacer source de tu archivo .bashrc para que este cambio surta efecto:

    source ~/.bashrc
    
  3. Ejecuta el siguiente comando de ROS para ver si puedes lanzar la GUI de Gazebo:

    ros2 launch turtlebot3_gazebo empty_world.launch.py
    

    Esto debería presentarte algo como esto:

    Si esto no funciona, entonces podrías intentar usar un X Server de terceros (VcXsrv) en su lugar...

Usar un X Server de Terceros

Si no puedes ejecutar aplicaciones GUI de forma nativa (habiendo completado los pasos en la sección anterior), entonces podrías intentar usar un X Server de terceros ("VcXsrv") en su lugar. En los requisitos previos, ya deberías haber instalado VcXsrv.

Note

Solo haz esto si no pudiste lanzar la simulación del robot en la sección anterior.

  1. Habiendo instalado VcXsrv en la Sección de Requisitos Previos...
  2. Descarga este archivo de configuración para VcXsrv y guárdalo en tu escritorio como wsl_ros_config.xlaunch.

  3. Haz doble clic en esto para lanzar VcXsrv con la configuración apropiada. Debería aparecer un ícono en tu bandeja de notificaciones (abajo a la derecha) para indicar que el X Server está en ejecución:

  4. Lanza el entorno WSL-ROS2 iniciando la aplicación Windows Terminal:

  5. En una Instancia de Terminal WSL-ROS2, ejecuta lo siguiente:

    echo "export XSERVER=true" > $HOME/.rigsa/xserver.sh
    
  6. Vuelve a hacer source de tu archivo .bashrc para que este cambio surta efecto:

    source ~/.bashrc
    
  7. Intenta ejecutar la simulación Gazebo de mundo vacío de nuevo:

    ros2 launch turtlebot3_gazebo empty_world.launch.py
    

    Importante

    Debes asegurarte de tener el X Server en ejecución (haciendo clic en el acceso directo wsl_ros_config.xlaunch) cada vez que trabajes con WSL-ROS2.

Reiniciar el Motor WSL

Si tienes problemas con WSL, a veces un reinicio ayuda.

Primero, cierra cualquier ventana de terminal WSL-ROS2 que tengas abierta (y cualquier conexión a WSL-ROS2 en VS Code). Luego, inicia PowerShell y apaga el motor WSL:

wsl --shutdown

Reinicia el motor WSL lanzando una nueva instancia de terminal WSL-ROS2.

Ver También