传感器功能清单
1. Sensor能力边界:
1.1. 整体框架
1.2. 参数配置查询
1.2.1. Service 概览表
| Service | 介绍 | service_type | 配置要点 | 配置详情 |
|---|---|---|---|---|
| /set_camera_option | 动态设置相机参数(gain/exposure/brightness/white_balance 等),发送 camera_options.json 全文,按 sensor_id 路由到对应传感器插件的 ApplySensorOptionFromJson() | rcl_interfaces/srv/SetParameters | 请求体为 SetParameters,第一个 parameter 的 string_value 携带 JSON 全文 | JSON / Schema |
| /sensor/sensor_vla_camera/sensor_version | 查询所有已注册传感器的版本信息(固件版本、设备型号等) | robby_sensor_msgs/srv/GetSensorVersions | service 名按 module_name 动态拼接,每个 RobbySensorCenter 进程对应唯一服务名 | JSON / Schema |
1.3. Service
1.3.1. 通信配置 JSON:set_camera_option
{
"channels": {
"set_camera_option_rpc": {
"type": "hybrid_rpc",
"hybrid_rpc": {
"service_prefix": "/",
"enable_shm": false,
"enable_ros2": true,
"auto_route": false,
"default_timeout_ms": 2000
},
"ros2": {
"service_prefix": "/",
"service_type": "rcl_interfaces/srv/SetParameters"
}
}
}
}
调用 method:set_camera_option;service_prefix 与 method 拼接为完整服务名。此配置为 RFrame 客户端接入模板,服务端在 Sensor Center 中使用原生 ROS2 注册;2000ms 是客户端超时示例,不是服务端保证。
服务名说明:代码注册相对名称 set_camera_option,默认根命名空间下为 /set_camera_option;若部署使用 ROS 命名空间或 remap,需同步调整。节点的 /SensorCenterNode0x54/set_parameters 是标准参数服务,不能替代这里的业务回调。
1.3.1.1. 类型Schema
类型:rcl_interfaces/srv/SetParameters
来源:rcl_interfaces
# A list of parameters to set.
Parameter[] parameters
---
# Indicates whether setting each parameter succeeded or not and why.
SetParametersResult[] results
1.3.1.2. 类型 Schema
类型:rcl_interfaces/msg/Parameter
来源:rcl_interfaces
# This is the message to communicate a parameter. It is an open struct with an enum in
# the descriptor to select which value is active.
# The full name of the parameter.
string name
# The parameter's value which can be one of several types, see
# `ParameterValue.msg` and `ParameterType.msg`.
ParameterValue value
uint8 type
bool bool_value
int64 integer_value
float64 double_value
string string_value
byte[] byte_array_value
bool[] bool_array_value
int64[] integer_array_value
float64[] double_array_value
string[] string_array_value
1.3.1.3. 类型 Schema
类型:rcl_interfaces/msg/SetParametersResult
来源:rcl_interfaces
# A true value of the same index indicates that the parameter was set
# successfully. A false value indicates the change was rejected.
bool successful
# Reason why the setting was either successful or a failure. This should only be
# used for logging and user interfaces.
string reason
请求 JSON 结构(string_value 载荷):
{
"camera_set_option": [
{
"sensor_id": "0x1",
"color": {
"gain": 0,
"brightness": 0,
"exposure": 156,
"white_balance": 3800,
"gamma": 150,
"auto_exposure": false,
"auto_white_balance": false
},
"depth": {
"gain": 20,
"exposure": 4500,
"auto_exposure": false,
"laser_contrl_bool": true
},
"ir": {
"gain": 20,
"exposure": 4500,
"brightness": 0,
"auto_exposure": false
}
}
]
}
调用示例
# 将 sensor_id=0x1 的 Color 流曝光设为 156,关闭自动曝光
ros2 service call /set_camera_option rcl_interfaces/srv/SetParameters \
"{parameters: [{name: 'camera_option', value: {type: 4, string_value: '{\"camera_set_option\": [{\"sensor_id\": \"0x1\", \"color\": {\"exposure\": 156, \"auto_exposure\": false}}]}'}}]}"
语义说明:请求体为标准 SetParameters,第一个 parameter 的 string_value 携带 camera_options.json 全文。回调解析 JSON 中的 camera_set_option 数组,按 sensor_id 路由到对应传感器插件的 ApplySensorOptionFromJson()。color / depth / ir 各 section 字段可独立设置,仅传需要修改的字段即可。
1.3.2. 通信配置 JSON:sensor_version
{
"channels": {
"sensor_version_rpc": {
"type": "hybrid_rpc",
"hybrid_rpc": {
"service_prefix": "/sensor/sensor_vla_camera/",
"enable_shm": false,
"enable_ros2": true,
"auto_route": false,
"default_timeout_ms": 2000
},
"ros2": {
"service_prefix": "/sensor/sensor_vla_camera/",
"service_type": "robby_sensor_msgs/srv/GetSensorVersions"
}
}
}
}
调用 method:sensor_version;service_prefix 与 method 拼接为完整服务名。此配置为 RFrame 客户端接入模板,服务端在 Sensor Center 中使用原生 ROS2 注册;2000ms 是客户端超时示例,不是服务端保证。
1.3.2.1. 类型Schema
类型:robby_sensor_msgs/srv/GetSensorVersions
来源:RTypes:robby_sensor_msgs/srv/GetSensorVersions.srv
# GetSensorVersions.srv
# Request
string sensor_type # 传感器类型
---
# Response
bool success # 请求是否成功
string version # 版本信息(json格式)
返回 JSON 结构:
{
"HeadMonoDepthCamera": {
"firmware_ver":"1.6.00",
"hw_ver":"0.1",
"sn":"CP2BC53000H3"
},
"LeftWristMonoDepthCamera": {
"firmware_ver":"1.0.70",
"hw_ver":"0.1",
"sn":"CV2R46P0005T"
}
}
调用示例
# 查询当前模块下所有传感器的版本
ros2 service call /sensor/sensor_vla_camera/sensor_version robby_sensor_msgs/srv/GetSensorVersions "{sensor_type: ''}"
语义说明:请求包含 sensor_type,但当前 Sensor Center 回调未读取该字段,不按其过滤;返回 success 和 version 字段。版本记录为空时 success=false、version 为空字符串;否则 success=true,预期但未取得版本的设备值为 null。version 为 JSON 字符串,键为 sensor_tag(传感器唯一标识),值包含firmware_ver,hw_ver,sn 。
1.3.3. 主配置说明
配置路径为:/opt/robby/robby-sensor-center/config/robby_r2_fun/sensor_center/sensor_global_cam_pvt.json
修改完配置之后,重启robby-sensor-center.service服务( sudo systemctl restart robby-sensor-center.service)
| 配置字段 | 类型 | 默认值 | 含义 | 可选值 / 示例 |
|---|---|---|---|---|
sync_enable | bool | false | 是否启用多相机硬件同步。启用后,多台相机通过硬件信号触发实现帧级同步 | true(启用)/ false(禁用) |
sync_mode | string | 无 | 同步模式,仅在 sync_enable=true 时生效。决定本相机在同步链路中的角色 | "slave"(从机同步)/ "master"(主控输出触发信号)/ "sw_trigger"(软件触发) |
enable_color | bool | false | 是否启用 Color(彩色)数据流 | true / false |
enable_depth | bool | false | 是否启用 Depth(深度)数据流 | true / false |
enable_ir | bool | false | 是否启用 IR(红外)数据流,包含 Left IR + Right IR 双流 | true / false |
time_src | string | "system_time" | 帧时间戳来源。决定每帧 time_stamp 字段使用系统时间还是相机硬件时间 | "system_time"(主机系统时间)/ "camera_time"(相机全局时间戳 getGlobalTimeStampUs()) |
d2c_enable | bool | true | 是否启用 Depth-to-Color 空间对齐。将深度图坐标系对齐到彩色图坐标系,需同时启用 color 和 depth 流 | true(对齐)/ false(不对齐) |
filter_max_diff | int32 | 256 | 深度噪声滤波最大差异阈值。设置 OrbbecSDK OB_PROP_DEPTH_NOISE_REMOVAL_FILTER_MAX_DIFF_INT,相邻像素深度差超过此值视为噪声并滤除 | 256(默认)/ 128(更严格)/ 512(更宽松)/ 0(关闭滤波) |
filter_max_speckle_size | int32 | 300 | 深度噪声滤波最大斑点尺寸。设置 OB_PROP_DEPTH_NOISE_REMOVAL_FILTER_MAX_SPECKLE_SIZE_INT,连续噪声区域面积超过此值时被滤除 | 300(默认)/ 150(更积极滤除)/ 600(更保守)/ 0(关闭) |
tegra_jpeg | bool | false | 是否使用 NVIDIA Tegra 硬件 JPEG 编码器(仅 ARM64/Orin 平台生效)。开启后 Color 流 JPEG 编码走 GPU 硬件加速,降低 CPU 负载 | true(启用 Tegra 硬件编码)/ false(使用 CPU 编码) |
color_width | int | 0 | Color 流分辨率宽度(像素) | 1280 / 640 / 848 / 1920 |
color_height | int | 0 | Color 流分辨率高度(像素) | 720 / 480 / 530 / 1080 |
color_fps | int | 0 | Color 流目标帧率(fps)。注意:hw_trigger 模式下代码会强制覆盖为 10 | 30 / 10 / 15 / 60 |
depth_width | int | 0 | Depth 流分辨率宽度(像素) | 1280 / 640 / 848 / 800 |
depth_height | int | 0 | Depth 流分辨率高度(像素) | 720 / 480 / 530 / 576 |
depth_fps | int | 0 | Depth 流目标帧率(fps)。注意:hw_trigger 模式下代码会强制覆盖为 10 | 30 / 10 / 15 / 60 |
字段依赖关系说明:
sync_mode仅在sync_enable=true时生效d2c_enable=true需要同时enable_color=true且enable_depth=true
| 型号 | 品牌 |
|---|---|
| Gemini 335L | Orbbec |
| Gemini 335 | Orbbec |
| Gemini 335 | Orbbec |
| Gemini 305L | Orbbec |
| Gemini 305 | Orbbec |
| Femto Bolt | Orbbec |
| RealSense D405 | Intel |
| RealSense D415 | Intel |
| RealSense D435 | Intel |
| RealSense D455 | Intel |
注:335 与 305 视为等价(305 可替代 335)。RealSense 相机通过 SN 匹配,只要 librealsense2 支持的设备均可运行,代码不做型号级白名单限制。