Instalación de ROS (Linux)
Instalación de ROS en Linux
Esta instalación será de ROS 2.La instalación oficial está en:
Las últimas versiones de ROS 2 (marzo 2024) son:
- Galactic Geochelone 23 May 2021
- Humble Hawksbill 23 May 2022
- Iron Irwini 23 May 2023
Aunque la versión "Iron" es la más nueva, se instalará "Humble", ya que es una versión LTS. Entramos a la terminal y nos cambiamos a usuario root:
sudo su root
Revisamos que los paquetes estén correcto:
apt update
Revisamos si hay nuevas actualizaciones de paquetes:
apt upgrade
Revisamos el espacio libre para ver si tenemos espacio para la instalación:
df -h
Para ver las variables locales del sistema:
locale
Y aparecerá lo siguiente:
LANG=es_ES.UTF-8
LANGUAGE=
LC_CTYPE="es_ES.UTF-8"
LC_NUMERIC="es_ES.UTF-8"
LC_TIME="es_ES.UTF-8"
LC_COLLATE="es_ES.UTF-8"
LC_MONETARY="es_ES.UTF-8"
LC_MESSAGES="es_ES.UTF-8"
LC_PAPER="es_ES.UTF-8"
LC_NAME="es_ES.UTF-8"
LC_ADDRESS="es_ES.UTF-8"
LC_TELEPHONE="es_ES.UTF-8"
LC_MEASUREMENT="es_ES.UTF-8"
LC_IDENTIFICATION="es_ES.UTF-8"
LC_ALL=
Para mas información sobre "locale":
Para actualizar el índice de paquetes e instalar los paquetes para la configuración local:
sudo apt update && sudo apt install locales
Para generar las especificaciones locales (formato de texto, fecha y otras informaciones):
sudo locale-gen en_US en_US.UTF-8
Para actualizar los datos locales para ser manejados en Inglés con UTF-8 (unicode):
sudo update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8
Para definir la variable de entorno a US.UTF-8:
export LANG=en_US.UTF-8
Para verificar si los cambios de las variables han sido realizados tecleamos:
locale
Y observaremos lo siguiente:
LANG=en_US.UTF-8
LANGUAGE=
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=
A continuación hay que agregar los repositorios de ROS 2, por lo que primero instalamos algunas herramientas para el manejo de las fuentes del software con el siguiente comando:
sudo apt install software-properties-common
Agregamos el repositorio “universe” que contiene una gran variedad de paquetes de software, algunos de los cuales no están incluidos en la instalación estándar de Ubuntu ni en los repositorios comunes de Debian, para eso utilizamos el siguiente comando:
sudo add-apt-repository universe
Para poder instalar ROS 2, requerimos instalar su llave GPG, la cual es una llave pública para poder autentificar la instalación de los paquetes, y para ello usamos primero el siguiente comando:
sudo apt update && sudo apt install curl -y
Luego aplicamos el siguiente comando:
sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg
Y agregamos los repositorios a nuestra lista de fuentes usando el siguiente comando:
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
Verificamos que se pueda actualizar nuestro sistema con los cambios que hicimos, por lo cual aplicamos el siguiente comando (no debe marcar ningún error):
sudo apt update
De igual manera, verificamos que se puedan instalar nuevas versiones de paquetes en nuestro sistema con los cambios que hicimos, por lo cual aplicamos el siguiente comando (no debe marcar ningún error):
sudo apt upgrade
A continuación se instalan las herramientas de desarrollo para ROS:
sudo apt install ros-dev-tools
Verificamos paquetes nuevamente:
sudo apt update
Verificamos actualizaciones nuevamente:
sudo apt upgrade
Ahora si instalamos la distribución “humble” para ROS 2, la cual es la última versión LTS (ya hay otra versión, Iron, pero no es LTS y no es compatible con las nuevas versiones de Linux):
sudo apt install ros-humble-desktop
Es posible que el comando anterior se tenga que volver a ejecutar varias veces, ya que algunos paquetes tiene relación con otros por lo tanto se tienen que actualizar y volver a instalar. Agregamos una variable de entorno para que nuestro entorno pueda encontrar “humble”:
echo "source /opt/ros/humble/setup.bash" >> ~/.bashrc
Si queremos verificar si lo hizo, editamos nuestro archivo bashrc:
gedit ~/.bashrc
Al final del archivo bashrc se debe encontrar la línea:
source /opt/ros/humble/setup.bash
Para comprobar la versión que está instalada:
printenv ROS_DISTRO
En la terminal debe aparecer:
humble
Si queremos ver las variables de entorno de ROS:
env | grep ROS
Y debe aparecer en la terminal:
ROS_VERSION=2
ROS_PYTHON_VERSION=3
ROS_LOCALHOST_ONLY=0
ROS_DISTRO=humble
Para hacer una prueba, ejecutaremos 2 programas, "talker" y "listener". El primero enviará el mensaje “Hello World” y el segundo escuchará el mensaje, esto se logra ejecutando en nuestra terminal lo siguiente:
ros2 run demo_nodes_cpp talker
Se abre una nueva terminal y se ejcuta:
ros2 run demo_nodes_py listener
se debe observar en la ventana “talker”:
[INFO] [1710193437.385842301] [talker]: Publishing: 'Hello World: 1'
[INFO] [1710193438.387672668] [talker]: Publishing: 'Hello World: 2'
[INFO] [1710193439.385916550] [talker]: Publishing: 'Hello World: 3'
Y en la ventana “listener”:
[INFO] [1710193437.402623560] [listener]: I heard: [Hello World: 1]
[INFO] [1710193438.390193073] [listener]: I heard: [Hello World: 2]
[INFO] [1710193439.388532247] [listener]: I heard: [Hello World: 3]
Ambos procesos continúan indefinidamente, para detenerlos:
CTRL+Z
Con lo anterior está comprobado la ejecución y comunicación entre procesos de ROS.