传输数据压缩配置
请在本地hw_r2c_sdk-x.x.x/r2c_sdk_python/config文件夹找到机器人配置文件robot_{不同的机器人}_config.yaml,比如robot_flexiv_config.yaml。
传输数据压缩主要通过图像压缩配置实现,图像压缩通过机器人配置文件的device_to_r2c.mappings.transforms配置。
transforms图像转换器
在device_to_r2c.mappings.transforms指定转换器,对原始图像数据进行编码。
ndarray_to_* 转换器要求BGR输入。如果原始数据为RGB,需要先加rgb_to_bgr。
| 注册名 | 输入 | 输出 | 可调参数 |
|---|---|---|---|
| ndarray_to_jpeg | BGR ndarray | JPEG bytes | quality(默认95) |
| ndarray_to_webp | BGR ndarray | WebP bytes | quality(默认80) |
| ndarray_to_png | BGR ndarray | PNG bytes | 无(无损) |
| ros_image_to_jpeg | ROS Image | JPEG bytes | quality(默认95) |
| ros_image_to_webp | ROS Image | WebP bytes | quality(默认80) |
| ros_compressed_image_to_jpeg | ROS CompressedImage | JPEG bytes | quality(默认95) |
| ros_compressed_image_to_webp | ROS CompressedImage | WebP bytes | quality(默认80) |
| rgb_to_bgr | RGB ndarray | BGR ndarray | 无 |
transforms写法示例
# 写法 1: 单字符串
transforms: ndarray_to_jpeg
# 写法 2: 列表串联
transforms:
- rgb_to_bgr
- ndarray_to_webp
# 写法 3: 带 quality 参数
transforms:
- ndarray_to_webp:
quality: 70 图像压缩格式对比
| 特性 | JPEG | WebP | PNG |
|---|---|---|---|
| 压缩方式 | 有损 | 有损 | 无损 |
| quality范围 | 0~100 | 0~100 | - |
| 默认quality | 95 | 80 | - |
| 压缩比(640×480) | ≈20× | ≈32× | ≈2× |
| 编码耗时 | ≈1.4ms | ≈42ms | ≈47ms |
| 体积(vs JPEG) | 基准 | 小35%~40% | 大9× |
| 适用场景 | 通用生产 | 带宽受限 | 调试/精确比对 |
不同编码方式的带宽参考
以2路640×480相机20Hz为例,带宽参考如表3。
| 编码方式 | 带宽 | 适用网络 |
|---|---|---|
| raw(无压缩) | ≈282Mbps | 仅本地测试 |
| PNG | ≈64Mbps | 本地/有线 |
| JPEG q=80 | ≈15Mbps | 宽带/4G |
| WebP q=80 | ≈9Mbps | 4G/弱宽带 |
| WebP q=40 | ≈4Mbps | 极端低带宽 |
推荐在生产环境使用ndarray_to_webp(quality70~80),兼顾画质与带宽。
传输数据压缩典型场景配置示例
- ROS2场景(sensor_msgs/CompressedImage输入)
device_to_r2c: image_encoding: jpeg mappings: - target_key: "images.color.wrist" source_path: "streams.wrist" transforms: - ros_compressed_image_to_ndarray - bgr_to_rgb - ndarray_to_jpeg: quality: 80 - LeRobot/SDK直驱场景(numpy ndarray输入,RGB格式)
device_to_r2c: image_encoding: jpeg mappings: - target_key: "images.color.front" source_path: "front" transforms: - rgb_to_bgr - ndarray_to_webp: quality: 70 - Dummy仿真场景
device_to_r2c: image_encoding: jpeg mappings: - target_key: "images.color.wrist" source_path: "wrist" transforms: - ndarray_to_webp: quality: 70