从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_1
,node_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。