Repository navigation
feat: wave 1 roadmap items (M33, M28, P1, M5, M34) - #33
Merged
Merged
Conversation
Joint-space C2 trajectory through timed via points on upstream math::CubicSpline (NT61), rest-to-rest by default. Creates the trajectory module and the shared JointTrajectoryState type. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014WUWh44uw7k4JjMd6YkAwN
O(n^2) joint-space mass matrix from composite inertias, exactly symmetric. ABA's spatial-inertia and wrench transforms move into the shared SpatialInertia.hpp so ABA and CRBA use one implementation. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014WUWh44uw7k4JjMd6YkAwN
Closed-form closest points and signed distances between points, segments, spheres, capsules and oriented boxes. Creates the planning module; P2, P4 and P5 build on these queries. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014WUWh44uw7k4JjMd6YkAwN
Globally stable set-point regulator tau = Kp e - Kd qdot + g(q) on the shipped EulerLagrangeDynamics interface. Creates the controllers/manipulator module and a MockEulerLagrangeDynamics test double. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014WUWh44uw7k4JjMd6YkAwN
Fixed-step simulation step for a link chain: ABA exposed as upstream SecondOrderSystem/OdeSystem and advanced by SemiImplicitEuler (NT58) or RungeKutta4, with the step-start acceleration logged. 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.68s | ||
| ✅ CPP | clang-format | 53 | 0 | 0 | 0 | 0.93s | |
| ✅ CPP | cppcheck | 53 | 0 | 0 | 1.45s | ||
| ✅ DOCKERFILE | hadolint | 1 | 0 | 0 | 0.64s | ||
| ✅ JSON | jsonlint | 8 | 0 | 0 | 0.12s | ||
| ✅ JSON | prettier | 8 | 2 | 0 | 0 | 0.52s | |
| ✅ MARKDOWN | markdownlint | 175 | 0 | 0 | 0 | 2.6s | |
| ✅ MARKDOWN | markdown-table-formatter | 175 | 0 | 0 | 0 | 0.24s | |
| lychee | 217 | 2 | 0 | 2.45s | |||
| ✅ YAML | prettier | 12 | 0 | 0 | 0 | 0.54s | |
| ✅ YAML | yamllint | 12 | 0 | 0 | 0.65s |
Detailed Issues
⚠️ SPELL / lychee - 2 errors
[ERROR] failed to verify TLS certificate: invalid peer certificate: UnknownIssuer
📝 Summary
---------------------
🔍 Total..........165
🔗 Unique..........81
✅ Successful.....153
⏳ 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 124: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
Apply the markdown-table-formatter suggestions on PR #33 (ROADMAP planning table and the five new complexity tables) and wrap four paragraph lines that exceeded markdownlint's 400-character MD013 limit. Text is unchanged. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014WUWh44uw7k4JjMd6YkAwN
Addresses the SonarCloud finding on PR #33: the articulated-body solver held by ChainAccelerationSystem is an empty class, so it takes no storage. 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.



First wave of roadmap specs, picked as the cheapest items that need nothing beyond the current numerical-toolbox pin (
63c9b91). Each item is one self-contained commit perroadmap/DEPLOYMENT.md: header, coverage.cpp, tests limited to the spec's cases, CMake, doc page and doc-table rows. The same commit deletes the item'sroadmap/spec and its rows inROADMAP.mdandroadmap/README.md.Items
c6d6530math::CubicSpline(NT61). Creates thetrajectorymodule and the sharedTrajectoryTypes.hpp(JointTrajectoryState).e385f73robotics/dynamics/SpatialInertia.hpp, so ABA and CRBA use one implementation. ABA's public API is unchanged.0a106a9planningmodule.f914ff8τ = Kp·e − Kd·q̇ + g(q)on the existingEulerLagrangeDynamicsinterface. Createscontrollers/manipulator(targetrobotics.controllers.manipulator) and arobotics.dynamics_test_doublestarget withMockEulerLagrangeDynamics.736a5aaSecondOrderSystem/OdeSystemand stepped bySemiImplicitEuler(NT58) orRungeKutta4.Changes from the specs
SphereCapsule, sorounded_pairs_subtract_the_radiigets one extra assertion for it.<float, 1, RungeKutta4>and<float, 2, SemiImplicitEuler>, not the spec's two 2-link versions. Only the instantiations in the coverage.cppare measured, and the tests use the 1-link RK4 pendulum.roadmap/README.md: its canonical worked example linked to the M5 spec this PR deletes, so it now points to ComputedTorqueControl.RobotArmSimulator::StepChainis not switched to M34 yet, although the M34 spec suggests it. That change needs the Qt build.Verification
host-single-Debugconfigure, build andctest: 5/5 test executables pass.EMIL_ENABLE_COVERAGE=On, simulator off): 5/5 pass. Merged gcov line coverage of the new headers is 98.7–100%:python scripts/validate-docs.pypasses, the new C++ is formatted with clang-format, and a grep of the new files finds no heap containers,#pragma GCC optimize, plainTEST(,NiceMockor comments.Not run locally: the
hostpreset with the Qt simulator, cppcheck/clang-tidy, and SonarQube. CI covers these.Next
Wave 2 needs SE(2) (NT66) built in numerical-toolbox-cpp, then a pin bump, before F1 and W1–W3. Wave 3 (M1, M30, M8+M7, M29) needs nothing upstream.
Generated by Claude Code