主要内容

从ROS开始

机器人操作系统(ROS)是一种通信接口,使机器人系统的不同部分能够相互发现,并在它们之间发送和接收数据。MATLAB®通金宝app过一个函数库支持ROS,使您能够与支持ROS的物理机器人或机器人模拟器(如Gazebo®)交换数据。

本示例介绍如何:

  • 在MATLAB中设置ROS

  • 获取有关ROS网络中功能的信息

  • 获取有关ROS消息的信息

ROS的术语

  • 一个ROS网络由机器人系统的不同部分组成(如规划器或摄像头接口),通过ROS进行通信。网络可以分布在几台机器上。

  • 一个ROS的主人协调ROS网络的不同部分。它由a标识主URI(统一资源标识符),它指定运行主机的机器的主机名或IP地址。

  • 一个ROS节点包含相关ROS功能的集合(例如发布者、订阅者和服务)。一个ROS网络可以有多个ROS节点。

  • 出版商用户,服务是处理数据的不同种类的ROS实体。他们使用消息

  • 发布者向特定对象发送消息主题(例如“里程计”),该主题的订阅者会收到这些消息。单个主题可以与多个发布者和订阅者相关联。

有关更多信息,请参见机器人操作系统(ROS)概念的网页。

初始化ROS网络

使用rosinit来初始化ROS。默认情况下,rosinit创建一个ROS的主人在MATLAB中开始一个全球节点这是连接到主机的。全局节点被其他ROS函数自动使用。

rosinit
启动ROS核心…耗时0.77356秒。在http://172.29.207.151:57188上初始化ROS master。使用NodeURI http://dcc345885glnxa64:35297/和MasterURI http://localhost:57188初始化全局节点/matlab_global_node_12045。

使用rosnode列表查看ROS网络中的所有节点。注意,唯一可用的节点是创建的全局节点rosinit

rosnode列表
/ matlab_global_node_12045

使用exampleHelperROSCreateSampleNetwork用三个额外的节点以及样本发布者和订阅者来填充ROS网络。

exampleHelperROSCreateSampleNetwork

使用rosnode列表再次查看三个新节点(node_1node_2,node_3).

rosnode列表
. /matlab_global_node_12045 /node_1 /node_2 /node_3 .使用实例

该图显示了ROS网络的当前状态。MATLAB全局节点已断开连接,因为它目前没有任何发布者、订阅者或服务。

主题

使用rostopic列表查看ROS网络中可用的主题。有四个活跃的主题:/构成/ rosout/扫描而且/特遣部队.默认主题:rosout而且特遣部队总是存在于ROS网络中。另外两个主题是作为示例网络的一部分创建的。

rostopic列表
/pose /rosout /scan /tf

使用rostopic信息< topicname >获取特定主题的特定信息。下面的命令显示了这一点/ node_1对象发布(向其发送消息)/构成的话题,/ node_2订阅(从该主题接收消息)到该主题。看到与ROS发布者和订阅者交换数据获取更多信息。

rostopic信息/构成
类型:geometry_msgs/Twist发布者:* /node_1 (http://dcc345885glnxa64:42939/)订阅者:* /node_2 (http://dcc345885glnxa64:42477/)

使用rosnode信息< nodename >获取有关特定节点的信息。下面的命令显示了这一点node_1发布到/构成/ rosout而且/特遣部队主题,订阅/扫描提供服务:/node_1/get_loggers和/node_1/set_logger_level。默认的日志服务:get_loggers和set_logger_level由ROS网络中创建的所有节点提供。

rosnode信息/ node_1
节点:[/node_1] URI: [http://dcc345885glnxa64:42939/]出版物(3个活动主题):* /pose * /rosout * /tf订阅(1个活动主题):* /scan服务(2个活动):* /node_1/get_loggers * /node_1/set_logger_level

服务

ROS服务为跨ROS网络的过程调用提供了一种机制。一个服务客户端对象发送请求消息服务服务器,它处理请求中的信息并返回响应消息(请参阅呼叫并提供ROS服务).

使用rosservice列表查看ROS网络中所有可用的服务服务器。下面的命令显示了两个服务(/添加而且/答复)与所有节点的默认记录器服务一起可用。

rosservice列表
/add /matlab_global_node_12045/get_loggers /matlab_global_node_12045/set_logger_level /node_1/get_loggers /node_1/set_logger_level /node_2/get_loggers /node_2/set_logger_level /node_3/get_loggers /node_3/set_logger_level /reply

使用rosservice信息<名>获取有关特定服务的信息。

rosservice信息/添加
节点:/ node_3 URI: rosrpc://dcc345885glnxa64:48307类型:roscpp_tutorials/TwoInts Args: MessageType A B

消息

发布者、订阅者和服务使用ROS消息交换信息。每个ROS消息都有一个相关联的消息类型定义消息中信息的数据类型和布局(参见使用基本ROS消息).

使用rostopic类型< topicname >查看主题使用的消息类型。下面的命令显示/构成主题使用类型的消息geometry_msgs /扭

rostopic类型/构成
geometry_msgs /扭

使用rosmsg显示< messagetype >查看消息类型的属性。的geometry_msgs /扭消息类型有两个属性,线性而且.每个属性都是一个类型的消息geometry_msgs / Vector3,它又有三个类型属性

rosmsg显示geometry_msgs /扭
这表示在自由空间中速度分为线性和角部分。Vector3线性Vector3角
rosmsg显示geometry_msgs / Vector3
这表示自由空间中的一个向量。它只是代表一个方向。因此,对它应用平移是没有意义的(例如,当对Vector3应用%泛型刚性转换时,tf2将只应用%旋转)。如果希望数据也是可翻译的,可以使用% geometry_msgs/Point消息。双X双Y双Z

使用rosmsg列表查看MATLAB中可用的消息类型的完整列表。

关闭ROS网络

使用exampleHelperROSShutDownSampleNetwork从ROS网络中删除示例节点、发布者和订阅者。此命令仅在之前使用exampleHelperROSStartSampleNetwork

exampleHelperROSShutDownSampleNetwork

使用rosshutdown在MATLAB中关闭ROS网络。这会关闭启动的ROS主进程rosinit并删除全局节点。使用rosshutdown是在使用完ROS网络后推荐的步骤。

rosshutdown
使用NodeURI http://dcc345885glnxa64:35297/和MasterURI http://localhost:57188关闭全局节点/matlab_global_node_12045。在http://172.29.207.151:57188上关闭ROS master。

下一个步骤