Repository navigation
feat: wave 6 roadmap items (M26, M21, M20, M18, M19, P6, M23, M25, P5) - #37
Merged
Merged
Conversation
Piecewise constant-curvature arcs: a singularity-free section transform (series below |theta| = 1e-2), multi-section forward kinematics by SE(3) composition and the closed-form single-section inverse. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014WUWh44uw7k4JjMd6YkAwN
Closed-form OPW inverse kinematics for ortho-parallel 6R arms with a spherical wrist: all eight shoulder/elbow/wrist configurations in eight fixed slots, wrist-singular handling and closed-form forward kinematics. sin(theta5) is taken from the wrist matrix's third column so the singular branch triggers only at rounding level in single precision. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014WUWh44uw7k4JjMd6YkAwN
Passivity-based adaptive tracking: sliding variable and reference motion, regressor feedforward with sliding-variable damping, and the -Gamma Y^T s parameter update. Adds the MockInertialRegressor test double. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014WUWh44uw7k4JjMd6YkAwN
Task-space control through the task inertia (optionally damped near singularities), full joint-space Coriolis/gravity compensation and a dynamically consistent null-space projector for secondary torques. The roadmap canonical example now points at PurePursuit. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014WUWh44uw7k4JjMd6YkAwN
Constraint-frame selection between a motion PD and a damped force PI with element-wise anti-windup, mapped through J^T with gravity and Coriolis compensation. The selection matrix is checked to be diagonal 0/1. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014WUWh44uw7k4JjMd6YkAwN
Bidirectional RRT-Connect in joint space with fixed node pools, an injected sampler and validity test, discrete edge checking and random shortcutting. Coverage instantiations match the test sizes and the function-reference callables the tests pass. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014WUWh44uw7k4JjMd6YkAwN
StewartGoughKinematics: closed-form leg lengths, the leg Jacobian and Newton/Levenberg-Marquardt forward kinematics on SE(3) through the upstream solver. DeltaKinematics: closed-form per-arm inverse and three-sphere forward kinematics. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014WUWh44uw7k4JjMd6YkAwN
Structure matrix from cable geometry, Pott's improved closed-form tension distribution within [tMin, tMax] with worst-cable clamping, and an exact least-distance QP through the upstream active-set solver for wrenches near the workspace boundary. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014WUWh44uw7k4JjMd6YkAwN
Support-function distance between spheres, capsules, oriented boxes and convex hulls: GJK on the shape cores with radii as margins, Johnson's sub-algorithm by enumeration, and a bounded EPA with centroid-oriented faces and coplanar-visible removal for penetration depth and normal. 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.46s | ||
| ✅ CPP | clang-format | 151 | 0 | 0 | 0 | 1.47s | |
| ✅ CPP | cppcheck | 151 | 0 | 0 | 2.53s | ||
| ✅ DOCKERFILE | hadolint | 1 | 0 | 0 | 0.39s | ||
| ✅ JSON | jsonlint | 8 | 0 | 0 | 0.08s | ||
| ✅ JSON | prettier | 8 | 2 | 0 | 0 | 0.36s | |
| ✅ MARKDOWN | markdownlint | 118 | 0 | 0 | 0 | 1.78s | |
| ✅ MARKDOWN | markdown-table-formatter | 118 | 0 | 0 | 0 | 0.2s | |
| lychee | 161 | 3 | 0 | 38.08s | |||
| ✅ YAML | prettier | 12 | 0 | 0 | 0 | 0.41s | |
| ✅ YAML | yamllint | 12 | 0 | 0 | 0.44s |
Detailed Issues
⚠️ SPELL / lychee - 3 errors
[ERROR] failed to verify TLS certificate: invalid peer certificate: UnknownIssuer
📝 Summary
---------------------
🔍 Total..........290
🔗 Unique.........110
✅ Successful.....277
⏳ Timeouts.........0
🔀 Redirected.......5
👻 Excluded.........9
❓ Unknown..........0
🚫 Errors...........3
⛔ Unsupported......3
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
Errors in ROADMAP.md
[504] https://github.com/embedded-pro/numerical-toolbox-cpp/blob/main/doc/solvers/SymplecticIntegrators.md (at 53:89) | Rejected status code: 504 Gateway Timeout
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
- CableTensionDistribution: split Distribute into SolveFree and WorstViolation (cognitive complexity). - ConvexCollision: extract ToggleHorizonEdge and AppendIfIndependent; loop conditions only test their counters (complexity, nesting, loop-invariant conditions). - RrtConnect: invoke the forwarded callable directly in Shortcut. - DeltaKinematics: azimuth tables as in-class static constexpr arrays. 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 6 of the roadmap: the nine ★★★★ items that need nothing unshipped from upstream. Each commit adds the header, its coverage instantiations, the spec's tests, a doc page and the index rows, and deletes the spec from
roadmap/. 18 specs remain: M27 (TOPP-RA) and 17 items blocked on upstream NT66/NT67/NT70/NT74.191bcf9kinematics1644faekinematicsbd9b386controllers/manipulatorMockInertialRegressor1f75616controllers/manipulatorffe37accontrollers/manipulatordb9f84fplanning866a669kinematics0196780controllers/manipulatorActiveSetQp)da3f252planningNotable changes
robotics.controllers.manipulatornow linksinfra.util, for thereally_asserton the M19 selection matrix.roadmap/README.mdnow usesmobile/PurePursuitas its canonical example, because OperationalSpaceControl shipped. The emptycontrollers/manipulatorindex section is removed.Spec deviations
acosdenominator.jacobian_transpose_maps_wrenchuses the non-symmetricJ = [[1, 0.5], [0, 2]], soJᵀandJgive different results.<2, 256>,<2, 10>) and the function-reference callables the tests pass toPlanandShortcut, as in P3. The test sampler is a free function with a file-local xorshift32 state.<16, 8>instantiation for the face-budget test.PlanStatus::Found,ShapeKind::Box, …).Verification
host-single-Debugand coveragectest: 5/5 suites pass.ConvexCollision.hpp(99.2 %). Its two uncovered lines guard against zero-area EPA faces, which the coplanar-visibility rule prevents.clang-format --dry-run --Werrorand a Clang-Wall -Wextra -Werror -Wshadowsyntax check pass on every coverage source.scripts/validate-docs.pypasses, no doc line is over 400 characters, and every touched table is aligned.hostpreset, MSVC, cppcheck, SonarCloud.Generated by Claude Code