传感器控制服务
约 5653 字大约 19 分钟
2025-05-29
提供机器人系统传感器(雷达/RGBD 相机/双目相机)服务,通过 SensorController 可以通过 RPC 和话题方式实现对机器人传感器的指令控制和状态获取。
接口定义
SensorController
是封装机器人各类传感器的管理类,支持 Laser Scan、RGBD 相机、双目相机的初始化、控制与数据订阅。
SensorController
项目 | 内容 |
---|---|
函数名 | SensorController |
函数声明 | SensorController(); |
功能概述 | 构造函数,初始化传感器控制器对象。 |
备注 | 构造内部状态。 |
~SensorController
项目 | 内容 |
---|---|
函数名 | ~SensorController |
函数声明 | virtual ~SensorController(); |
功能概述 | 析构函数,释放所有传感器资源。 |
备注 | 调用前应关闭传感器。 |
Initialize
项目 | 内容 |
---|---|
函数名 | Initialize |
函数声明 | bool Initialize(); |
功能概述 | 初始化控制器,包括资源申请和驱动加载。 |
返回值 | true 表示成功,false 表示失败。 |
备注 | 调用前需先构造对象。 |
Shutdown
项目 | 内容 |
---|---|
函数名 | Shutdown |
函数声明 | void Shutdown(); |
功能概述 | 关闭所有传感器连接并释放资源。 |
备注 | 配合 Initialize 使用。 |
OpenChannelSwith
项目 | 内容 |
---|---|
函数名 | OpenChannelSwith |
函数声明 | Status OpenChannelSwith(); |
功能概述 | 打开话题转换开关。 |
返回值 | Status::OK 表示成功,其他为失败。 |
备注 | 阻塞接口。 |
CloseChannelSwith
项目 | 内容 |
---|---|
函数名 | CloseChannelSwith |
函数声明 | Status CloseChannelSwith(); |
功能概述 | 关闭话题转换开关。 |
返回值 | Status::OK 表示成功,其他为失败。 |
备注 | 阻塞接口,配合打开函数使用。 |
OpenLaserScan
项目 | 内容 |
---|---|
函数名 | OpenLaserScan |
函数声明 | Status OpenLaserScan(); |
功能概述 | 打开雷达。 |
返回值 | Status::OK 表示成功,其他为失败。 |
备注 | 阻塞接口。 |
CloseLaserScan
项目 | 内容 |
---|---|
函数名 | CloseLaserScan |
函数声明 | Status CloseLaserScan(); |
功能概述 | 关闭雷达。 |
返回值 | Status::OK 表示成功,其他为失败。 |
备注 | 阻塞接口,配合打开函数使用。 |
OpenRgbdCamera
项目 | 内容 |
---|---|
函数名 | OpenRgbdCamera |
函数声明 | Status OpenRgbdCamera(); |
功能概述 | 打开 RGBD 相机。 |
返回值 | Status::OK 表示成功,其他为失败。 |
备注 | 阻塞接口。 |
CloseRgbdCamera
项目 | 内容 |
---|---|
函数名 | CloseRgbdCamera |
函数声明 | Status CloseRgbdCamera(); |
功能概述 | 关闭 RGBD 相机。 |
返回值 | Status::OK 表示成功,其他为失败。 |
备注 | 阻塞接口,配合打开函数使用。 |
OpenBinocularCamera
项目 | 内容 |
---|---|
函数名 | OpenBinocularCamera |
函数声明 | Status OpenBinocularCamera(); |
功能概述 | 打开双目相机。 |
返回值 | Status::OK 表示成功,其他为失败。 |
备注 | 阻塞接口。 |
CloseBinocularCamera
项目 | 内容 |
---|---|
函数名 | CloseBinocularCamera |
函数声明 | Status CloseBinocularCamera(); |
功能概述 | 关闭双目相机。 |
返回值 | Status::OK 表示成功,其他为失败。 |
备注 | 阻塞接口,配合打开函数使用。 |
SubscribeTof
项目 | 内容 |
---|---|
函数名 | SubscribeTof |
函数声明 | void SubscribeTof(const TofCallback callback); |
功能概述 | 订阅 TOF 数据 |
参数说明 | callback:接收到 TOF 数据后的处理回调 |
备注 | 非阻塞接口,回调函数会在数据更新时被调用。 |
SubscribeUltra
项目 | 内容 |
---|---|
函数名 | SubscribeUltra |
函数声明 | void SubscribeUltra(const UltraCallback callback); |
功能概述 | 订阅超声波数据 |
参数说明 | callback:接收到超声波数据后的处理回调 |
备注 | 非阻塞接口,回调函数会在数据更新时被调用。 |
SubscribeHeadTouch
项目 | 内容 |
---|---|
函数名 | SubscribeHeadTouch |
函数声明 | void SubscribeHeadTouch(const HeadTouchCallback callback); |
功能概述 | 订阅头部触摸数据 |
参数说明 | callback:接收到头部触摸数据后的处理回调 |
备注 | 非阻塞接口,回调函数会在数据更新时被调用。 |
SubscribeLaserScan
项目 | 内容 |
---|---|
函数名 | SubscribeLaserScanr |
函数声明 | void SubscribeLaserScan(const LaserScanCallback callback); |
功能概述 | 订阅激光雷达数据 |
参数说明 | callback:接收到激光雷达数据后的处理回调 |
备注 | 非阻塞接口,回调函数会在数据更新时被调用。 |
SubscribeRgbDepthCameraInfo
项目 | 内容 |
---|---|
函数名 | SubscribeRgbDepthCameraInfo |
函数声明 | void SubscribeRgbDepthCameraInfo(const CameraInfoCallback callback); |
功能概述 | 订阅 RGBD 深度相机内参数据 |
参数说明 | callback:接收到 RGBD 深度相机内参数据后的处理回调 |
备注 | 非阻塞接口,回调函数会在数据更新时被调用。 |
SubscribeRgbdDepthImage
项目 | 内容 |
---|---|
函数名 | SubscribeRgbdDepthImage |
函数声明 | void SubscribeRgbdDepthImage(const ImageCallback callback); |
功能概述 | 订阅 RGBD 深度图像数据 |
参数说明 | callback:接收到 RGBD 深度图像数据后的处理回调 |
备注 | 非阻塞接口,回调函数会在数据更新时被调用。 |
SubscribeRgbdColorCameraInfo
项目 | 内容 |
---|---|
函数名 | SubscribeRgbdColorCameraInfo |
函数声明 | void SubscribeRgbdColorCameraInfo(const CameraInfoCallback callback); |
功能概述 | 订阅 RGBD 彩色图像内参数据 |
参数说明 | callback:接收到 RGBD 彩色图像内参数据后的处理回调 |
备注 | 非阻塞接口,回调函数会在数据更新时被调用。 |
SubscribeRgbdColorImage
项目 | 内容 |
---|---|
函数名 | SubscribeRgbdColorImage |
函数声明 | void SubscribeRgbdColorImage(const ImageCallback callback); |
功能概述 | 订阅 RGBD 彩色图像数据 |
参数说明 | callback:接收到 RGBD 彩色图像数据后的处理回调 |
备注 | 非阻塞接口,回调函数会在数据更新时被调用。 |
SubscribeImu
项目 | 内容 |
---|---|
函数名 | SubscribeImu |
函数声明 | void SubscribeImu(const ImuCallback callback); |
功能概述 | 订阅 IMU 数据 |
参数说明 | callback:接收到 IMU 数据后的处理回调 |
备注 | 非阻塞接口,回调函数会在数据更新时被调用。 |
SubscribeLeftBinocularHighImg
项目 | 内容 |
---|---|
函数名 | SubscribeLeftBinocularHighImg |
函数声明 | void SubscribeLeftBinocularHighImg(const CompressedImageCallback callback); |
功能概述 | 订阅左侧高质量双目数据 |
参数说明 | callback:接收到左侧高质量双目数据后的处理回调 |
备注 | 非阻塞接口,回调函数会在数据更新时被调用。 |
SubscribeLeftBinocularLowImg
项目 | 内容 |
---|---|
函数名 | SubscribeLeftBinocularLowImg |
函数声明 | void SubscribeLeftBinocularLowImg(const CompressedImageCallback callback); |
功能概述 | 订阅左侧低质量双目数据 |
参数说明 | callback:接收到左侧低质量双目数据后的处理回调 |
备注 | 非阻塞接口,回调函数会在数据更新时被调用。 |
SubscribeRightBinocularLowImg
项目 | 内容 |
---|---|
函数名 | SubscribeRightBinocularLowImg |
函数声明 | void SubscribeRightBinocularLowImg(const CompressedImageCallback callback); |
功能概述 | 订阅右侧低质量双目数据 |
参数说明 | callback:接收到右侧低质量双目数据后的处理回调 |
备注 | 非阻塞接口,回调函数会在数据更新时被调用。 |
SubscribeDepthImage
项目 | 内容 |
---|---|
函数名 | SubscribeDepthImage |
函数声明 | void SubscribeDepthImage(const ImageCallback callback); |
功能概述 | 订阅深度图像 |
参数说明 | callback:接收到深度图像后的处理回调 |
备注 | 非阻塞接口,回调函数会在数据更新时被调用。 |
类型定义
Imu
— IMU 数据结构体
字段名 | 类型 | 描述 |
---|---|---|
timestamp | int64_t | 时间戳(单位:纳秒) |
orientation[4] | double[4] | 姿态四元数(w, x, y, z) |
angular_velocity[3] | double[3] | 角速度(单位:rad/s) |
linear_acceleration[3] | double[3] | 线加速度(单位:m/s²) |
temperature | float | 温度(单位:摄氏度或其他,应明确单位) |
Header
— 通用消息头结构体
字段名 | 类型 | 描述 |
---|---|---|
stamp | int64_t | 时间戳(单位:纳秒) |
frame_id | std::string | 坐标系名称 |
PointField
— 点字段描述
字段名 | 类型 | 描述 |
---|---|---|
name | std::string | 字段名(如 x、y、z、intensity) |
offset | int32_t | 起始字节偏移 |
datatype | int8_t | 数据类型(对应常量) |
count | int32_t | 每点此字段包含元素数量 |
PointCloud2
— 点云数据结构体
字段名 | 类型 | 描述 |
---|---|---|
header | Header | 消息头 |
height | int32_t | 行数 |
width | int32_t | 列数 |
fields | std::vector<PointField> | 点字段数组 |
is_bigendian | bool | 字节序 |
point_step | int32_t | 每个点的字节数 |
row_step | int32_t | 每行的字节数 |
data | std::vector<uint8_t> | 原始点云字节数据 |
is_dense | bool | 是否稠密点云(无无效点) |
Image
— 图像数据结构体
字段名 | 类型 | 描述 |
---|---|---|
header | Header | 消息头 |
height | int32_t | 图像高度(像素) |
width | int32_t | 图像宽度(像素) |
encoding | std::string | 编码类型(如 rgb8, mono8) |
is_bigendian | bool | 是否为大端模式 |
step | int32_t | 每行图像占用字节数 |
data | std::vector<uint8_t> | 原始图像字节数据 |
CameraInfo
— 相机内参与畸变信息
字段名 | 类型 | 描述 |
---|---|---|
header | Header | 消息头 |
height | int32_t | 图像高度 |
width | int32_t | 图像宽度 |
distortion_model | std::string | 畸变模型(如 plumb_bob) |
D | std::vector<double> | 畸变参数数组 |
K | double[9] | 相机内参矩阵 |
R | double[9] | 矫正矩阵 |
P | double[12] | 投影矩阵 |
binning_x | int32_t | 水平 binning 系数 |
binning_y | int32_t | 垂直 binning 系数 |
roi_x_offset | int32_t | ROI 起始 x 坐标 |
roi_y_offset | int32_t | ROI 起始 y 坐标 |
roi_height | int32_t | ROI 高度 |
roi_width | int32_t | ROI 宽度 |
roi_do_rectify | bool | 是否进行矫正 |
CompressedImage
— 压缩图像数据结构
字段名 | 类型 | 描述 |
---|---|---|
header | Header | 消息头 |
format | std::string | 压缩格式(如 jpeg, png) |
data | std::vector<uint8_t> | 压缩后的图像数据 |
LaserScan
— 激光雷达数据结构
字段名 | 类型 | 描述 |
---|---|---|
header | Header | 消息头 |
angle_min | int32_t | 起始角度(弧度) |
angle_max | int32_t | 结束角度(弧度) |
angle_increment | int32_t | 角度增量(弧度) |
time_increment | int32_t | 时间增量(秒) |
scan_time | int32_t | 扫描时间(秒) |
range_min | int32_t | 最小距离(米) |
range_max | int32_t | 最大距离(米) |
ranges | std::vector<double> | 距离数据数组 |
intensities | std::vector<double> | 强度数据数组 |
MultiArrayDimension
— 多维数组维度描述
字段名 | 类型 | 描述 |
---|---|---|
label | std::string | 维度标签 |
size | int32_t | 维度大小 |
stride | int32_t | 步长 |
MultiArrayLayout
— 多维数组布局描述
字段名 | 类型 | 描述 |
---|---|---|
dim_size | int32_t | 维度数量 |
dim | std::vector<MultiArrayDimension> | 维度数组 |
data_offset | int32_t | 数据偏移量 |
Float32MultiArray
— 浮点数多维数组
字段名 | 类型 | 描述 |
---|---|---|
layout | MultiArrayLayout | 数组布局信息 |
data | std::vector<float> | 浮点数数据数组 |
Int8
— 8位整数数据结构
字段名 | 类型 | 描述 |
---|---|---|
data | int8_t | 8位整数数据 |
HeadTouch
— 头部触摸数据结构
项目 | 内容 |
---|---|
类型 | Int8 |
描述 | 头部触摸传感器数据,使用8位整数格式 |