feat(video,calib3d): no_std support (Phase 3) - #89
Merged
Conversation
Phase 3 (#85) concluded the exploration with "port both": the audit found no hard blockers — calib3d RANSAC uses its own self-contained LCG PRNG (not the std-gated thread-local RNG), and neither module uses HashMap/Instant/ threads. Un-gates `video` and `calib3d` (and their prelude re-exports). Refs #85 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Mechanical std::->core:: conversion, alloc imports (vec/Vec/format/ToString), and num_traits::Float where concrete f32/f64 math is used. optical_flow's SIMD-only vec! import is gated behind the simd feature. No behavior change. Refs #85 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Adds rodrigues (calib3d) and build_optical_flow_pyramid (video) to the no_std smoke crate, extends the CI job name, and documents the per-module no_std support matrix in the README. Refs #85 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Concludes the exploratory Phase 3 (#85) with "port both" and implements it:
video(optical flow) andcalib3d(pose estimation, SVD) now compile underno_std + alloc.Why port (the exploration result)
The audit found no hard blockers:
videohad none,calib3dhad 4 trivialstd::paths (f64::consts,cmp::Ordering).solve_pnp_ransac,find_homography,find_fundamental_mat) uses its own self-containedLcgPRNG (fixed-seed, pure arithmetic), not the std-gated thread-local RNG that forcedhough_lines_pto stay std-only in Phase 2.HashMap,Instant,thread_local, orprintlnin either module.Vec/vec!/to_string/Float/std::→core::/format!classes as Phase 2.Memory: calib3d's SVD runs on tiny matrices (trivial);
video's optical-flow pyramids are heap-heavy but feasible at low resolution — documented as the one caveat.Changes
video+calib3d(module + prelude re-exports) inlib.rs.std::→core::,allocimports, andnum_traits::Floatwhere concretef32/f64math is used.optical_flow's SIMD-onlyvec!import is gated behindsimd.crates/no-std-smokenow also exercisesrodrigues(calib3d) andbuild_optical_flow_pyramid(video), so the bare-metal build covers all four no_std modules.no_std Buildjob renamed to cover core + imgproc + calib3d + video.no_std/ embedded support" section with a per-module support matrix (satisfies [no_std] Phase 3 (exploratory) — evaluate video/calib3d on embedded targets #85's documentation acceptance criterion).Verification
--no-default-featuresbuilds clean on host andthumbv7em-none-eabihf.thumbv7emexercising all four modules; ESP32-S3 examples build against this tree.After this, the whole
core+imgproc+calib3d+videosurface isno_std; onlyfeatures2dremains std-gated.Closes #85
Refs #82
🤖 Generated with Claude Code