Introducción a ROS
-
Upload
pablo-inigo-blasco -
Category
Education
-
view
5.129 -
download
0
description
Transcript of Introducción a ROS
Pablo Iñigo BlascoDiciembre – 2010
Robot Operative System
Departamento de Arquitectura y Tecnología de ComputadoresUniversidad de Sevilla
Gracias por los contenidos Creative Commons de la web de ROS y de las transparencias creadas por "Radu Bogdan Rusu" para el evento: "CoTeSys-ROS Fall School on Cognition-enabled Mobile Manipulation".
Este documento en sí es Creative Commons.
Cuestiones/Objetivos Seminario
● ¿Qué es ROS?● ¿Qué ofrece ROS respecto a otras
alternativas?● ¿Por qué presenta un buen enfoque para
abordar problemas de Robótica?● ¿Cómo ROS puede ayudar a mejorar las
tareas de investigación en Robótica?● ¿Cómo comenzar con ROS?
Contenidos: Parte I
● Contexto● ROS Overview● Arquitectura Distribuida de ROS● Herramientas● Ejemplos Áreas de la robótica abordados● Mas Software existente
Contenidos: Parte II
● Aspectos técnicos● Ejemplos● Demos● Tutoriales● Interacción
Contenidos: Parte II
● Parte II (Utilizando ROS)● Demostraciones●
● Grupo de Trabajo CARLUS-ROS-PKG● DEMO:
– Simulator PR2 – Open Doors
PARTE I
ROS Overview
Contexto: Enfoque
● ROS● Robots autónomos e inteligentes● Sociedad robotizada● Robots en hogares y tareas domésticas
● ATC● Tecnologías de la Rehabilitación● Cuidado de Mayores● Inteligencia ambiental/Arquitecturas distribuidas● Interacción hombre/máquina
Contexto: Futuro de la Robótica
● Robots autónomos e inteligentes● Entornos desesctructurados● Interacción con el ser humano● Tareas Domésticas● Trabajadores Robots● Sociedad Robotizada● Inteligencia Ambiental
(VIDEO ROPA - imagen)(VIDEO CARRITO – )
Contexto: Problemas en mercado
● Mercado robots industriales maduro● Mercado robots autónomos muy pequeño
● Excepción Nipona
● Necesidades desapercividas por el consumidor ● Falta de detonantes (ej: Iphone)● Situación de bloqueo
Contexto: Industria (robots autónomos)
● Investigación es privada● Complejidad en la creación de productos
● Necesidad de no empezar de cero
● Carencia de ecosistema de proveedores● Riesgo● Alta inversión y poco retorno● Resistencia al cambio ● ¿Todavía demasiado pronto?
Contexto: Investigación académica
● Adelantada respecto la industria y mercado● Pruebas de concepto● Poco feedback Universidad ↔ Empresa● Perdida tiempo en infraestructura →
Soluciones teóricas o simuladas● Problemas de reutilización → problemas en la
colaboración (cada uno hace lo que cree)
Problemas Fundamentales
● El tamaño del proyecto
● El conocimiento
Contexto: Necesidades proyectos medios y grandes
● Explosión de requerimientos software● Ubicuidad● Herramientas: desarrollo, configuración, debugging● Arquitecturas mas robustas y flexibles
● Procedimientos de ingeniería del software● Trabajo en equipo● Reutilización del software● Reutilización del conocimiento
Contexto: Robótica Distribuida y RSFs
● Solución: Orientación a Servicios y Componentes
● Programación Distribuida propósito general● TCP/IP, CORBA, ACE, etc.
● Robotic software frameworks● Player, Orca, YARP, OROCOS, CARMEN,
OpenRTM-AIST, JADE, MSRS, Open-RTM, JDE+, JADE
● Mejora la situación. Pero se necesitan mas mejoras.
Contexto: Player
Player Server
amclmaplaser motors
SOSO
Client Client
Config
Interfaces establesPatrón proxy
¿comunicación?
ROS Overview: ¿Qué es?
● Meta-Sistema Operativo
● (RSF) Framework para el desarrollo de sistemas robótocos
● Arquitectura robótica desplegada en múltiples máquinas
ROS Overview: ¿Qué es?
A simple vista:● Software robótico enlatado Building Blocks
(librerías, aplicaciones,...)● Herramientas de desarrollo● Herramientas de inspección y depuración● Sistema de paquetería
Va mas allá:● Procesos, metodología● Comunidad, Investigación: Democratización de la
robótica
ROS Overview: Meta-Sistema Oeperativo
ROS Overview: Filosofía
● Reusabilidad● Ubicuidad● Escalabilidad● Integración del software existente y futuro!!!● Software libre● Enfoque científico pero aplicado
● Papers, libros, referencias, etc.
ROS Overview: Meta Systema Operativo
ROS Overview: Ejemplos de “Aplicaciones finales”
● Robot PR2● Repartir Cerveza● Enchufarse● Recojer la basura de la casa en un carrito● Jugar a las torres de Hanoi● Abrir puertas
Capabilities
● Cinemática● Vision & Object Recognition● Localization● Motion Planning/Navigation● Mapping● Grasping● Object manipulation● Machine Learning
ROS Overview: Meta-Sistema Operativo
ROS Overview: Organización de Software
¿Por qué escoger ROS?
● Llegar mas allá en nuestros proyectos
● Una metodología y unos convenios definidos para el desarrollo de software en robótica.
● Fomentará la interacción con otros grupos de investigación
ROS Overview: Organización de Software
PACKAGE
- Nodos- Herramientas- Librerías- Definición de Mensajes- Definición de Servicios- Configuraciones despliegue
ROS Overview: Comunidad
Federación de repositorios con software para robots. En 2010:• Casi 200 Stacks• Mas de 100 Packages• Unos 50 Repositorios Federados
• ROS: Wiki unificada y uniforme• Importancia de la integración sobre el
desarrollo
ROS.org
DEMO WIKI
ROS Overview: Historia
ROS Overview: Objetivo
ROS Overview: Robots
ROS Overview: Otras características
● Multi Lenguaje● C++, python, Java, Octave, Lisp, RxLab
● Plataformas● Linux, MacOS● X86 y ARM
ROS Overview: Origen Stanford
● Stanford IA Lab
● Stanfor Research Institute
● Gary Bradski (OpenCV)
● Brian Gerkley (Player)
● Oussama Khatib (Potential Fields)
● Jean-Claude Latobme (Robot Motion Planning)
● Sebastian Thrun (Probabilistic Robotics)
● Proyectos
● STAIR, OpenCV, Player/Stage, Darpa Grand Challenge, etc.
http://www.stanford.edu/class/cs294b/teamMembers.html
PARTE I
Arquitectura ROS
ROS vs Player
● Player● Arquitectura cliente/servidor● Mecanismo de desacoplamiento
– Servicios
● Uso de ficheros de configuración
● ROS● Arquitectura Distribuida P2P/Híbrida● Mecanismo de desacoplamiento
– Servicios
– Mensajes● Ej: Nube de puntos kinect, vs videre, vs hyokoyu
ROS: Arquitectura
Mecanismos de reusabilidad
● Servicios estandarizados● Mensajes estandarizados● Facilidad para la composición● Múltiples procesos● Interacción mediante capa de transporte
agnóstica● Independencia del Lenguaje
Arquitectura P2P Híbrida
Node
Node
NodeNode
topic
config
SO
HW
topic
Ros Master
Launch File
properties
Machine 1 Machine 2
Arquitectura: P2P Híbrida
Nodos
● Primitiva de funcionalida
● Sincronos
● Simple hilos
● Proceso(convenio)
● Dinámicos
Topics
Services
Properties (*)
Config.yaml
msg
msg
Ejemplo de “Driver”
Usb= “dev /ttyUSB3”Freq= 30
Coordinate_frame=”head”
Sensor Fussion IMU
Robot Pose
Properties
On/Off
Change Units
#inclue <ros/ros.h>#include <common_msgs/Pose.h>”#include <stdio.h>
Void Main (){ //create Node .... //create service On_Off .... //advertise topic RobotPose
Open(..) //usb to read drivers}
Services
Topics
*En realidad las properties se almacenan en el rosmaster no en los nodos, aunque conceptualmente Puede verse como parámetros de configuración de uno o varios nodos. De ahí la representación propuesta.
Ejemplo de “capacidad” Localización mediante EKF
● robot_pose_efk
robot_pose_ekf
/odom_combined
/odom
/imu_data
sensor_timeout=1Freq=30...
/dynamic_map
/gmapping/tf_frames
Ejemplo de “capacidad”: SLAM
● Librería OpenSlam
● Paquete slam_gmapping
● Nodo como una capacidad
(framework)
gmapping
/map
/map_metadata
/gmapping_entropy
/tf
/clock
/laser_scan
openslam.lib
------------------------------------
DEMO explore_stage
Composición de funcionalidad: Launch Files
● Componentes de alto nivel (capacidades)
● Aplicaciones (finales)
● Configuración inicial pero evolución dinámica
● Posibilidad de distintas máquinas, etc.
Launch
Launch
LaunchRos Master
Arquitectura ROS: Ros Master
● Servicios de nombres
● Servicios de páginas amarillas
● Almacén de propiedades
● Singleton
Mecanismos de Interacción de alto Nivel
● Action● State Machines/ Workflows● Ejemplo paper toallas
Eficiencia en el Transporte
● También existen paquetes con librerias● Funcionalidad extra para traducción a tipos de
mensaje, servicios, etc.● Ejemplo KDL, OpenCV, PCL
● Nodelets● Nodos en el mismo proceso
● ros_realtime● Comprueben experimentalmente la frecuencia
de los topics
PARTE I
Herramientas
Herramientas
● Desarrollo ● Rosmake, rxdeps, genmsg, roslocate, rosmsg, rosrv, gtests, cmake,
rosbag, roscd
● Inspección y Monitorización● Rviz, rostopic, rosconsole,rxgraph, rosnode, rxplot
● Despliegue y Configuración● Rosrun, roslaunch, yaml
● Documentación: Ros.org, code.ros.org
● Simulación
● Otras herramientas (no core)● (parte II)
DEMO PR2 - GAZEBO
PARTE I
Paradigmas Abordados
Cinemática y Sistemas de Referencia
● TF● KDL● URDF● Robot State Publisher● Joint State
Publisher● Arm Kinematics
TF
● Dónde estaba el frame de la cabeza relativo al frame del mundo hace 5 segundos?
● Cúal es la pose del frame del objeto respecto a las garras de mi brazo robótico?
● Cúal es la pose actual de la base actual del robot respecto a la baase de otro robot?
http://www.ros.org/wiki/tf
DEMO Brazo Robótico
SLAM
● VSlam● Presentación
● Paper
● Tutorial
● gmapping ● kartoMapping● graphmapping
Motion Planning
● Sampling Based Planning Methods (ompl)● RRT, EST, SBL
● Métodos discretos (sbpl) ● AD*, D*, ARA*
● Métodos con consideraciones dinámicas y cinemáticas ● CHOMP, STOMP
PARTE I
Mas Software
Drivers Útiles ATC
● Kinect● Cámara Stereo Vídere● Laser Hokuyo● Erratic● Cámaras● IMU● Arduino?● Joysticks
ROS y sistemas multi agentes
● Infrestructura necesaria para su desarrollo● Arquitectura distribuida híbrida● Sistemas de páginas amarillas● Interacción: servicios, topics, parámetros
UAVs
● UAVs Using ROS
Desventajas de ROS
● Objetivos muy ambiciosos● Tratar con software muy varirado (librerías hechas a imagen y semejanza del
autor)
● Integrar aplicaciones no es inmediato● Leer documentación
● Revisar código hecho
● Depurar
● Curva de aprendizaje relativamente costosa
● Exponer una librería en ROS tampoco es gratis
● Continuos cambios y evolución (software obsoleto)
● No soporte (por ahora) para Windows u otros sistemas empotrados
● Desesperante cantidad de sotware (también hay paja)
Ventajas
● Inumerables● Reducir el tiempo invertido en infraestructura y
centrate en la investigación● Abordar en problemas de alto nivel● Te permite acelerar el aprendizaje
● Viendo código de otros● Viendo documentación de otros
● Fomenta el trabajo en equipo y establece convenios, procesos y metologías para hacer software reusable.
GRACIAS