Introducción a ROS¶

Robotic Operating System

Es un marco de trabajo (framework) ubicado en el camino medio entre el hardware y software de los sistemas robóticos.

[ https://doi.org/10.1126/scirobotics.abm6074 ]

Vista rápida de ROS¶

display(IFrame("https://player.vimeo.com/video/639236696?h=740f412ce5",width="100%",height="400px"))

ROS.org

ROS 1¶

Existen dos versiones de ROS llamadas ROS2 y ROS1, y en ellas cada año se crea una distribución. ROS1 nació en la universidad de Stanford tiempo antes del 2007. Se desarrollo en la spin-off willow garage hasta el 2013, y de ahí continuo la OSRF.

noetic logo

La última distribución de ROS1 (noetic ninjemys) fue lanzada el 23 de mayo de 2020 y tiene fin de vida en mayo de 2025, ya que solo se va a continuar con ROS2.

Versiones y distribuciones¶

Existen dos versiones de ROS llamadas ROS2 y ROS1, y en ellas cada año se crea una distribución. La última distribución de ROS1 fue lanzada en el 2020, ya que solo se va a continuar con ROS2.

humble logo iron logo
Mayo 23 de 2022 Mayo 23 de 2023

La distribución Humble Hawksbill para ROS2 es una distribución LTS (Long term support) que estaremos usando.

Conceptos Claves en ROS¶

  • ROS Graph
  • Nodo node
  • Parámetro param
  • Tema topic
  • Servicio service
  • Acción action

ROS Graph¶

El ROS Graph es la red de los diferentes elementos que constituyen una applicación robótica. Una representación grafica de la configuración es mostrada a continuación:

Grafo de ROS que contiene nodos, temas y servicios

Usando ROS¶

Podemos usar ROS desde Linux (recomendado). La instalación de Linux la podemos hacer

  • En el disco duro del computador (hay que saber lo que se hace, se puede estropear Windows).
  • En una USB o disco externo (mi favorita).
  • En una máquina virtual.

o podemos usar ROS

  • Accediendo al sitio The Construct Sim

Más información sobre los distintos métodos aquí

Nodos en ROS (nodes)¶

  • ros2 run
  • ros2 node list
  • ros2 node info

Temas en ROS (topic)¶

Temas en ROS (topic)¶

Temas en ROS (topic)¶

  • rqt_graph
  • ros2 topic list
  • ros2 topic echo
  • ros2 topic info
  • ros2 interface show
  • ros2 topic pub
  • ros2 topic hz

Servicio en ROS (service)¶

Servicio en ROS (service)¶

Servicio en ROS (service)¶

  • ros2 service list
  • ros2 service type
  • ros2 service find
  • ros2 interface show
  • ros2 service call

Parámetros en ROS¶

  • ros2 param list
  • ros2 param get
  • ros2 param set
  • ros2 param dump
  • ros2 param load

Acciones en ROS (action)¶

Acciones en ROS (action)¶

  • ros2 node info
  • ros2 action list
  • ros2 action info
  • ros2 interface show
  • ros2 action send_goal

RQT Console¶

La consola de mensajes para estudiar en detalle lo que ocurre en ROS

ros2 run rqt_console rqt_console

ROS Launch¶

ros2 launch turtlesim multisim.launch.py

# turtlesim/launch/multisim.launch.py

from launch import LaunchDescription
import launch_ros.actions

def generate_launch_description():
    return LaunchDescription([
        launch_ros.actions.Node(
            namespace= "turtlesim1", package='turtlesim', executable='turtlesim_node', output='screen'),
        launch_ros.actions.Node(
            namespace= "turtlesim2", package='turtlesim', executable='turtlesim_node', output='screen'),
    ])

ROS Bag¶

  • ros2 bag record
  • ros2 bag info
  • ros2 bag play