主要内容

ROS自定义消息支持金宝app

自定义消息的概述

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

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

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

自定义消息内容

ROS自定义消息在包含味精深水救生艇,行动目录。

请注意

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

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

中包含一个自定义消息类型RobotTopic.msg,一个自定义服务类型RobotService.srv,以及一个自定义操作类型RobotAction.action.MATLAB使用这些文件来生成使用包中包含的定制消息所需的文件。有关创建的更多信息味精深水救生艇文件,请参阅创建ROS消息和srv定义自定义消息在ROS维基上这些文件的语法在特定于味精深水救生艇.有关ROS操作的更多信息,请参见ROS行为概述

请注意

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

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

从消息字段命名属性

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

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

转换后的MATLAB属性为:

头高度宽度编码是bigendian步骤数据

在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生成的代码(. tgz将包括定制消息的Simulink定义,但不包金宝app括ROS定制消息包。当在目标Linux系统中构建生成的代码时,它期望自定义消息包可以在catkin工作区中或在ROS_PACKAGE_PATH.在构建生成的代码之前,请确保安装或复制自定义消息包到Linux系统。

另请参阅

|

相关的话题