2026-07-29 16:14:53 +08:00
|
|
|
# AE/AWB Lock Test
|
|
|
|
|
|
|
|
|
|
This sample exposes a test-only ROS 2 action that verifies the AE/AWB capture and manual
|
2026-07-29 17:00:10 +08:00
|
|
|
lock-in flow through the camera driver's services and color-frame metadata.
|
2026-07-29 16:14:53 +08:00
|
|
|
|
|
|
|
|
Run the camera driver and this sample in the same namespace:
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
ros2 run orbbec_camera ae_awb_lock_test_node --ros-args -r __ns:=/camera
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
Send a goal and print feedback:
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
ros2 action send_goal \
|
|
|
|
|
/camera/run_ae_awb_lock_test \
|
|
|
|
|
orbbec_camera_msgs/action/RunAeAwbLockTest \
|
|
|
|
|
"{timeout_ms: 10000}" \
|
|
|
|
|
--feedback
|
|
|
|
|
```
|
|
|
|
|
|
2026-07-29 17:00:10 +08:00
|
|
|
The sample subscribes to the relative `color/metadata` topic. It enables auto exposure and auto
|
|
|
|
|
white balance, waits until the SDK status equals `1`, captures exposure, color gain, and color
|
|
|
|
|
temperature from the latest color-frame metadata, and reads AWB R/B/G gains through the structured
|
|
|
|
|
property service. It then disables the auto controls and writes the captured values back in this
|
|
|
|
|
order:
|
2026-07-29 16:14:53 +08:00
|
|
|
|
|
|
|
|
1. Color exposure
|
|
|
|
|
2. Color gain
|
|
|
|
|
3. AWB R/B/G gains
|
|
|
|
|
4. Color temperature
|
|
|
|
|
|
|
|
|
|
The final AWB gain readback must exactly match the captured value. Other readback differences are
|
|
|
|
|
reported as warnings because the device may quantize those controls. On failure or cancellation,
|
|
|
|
|
the sample restores auto exposure and auto white balance.
|
|
|
|
|
|
|
|
|
|
Every feedback phase contains a fresh status value read from the camera service. The
|
|
|
|
|
`waiting_for_services` feedback is published after all required services become available, because
|
|
|
|
|
the status cannot be read before its service is ready.
|
2026-07-29 17:00:10 +08:00
|
|
|
|
|
|
|
|
The color stream must be enabled, and `/camera/color/metadata` must be available when using the
|
|
|
|
|
`/camera` namespace. The action fails instead of writing default values if no metadata arrives
|
|
|
|
|
within two seconds or if `exposure`, `gain`, or `white_balance` is missing.
|