主要内容

ROS自定义消息支持金宝app

自定义消息概述

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

自定义消息创建需要ROS包,详见ROS Wiki.在确保为自定义消息提供了有效的ROS包之后,调用rosgenmsg文件路径到包含自定义消息包文件夹的位置,以生成使用自定义消息所需的MATLAB代码。有关如何在MATLAB中生成ROS自定义消息的示例,请参见从ROS包创建自定义消息

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

自定义消息内容

ROS自定义消息在包含的ROS包文件夹中指定味精,深水救生艇,行动目录。

请注意

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

味精文件夹包含所有自定义邮件类型定义。属性中添加所有自定义服务类型定义深水救生艇文件夹,并将所有自定义操作类型定义添加到行动文件夹中。例如,包custom_robot_msgs具有此文件夹和文件结构。

自定义邮件文件夹结构。顶层包custom_robot_msgs包含三个文件夹。Msg、srv和action分别包含生成的自定义消息、服务和操作。

包中包含一个自定义消息类型RobotTopic.msg还有一个自定义服务类型RobotService.srv和一个自定义动作类型RobotAction.action.MATLAB使用这些文件生成使用包中包含的自定义消息所需的文件。有关创建的更多信息味精而且深水救生艇文件,请参阅创建ROS msg和srv而且定义自定义消息在ROS Wiki上。这些文件的语法在特定的页面上进行了描述味精而且深水救生艇.有关ROS操作的更多信息,请参见ROS行动概述

请注意

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

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

从消息字段命名属性

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

报头高度宽度编码is_bigendian步长数据

转换后的MATLAB属性为:

头部高度宽度编码IsBigendian步长数据

在Simulink中使用ROS消息时也反映了这一点金宝app®.ROS消息总线使用与MATLAB相同的属性名称。

自定义消息创建工作流

按照上一节的描述设置了自定义消息结构之后,就可以创建使用这些自定义消息所需的代码。首先,你打电话rosgenmsg自定义消息文件的已知路径,以创建MATLAB代码。

rosgenmsg函数获取自定义消息文件(.msg,.srv,.action)并将每种消息类型转换为可工作的MATLAB代码。的rosgenmsg函数查找.msg文件味精文件夹,.srv文件深水救生艇文件夹,以及.action文件行动文件夹中。此代码是一组类,用于在创建新的自定义消息时定义消息属性。然后,该函数为不同的消息类创建所需的MATLAB m文件。

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

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

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

    清晰的重新处理toolboxcache

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

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

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

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

使用自定义消息生成代码

自定义消息、服务和操作类型可以与ROS Simulink块一起使用,为独立的ROS节点生成c++代码。金宝app生成的代码(. tgzarchive)将包含自定义消息的Simul金宝appink定义,但不包括ROS自定义消息包。在目标Linux系统中构建生成的代码时,它期望自定义消息包在catkin工作区或ROS_PACKAGE_PATH.在构建生成的代码之前,请确保您要么安装自定义消息包,要么将其复制到Linux系统。

用自定义定义替换内置消息的定义

MATLAB提供了许多内置的ROS消息类型。您可以使用上面详细介绍的自定义消息创建工作流,将这些消息类型的定义替换为新的定义。替换内置消息包的定义时,必须确保自定义消息包文件夹包含新的定义(.msg文件)对应的内置消息包中的所有消息类型。

另请参阅

|

相关的话题