<?xml version="1.0" encoding="utf-8"?><!DOCTYPE article  PUBLIC '-//OASIS//DTD DocBook XML V4.4//EN'  'http://www.docbook.org/xml/4.4/docbookx.dtd'><article><articleinfo><title>Robotica/ROS</title><revhistory><revision><revnumber>6</revnumber><date>2020-02-10 18:48:01</date><authorinitials>GonzaloPerezPaina</authorinitials></revision><revision><revnumber>5</revnumber><date>2011-04-25 13:20:54</date><authorinitials>AlvaroSchapiro</authorinitials></revision><revision><revnumber>4</revnumber><date>2011-04-25 13:18:00</date><authorinitials>AlvaroSchapiro</authorinitials></revision><revision><revnumber>3</revnumber><date>2011-04-18 19:28:51</date><authorinitials>AlvaroSchapiro</authorinitials></revision><revision><revnumber>2</revnumber><date>2011-04-18 19:25:48</date><authorinitials>AlvaroSchapiro</authorinitials></revision><revision><revnumber>1</revnumber><date>2011-04-18 18:59:12</date><authorinitials>AlvaroSchapiro</authorinitials></revision></revhistory></articleinfo><section><title>ROS - Robot Operating System</title><section><title>Introducción</title><para>ROS ofrece herramientas y librerias para el desarrollo de sistemas roboticos. Es un framework de desarrollo para robotica. </para></section><section><title>Caracteristicas</title><para><emphasis role="strong"> Sistema Distribuido: </emphasis> Conexion punto a punto entre los diferentes modulos desarrollados. </para><itemizedlist><listitem><para>Servicios Sincronos (XML-RPC) </para></listitem><listitem><para>Servicios Asincronos (Sockets - Publish/Suscribe) </para></listitem></itemizedlist><para><emphasis role="strong"> Delgado: </emphasis> 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 </para><para><emphasis role="strong"> Multilenguaje: </emphasis> Soporta c++, Python, Octave y LISP. Las especificaciones de ROS son en la capa de mensajes. </para><para><emphasis role="strong"> Basado en herramientas: </emphasis> 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. </para><para><emphasis role="strong"> Opensource bajo licencia BSD </emphasis> </para></section><section><title>Nomenclatura</title><section><title>Nodos</title><para>Son procesos que llevan a cabo algun computo. Un sistema esta compuesto por muchos nodos. En este contexto, el termino &quot;nodo&quot; es equivalente a &quot;modulo de software&quot;. El termino &quot;nodo&quot; 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. </para></section><section><title>Mensajes</title><para>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. </para></section><section><title>Topicos</title><para>Los nodos envian mensajes publicando a un topico dado, el cual es un string como &quot;odometria&quot; o &quot;map&quot;. 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. </para></section><section><title>Servicios</title><para>Aunque el modelo de publish-service es un paradigma de comunicacion flexible, el esquema &quot;broadcast&quot; 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. </para></section><section><title>Master</title><para>Almacena informacion de registro de topicos y servicios para los nodos. Los nodos se comunican con el Master para reportar su informacion de registro. A medida que los nodos se comunican con el Master, pueden recibir informacion sobre otros nodos registrados y hacer las coneccions apropiadas. Cuando la informacion de registro cambia, el Master avisa a los nodos. </para><para>Los nodos se conectan directamente. El master funciona como un servidos DNS. Los nodos que se suscriben a un topico requeriran conecciones de nodos que estan publicando un topico. El protocolo mas comun utilizado en ROS es TCPROS. </para><para><inlinemediaobject><imageobject><imagedata fileref="https://ciii.frc.utn.edu.ar/wiki/Robotica/ROS?action=AttachFile&amp;do=get&amp;target=ArquitecturaROS.png" width="60%"/></imageobject><textobject><phrase>&quot;ArquitecturaROS.png&quot;</phrase></textobject></inlinemediaobject> </para></section></section></section></article>