主要内容

从ROS开始吧

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

这个例子介绍了如何:

  • 在MATLAB中设置ROS

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

  • 获取ROS消息信息

ROS的术语

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

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

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

  • 出版者用户服务是处理数据的不同类型的ROS实体。它们使用信息

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

有关详细信息,请参阅机器人操作系统(ROS)概念部分在ROS网站上。

初始化ROS网络

使用松香初始化ROS。默认情况下,松香创建一个ROS的主人在MATLAB中,启动一个全球节点这是连接到master的。全局节点会自动被其他的ROS功能使用。

松香
启动ROS Core... . 1.8994秒完成。在http://192.168.0.10:52959上初始化ROS master。使用NodeURI http://dcc327509glnxa64:34689/初始化全局节点/matlab_global_node_96120

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

rosnode列表
/matlab_全局_节点_96120

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

exampleHelperROSCreateSampleNetwork

使用节点列表再次查看三个新节点(节点1节点2节点3).

rosnode列表
/matlab_global_node_96120 /node_1 /node_2 /node_3

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

主题

使用罗斯托普列表查看ROS网络中的可用主题。有四个活动主题:/摆姿势/罗索特/扫描/特遣部队.默认的主题:罗索特特遣部队总是存在于ROS网络中。另外两个主题是作为示例网络的一部分创建的。

罗斯托普列表
/pose / roout /scan /tf

使用rostopic信息< topicname >获取有关特定主题的特定信息。下面的命令显示/ node_1发布(向发送消息)到/摆姿势主题,以及/ node_2订阅该主题(从该主题接收消息)。看到与ROS发布者和订阅者交换数据为更多的信息。

罗斯托普信息/摆姿势
类型:geometry_msgs/Twist发布者:* /node_1 (http://dcc327509glnxa64:42289/)订阅者:* /node_2 (http://dcc327509glnxa64:44567/)

使用rosnode信息< nodename >获取有关特定节点的信息。下面的命令显示节点1发布到/摆姿势/罗索特/特遣部队主题,订阅/扫描主题并提供服务:/node_1/get_logger和/node_1/set_logger_level。默认日志服务:get_logger和set_logger_level由ROS网络中创建的所有节点提供。

rosnode信息/ node_1
节点:[/Node_1]URI:[http://dcc327509glnxa64:42289/]发布(3个活动主题):*/pose*/rosout*/tf订阅(1个活动主题):*/scan服务(2个活动):*/node\u 1/get\u loggers*/node\u 1/set\u logger\u level

服务

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

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

rosservice列表
/add /matlab_global_node_96120/get_loggers /matlab_global_node_96120/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信息/添加
节点:/Node_3 URI:rosrpc://dcc327509glnxa64:40051 类型:roscpp_教程/TwoInts参数:消息类型A B

消息

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

使用罗斯托普类型< topicname >查看主题使用的消息类型。下面的命令显示/摆姿势主题使用类型为的消息几何图形\u msgs/Twist

罗斯托普类型/摆姿势
几何图形\u msgs/Twist

使用rosmsg显示查看消息类型的属性。的几何图形\u msgs/Twist消息类型有两个属性,线性有棱角的.每个属性都是一种类型的消息几何图形/矢量3,它又有三个type属性

rosmsg显示几何图形\u msgs/Twist
%表示在自由空间中的速度,它分为线性部分和Angular部分。Vector3 Linear Vector3 Angular
rosmsg显示几何图形/矢量3
%这表示自由空间中的向量。%n它仅表示方向。因此,对其应用平移是没有意义的(例如,当对向量3应用%通用刚性变换时,tf2将仅应用%旋转)。如果希望数据也可翻译,请使用%geometry_msgs/点消息。双X双Y双Z

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

关闭ROS网络

使用示例帮助错误切换下采样网络从ROS网络中删除示例节点、发布者和订阅者。只有在使用前面的示例网络创建时才需要此命令exampleHelperROSStartSampleNetwork

示例帮助错误切换下采样网络

使用rosshutdown在MATLAB中关闭ROS网络。这将关闭由松香并删除全局节点。使用rosshutdown是您完成ROS网络工作后的推荐程序。

rosshutdown
使用NodeURI http://dcc327509glnxa64:34689/关闭全局节点/matlab_global_node_96120

下一个步骤