Conversation
|
Warning Rate limit exceeded
To keep reviews running without waiting, you can enable usage-based add-on for your organization. This allows additional reviews beyond the hourly cap. Account admins can enable it under billing. ⌛ How to resolve this issue?After the wait time has elapsed, a review can be triggered using the We recommend that you space out your commits to avoid hitting the rate limit. 🚦 How do rate limits work?CodeRabbit enforces hourly rate limits for each developer per organization. Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout. Please see our FAQ for further information. ℹ️ Review info⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (8)
📝 WalkthroughWalkthroughThis PR introduces a configurable covariance estimation system for the ICP algorithm, enabling selection between Changes
Sequence Diagram(s)sequenceDiagram
participant ICP as ICP::align
participant Cov as covariance()
participant InvH as covariance_inverse_hessian()
participant Censi as covariance_censi3d()
participant Floor as apply_floor()
ICP->>Cov: Call with p.covariance_params
alt No pairings
Cov-->>ICP: Return diagonal fallback
else Pairings exist
Cov->>Cov: Check param.method
alt method == InverseHessian
Cov->>InvH: Numeric Jacobian approach
InvH->>InvH: Per-pair Cholesky whitening
InvH->>Floor: Result matrix
else method == Censi3D
Cov->>Censi: Analytic sandwich approach
Censi->>Censi: Per-pair covariance inverse
Censi->>Floor: Result matrix
end
Floor->>Floor: Apply diagonal variance floor
Floor-->>Cov: Stabilized covariance matrix
Cov-->>ICP: Return computed covariance
end
Estimated Code Review Effort🎯 3 (Moderate) | ⏱️ ~25 minutes Possibly Related PRs
Poem
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Review rate limit: 0/1 reviews remaining, refill in 19 minutes and 12 seconds.Comment |
There was a problem hiding this comment.
Actionable comments posted: 2
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@mp2p_icp/src/covariance.cpp`:
- Around line 264-267: In covariance_censi3d(), guard the unconditional
Eigen::LDLT<M6> Hldlt(H) and subsequent solves (Hldlt.solve(M),
Hldlt.solve(...)) by checking the decomposition succeeded and that H is positive
definite (e.g., verify Hldlt.info()==Eigen::Success and Hldlt.isPositive()); if
the check fails (singular/near-singular H) return the same conservative fallback
covariance (1e6 on diagonal) used for empty pairings instead of calling
Hldlt.solve on a bad factorization; ensure the early-return prevents computing
Hinv_M and cov_eigen when the LDLT is invalid.
In `@mp2p_icp/src/Parameters.cpp`:
- Around line 95-98: The binary CSerializable path currently omits
covariance_params causing YAML-loaded covariance to be lost; update
serializeGetVersion(), serializeTo(CArchive&), and serializeFrom(CArchive&, int)
to include all six CovarianceParameters fields (method, defaultPointSigma,
floor_sigma_xyz, floor_sigma_angles, finDif_xyz, finDif_angles) in the binary
stream alongside covariance_params (or by serializing covariance_params as a
struct), so that serializeTo writes and serializeFrom reads these fields and
serializeGetVersion increments/reflects any version change; reference
covariance_params, CovarianceParameters, serializeGetVersion, serializeTo, and
serializeFrom when making the changes.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: defaults
Review profile: CHILL
Plan: Pro
Run ID: 4bf361e4-c6bf-4cbc-9ef6-efaf8e72e165
📒 Files selected for processing (8)
mp2p_icp/include/mp2p_icp/Parameters.hmp2p_icp/include/mp2p_icp/covariance.hmp2p_icp/src/ICP.cppmp2p_icp/src/Parameters.cppmp2p_icp/src/covariance.cpptests/CMakeLists.txttests/test-mp2p_censi3d_covariance.cpptests/test-mp2p_pipeline_from_yaml.cpp
d0c4f63 to
0258aaa
Compare
Summary by CodeRabbit
New Features
Tests