Repository navigation
feat: wave 5 roadmap items (P4, M15, M31, M16, M22, M13, M17, P3) - #36
Merged
Merged
Conversation
Joint-to-joint capsules per link from the FrameChain. Every non-allowed pair is checked with PrimitiveDistance::CapsuleCapsule; adjacent links are allowed by default through a symmetric bit matrix. Reports the minimum signed distance, the attaining pair and a margin-based collision flag. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014WUWh44uw7k4JjMd6YkAwN
Screw-axis forward kinematics (base-frame screws, linear-first), the space Jacobian through running adjoints, conversion to the geometric Jacobian, and a FrameChain so GeometricJacobian applies unchanged. Pitched screws are rejected at construction. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014WUWh44uw7k4JjMd6YkAwN
A modified RNEA computes M qdd_r + C(q, qd) qd_r + g with the Christoffel-consistent C (Mdot - 2C skew-symmetric). CoriolisMatrix builds C column by column and also returns C^T qd. ChainInertialRegressor implements the new InertialRegressor interface with the 10-parameter-per-link regressor Y. The spatial motion/force algebra is added to the shared SpatialInertia.hpp. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014WUWh44uw7k4JjMd6YkAwN
Generalized-momentum residual on the M29 model and the M31 C^T q-dot product: a first-order estimate of the external joint torque with per-joint collision thresholds. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014WUWh44uw7k4JjMd6YkAwN
Streams M31 regressor rows into the upstream rank-revealing incremental QR least squares and reports the base-parameter estimate, its rank and the identifiable directions. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014WUWh44uw7k4JjMd6YkAwN
Full 6-DoF pose IK on any JacobianProvider: upstream Levenberg-Marquardt on the weighted SE(3) log-map error, manipulability-adaptive damping, step clamping and joint-limit projection. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014WUWh44uw7k4JjMd6YkAwN
Passive J^T stiffness/damping impedance with gravity compensation, and inertia-shaping impedance through the task-space inertia and a measured contact wrench. Adds the TaskError helper shared with M18/M19. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014WUWh44uw7k4JjMd6YkAwN
A* and Dijkstra on bounded 2-D/3-D grids: per-cell costs from a callable, an indexed binary heap with decrease-key, octile/Manhattan admissible heuristics and corner-cutting control, all in fixed storage. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014WUWh44uw7k4JjMd6YkAwN
✅
|
| Descriptor | Linter | Files | Fixed | Errors | Max errors | Warnings | Elapsed time |
|---|---|---|---|---|---|---|---|
| ✅ ACTION | actionlint | 7 | 0 | 0 | 0.42s | ||
| ✅ CPP | clang-format | 120 | 0 | 0 | 0 | 0.95s | |
| ✅ CPP | cppcheck | 120 | 0 | 0 | 1.7s | ||
| ✅ DOCKERFILE | hadolint | 1 | 0 | 0 | 0.39s | ||
| ✅ JSON | jsonlint | 8 | 0 | 0 | 0.08s | ||
| ✅ JSON | prettier | 8 | 2 | 0 | 0 | 0.3s | |
| ✅ MARKDOWN | markdownlint | 136 | 0 | 0 | 0 | 1.51s | |
| ✅ MARKDOWN | markdown-table-formatter | 136 | 0 | 0 | 0 | 0.18s | |
| lychee | 179 | 2 | 0 | 2.31s | |||
| ✅ YAML | prettier | 12 | 0 | 0 | 0 | 0.36s | |
| ✅ YAML | yamllint | 12 | 0 | 0 | 0.37s |
Detailed Issues
⚠️ SPELL / lychee - 2 errors
[ERROR] failed to verify TLS certificate: invalid peer certificate: UnknownIssuer
📝 Summary
---------------------
🔍 Total..........255
🔗 Unique.........101
✅ Successful.....243
⏳ Timeouts.........0
🔀 Redirected.......5
👻 Excluded.........9
❓ Unknown..........0
🚫 Errors...........2
⛔ Unsupported......2
Errors in .github/workflows/static-analysis.yml
[403] https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-$ (at 37:21) | Rejected status code: 403 Forbidden
Errors in doc/kinematics/InverseKinematics.md
[ERROR] https://mathweb.ucsd.edu/~sbuss/ResearchWeb/ikmethods/iksurvey.pdf (at 125:169) | SSL certificate not trusted. Use --insecure if site is trusted
Hint: Followed 5 redirects. You might want to consider replacing redirecting URLs with the resolved URLs. Use verbose mode (`-v`/`-vv`) to see redirection details.
Hint: You can configure accepted/rejected response codes with `-a` or `--accept`
Notices
REPOSITORY_GITLEAKS, REPOSITORY_KICS. See Removed linters to find their replacements.
See detailed reports in MegaLinter artifacts
Your project could benefit from a custom flavor, which would allow you to run only the linters you need, and thus improve runtime performances. (Skip this info by defining FLAVOR_SUGGESTIONS: false)
- Documentation: Custom Flavors
- Command:
npx mega-linter-runner@10.1.0 --custom-flavor-setup --custom-flavor-linters ACTION_ACTIONLINT,CPP_CPPCHECK,CPP_CLANG_FORMAT,DOCKERFILE_HADOLINT,JSON_JSONLINT,JSON_PRETTIER,MARKDOWN_MARKDOWNLINT,MARKDOWN_MARKDOWN_TABLE_FORMATTER,SPELL_LYCHEE,YAML_PRETTIER,YAML_YAMLLINT

