Visión general de ROS y configuración del entorno

Introducción

Este tutorial ofrece una visión general concisa de ROS (Robot Operating System) y le guía a través de la instalación rápida y la experiencia con ROS en el reComputer J3010 Nvidia Jetson Orin Nano. Al finalizar este tutorial, tendrá un entorno ROS funcional y podrá ejecutar una demostración sencilla de ROS.

Requisitos previos

Para seguir este tutorial, necesitará el siguiente hardware y software:

J3010

Introducción al desarrollo de ROS

¿Qué es ROS?

ROS (Robot Operating System) es un marco de código abierto para el desarrollo de software de robots. Proporciona una capa de comunicación estructurada por encima de los sistemas operativos host de un clúster de cómputo heterogéneo. ROS está diseñado para ser lo más ligero posible y consta de dos partes:

  • Sistema ROS (ROS): El sistema de tuberías que gestiona la comunicación entre procesos. Es el middleware que permite que las distintas partes del robot se comuniquen entre sí.
  • Paquetes de ROS: Bibliotecas y herramientas necesarias para escribir aplicaciones robóticas.

J3010

¿Por qué ROS?

ROS simplifica el proceso de creación de comportamientos robóticos complejos y robustos en una amplia variedad de plataformas robóticas. Algunos de los principales objetivos y ventajas de utilizar ROS incluyen:

  • Desarrollo rápido: Proporciona una plataforma estándar que acelera el desarrollo desde la investigación hasta la producción.
  • Comunidad global: Respaldado por una comunidad amplia y activa que contribuye a mejorar el software.
  • Trayectoria comprobada: Ampliamente utilizado en la robótica académica y comercial.
  • Tiempo de comercialización: Ayuda a reducir el tiempo de desarrollo del producto con herramientas y bibliotecas completas.
  • Versatilidad: Soporta múltiples dominios y plataformas, incluidos sistemas embebidos.
  • Código abierto: Libre para usar, modificar y ampliar, fomentando la innovación y la colaboración.
  • Apto para uso comercial: Distribuido bajo licencias permisivas como Apache 2.0.

Historia y desarrollo de ROS

La historia de ROS (Robot Operating System) está entrelazada con la evolución más amplia de la robótica:

J3010

Primeros desarrollos en robótica

  • 1959: El viaje de la robótica comenzó con el desarrollo del primer robot automatizado.
  • 1972: Aparición de robots capaces de interactuar con su entorno.
  • 1982: Integración de robots en sistemas informáticos para tareas complejas.
  • 1988: Avances en automatización robótica y sistemas de control.
  • 2002: Introducción de robots de consumo como la Roomba para tareas domésticas.
  • 2003: Expansión de la exploración robótica a Marte con vehículos exploradores.
  • 2005: Papel crucial en la automatización industrial, ejemplificado por los robots de almacén.

Historia y desarrollo de ROS

Primeros desarrollos en robótica

  • 1959: El viaje de la robótica comenzó con el desarrollo del primer robot automatizado.
  • 1972: Aparición de robots capaces de interactuar con su entorno.
  • 1982: Integración de robots en sistemas informáticos para tareas complejas.
  • 1988: Avances en automatización robótica y sistemas de control.
  • 2002: Introducción de robots de consumo como la Roomba para tareas domésticas.
  • 2003: Expansión de la exploración robótica a Marte con vehículos exploradores.
  • 2005: Papel crucial en la automatización industrial, ejemplificado por los robots de almacén.

El nacimiento de ROS

  • 2007: El desarrollo de ROS comenzó con el nombre "Switchyard" en el Stanford Artificial Intelligence Laboratory por Morgan Quigley, Eric Berger y Andrew Ng. Su objetivo era abordar la falta de infraestructura de software compartida en la investigación robótica.
  • 2008: El desarrollo continuó en Willow Garage, un laboratorio de investigación en robótica.
  • 2009: Establecimiento oficial de ROS, marcado por su primera versión.

Crecimiento y evolución

  • 2010: Lanzamiento de ROS 1.0, con Willow Garage desempeñando un papel crucial en su desarrollo y en el crecimiento de la comunidad.
  • 2014: Introducción de robots sociales y de servicio como Pepper, destacando los avances en la interacción humano-robot.
  • 2021: ROS evoluciona para soportar sistemas robóticos sofisticados y versátiles para diversas aplicaciones.

Cronograma de versiones de ROS

Nombre de la versiónDistribuciónFecha de lanzamientoFecha de fin de vida
BoxturtleROS 1Marzo de 2010Marzo de 2011
C TurtleROS 1Agosto de 2010Agosto de 2011
DiamondbackROS 1Marzo de 2011Noviembre de 2012
Electric EmysROS 1Agosto de 2011Enero de 2013
FuerteROS 1Abril de 2012Julio de 2013
Groovy GalapagosROS 1Diciembre de 2012Mayo de 2014
Hydro MedusaROS 1Septiembre de 2013Mayo de 2015
Indigo IglooROS 1Julio de 2014Abril de 2019
Jade TurtleROS 1Mayo de 2015Mayo de 2017
Kinetic KameROS 1Mayo de 2016Abril de 2021
Lunar LoggerheadROS 1Mayo de 2017Mayo de 2019
Melodic MoreniaROS 1Mayo de 2018Mayo de 2023
Noetic NinjemysROS 1Mayo de 2020Mayo de 2025
Foxy FitzroyROS 2Junio de 2020Junio de 2023
Galactic GeocheloneROS 2Mayo de 2021Noviembre de 2022
Humble HawksbillROS 2Mayo de 2022Mayo de 2027
Rolling RidleyROS 2En cursoEn curso

