ROS2- 接口-接口-数据类型与包装类型-11
原始数据类型与包装类型
在接口文件中定义通信过程中所使用的数据类型和数据名称
可用的数据类型和数据名称有哪些?
数据名称就是一个字符串,没啥好说的,符合编程语言变量的命名规则就行
数据类型有哪些?
原始的数据类型只有九类(每一个都可以在后面加上[]将其变成数组形式)
bool
byte
char
float32, float64
int8, uint8
int16, uint16
int32, uint32
int64, uint64
string
类型扩展(套娃)
第一层套娃
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之外的其他部分都是由基础类型组成。
第二层套娃
再次使用下面的指令:
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.
第三层套娃
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
发现结果全都是基本类型了,终于我们把套娃给解开了。
通过基本类型的组合,可以构成一个新的数据类型,而新的数据类型又可以和基本类型或者另外一个数据类型互相组成另一个数据类型。

浙公网安备 33010602011771号