主要内容

ROS自定义消息支持金宝app

自定义消息的概述

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

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

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

自定义消息内容

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

笔记

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

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

中包含一个自定义消息类型RobotTopic.msg,一个自定义服务类型RobotService.srv,以及一个自定义操作类型机器人.MATLAB使用这些文件来生成使用包中包含的自定义消息的必要文件。有关创建的更多信息味精深水救生艇文件,请参阅创建ROS MSG和SRV定义自定义消息在ROS Wiki上。这些文件的语法在特定于页面上描述了味精深水救生艇.有关ROS操作的更多信息,请参阅ROS行为概述

笔记

  • 您必须对自定义消息文件夹进行写入权限。

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

从消息字段命名属性

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

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

转换后的MATLAB属性是:

标题高度宽度编码ISBIGENDIAN数据

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

自定义消息创建工作流程

如前一节所述,设置好自定义消息结构后,就可以创建使用这些自定义消息所需的代码。首先,你叫rosgenmsg使用您已知的自定义消息文件来创建MATLAB代码。

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

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

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

  2. 刷新所有消息类定义,这需要清除工作区:

    清晰的课堂重新处理工具箱cache.

  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系统。

也可以看看

|

相关的话题