Hoy, ROS es mantenido por Open Robotics, una organización sin ánimo de lucro dedicada al desarrollo del sistema central de ROS, incluido ROS 2.0, que incorpora mejoras para sistemas en tiempo real e integrados, junto con otras herramientas y bibliotecas.

Instalación del entorno ROS y experiencia rápida

Instalación de ROS1

  • Paso 1: Abra la Terminal y actualice los paquetes del sistema.
    bash
    sudo apt update 
    sudo apt upgrade
  • Paso 2: Instale las herramientas básicas.
    bash
    sudo apt install curl gnupg2 lsb-release
  • Paso 3: Añada la clave del repositorio de ROS.
    bash
    sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo apt-key add -
  • Paso 4: Añada el repositorio de ROS.
    bash
    sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
  • Paso 5: Actualice la lista de paquetes.
    bash
    sudo apt update
  • Paso 6: Instale ros-noetic-desktop-full.
    bash
    sudo apt install ros-noetic-desktop-full
    sudo apt-get install python3-rosdep
  • Paso 7: Inicialice rosdep.
    bash
    sudo rosdep init
    rosdep update
  • Paso 8: Configure las variables de entorno de ROS.
    bash
    echo "source /opt/ros/noetic/setup.bash">> ~/.bashrc &&
    source ~/.bashrc
  • Paso 9: Instale las herramientas de dependencia.
    bash
    sudo apt install python3-rosinstall python3-rosinstall-generator python3-wstool build-essential
  • Paso 10: Pruebe la instalación.
    bash
    roscore

Inicio rápido con ROS

Para experimentar ROS rápidamente, vamos a crear un espacio de trabajo de ROS y a ejecutar una demostración sencilla.

  1. Crear un espacio de trabajo de ROS

    bash
    mkdir -p ~/catkin_ws/src
    cd ~/catkin_ws/
    catkin_make
  2. Sourcear el archivo de configuración

    bash
    source devel/setup.bash
  3. Ejecutar una demostración

    bash
    roscore

    Abra otra terminal y ejecute:

    bash
    rosrun turtlesim turtlesim_node

    Abra todavía otra terminal y ejecute:

    bash
    rosrun turtlesim turtle_teleop_key

Esta demostración rápida muestra una tortuga robot gráfica que puede controlar con el teclado.

Instalación de software de desarrollo común para ROS

Instalación de VSCode y extensiones de desarrollo de ROS

  1. Para la instalación de VSCode, consulte el tutorial anterior: 3.1-Python y fundamentos de programación

  2. Instale herramientas como Python, ROS, C++ y CMake Tools desde el Marketplace de extensiones de VSCode.

Instale la terminal multifuncional Terminator.

  1. Instalar

    bash
    sudo apt-get update
    sudo apt install terminator
  2. Mostrar aplicaciones ---> Buscar "Terminator" ---> Clic derecho y seleccionar "Añadir a favoritos"

  3. Atajos comunes de Terminator

    • Alt + Up: Mover a la terminal superior
    • Alt + Down: Mover a la terminal inferior
    • Alt + Left: Mover a la terminal de la izquierda
    • Alt + Right: Mover a la terminal de la derecha
    • Ctrl + Shift + O: Dividir la terminal horizontalmente
    • Ctrl + Shift + E: Dividir la terminal verticalmente
    • Ctrl + Shift + Right: Mover el separador a la derecha en una terminal dividida verticalmente
    • Ctrl + Shift + Left: Mover el separador a la izquierda en una terminal dividida verticalmente
    • Ctrl + Shift + Up: Mover el separador hacia arriba en una terminal dividida horizontalmente
    • Ctrl + Shift + Down: Mover el separador hacia abajo en una terminal dividida horizontalmente
    • Ctrl + Shift + S: Ocultar/Mostrar la barra de desplazamiento
    • Ctrl + Shift + F: Buscar
    • Ctrl + Shift + C: Copiar el contenido seleccionado al portapapeles
    • Ctrl + Shift + V: Pegar contenido del portapapeles
    • Ctrl + Shift + W: Cerrar la terminal actual
    • Ctrl + Shift + Q: Salir de la ventana actual, cerrando todas las terminales en ella
    • Ctrl + Shift + X: Maximizar la terminal actual
    • Ctrl + Shift + Z: Maximizar la terminal actual y aumentar la fuente
    • Ctrl + Shift + N o Ctrl + Tab: Mover a la siguiente terminal
    • Ctrl + Shift + P o Ctrl + Shift + Tab: Mover a la terminal anterior
    • F11: Alternar pantalla completa
    • Ctrl + Shift + T: Abrir una pestaña nueva
    • Ctrl + PageDown: Mover a la siguiente pestaña
    • Ctrl + PageUp: Mover a la pestaña anterior
    • Ctrl + Shift + PageDown: Intercambiar la pestaña actual con la siguiente
    • Ctrl + Shift + PageUp: Intercambiar la pestaña actual con la anterior
    • Ctrl + Plus (+): Aumentar el tamaño de la fuente
    • Ctrl + Minus (-): Reducir el tamaño de la fuente
    • Ctrl + Zero (0): Restablecer el tamaño de la fuente al original
    • Ctrl + Shift + R: Restablecer el estado de la terminal
    • Ctrl + Shift + G: Restablecer el estado de la terminal y limpiar la pantalla
    • Super + g: Vincular todas las terminales, permitiendo que la entrada se duplique en todas
    • Super + Shift + G: Desvincular todas las terminales
    • Super + t: Vincular todas las terminales de la pestaña actual, duplicando la entrada
    • Super + Shift + T: Desvincular las terminales de la pestaña actual
    • Ctrl + Shift + I: Abrir una nueva ventana, compartiendo el proceso con la original
    • Super + i: Abrir una nueva ventana con un proceso separado de la original