主要内容

开始摄入ROS

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

这个例子介绍了如何:

  • 在MATLAB中设置ROS

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

  • 获取关于ROS消息的信息

ROS的术语

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

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

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

  • 出版商用户,服务是处理数据的不同种类的ROS实体。它们使用以下方式交换数据消息

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

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

初始化ROS网络

使用rosinit初始化ROS。默认情况下,rosinit创建一个ROS的主人在MATLAB中启动一个全球节点它和主控制器相连。全局节点被其他ROS函数自动使用。

rosinit
启动ROS Core…只需0.63966秒。在http://172.29.195.13:50807上初始化ROS master。使用NodeURI http://dcc667538glnxa64:37939/和MasterURI http://localhost:50807初始化全局节点/matlab_global_node_10681。

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

rosnode列表
/ matlab_global_node_10681

使用exampleHelperROSCreateSampleNetwork用另外三个节点和样本发布者和订阅者填充ROS网络。

exampleHelperROSCreateSampleNetwork

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

rosnode列表
/matlab_global_node_10681 /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 publisher: * /node_1 (http://dcc667538glnxa64:35647/) subscriptions: * /node_2 (http://dcc667538glnxa64:34127/)

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

rosnode信息/ node_1
Node: [/node_1] URI: [http://dcc667538glnxa64:35647/] Publications (3 Active Topics): * /pose * /rosout * /tf Subscriptions (1 Active Topics): * /scan Services (2 Active): * /node_1/get_loggers * /node_1/set_logger_level . txt

服务

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

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

rosservice列表
/add /matlab_global_node_10681/get_loggers /matlab_global_node_10681/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://dcc667538glnxa64:54297类型:roscpp_tutorials/TwoInts Args: MessageType A

消息

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

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

rostopic类型/构成
geometry_msgs /扭

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

rosmsg显示geometry_msgs /扭
这表示在自由空间中速度被分解成线性和角的部分。。矢量3线性矢量3角
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://dcc667538glnxa64:37939/和MasterURI http://localhost:50807关闭全局节点/matlab_global_node_10681。在http://172.29.195.13:50807上关闭ROS master。

下一个步骤

Baidu
map