首页 > 其他分享 >ROS2 自学之接口

ROS2 自学之接口

时间:2024-03-16 23:32:04浏览次数:21  
标签:msgs 接口 srv msg 自学 sensor ROS2 rosidl

一、什么是接口

std_msgs/msg/String
std_msgs/msg/UInt32

在学习话题的时候,我们就已经接触到了如上两个接口,这两个接口分别是对应了字符串类型和u_int32的接口,所谓接口就是ROS2 中提前定义好的一种规范。类似于充电器接口,尽管不同厂家制造的充电器不同,但他们都统一执行一种规范——TYPE-C。这种规范为使用ROS2的用户提供了很大的便利。

二、ROS2自带接口

我们可以使用ros2 interface package sensor_msgs命令可以查看某一个接口包下所有的接口。其中sensor_msgs是传感器接口,也可以替代为std接口或者是其他自定义接口。

有三种不同的接口形式

  • 话题接口格式:xxx.msg
  • 服务接口格式:xxx.srv
  • 动作接口格式:xxx.action

我们也可以对已有的接口类型上进行包含,比如

uint32 id
string image_name
sensor_msgs/Image

三、创建一个自定义话题接口

1.创建一个空的文件夹

在终端中输入如下命令

ros2 pkg create 文件名_interfaces --build-type ament_cmake 

其中--build 后面的内容也可以不写因为buildtype默认就是Cmake类型

按下回车键后,系统自动将接口文件夹配置好

2.在文件夹中新建msg文件夹

这个就不用多说了,直接新建即可

如图

接着在msg文件夹里新建一个自定义xxx.msg文件。需要注意的是接口的文件名首字母一定要大写!这一点在以后我会仔细解释。

3.编写msg文件

bool
byte
char
float32,float64
int8,uint8
int16,uint16
int32,uint32
int64,uint64
string

 上图是msg可以支持的所有数据类型,我们可以对其进行命名包含

std_msgs/String content    #原始数据类型
sensor_msgs/Image image   #图像消息

4.修改Cmakelist.txt文件

find_package(sensor_msgs  REQUIRED) #添加需要的接口文件
find_package(rosidl_default_generators REQUIRED)# 这个一定要添加

 其中rosidl_default_generators是Cmakelist里面的一个宏定义这里一定要配置才能使用下面的函数

rosidl_generate_interfaces(${PROJECT_NAME}
  #添加你需要的自定义接口
  "msg/Novel.msg"        
  "srv/BorrowMoney.srv"
  "srv/SellNovel.srv"
  DEPENDENCIES sensor_msgs
)

 

5.修改.xml文件

最后在xml里面添加如下代码(这个直接复制上去就好)

不添加有可能报错

  <depend>sensor_msgs</depend>
  <build_depend>rosidl_default_generators</build_depend>
  <exec_depend>rosidl_default_runtime</exec_depend>
  <member_of_group>rosidl_interface_packages</member_of_group>

四、关于我遇到的报错

CMake Error at CMakeLists.txt:28 (rosidl_generator_interfaces): Unknown CMake command "rosidl_generator_interfaces".

这个报错卡了我快两天,后来发现是接口msg文件里路径写错了。各位遇到这个报错可以尝试检查一下自己的接口文件。

标签:msgs,接口,srv,msg,自学,sensor,ROS2,rosidl
From: https://blog.csdn.net/m0_73664872/article/details/136771952

相关文章

  • ros2学习之报错分析:
    CMakeGeneratestepfailed. Buildfilescannotberegeneratedcorrectly.gmake:***[Makefile:267:cmake_check_build_system]错误1---Failed  <<<village_wang[0.43s,exitedwithcode2]Summary:0packagesfinished[0.56s] 1packagefailed:v......
  • SDN网络简单认识(2)——南向接口
    目录一、概述二、南向接口与南向协议2.1南向接口(SouthboundInterfaces)2.2南向协议(SouthboundProtocols)2.3区别与联系三、常见南向协议2.1 OpenFlow2.2OVSDB(OpenvSwitchDatabaseManagementProtocol)2.3 NETCONF2.4P42.5对比一、概述       ......
  • 手机网络连接性能API接口:查询手机网络连接性能状态
    手机网络连接性能是我们在使用手机时非常关注的一个方面。有时我们会遇到网络不稳定、网速慢等问题,而这些问题往往会影响我们的手机使用体验。因此,了解手机网络连接性能状态对于我们来说非常重要。 在这篇博文中,我将介绍如何使用手机网络连接性能API接口来查询手机网络连接性......
  • 自学rabbitmq入门到精通
    交换机的fault(发布与订阅模式)因为消息是由生产者发送给excahnge,exchange发送给队列,然后由队列发送给消费者的。展示使用图形化界面使用fanout模式。创建交换机然后创建三个队列,绑定对应的交换机,发现给交换机发送消息给队列,3个队列同都收到了消息direct模式 相对......
  • python接口自动化测试 —— unittest框架suite、runner详细使用
    testsuite测试套件,理解成测试用例集一系列的测试用例,或测试套件,理解成测试用例的集合和测试套件的集合当运行测试套件时,则运行里面添加的所有测试用例testrunner测试运行器用于执行和输出结果的组件testsuite、testrunner基础使用单元测试类1#创建单元测试类......
  • SQLiteC/C++接口详细介绍-sqlite3类(一)
    快速跳转文章列表:SQLite—系列文章目录  上一篇:SQLiteC/C++接口简介 下一篇:SQLiteC/C++接口详细介绍(二) 引言:SQLiteC/C++数据库接口是一个流行的SQLite库使用形式,它允许开发者在C和C++代码中嵌入SQLite基本功能的解决方案。通过SQLiteC/C++数据库接口,开发者可以......
  • 浙大恩特客户资源管理系统-RegulatePriceAction接口SQL注入
    简介杭州恩软信息技术有限公司(浙大恩特)提供外贸管理软件、外贸客户管理软件等外贸软件,是一家专注于外贸客户资源管理及订单管理产品及服务的综合性公司。漏洞简介浙大恩特客户资源管理系统-RegulatePriceAction接口存在SQL注入漏洞,可以利用该漏洞获取数据库中的信息(例如,管理......
  • 在YAPI中使用mock.js语法编写接口
    1.问题编写完json数据后,尝试过导入json和json-schema,YAPI总是无法将mock语法转化相应数据1.1导入json的方式不支持mock语法1.2导入json-schema的方式识别不了我写的mock语法json2.解决先在设置中开启json5,再关闭如图所示的按钮显示如下图所示即成功......
  • LInux 进程替换(理解接口)
    目录一、替换原理二、替换函数1、exec函数2、命名理解3、返回值4、使用execl/lp、execv/vp5、执行自定义命令Makefile编译多个文件命令行程序mycmd.c传入自己的可执行文件7、子进程都继承父进程环境变量8、execle/ve修改子进程环境变量9、exece函数为exec系列函数......
  • 美国纽约交易所股票行情数据API接口
    1. 历史日线# Restful APIhttps://tsanghi.com/api/fin/stock/XNYS/daily?token={token}&ticker={ticker}默认返回全部历史数据,也可以使用参数start_date和end_date选择特定时间段。更新时间:收盘后3~4小时。更新周期:每天。请求方式:GET。# 测试:返回不超过10条......