ROS - Robot Operating System
Tabla de Contenidos
Introducción
ROS ofrece herramientas y librerias para el desarrollo de sistemas roboticos. Es un framework de desarrollo para robotica.
Metas de ROS son
Sistema Distribuido
Conexion punto a punto entre los diferentes modulos desarrollados.
- Servicios Sincronos (XML-RPC)
- Servicios Asincronos (Sockets - Publish/Suscribe)
Delgado
ROS esta orientado para que el desarrollo de los drivers y algoritmos no tengan dependencias en ROS. Esto produce abstraccion de hardware. Se encapsulan los dispositivos tras interfaces y diferenciandolos en archivos de configuracion
Multilenguaje
Soporta c++, Python, Octave y LISP. Las especificaciones de ROS son en la capa de mensajes.
Basado en herramientas
Se ha basado por un diseño de microkernel, donde un gran número de pequeñas herramientas se utilizan para generar y ejecutar los diversos componentes, en lugar de construir un desarrollo monolítico y el entorno de ejecución.
Opensource
Bajo licencia BSD.
Nomenclatura
=== Nodos === Son procesos que llevan a cabo algun computo. Un sistema esta compuesto por muchos nodos. En este contexto, el termino "nodo" es equivalente a "modulo de software". El termino "nodo" surge de la forma de visualizar cuando se esta ejecutando. Cuando varios nodos se estan ejecutando es conveniente ver la comunicacion punto a punto como un grafico, con los procesos como nodos y la comunicacion como arcos.
Mensajes
Se llama a la comunicacion entre los nodos. Es estrictamente una estructura con tipos de datos. Los mensajes tambien pueden ser otros mensajes o arrays de mensajes.
Topicos
Los nodos envian mensajes publicando a un topico dado, el cual es un string como "odometria" o "map". un nodo que este interesado en un cierto tipo de datos, se suscribe al topico apropiado. Puede haber varios publicadores y subscriptores a un topico apropiado y un solo nodo pude publicar o subscribir a varios topicos.
Servicios
Aunque el modelo de publish-service es un paradigma de comunicacion flexible, el esquema "broadcast" no es apropidado. Los servicios son definididos con un nombre y una par de mensajes extrictos: Uno para la peticion y otro para los documentos de respuesta (analogo a los servicios web) A diferencia de los topicos, solo un nodo puede anunciar un servicio. No s pueden repetir los nombres de los servicios.