Repository navigation
feat: mobile wave roadmap items (F1, W1–W10, E2, M24) - #38
Merged
Merged
Conversation
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014WUWh44uw7k4JjMd6YkAwN
New mobile module. Dead reckoning on SE(2): exact arc integration of a body twist with the SE(2) exponential and per-step renormalisation, body-frame odometry increments through the logarithm, and the increment noise model shared by the localization filters. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014WUWh44uw7k4JjMd6YkAwN
Unicycle kinematics of a two-wheel axle: forward and inverse maps, curvature-preserving wheel saturation through the shared ScaleToLimit, the achievable twist and the speed envelope. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014WUWh44uw7k4JjMd6YkAwN
Kinematic bicycle twist at the rear axle or any point ahead of it (the SE(2) adjoint), steering for a curvature, steering angle and rate limits, Ackermann wheel angles and the minimum turning radius. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014WUWh44uw7k4JjMd6YkAwN
Swedish-wheel and mecanum kinematics for any layout of three or more wheels: wheel Jacobian, pseudo-inverse from one Cholesky factorization, least-squares forward kinematics, slip residual and uniform saturation. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014WUWh44uw7k4JjMd6YkAwN
ICR model for skid-steered and tracked vehicles: forward kinematics with lateral slip, inverse kinematics, shared curvature-preserving saturation and a closed-form least-squares ICR estimator with an excitation check. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014WUWh44uw7k4JjMd6YkAwN
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014WUWh44uw7k4JjMd6YkAwN
PlanarPath: bounded polyline with cumulative arc lengths, windowed closest-point projection with signed cross-track, and interpolation by arc length. PurePursuit: speed-scheduled look-ahead, monotone progress, circle-exit goal with end-of-path and off-path fallbacks, and the tangent-arc curvature command. The roadmap canonical example now points at OdometryFusion. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014WUWh44uw7k4JjMd6YkAwN
Lyapunov-stable trajectory tracking for unicycle-type bases: the reference is expressed in the robot frame and the feedforward velocity is corrected along track, cross track and in heading, with a critically damped gain helper. The roadmap index now links the shipped upstream SE2Transform doc instead of its removed spec. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014WUWh44uw7k4JjMd6YkAwN
Front-axle Stanley steering law for car-like vehicles on a PlanarPath: heading error plus a speed-softened arctangent of the cross-track error, monotone path progress, and the vehicle's steering angle and rate limits. Coverage instantiates the test path size alongside the spec's. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014WUWh44uw7k4JjMd6YkAwN
CarPath: up to five steering segments with signed lengths, total length and sampling by arc length with the SE(2) exponential. DubinsPlanner: closed-form evaluation of the six Dubins words with float-tolerant existence tests and 2*pi snapping. LSL and RSR take their straight length as a hypotenuse, since their discriminant is a sum of squares, and coincident positions use the start heading as the reference direction so any start equal to its goal gives a zero-length path. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014WUWh44uw7k4JjMd6YkAwN
New localization module. Bounded log-odds occupancy grid updated from range scans at known sensor poses: integer Bresenham rays clear the crossed cells and mark the end cell, readings at maximum range only clear, rays stop at the grid border and every cell is clamped. Cell queries give log odds, probability and an occupancy test. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014WUWh44uw7k4JjMd6YkAwN
Reactive local obstacle avoidance for unicycle-type bases: the dynamic window of reachable velocities is sampled on a fixed grid, each sample's closed-form arc clearance to body-frame obstacle points decides whether it can still stop, and the admissible samples are scored on normalised goal heading, clearance and speed. The README overview now lists the shipped families. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014WUWh44uw7k4JjMd6YkAwN
Shortest paths for a bounded-curvature car that may reverse: the eight Reeds-Shepp base formulas in OMPL's corrected form, expanded by time flip, reflection and the backwards variants into 44 candidates, with float-tolerant existence tests and the shared CarPath result. The emptied wheeled and planning roadmap tables now point at the shipped docs. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014WUWh44uw7k4JjMd6YkAwN
Combined world-frame Jacobian of a differential-drive base carrying an arm: forward-speed and yaw-rate columns with the tool lever arm, and the arm's geometric Jacobian rotated into the world through the base heading and the mount. Also the composed tool pose and the no-slip base constraint. Two long names in the README kinematics row are abbreviated to keep the table under the 400-character line limit. 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.52s | ||
| ✅ CPP | clang-format | 195 | 0 | 0 | 0 | 1.76s | |
| ✅ CPP | cppcheck | 195 | 0 | 0 | 3.17s | ||
| ✅ DOCKERFILE | hadolint | 1 | 0 | 0 | 0.37s | ||
| ✅ JSON | jsonlint | 8 | 0 | 0 | 0.09s | ||
| ✅ JSON | prettier | 8 | 2 | 0 | 0 | 0.28s | |
| ✅ MARKDOWN | markdownlint | 94 | 0 | 0 | 0 | 2.0s | |
| ✅ MARKDOWN | markdown-table-formatter | 94 | 0 | 0 | 0 | 0.2s | |
| lychee | 141 | 2 | 0 | 2.28s | |||
| ✅ YAML | prettier | 12 | 0 | 0 | 0 | 0.44s | |
| ✅ YAML | yamllint | 12 | 0 | 0 | 0.46s |
Detailed Issues
⚠️ SPELL / lychee - 2 errors
[ERROR] failed to verify TLS certificate: invalid peer certificate: UnknownIssuer
📝 Summary
---------------------
🔍 Total..........347
🔗 Unique.........125
✅ Successful.....335
⏳ 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
…micWindowApproach ReedsSheppPlanner::Consider takes the formula and the length builder as template parameters instead of function pointers, the radius scaling loop iterates the segments directly, and Mirror uses 'using enum'. DynamicWindowApproach loops to a compile-time sample count and assigns each sample before reading it. 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.



Bumps numerical-toolbox to
dc147fb(SE2Transform, NT66) and ships every spec it unblocked, one commit per item.2bc4125dc147fb(NT66)02b0b45mobile(new)af66097mobile0c2bf08mobile45e1fa9mobilef751642+fc5a5b6mobilef863c93mobile4e43110mobile95641b0mobile7610314planning3246ceblocalization(new)7b5136eplanning8f4cfc3planning52c607akinematicsEach commit includes the header, coverage
.cpp, tests, doc, index rows, and removal of the spec and its roadmap rows.Deviations from the specs
Restart()assertion inclosed_loop_convergescoversRestart.Steeringenumerators are PascalCase (Left,Straight,Right).u ≥ −π/2check in 8.8, whichρ ≥ 0already implies.IsOccupiedandParameters()assertions.<float, 4>, OccupancyGridMap<float, 10, 10>and DWA<float, 5, 11>are instantiated alongside the spec's sizes, to match the test types.roadmap/README.mdcanonical example now points tolocalization/OdometryFusion.ROADMAP.mdtables are replaced by notes pointing to the shipped docs.Verification
ctest: 7/7.-Wall -Wextra -Werror -Wshadowwith-DROBOTICS_TOOLBOX_COVERAGE_BUILD.clang-format --dry-run --Werroron all changed C++.scripts/validate-docs.pyOK; no doc line over 400 characters; tables aligned.Generated by Claude Code