Por razones que serán explicadas más adelante en este tutorial, no es requerida una instalación base de ROS en tu sistema, salvo que se lo pida expresamente. Para que entiendas rápido como esto es posible con Docker, se recomienda que lo utilices en este tutorial online.

Instalando Docker

Antes de comenzar con este tutorial completa la instalación descrita en las instrucciones de instalación de Docker. Las instrucciones de instalación están disponibles para múltiples sistemas operativos, incluyendo Ubuntu, Mac OS x, Debian, Fedora y hasta Microsoft Windows. ¯\_(ツ)_/¯ . siendo esta la mejor forma de usar ROS en W10.

Nota que para las distros más recientes la instalación se reduce a un comando wget. Deberias tambien agregar tu usuario al grupo de docker en tu sistema para así evitar tener que usar sudo cuando ejecutas el comando docker.

Instalando Docker en Ubuntu

Recomendación

Les recomendamos seguir el tutorial que esta en la página oficial de Docker, que seguramente se encuentre mas actualizado y el presente es una traducción del mismo al 10/02/21.

Requisitos

Para instalar Docker es necesario como mínimo 4 GB de memoria, 10 GB de disco, procesador 64 bits y alguna de estas versiones:

Ubuntu Groovy 20.10 Ubuntu Focal 20.04 (LTS) Ubuntu Bionic 18.04 (LTS) Ubuntu Xenial 16.04 (LTS)

Docker es soportado por las siguientes arquitecturas x86_64 (o amd64), armhf y arm64.

Proceso

Desinstale versiones viejas

$ sudo apt-get remove docker docker-engine docker.io containerd runc

Actualice

sudo apt-get update

Configure el repositorio

sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg-agent \
    software-properties-common

Agregue la llave oficial de Docker

$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

Mediante la búsqueda de los últimos ocho caracteres de la huella verifique que ahora tiene la llave con la huella 9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88 .

$ sudo apt-key fingerprint 0EBFCD88

llave

Instalación

 $ sudo apt-get update
 $ sudo apt-get install docker-ce docker-ce-cli containerd.io

Verificación

Verificamos que Docker este instalado de forma correcta corriendo la imagen de hello-world.

$ sudo docker run hello-world

Instalando Docker en W10

Partimos desde aquí que es una configuración bastante al límite..

align="left"

Configuración previa

Paso 1

Abrimos la powershell como administrador y ejecutamos..

dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart

aling="left"

Paso 2

En la misma powershell

dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

Paso 3

En la misma powershell

wsl --set-default-version 2

aling="left"

Paso 4

Y ahora vamos y descargamos la imagen de ubuntu 16.04 que en la tienda de apps de W10 esta simplemente como ubuntu..

aling="left"

aling="left"

aling="left"

aling="left"

Instalando docker en w10

Descargamos [https://hub.docker.com/editions/community/docker-ce-desktop-windows/ | Docker para windows]

Usando las imágenes de ROS en Docker

Pulling (jalar) imágenes ROS

AHora que tienes Docker instalado, hagamos un pull down de una imagen de un contenedor ROS:

docker pull ros

Esto jala o descarga o pulea la última imagen etiquetada de ROS desde Docker Hub a tu maquina local. Especificamente, la imagen llamada "ros" está registrada en las Imagenes del Repositorio oficial de ROS en Docker.

Observa que en el repositorio oficial encontrarás otras imágenes etiquetadas que te permitirán seleccionar paquetes y entornos específicos para la situación que necesites. Las etiquetas se construyen entre sí como los respectivos dependencias entrelazan los metapaquetes ROS. Si tu haces un pull de:

docker pull ros:noetic-robot

Tu localmente también poseerás la imágenes etiquetadas "noetic-ros-core" y "noetic-ros-base".

Corriendo contenedores ROS

Ahora que tiene la imágen ROS descargada, tu puede hacer correr el contenedor mediante::

docker run -it ros

Esto te llevara a una sesion interactiva de la CLI donde el contenedor estará corriendo.. Desde aquí es básicamente como si corrieras una terminal en una máquina separada de tu maquina base. Ahora puede correr el comando roscore y tu rosmaster se iniciara.

En una nueva terminal en tu máquina base encontrarás el nombre del contenedor que estas corriendo mediente:

$ docker ps -l

Usando el nombre del contenedor como ID, que cuando escribimos este tutorial a Docker se le ocurrió asignar el string "nostalgic_morse", podemos llamar una sesion adicional de bash del mismo contenedor corriendo:

docker exec -it nostalgic_morse bash

Una vez dentro, deberemos configurar nuestro entorno. La mejor forma de realizar esto es usando la secuencia de código entrypoint incluida en la imágen docker:

source ros_entrypoint.sh

Si corres el comando docker pull ros, obtendrás una instalación ROS 2 (dashing, foxy, etc.), prueba:

ros2 topic list

Si descargaste un contenedor ROS1 Docker etiquetado (noetic, kinetic, etc.) prueba:

roscore

Deteniendo contenedores ROS

Para detener los contenedores solo debes detener el proceso original creado por el comando docker run que ejecutaste en un principio y podremos volver a la terminal donde está corriendo el roscore y mediante un ctrl-c detener el proceso ROS y entonces salir a laesta terminal bash. Tambien puedes usar la interfaz de línea de comando de Docker para comunicarle al demonio para o remover el contenedor de forma directa. En los documentos stop y rm encontraras mas detalles.

Wiki: es/docker/Tutorials/Docker (last edited 2021-03-04 18:42:06 by JuanEduardoRiva)