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
和一个自定义动作类型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命令窗口中作为提示给出。
添加类文件的位置到MATLAB路径:使用
目录
将扩展名为.m的文件的新位置添加到MATLAB路径并使用savepath
以保存这些更改。刷新所有消息类定义,需要清空工作空间:
清晰的类重新处理toolboxcache
验证消息是否可用:使用
或者是rosmsg
列表rosmessage
函数检查新的自定义消息是否可用。
有关此过程的示例,请参见从ROS包创建自定义消息.本例使用示例自定义消息文件在MATLAB中创建自定义消息。
对于一组特定的自定义消息,只需完成此过程一次。在此之后,您可以像使用MATLAB中的任何其他ROS消息一样使用新的自定义消息,并利用完整的ROS功能ROS工具箱提供了。当您希望更新或创建新的消息类型时,请重复此生成过程。
您必须维护包含文件目录的MATLAB路径。确保MATLAB路径一次只有一个包含自定义消息构件的文件夹。
使用自定义消息生成代码
自定义消息、服务和操作类型可以与ROS Simulink块一起使用,为独立的ROS节点生成c++代码。金宝app生成的代码(. tgz
archive)将包含自定义消息的Simul金宝appink定义,但不包括ROS自定义消息包。在目标Linux系统中构建生成的代码时,它期望自定义消息包在catkin工作区或ROS_PACKAGE_PATH
.在构建生成的代码之前,请确保您要么安装自定义消息包,要么将其复制到Linux系统。
用自定义定义替换内置消息的定义
MATLAB提供了许多内置的ROS消息类型。您可以使用上面详细介绍的自定义消息创建工作流,将这些消息类型的定义替换为新的定义。替换内置消息包的定义时,必须确保自定义消息包文件夹包含新的定义(.msg
文件)对应的内置消息包中的所有消息类型。