Show us your support by starring ⭐ the repository
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014WUWh44uw7k4JjMd6YkAwN
|
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.



Wave 5 of the roadmap: eight ★★★ items, one commit each. Every commit adds the header, its coverage instantiations, the spec's tests, a doc page and the index rows, and deletes the spec from
roadmap/. 27 specs remain.c48c944planningFrameChain; minimum signed distance, attaining pair, allowed-pair bit matrix, margin flagda79aebkinematicsFrameChainoutput77795d7dynamicsC),CoriolisMatrix(C,Cᵀq̇),InertialRegressor/ChainInertialRegressor(10 params per link)ec48168dynamicsCᵀq̇, per-joint collision thresholdsf176e36dynamicsIncrementalQrLeastSquares; base-parameter rank and directions8141e78kinematics755b179controllers/manipulatorJᵀ(Ke + Dė) + gand inertia-shaping variants; ships the sharedTaskError.hppfor M18/M1994c27efplanningNotable changes
SpatialInertia.hppgains the spatial motion/force algebra used by M31:SpatialMotion,MotionCross,ForceCross,ApplyandTransformMotionToChild.robotics.planning→robotics.kinematicsrobotics.dynamics→numerical.estimatorsrobotics.kinematics→numerical.optimizationrobotics.controllers.manipulator→robotics.kinematics,numerical.solvercontrollers/manipulatortest target now linksrobotics.kinematics_test_doubles.roadmap/README.mdnow uses OperationalSpaceControl as its canonical example, because ImpedanceControl shipped. The M18/M19 specs point at the shippedTaskError.hpp, and the SlotineLi spec points at the shipped M31 headers.Spec deviations
K_O·dt = 0.05, the light-rod discretization residual exceeded 1e-2. TheCᵀq̇test bounds the residual at 5 % of the|Cᵀq̇ − Cq̇|drift (about 6.6 N·m at q̇ = (3, −4)), not at an absolute value.IdentificationResultmirrors the upstreamLeastSquaresResult, withrowSpacerenamed tobaseDirections.PoseIkProblemandManipulabilityDampingare instantiated for coverage as well.λ₀ > 0is not asserted, because the spec's own stale-error test usesλ₀ = 0.jacobian_transpose_maps_wrenchuses the non-symmetricJ = [[1, 0.5], [0, 2]]instead of a diagonal one, soJᵀandJgive different results.Faces/Full,AStar/Dijkstra).<float, 8, 6>and<float, 3, 3, 3>, plus theSearchmember template for a function-reference cost, to match the tests. The spec named<64, 64>and<16, 16, 16>, which the tests never use.Verification
host-single-Debugand coveragectest: 5/5 suites pass.CoriolisMatrix::TransposeTimesVelocityis now covered by the M16 tests.clang-format --dry-run --Werrorand a Clang-Wall -Wextra -Werrorsyntax check pass on the coverage sources.scripts/validate-docs.pypasses, no doc line is over 400 characters, and the tables are aligned.hostpreset, MSVC, cppcheck, SonarCloud.Generated by Claude Code