《动手学ROS2》4.13扩展阅读原始数据类型与包装类型

本系列教程作者:小鱼
公众号:鱼香ROS
QQ交流群:139707339
教学视频地址:小鱼的B站
完整文档地址:鱼香ROS官网
版权声明:如非允许禁止转载与商业用途。
公众号

扩展阅读:ROS2原始数据类型与接口

在ROS2中定义接口,需要编写一个接口文件,该文件后缀为msgsrvaction

在接口文件中定义通信过程中所使用的数据类型和数据名称,那可用的数据类型和数据名称有哪些呢?今天小鱼就带你详细了解一下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

image-20210824191624340

去掉单行的注释后的样子如下:

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由什么组成呢?我们再次使用下面的指令查看一下:

扫描二维码关注公众号,回复: 13231436 查看本文章
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.总结

相信看完这篇文章,以后再也不会遇到看不懂的数据类型了。

作者介绍:

我是小鱼,机器人领域资深玩家,现深圳某独脚兽机器人算法工程师一枚
初中学习编程,高中开始接触机器人,大学期间打机器人相关比赛实现月入2W+(比赛奖金)
目前在输出机器人学习指南、论文注解、工作经验,欢迎大家关注小智,一起交流技术,学习机器人

猜你喜欢

转载自blog.csdn.net/qq_27865227/article/details/121206863