Esta página es para la versión anterior. La página correspondiente en inglés ha sido eliminada en la versión actual.

Empiece con ROS

Robot Operating System (ROS) es una interfaz de comunicación que permite a diferentes partes de un sistema robótico descubrir, enviar y recibir datos. El soporte de MATLAB® para ROS es una biblioteca de funciones que le permite intercambiar datos con robots físicos habilitados para ROS, o simuladores de robot como gazebo®.

Este ejemplo presenta cómo:

  • Configure ROS en MATLAB

  • Obtenga información sobre las capacidades en una red de ROS

  • Obtenga información sobre los mensajes de ROS

Terminología de ROS

  • A comprende diferentes partes de un sistema de robot (como un planificador o una interfaz de cámara) que se comunican a través de ROS.ROS network La red se puede distribuir en varias máquinas.

  • A coordina las diferentes partes de una red de ROS.ROS master Se identifica mediante un (identificador uniforme de recursos) que especifica el nombre de host o la dirección IP de la máquina donde se está ejecutando el maestro.Master URI

  • A es una entidad que contiene una colección de capacidades de ROS relacionados (como editores, suscriptores y servicios).ROS node Una red ROS puede tener muchos nodos ROS.

  • , y son diferentes tipos de entidades de ROS que procesan datos.Publisherssubscribersservices Intercambian datos utilizando.messages

  • Un publicador envía mensajes a un determinado (por ejemplo, "odometría") y los suscriptores de ese tema reciben esos mensajes.topic Puede haber varios editores y suscriptores asociados a un solo tema.

Para obtener más información, consulte y la sección en el sitio web de ROS.Sistema operativo robot (ROS)Conceptos

Inicializar ROS Network

Utilícelo para inicializar ROS.rosinit Por defecto, crea un ROS maestro en MATLAB e inicia un "nodo global" que está conectado al maestro.rosinit El "nodo global" es utilizado automáticamente por otras funciones de ROS.

rosinit
Initializing ROS master on http://bat4815glnxa64:33021/. Initializing global node /matlab_global_node_49735 with NodeURI http://bat4815glnxa64:33375/ 

Se utiliza para ver todos los nodos de la red de ROS.rosnode list Tenga en cuenta que el único nodo disponible es el nodo global creado por.rosinit

rosnode list
/matlab_global_node_49735 

Se utiliza para rellenar la red de ROS con tres nodos adicionales y editores de muestra y suscriptores.exampleHelperROSCreateSampleNetwork

exampleHelperROSCreateSampleNetwork

Utilice de nuevo, y observe que hay tres nuevos nodos (, y).rosnode listnode_1node_2node_3

rosnode list
/matlab_global_node_49735 /node_1 /node_2 /node_3 

A continuación se muestra una representación visual del estado actual de la red de ROS. Utilíla como referencia cuando Explore esta red de ejemplo en el resto del ejemplo.

El nodo global de MATLAB está desconectado, ya que actualmente no tiene editores, suscriptores ni servicios.

Temas

Se utiliza para ver los temas disponibles en la red de ROS.rostopic list Observe que hay tres temas activos:,, y. es un tema de registro predeterminado que siempre está presente en la red de ROS./pose/rosout/scanrosout Los otros dos temas se crearon como parte de la red de ejemplo.

rostopic list
/pose   /rosout /scan   

Se usa para obtener información específica sobre un tema específico.rostopic info El siguiente comando muestra que publica (envía mensajes a) el tema y se suscribe (recibe mensajes de) ese tema (consulte para obtener más información)./node_1/pose/node_2Intercambiar datos con ROS editores y suscriptores

rostopic info /pose
Type: geometry_msgs/Twist   Publishers: * /node_1 (http://bat4815glnxa64:34259/)   Subscribers: * /node_2 (http://bat4815glnxa64:43007/) 

Se usa para obtener información sobre un nodo específico.rosnode info El comando siguiente muestra que publica en y temas, y se suscribe al tema.node_1/pose/rosout/scan

rosnode info /node_1
Node: [/node_1] URI: [http://bat4815glnxa64:34259/]   Publications (2 Active Topics):   * /pose  * /rosout   Subscriptions (1 Active Topics):   * /scan   Services (0 Active):  

Servicios

Los servicios de ROS proporcionan un mecanismo para "llamadas de procedimiento" a través de la red de ROS. A envía un mensaje de solicitud a a, que procesa la información de la solicitud y vuelve con un mensaje de respuesta (consulte).service clientservice serverLlame y proporcione los servicios de ROS

Se utiliza para ver todos los servidores de servicio disponibles en la red de ROS.rosservice list El siguiente comando muestra que hay dos servicios (y) disponibles./add/reply

rosservice list
/add /reply 

Se usa para obtener información sobre un servicio específico.rosservice info

rosservice info /add
Node: /node_3 URI: rosrpc://bat4815glnxa64:43065/ Type: roscpp_tutorials/TwoInts Args: A B 

Mensajes

Los editores, suscriptores y servicios utilizan mensajes de ROS para intercambiar información. Cada mensaje de ROS tiene un asociado que define los tipos de datos y el diseño de la información en ese mensaje (vea).message typeTrabajar con Basic ROS mensajes

Se usa para ver el tipo de mensaje utilizado por un tema.rostopic type El siguiente comando muestra que el tema usa mensajes de tipo./posegeometry_msgs/Twist

rostopic type /pose
geometry_msgs/Twist 

Se usa para ver las propiedades de un tipo de mensaje.rosmsg show El tipo de mensaje tiene dos propiedades y.geometry_msgs/TwistLinearAngular Cada propiedad es un mensaje de tipo, que a su vez tiene tres propiedades de tipo.geometry_msgs/Vector3double

rosmsg show geometry_msgs/Twist
% This expresses velocity in free space broken into its Linear and Angular parts. Vector3  Linear Vector3  Angular 
rosmsg show geometry_msgs/Vector3
% This represents a vector in free space.   double X double Y double Z 

Se utiliza para ver la lista completa de tipos de mensajes disponibles en MATLAB.rosmsg list

Apague la red ROS

Se utiliza para eliminar los nodos de ejemplo, los editores y los suscriptores de la red de ROS.exampleHelperROSShutDownSampleNetwork Este comando solo es necesario si la red de ejemplo se creó con anterioridad.exampleHelperROSStartSampleNetwork

exampleHelperROSShutDownSampleNetwork

Utilíciese para apagar la red de ROS en MATLAB.rosshutdown Esto apaga el Master ROS que fue comenzado por y borra el nodo global.rosinit Se recomienda utilizar una vez que haya terminado de trabajar con la red de ROS.rosshutdown

rosshutdown
Shutting down global node /matlab_global_node_49735 with NodeURI http://bat4815glnxa64:33375/ Shutting down ROS master on http://bat4815glnxa64:33021/. 

Próximos pasos