主要内容

从ROS 2开始

机器人操作系统2 (ROS 2)是ROS的第二个版本,它是一个通信接口,使机器人系统的不同部分能够发现、发送和接收数据。对ROS 2的MATLAB®支持是一个函数库,允许您与支持ROS 2的物理机器人或机器人模拟器(如Gazebo®)交换数据。ROS 2的基础是数据分发服务(DDS)哪一个是提供发现等功能的端到端中间件序列化和运输。这些特性与ROS 2的设计原则一致,例如分布式的发现控制不同的“服务质量”选择交通工具。DDS使用实时发布-订阅(RTPS)协议,该协议通过UDP等不可靠的网络协议提供通信。有关更多信息,请参见rtp

这个例子展示了如何:

  • 在MATLAB中设置ROS 2

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

  • 获取关于ROS 2消息的信息

要了解ROS,请参见开始摄入ROS

ROS 2术语

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

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

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

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

  • 一个是对网络的物理分割。它由一个唯一的整数值标识,称为域ID。默认情况下,域ID0

  • ROS 2网络中的每个节点在创建时都向同一网络中的其他节点发布自己的存在域ID只有

  • ROS 2网络是建立在数据分布服务(DDS)基础上的,它使得跨分布式网络的多个节点连接成为可能。有关更多信息,请参见在ROS中间件实现之间切换

  • rtp(实时发布者-订阅者)协议为ROS 2网络提供了在不可靠的网络条件下发送消息的能力。

  • ROS 2提供了多种服务质素(QoS)允许您调优节点之间通信的策略。有关更多信息,请参见管理ROS 2中的服务质量政策

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

初始化ROS 2网络

与ROS不同,ROS 2不需要在MATLAB中初始化。ROS 2网络在创建节点时自动启动。

使用ros2node创建一个节点。

test1 = ros2node (“/ test1”
名称:“/test1”ID: 0

使用ros2节点列表查看ROS 2网络中的所有节点。

ros2节点列表
/ test1

使用清晰的关闭ROS 2网络中的节点。

清晰的test1

使用exampleHelperROS2CreateSampleNetwork在ROS网络中添加另外三个节点,其中包括样本发布者和订阅者。

exampleHelperROS2CreateSampleNetwork

使用ros2节点列表再一次,观察到有三个新节点,node_1node_2,node_3).

ros2节点列表
/ node_1 node_2 / node_3

ROS 2网络当前状态的可视化表示如下所示。当您在本示例的其余部分中探索这个示例网络时,请将它作为参考。

主题和服务质量政策

运行以下命令ros2主题列表浏览ROS 2网络中可用的主题。这个命令返回三个活动主题:/构成/ parameter_events,而且/扫描.这个话题/ parameter_events是一个在ROS 2网络中始终存在的全球性话题。节点使用/ paramater_events主题来监视或更改网络中的参数。您创建了/扫描和/构成主题作为示例网络的一部分。

ros2主题列表
/parameter_events /pose /rosout /scan . /

每个主题都与一个消息类型.运行以下命令Ros2主题列表-t以查看每个主题的消息类型。

ros2主题列表- t
主题MessageType  _____________________ _________________________________ {'/ parameter_events’}{' rcl_interfaces / ParameterEvent '}{/构成的}{geometry_msgs /“扭转操作”}{' / rosout '}{‘rcl_interfaces /日志’}{/扫描的}{' sensor_msgs /提升'}

服务质量(QoS)策略选项改变发布者和订阅者处理和交换消息的方式。

1.使用历史而且深度QoS策略,根据您希望如何在处理队列中放置消息来确定通信对象的行为。指定历史作为这些选项之一。

  • “keeplast”-删除消息,只保留最新的信息。

  • “keepall”—将所有接收到的消息保持在队列中,直到它们被处理。

2.使用可靠性QoS策略,以确保将消息传递到订阅者。指定可靠性作为这些选项之一。

  • “可靠”—确保发布者不断向订阅者发送消息,直到订阅者确认收到消息。

  • “besteffort”—允许发布者只发送一次消息。

3.使用耐用性的QoS策略深度用于控制晚加入连接的消息的持久性的输入。指定耐用性作为这些选项之一。

  • “transientlocal”—如果发布者首次发送消息后,订阅者加入网络,发布者将持久化消息发送给订阅者。

  • “不稳定”—发布者发送消息后不保存消息。订阅者不请求发布者的持久消息。

消息

发布者和订阅者使用ROS 2消息交换信息。每个ROS 2消息都有一个关联的消息类型,该类型定义了该消息中信息的数据类型和布局。有关更多信息,请参见使用基本ROS 2消息

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

ros2味精显示geometry_msgs /扭
#这表示自由空间中的速度,分成线性和角部分。向量3线性向量3角向量
ros2味精显示geometry_msgs / Vector3
这表示空闲空间中的一个向量。这在语义上与点不同。#矢量总是锚定在原点。当一个变换应用到一个矢量上时,只应用旋转组件。Float64 x Float64 y Float64 z

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

断开活性氧2网络

使用exampleHelperROS2ShutDownSampleNetwork从ROS 2网络中删除示例节点、发布者和订阅者。要删除您自己的节点,请使用清晰的使用节点、发布者或订阅者对象。

exampleHelperROS2ShutDownSampleNetwork

DDS和RMW实现

当你在MATLAB®和Simulink®中使用ROS 2时,你可以在RMW实现之间切换使用数据分布服务(DDS)。要配置所需的RMW实现,请遵循以下步骤。

1.下首页选项卡中环境部分的MATLAB工具条,打开偏好。

2.配置Python™环境ROS工具箱的偏好对话框中选择实现ROS中间件(RMW)实现下拉列表。默认的实现是rmw_fastrtps_cpp

3.通过单击切换到自定义RMW实现配置并切换到自定义RMW实现,它将启动ROS中间件配置对话框。

4.安装并构建自定义RMW实现包,以验证使用所选自定义RMW实现创建的ROS 2节点。

下一个步骤

Baidu
map