Add a camera calibration tool and a checkerboard to show on a screen
hermes_vision.calibrate collects 20 varied checkerboard views from the camera topic (rejecting repeats of a pose, which constrain nothing), solves with OpenCV and writes the camera_info YAML camera_ros loads, named with the resolution as it expects. Tested: the solver recovers a known synthetic camera (focal length within 1%), the YAML round-trips, and real board detection works on a rendered board. Not yet run on the real camera: it needs someone holding a board in front of it, with the focus set. docs/checkerboard-9x6.png is a 10x7-square board that can be shown on a screen. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AFN8nRRCiDiMN7ChBpHJhs
This commit is contained in:
+8
-3
@@ -264,9 +264,14 @@ unrelated photo scored 0.16. **Nobody is enrolled yet**; the owner enrols themse
|
||||
|
||||
## Next
|
||||
|
||||
1. **Camera calibration** (needs the owner and a flat checkerboard, printed or on a screen, with the
|
||||
square size measured): collect ~20 views at different poses, solve with OpenCV, write the
|
||||
camera_info YAML so `camera_ros` stops logging the missing-file error. V2's perception needs it.
|
||||
1. **Camera calibration: tool built and tested, not yet run.** `python3 -m hermes_vision.calibrate
|
||||
--cols 9 --rows 6 --square-mm <measured>` (after `source ~/robot-env.sh`, robot running) collects 20
|
||||
varied views of a checkerboard (`docs/checkerboard-9x6.png` can be shown on a screen; measure a
|
||||
square), solves with OpenCV and writes the camera_info YAML camera_ros looks for
|
||||
(`~/.ros/camera_info/ov5647__base_soc_i2c0mux_i2c_1_ov5647_36_1296x972.yaml`: the name includes the
|
||||
resolution). The solver recovers a known synthetic camera to within 1%. It needs the owner holding a
|
||||
board in front of the camera, and the lens focus set first (the lens turns if not glued; earlier
|
||||
close-range frames were blurry). V2's perception needs the result.
|
||||
2. Waiting on hardware: the servos (`hermes_head`, the pan/tilt URDF, then `head: true`), the speakers
|
||||
(playback, echo cancel, the `robot_mic` naming on the host, Hermes talking aloud), the fan (before
|
||||
any enclosure), the splitter, the printed enclosure (measure first, see `enclosure/README.md`).
|
||||
|
||||
Reference in New Issue
Block a user