主要内容

ROS自定义消息支持金宝app

自定义消息概述

自定义消息是用户定义的消息,可以用于扩展当前支持的消息类型金宝appROS工具箱。如果您正在发送和接收支持的消息类型,则不需要使用自定义消息。金宝app要查看支持的消息类型列表,请调用金宝appROSMSG列表在matlab.®命令窗口。

创建自定义消息需要ROS包,详细信息见ROS Wiki。确保自定义消息有有效的ROS包之后,调用RosgenMsg.用文件路径将您的自定义消息包生成使用自定义消息所需的MATLAB代码。有关如何在MATLAB中生成ROS自定义消息的示例,请参见从ROS包创建自定义消息

如果这是您第一次使用ROS自定义消息,请检查ROS系统需求

自定义消息内容

ROS自定义消息在包含的ROS包文件夹中指定味精SRV.目录。

请注意

在任何时候,MATLAB路径上都应该只有一个自定义消息文件夹。这个文件夹可以包含多个包。建议您将它们都保存在一个唯一的文件夹中。

味精文件夹包含所有自定义消息类型定义。您还应该添加所有自定义服务类型定义SRV.文件夹中。例如,包custom_robot_msgs有此文件夹和文件结构。

该软件包包含一个自定义消息类型Robottopic.msg.一个自定义服务类型robotservice.srv.。MATLAB使用这些文件来生成使用包中包含的自定义消息所需的文件。有关创建的更多信息味精SRV.文件,参见创建ROS味精和srv定义自定义消息在ROS的维基上。这些文件的语法在特定于味精SRV.

请注意

  • 您必须对自定义邮件文件夹具有写访问权限。

  • 在任何时候,MATLAB路径上都应该只有一个自定义消息文件夹。这个文件夹可以包含多个包。建议您将它们都保存在一个唯一的文件夹中。

  • 不支持ROS操作,并将在自定义消息生成过金宝app程中被忽略。

从消息字段命名的属性

当ROS消息定义转换为MATLAB时,字段名称将转换为消息对象的属性。对象属性始终以大写字母开头,不包含下划线。修改字段名称以适合此命名约定。下划线后的第一个字母和第一个字母被删除的下划线大写。例如,sensor_msgs /映像message在ROS中有以下字段:

标题高度宽度编码IS_BIGENDIAN步骤数据

转换后的MATLAB属性为:

报头高度宽度编码为bigendian步长数据

在Simulink中使用ROS消息时,也会反映出来金宝app®。ROS消息总线使用与MATLAB相同的属性名。

自定义消息创建工作流

在如上一节所述的自定义消息结构设置设置后,您可以创建使用这些自定义消息所需的代码。首先,你打电话RosgenMsg.用已知路径的自定义消息文件创建MATLAB代码。

RosgenMsg.函数获取自定义消息文件(.msg.srv),并将每个消息类型转换为工作的MATLAB代码。的RosgenMsg.函数查找.msg文件味精文件夹和.srv文件SRV.文件夹中。这段代码是一组类,它们在您创建新的自定义消息时定义消息属性。然后,该函数为不同的消息类创建所需的MATLAB m文件。

RosgenMsg.函数创建这些文件时,必须将类文件添加到MATLAB路径中。这些步骤是在MATLAB命令窗口中给出的提示。

  1. 将类文件的位置添加到MATLAB路径: 采用addpath.将扩展名为.m的文件的新位置添加到MATLAB路径并使用sav保存这些更改。

  2. 刷新所有消息类定义,需要清理工作空间:

    明确雷厄什toolboxcache

  3. 验证消息可用: 采用rosmsg列表或者rosmessage函数来检查新的自定义消息是否可用。

有关此过程的示例,请参见从ROS包创建自定义消息。这个例子使用示例自定义消息文件在MATLAB中创建自定义消息。

对于一组特定的自定义消息,您只需要完成一次此过程。之后,您可以像使用MATLAB中的任何其他ROS消息一样使用新的自定义消息,并利用完整的ROS功能ROS工具箱提供了。当您想要更新或创建新的消息类型时,重复此生成过程。

您必须维护包含文件目录的MATLAB路径。确保MATLAB路径一次只有一个包含自定义消息工件的文件夹。

代码生成具有自定义消息

自定义消息和服务类型可以与ROS Simulink块一起使用,用于为独立ROS节点生成C ++代码。金宝app生成的代码(.tgz.存档)将包括自定义消息的Simulink定义金宝app,但它不会包含ROS自定义消息包。当生成的代码内置在目标Linux系统中时,它希望自定义消息包在Catkin Workspace或上方可用ROS_PACKAGE_PATH。在构建生成的代码之前,请确保将自定义消息包安装或复制到Linux系统。

另请参阅

|

相关话题