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:
- Hardware: reComputer J3010 (Nvidia Jetson Orin Nano), monitor, teclado y ratón.
- Software: Jetpack 5.1.1, Ubuntu 20.04, ROS Noetic, Python y C++.
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.
¿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:
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ón | Distribución | Fecha de lanzamiento | Fecha de fin de vida |
|---|---|---|---|
| Boxturtle | ROS 1 | Marzo de 2010 | Marzo de 2011 |
| C Turtle | ROS 1 | Agosto de 2010 | Agosto de 2011 |
| Diamondback | ROS 1 | Marzo de 2011 | Noviembre de 2012 |
| Electric Emys | ROS 1 | Agosto de 2011 | Enero de 2013 |
| Fuerte | ROS 1 | Abril de 2012 | Julio de 2013 |
| Groovy Galapagos | ROS 1 | Diciembre de 2012 | Mayo de 2014 |
| Hydro Medusa | ROS 1 | Septiembre de 2013 | Mayo de 2015 |
| Indigo Igloo | ROS 1 | Julio de 2014 | Abril de 2019 |
| Jade Turtle | ROS 1 | Mayo de 2015 | Mayo de 2017 |
| Kinetic Kame | ROS 1 | Mayo de 2016 | Abril de 2021 |
| Lunar Loggerhead | ROS 1 | Mayo de 2017 | Mayo de 2019 |
| Melodic Morenia | ROS 1 | Mayo de 2018 | Mayo de 2023 |
| Noetic Ninjemys | ROS 1 | Mayo de 2020 | Mayo de 2025 |
| Foxy Fitzroy | ROS 2 | Junio de 2020 | Junio de 2023 |
| Galactic Geochelone | ROS 2 | Mayo de 2021 | Noviembre de 2022 |
| Humble Hawksbill | ROS 2 | Mayo de 2022 | Mayo de 2027 |
| Rolling Ridley | ROS 2 | En curso | En 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.
-
Crear un espacio de trabajo de ROS
bashmkdir -p ~/catkin_ws/src cd ~/catkin_ws/ catkin_make -
Sourcear el archivo de configuración
bashsource devel/setup.bash -
Ejecutar una demostración
bashroscoreAbra otra terminal y ejecute:
bashrosrun turtlesim turtlesim_nodeAbra todavía otra terminal y ejecute:
bashrosrun 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
-
Para la instalación de VSCode, consulte el tutorial anterior: 3.1-Python y fundamentos de programación
-
Instale herramientas como
Python,ROS,C++yCMake Toolsdesde el Marketplace de extensiones de VSCode.
Instale la terminal multifuncional Terminator.
-
Instalar
bashsudo apt-get update sudo apt install terminator
-
Mostrar aplicaciones ---> Buscar "Terminator" ---> Clic derecho y seleccionar "Añadir a favoritos"
-
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