Ivan/feat/cameracalibrator go2#2123
Conversation
…nto apriltag-generator
Switch from mypy-ignore to types-reportlab>=4.5.0 (matches reportlab 4.5 in deps), matching the project's pattern for the other ~15 types-* packages. The stubs immediately caught a real bug — Canvas.setKeywords expects str | None, not list[str].
# Conflicts: # uv.lock
Add a top-level `pytest.importorskip("cv2.aruco")` if not already present so CI without the extra skips, not errors.
- tf.get warning block was indexing args[0]/args[1] unconditionally and crashed with IndexError when callers used keyword arguments. Fall back to kwargs lookup so the warning fires correctly either way. - test_make_pubsub_transport_jpeg_shm_uses_JpegShmTransport: the Python turbojpeg package imports fine without the native libturbojpeg.so, so importorskip didn't help. Probe TurboJPEG() and skip on RuntimeError.
Greptile SummaryThis PR extends the camera calibrator to support a live pubsub topic source (
Confidence Score: 4/5Safe to merge with awareness that the duplicate-frame-on-SPACE bug in the topic source remains unaddressed and will silently inflate calibration view counts. The fisheye calibration path, direct world→optical TF lookup, and Go2 YAML resource loading all look correct. The outstanding concern is that _capture_frames_from_topic._next() never clears latest_frame[0] after returning it, so rapid SPACE presses before a new frame arrives can silently add the same frame to accepted multiple times. dimos/utils/cli/cameracalibrate/cameracalibrate.py (_next() frame-clearing logic), dimos/protocol/tf/tf.py (warning log level) Important Files Changed
Reviews (14): Last reviewed commit: "Merge branch 'main' into ivan/feat/camer..." | Re-trigger Greptile |
…alOS/dimos into ivan/feat/cameracalibrator_go2
builds upon april tag camera calibrator (#2107) makes it usable with go2
--source topic --topic <proto>:<channel>subscribes to a running pubsub stream--distortion-model {plumb_bob,fisheye}(defaultplumb_bobfor back-compat)dimos/robot/unitree/go2/front_camera_720.yaml, fit with the new fisheye path and consumed byGO2ConnectionviaCameraInfo.from_yaml. Moves out ofparams/and into thego2package directory so it ships as a packaged resource