ROS2原始数据类型与接口
大家好,我是脑壳有点痛的小鱼。今天就不多说其他的,讲一讲ROS2的接口还有基本数据类型
在ROS2中定义接口,需要编写一个接口文件,该文件后缀为msg
、srv
、action
在接口文件中定义通信过程中所使用的数据类型和数据名称,那可用的数据类型和数据名称有哪些呢?今天小鱼就带你详细了解一下ROS2接口文件中的数据类型和数据名称
1.数据名称
数据名称就是一个字符串,没啥好说的,符合编程语言变量的命名规则就行(比如不能是字母开头)。
2.数据类型
2.1 数据类型有哪些呢?
这里小鱼可以告诉你,原始的数据类型只有九类。其中每一个都可以在后面加上[]
将其变成数组形式(从一个变成多个)
bool
byte
char
float32, float64
int8, uint8
int16, uint16
int32, uint32
int64, uint64
string
上面这九类中,官方也在考虑新增一些和删除一些,目前还是支持的,后续小鱼会根据资料再更新一下本文。
2.2 类型扩展(套娃)
2.2.1 第一层套娃
ROS2基于上面的九类基础数据类型,为我们定义出了很多拿来就用的数据类型,比如我们在前面章节中用到的图像数据类型sensor_msgs/Image
,我们可以使用下面的命令来看一下其组成:
ros2 interface show sensor_msgs/msg/Image
去掉单行的注释后的样子如下:
std_msgs/Header header # Header timestamp should be acquisition time of image
uint32 height # image height, that is, number of rows
uint32 width # image width, that is, number of columns
string encoding # Encoding of pixels -- channel meaning, ordering, size
uint8 is_bigendian # is this data bigendian?
uint32 step # Full row length in bytes
uint8[] data # actual matrix data, size is (step * rows)
我们可以看到,除了第一行std_msgs/Header header
之外的其他部分都是由基础类型组成。
2.2.2 第二层套娃
那std_msgs/Header
由什么组成呢?我们再次使用下面的指令查看一下:
ros2 interface show std_msgs/msg/Header
结果如下:
builtin_interfaces/Time stamp # Two-integer timestamp that is expressed as seconds and nanoseconds.
string frame_id # Transform frame with which this data is associated.
2.2.3 第三层套娃
看完上面的结果,除了基本类型string
和我们发现还有一层builtin_interfaces/Time
,我们再查看一下这个接口类型。
ros2 interface show builtin_interfaces/msg/Time
结果如下:
# Time indicates a specific point in time, relative to a clock's 0 point.# The seconds component, valid over all int32 values.
int32 sec# The nanoseconds component, valid in the range [0, 10e9).
uint32 nanosec
我们发现结果全都是基本类型了,终于我们把套娃给解开了。
3.接口类型总结
通过基本类型的组合,可以构成一个新的数据类型,而新的数据类型又可以和基本类型或者另外一个数据类型互相组成另一个数据类型。所以我们可以说ROS2中的数据类型有无数种。
4.总结
这段时间肝的太厉害,有点吃不消,今天要早点休息了~
各位鱼粉们在努力的同时也要照顾好自己的身体哦~
ROS2原始数据类型与接口相关推荐
- Java的原始数据类型一共就8个
Java的原始数据类型一共就8个,分别是:byte.short.int.long.boolean.char.float.double.注意这些是大小写敏感的,而Boolean是boolean的封装类( ...
- 【php】 PHP 支持 9 种原始数据类型
PHP 支持 9 种原始数据类型. 四种标量类型: boolean(布尔型) integer(整型) float(浮点型,也称作 double) string(字符串) 三种复合类型: array(数 ...
- 深入理解Java原始数据类型和包装类关于==和equals的比较
1.运算符 == 对于六大Java数值类原始数据类型,==比较的是数值 对于六大Java原始数据类型对应的包装类,==比较的是内存地址 2.equals() equals()方法只有对象才有,所以我们 ...
- JavaScript的数据类型、null 和undefined、原始数据类型和引用数据类型等JavaScript基础知识总结
一.JavaScript里有哪些数据类型,解释清楚null 和undefined,解释清楚原始数据类型和引用数据类型.比如讲一下1 和Number(1)的区别 数据类型: undefined,没有定义 ...
- Java程序员都要懂得知识点:原始数据类型
本文分享自华为云社区<Java知识点问题总结之原始数据类型>,原文作者:breakDraw. java原始数据类型有short.byte.int.long.boolean.char.flo ...
- Java中原始数据类型存放位置理解
原始数据类型的变量存放在栈还是堆,应该由上下文去决定. 如下所示的局部方法中,定义了本地变量a,且为原始数据类型,所以存放在栈中. public void func(){int a = 3; } 再如 ...
- js 支持的原始数据类型
原始数据类型: 数值型: 1.十进制数 <script>var a =12;a = -12a = 12.4a =.23e2 //=>23a = 2e3 //=>2000a = ...
- TypeScript学习(一):原始数据类型的定义
这篇博客主要是讲述TS中原始数据类型的定义,有不足之处,还望大家指点(这里就不赘述TS的安装及编译方式了,详情可前往官网查看): Typescript中原始数据类型:布尔类型(boolean).数值类 ...
- Java原始数据类型
本文分享自华为云社区<Java知识点问题总结之原始数据类型>,原文作者:breakDraw. java原始数据类型有short.byte.int.long.boolean.char.flo ...
最新文章
- 你和区块链的距离就差这篇文章!
- GANimation填坑之旅
- linux主从库配置文件,linux 数据库主从同步配置
- java string封装类_java中八种基本数据类型以及它们的封装类,String类型的一些理解...
- 工作308:控制change
- 用OC和Swift一起说说二叉树
- Lucky Number(HDU-4937)
- 整理几个有想法的面试题
- 集训被虐第一天7.31
- vscode占用C盘空间迁移到其他盘
- org.mybatis.caches.ehcache.LoggingEhcache
- 一个基于Angular4+Bootstrap4+Scss的后台管理系统界面
- [源码解析]ESPnet脚本源码解析-aishell-asr.sh
- Vue的引入方式,属性和计数器案例
- 办公室最经常用到的WIFI ip地址设置(window10)
- python selenium 接管已开启浏览器
- ImGui添加背景图片的两种方式
- 【错误记录】Android 应用导入 ijkplayer 报错 ( uses-sdk:minSdkVersion 19 cannot be smaller than version 21 decl )
- python unittest执行程序在pycharm可以成功运行但使用cmd会报错:E列表 test_register (unittest.loader._FailedTest)
- 把仙剑奇侠传5的音乐从pkg里请出来变成mp3吧
热门文章
- java项目中使用Sigar获取系统信息
- 谷歌推出以太坊区块链的大数据视图
- 【MacOS】java环境配置
- redis安装与部署
- Spring Boot 整合 阿里云短信(模板模式)
- 【PG】PG基础操作
- Fire And Motion(英文原版) [转]
- 微信小程序API的Promise化及全局状态管理MobX
- Psins代码解析之线性误差模型精度验证(test_SINS_error_model_verify.m)
- 【Android 组件化】路由组件 ( 注解处理器中使用 JavaPoet 生成代码 )