Skip to content

feat(filters): add ParticleFilter (NT70) - #369

Merged
gabrielfrasantos merged 1 commit into
mainfrom
claude/particle-filter-nt70
Nov 6, 2026
Merged

gabrielfrasantos merged 1 commit into
mainfrom
claude/particle-filter-nt70

Conversation

@gabrielfrasantos

Copy link
Copy Markdown
Contributor

Implements roadmap item 70 from roadmap/filters/active/ParticleFilter. robotics-toolbox-cpp consumes it as NT70: its E4 MonteCarloLocalization spec carries its particles in this filter.

What

numerical/filters/active/ParticleFilter.hpp provides ParticleFilter<T, StateSize, NumParticles>, a bounded SIR (sequential importance resampling) filter with no heap and no internal random generator.

  • Storage: two compile-time particle buffers (current and resampling target), plus normalised weights and a log-domain scratch array.
  • Callables: Initialize(draw), Predict(propagate) and Update(logLikelihood) take their callables as template parameters, so captured state of any size is allowed and the calls inline.
  • Update: works in the log domain and subtracts the maximum, so long likelihoods cannot underflow. When every log-likelihood is −∞, it returns false and leaves the weights unchanged.
  • Resampling: EffectiveSampleSize(), systematic Resample(u) from one caller-provided uniform (with the j < N − 1 guard), and ResampleIfNeeded(fraction, u).
  • Accessors: Mean(), MaximumWeight(), mutable and const Particles() (for kidnapped-robot injection), and Weights().

Files: header, coverage .cpp, tests (the 7 spec cases), CMake, doc/filters/active/ParticleFilter.md, and rows in doc/filters/README.md and README.md. The spec directory and item 70's ROADMAP.md entries are removed. The items paragraph now lists 68, 69 and 71–73 as the remaining, unspecified items.

Deviations from the spec

  • Coverage instantiation: the coverage build also instantiates the test sizes <1, 41> and <1, 4>, plus the member templates for the test callables (function references, with matching extern template under NUMERICAL_TOOLBOX_COVERAGE_BUILD). The test translation unit is not instrumented, so this is what counts the callable paths.
  • Log-domain tolerance: the check that "ℓ − 1000 gives identical weights" compares at 1e-5. The shift costs about 6e-5 of absolute precision in the float log-weights, so the weights differ by about 1e-6. The property under test, that nothing underflows, holds either way.
  • Extra assertion: predict_moves_every_particle_and_keeps_weights reads one particle through the mutable Particles() overload.

Verification

  • host-single-Debug and the coverage build: ctest 15/15.
  • 100% merged line coverage on the header.
  • Clang -Wall -Wextra -Werror -Wshadow with -DNUMERICAL_TOOLBOX_COVERAGE_BUILD.
  • clang-format --dry-run --Werror.
  • scripts/validate-docs.py OK, and the new doc lines stay under 400 characters.
  • Not run locally: MSVC, cppcheck, SonarCloud, QEMU.

Generated by Claude Code

Bounded sequential importance resampling: two compile-time particle
buffers, caller-supplied draw, motion and log-likelihood callables, a
log-domain update with max subtraction that rejects an impossible
measurement without touching the weights, the effective sample size,
systematic resampling from a caller-provided uniform, and weighted-mean
and maximum-weight estimates.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014WUWh44uw7k4JjMd6YkAwN
@sonarqubecloud

sonarqubecloud Bot commented Nov 6, 2026

Copy link
Copy Markdown

@github-actions

github-actions Bot commented Nov 6, 2026

Copy link
Copy Markdown
Contributor

✅⚠️MegaLinter analysis: Success with warnings

Descriptor Linter Files Fixed Errors Max errors Warnings Elapsed time
✅ ACTION actionlint 7 0 0 0.62s
✅ CPP clang-format 488 9 0 0 4.47s
✅ CPP cppcheck 488 0 0 9.79s
✅ DOCKERFILE hadolint 1 0 0 0.46s
✅ JSON jsonlint 8 0 0 0.11s
✅ JSON prettier 8 8 0 0 0.48s
⚠️ MARKDOWN markdownlint 148 2 155 0 3.47s
✅ MARKDOWN markdown-table-formatter 148 11 0 0 0.37s
⚠️ SPELL lychee 259 23 0 47.46s
✅ YAML prettier 12 3 0 0 0.61s
✅ YAML yamllint 12 0 0 0.58s

Detailed Issues

⚠️ SPELL / lychee - 23 errors
📝 Summary
---------------------
🔍 Total..........621
🔗 Unique.........457
✅ Successful.....585
⏳ Timeouts.........1
🔀 Redirected.....151
👻 Excluded........11
❓ Unknown..........0
🚫 Errors..........23
⛔ Unsupported.....23

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 CHANGELOG.md
[404] https://github.com/embedded-pro/embedded-numerical-toolbox/issues/1 (at 206:31) | Rejected status code: 404 Not Found
[404] https://github.com/embedded-pro/embedded-numerical-toolbox/issues/12 (at 221:8) | Rejected status code: 404 Not Found
[404] https://github.com/embedded-pro/embedded-numerical-toolbox/issues/13 (at 220:7) | Rejected status code: 404 Not Found
[404] https://github.com/embedded-pro/embedded-numerical-toolbox/issues/18 (at 205:62) | Rejected status code: 404 Not Found
[404] https://github.com/embedded-pro/embedded-numerical-toolbox/issues/2 (at 213:34) | Rejected status code: 404 Not Found
[404] https://github.com/embedded-pro/embedded-numerical-toolbox/issues/24 (at 210:19) | Rejected status code: 404 Not Found
[404] https://github.com/embedded-pro/embedded-numerical-toolbox/issues/26 (at 211:30) | Rejected status code: 404 Not Found
[404] https://github.com/embedded-pro/embedded-numerical-toolbox/issues/3 (at 204:35) | Rejected status code: 404 Not Found
[404] https://github.com/embedded-pro/embedded-numerical-toolbox/issues/4 (at 214:34) | Rejected status code: 404 Not Found
[404] https://github.com/embedded-pro/embedded-numerical-toolbox/issues/6 (at 212:53) | Rejected status code: 404 Not Found
[404] https://github.com/embedded-pro/embedded-numerical-toolbox/issues/7 (at 209:32) | Rejected status code: 404 Not Found
[404] https://github.com/embedded-pro/embedded-numerical-toolbox/issues/9 (at 207:15) | Rejected status code: 404 Not Found

Errors in doc/filters/active/AhrsMadgwickMahony.md
[ERROR] file://doc/filters/ComplementaryFilter.md (at 131:3) | File not found. Check if file exists and path is correct

Errors in doc/filters/active/ExtendedKalmanFilter.md
[ERROR] file://doc/dynamics/EulerLagrange.md (at 130:3) | File not found. Check if file exists and path is correct

Errors in doc/filters/active/KalmanFilter.md
[ERROR] file://doc/filters/controllers/Lqr.md (at 114:77) | File not found. Check if file exists and path is correct
[ERROR] file://doc/filters/controllers/Lqr.md (at 133:3) | File not found. Check if file exists and path is correct
[ERROR] file://doc/filters/controllers/Pid.md (at 135:3) | File not found. Check if file exists and path is correct
[ERROR] file://doc/filters/solvers/DiscreteAlgebraicRiccatiEquation.md (at 134:3) | File not found. Check if file exists and path is correct

Errors in doc/performance-optimization/README.md
[403] https://developer.arm.com/documentation/100166/latest/ (at 472:3) | Rejected status code: 403 Forbidden
[403] https://developer.arm.com/documentation/dui0473/latest (at 474:3) | Rejected status code: 403 Forbidden
[TIMEOUT] https://embeddedartistry.com/ (at 475:3) | Request timed out

Errors in README.md
[ERROR] file:///releases/latest (at 39:14) | File not found. Check if file exists and path is correct
[404] https://embedded-pro.github.io/embedded-dsp-control/ (at 38:1) | Rejected status code: 404 Not Found

Hint: Followed 151 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`
⚠️ MARKDOWN / markdownlint - 155 errors
first-line-h1 First line in a file should be a top-level heading [Context: "Read `AGENTS.md` and `roadmap/..."]
.claude/agents/executor.md:8 error MD041/first-line-heading/first-line-h1 First line in a file should be a top-level heading [Context: "Canonical rules: `AGENTS.md`. ..."]
.claude/agents/orchestrator.md:8 error MD041/first-line-heading/first-line-h1 First line in a file should be a top-level heading [Context: "Triage requests and route to t..."]
.claude/agents/planner.md:8 error MD041/first-line-heading/first-line-h1 First line in a file should be a top-level heading [Context: "Canonical rules: `AGENTS.md`. ..."]
.claude/agents/reviewer.md:8 error MD041/first-line-heading/first-line-h1 First line in a file should be a top-level heading [Context: "Canonical rules: `AGENTS.md`. ..."]
.claude/agents/unit-tester.md:8 error MD041/first-line-heading/first-line-h1 First line in a file should be a top-level heading [Context: "Read `AGENTS.md`, `.github/ins..."]
.github/agents/algo-implementer.agent.md:11 error MD041/first-line-heading/first-line-h1 First line in a file should be a top-level heading [Context: "You deploy ONE algorithm at a ..."]
.github/agents/executor.agent.md:11 error MD041/first-line-heading/first-line-h1 First line in a file should be a top-level heading [Context: "Canonical rules: `AGENTS.md`. ..."]
.github/agents/orchestrator.agent.md:21 error MD041/first-line-heading/first-line-h1 First line in a file should be a top-level heading [Context: "Triage requests and route to t..."]
.github/agents/planner.agent.md:11 error MD041/first-line-heading/first-line-h1 First line in a file should be a top-level heading [Context: "Canonical rules: `AGENTS.md`. ..."]
.github/agents/reviewer.agent.md:14 error MD041/first-line-heading/first-line-h1 First line in a file should be a top-level heading [Context: "Canonical rules: `AGENTS.md`. ..."]
.github/agents/unit-tester.agent.md:11 error MD041/first-line-heading/first-line-h1 First line in a file should be a top-level heading [Context: "You add or extend the unit tes..."]
.github/instructions/numerical-cpp.instructions.md:71:401 error MD013/line-length Line length [Expected: 400; Actual: 615]
.github/instructions/numerical-cpp.instructions.md:76:401 error MD013/line-length Line length [Expected: 400; Actual: 423]
.github/prompts/orchestrate.prompt.md:8:401 error MD013/line-length Line length [Expected: 400; Actual: 496]
.github/prompts/orchestrate.prompt.md:8 error MD041/first-line-heading/first-line-h1 First line in a file should be a top-level heading [Context: "Analyze the following task for..."]
.github/prompts/unit-test.prompt.md:8 error MD041/first-line-heading/first-line-h1 First line in a file should be a top-level heading [Context: "Author (or extend) the unit te..."]
CHANGELOG.md:26 error MD024/no-duplicate-heading Multiple headings with the same content [Context: "Bug Fixes"]
CHANGELOG.md:38 error MD024/no-duplicate-heading Multiple headings with the same content [Context: "Bug Fixes"]
CHANGELOG.md:52 error MD024/no-duplicate-heading Multiple headings with the same content [Context: "Build System"]
CHANGELOG.md:64 error MD024/no-duplicate-heading Multiple headings with the same content [Context: "Features"]
CHANGELOG.md:133 error MD024/no-duplicate-heading Multiple headings with the same content [Context: "Miscellaneous"]
CHANGELOG.md:151 error MD024/no-duplicate-heading Multiple headings with the same content [Context: "Build System"]
CHANGELOG.md:179 error MD024/no-duplicate-heading Multiple headings with the same content [Context: "⚠ BREAKING CHANGES"]
CHANGELOG.md:183 error MD024/no-duplicate-heading Multiple headings with the same content [Context: "Features"]
CHANGELOG.md:195 error MD024/no-duplicate-heading Multiple headings with the same content [Context: "Bug Fixes"]
CHANGELOG.md:202 error MD024/no-duplicate-heading Multiple headings with the same content [Context: "Features"]
CHANGELOG.md:218 error MD024/no-duplicate-heading Multiple headings with the same content [Context: "Bug Fixes"]
doc/analysis/Decibels.md:5:401 error MD013/line-length Line length [Expected: 400; Actual: 637]
doc/analysis/GoertzelAlgorithm.md:5:401 error MD013/line-length Line length [Expected: 400; Actual: 492]
doc/analysis/GoertzelAlgorithm.md:93:401 error MD013/line-length Line length [Expected: 400; Actual: 757]
doc/analysis/GoertzelAlgorithm.md:109:401 error MD013/line-length Line length [Expected: 400; Actual: 451]
doc/analysis/HilbertTransform.md:31:34 error MD056/table-column-count Table column count [Expected: 2; Actual: 4; Too many cells, extra data will be missing]
doc/analysis/PowerDensitySpectrum.md:5:401 error MD013/line-length Line length [Expected: 400; Actual: 509]
doc/analysis/PowerDensitySpectrum.md:104:20 error MD056/table-column-count Table column count [Expected: 2; Actual: 6; Too many cells, extra data will be missing]
doc/analysis/PowerDensitySpectrum.md:104:17 error MD060/table-column-style Table column style [Table pipe does not align with header for style "aligned"]
doc/analysis/PowerDensitySpectrum.md:104:20 error MD060/table-column-style Table column style [Table pipe does not align with header for style "aligned"]
doc/analysis/PowerDensitySpectrum.md:104:32 error MD060/table-column-style Table column style [Table pipe does not align with header for style "aligned"]
doc/analysis/PowerDensitySpectrum.md:104:38 error MD060/table-column-style Table column style [Table pipe does not align with header for style "aligned"]
doc/analysis/PowerDensitySpectrum.md:104:45 error MD060/table-column-style Table column style [Table pipe does not align with header for style "aligned"]
doc/analysis/PowerDensitySpectrum.md:104:135 error MD060/table-column-style Table column style [Table pipe does not align with header for style "aligned"]
doc/analysis/SignalDetectors.md:5:401 error MD013/line-length Line length [Expected: 400; Actual: 481]
doc/control_analysis/FrequencyResponse.md:5:401 error MD013/line-length Line length [Expected: 400; Actual: 469]
doc/control_analysis/README.md:11:68 error MD060/table-column-style Table column style [Table pipe does not align with header for style "aligned"]
doc/control_analysis/README.md:11:147 error MD060/table-column-style Table column style [Table pipe does not align with header for style "aligned"]
doc/control_analysis/README.md:12:53 error MD060/table-column-style Table column style [Table pipe does not align with header for style "aligned"]
doc/control_analysis/README.md:12:172 error MD060/table-column-style Table column style [Table pipe does not align with header for style "aligned"]
doc/control_analysis/README.md:13:68 error MD060/table-column-style Table column style [Table pipe does not align with header for style "aligned"]
doc/control_analysis/README.md:13:151 error MD060/table-column-style Table column style [Table pipe does not align with header for style "aligned"]
doc/control_analysis/RootLocus.md:69 error MD040/fenced-code-language Fenced code blocks should have a language specified [Context: "```"]
doc/control_analysis/TransferFunctionStateSpace.md:5:401 error MD013/line-length Line length [Expected: 400; Actual: 589]
doc/controllers/Feedforward2Dof.md:5:401 error MD013/line-length Line length [Expected: 400; Actual: 627]
doc/controllers/FrictionCompensation.md:5:401 error MD013/line-length Line length [Expected: 400; Actual: 420]
doc/controllers/FrictionCompensation.md:29:401 error MD013/line-length Line length [Expected: 400; Actual: 406]
doc/controllers/FrictionCompensation.md:44:401 error MD013/line-length Line length [Expected: 400; Actual: 436]
doc/controllers/GainScheduledController.md:7:401 error MD013/line-length Line length [Expected: 400; Actual: 454]
doc/controllers/LeadLagCompensator.md:5:401 error MD013/line-length Line length [Expected: 400; Actual: 639]
doc/controllers/Lqg.md:7:401 error MD013/line-length Line length [Expected: 400; Actual: 428]
doc/controllers/SaturationRateLimiter.md:5:401 error MD013/line-length Line length [Expected: 400; Actual: 451]
doc/controllers/SaturationRateLimiter.md:7:401 error MD013/line-length Line length [Expected: 400; Actual: 477]
doc/estimators/ExpectationMaximization.md:104:103 error MD060/table-column-style Table column style [Table pipe does not align with header for style "aligned"]
doc/estimators/LmsAdaptiveFilter.md:5:401 error MD013/line-length Line length [Expected: 400; Actual: 547]
doc/estimators/README.md:11:128 error MD056/table-column-count Table column count [Expected: 2; Actual: 3; Too many cells, extra data will be missing]
doc/estimators/README.md:11:128 error MD060/table-column-style Table column style [Table pipe does not align with header for style "aligned"]
doc/filters/active/AhrsMadgwickMahony.md:5:401 error MD013/line-length Line length [Expected: 400; Actual: 538]
doc/filters/active/AhrsMadgwickMahony.md:7:401 error MD013/line-length Line length [Expected: 400; Actual: 554]
doc/filters/active/AlphaBetaFilter.md:5:401 error MD013/line-length Line length [Expected: 400; Actual: 419]
doc/filters/active/AlphaBetaFilter.md:7:401 error MD013/line-length Line length [Expected: 400; Actual: 451]
doc/filters/active/KalmanSmoother.md:5:401 error MD013/line-length Line length [Expected: 400; Actual: 421]
doc/filters/active/KalmanSmoother.md:111:28 error MD060/table-column-style Table column style [Table pipe does not align with header for style "aligned"]
doc/filters/active/KalmanSmoother.md:111:61 error MD060/table-column-style Table column style [Table pipe does not align with header for style "aligned"]
doc/filters/active/KalmanSmoother.md:111:110 error MD060/table-column-style Table column style [Table pipe does not align with header for style "aligned"]
doc/filters/active/KalmanSmoother.md:122:19 error MD060/table-column-style Table column style [Table pipe does not align with header for style "aligned"]
doc/filters/active/KalmanSmoother.md:122:27 error MD060/table-column-style Table column style [Table pipe does not align with header for style "aligned"]
doc/filters/active/KalmanSmoother.md:122:67 error MD060/table-column-style Table column style [Table pipe does not align with header for style "aligned"]
doc/filters/active/KalmanSmoother.md:123:19 error MD060/table-column-style Table column style [Table pipe does not align with header for style "aligned"]
doc/filters/active/KalmanSmoother.md:123:27 error MD060/table-column-style Table column style [Table pipe does not align with header for style "aligned"]
doc/filters/active/KalmanSmoother.md:123:67 error MD060/table-column-style Table column style [Table pipe does not align with header for style "aligned"]
doc/filters/active/KalmanSmoother.md:124:19 error MD060/table-column-style Table column style [Table pipe does not align with header for style "aligned"]
doc/filters/active/KalmanSmoother.md:124:27 error MD060/table-column-style Table column style [Table pipe does not align with header for style "aligned"]
doc/filters/active/KalmanSmoother.md:124:67 error MD060/table-column-style Table column style [Table pipe does not align with header for style "aligned"]
doc/filters/active/KalmanSmoother.md:125:19 error MD060/table-column-style Table column style [Table pipe does not align with header for style "aligned"]
doc/filters/active/KalmanSmoother.md:125:27 error MD060/table-column-style Table column style [Table pipe does not align with header for style "aligned"]
doc/filters/active/KalmanSmoother.md:125:67 error MD060/table-column-style Table column style [Table pipe does not align with header for style "aligned"]
doc/filters/active/UnscentedKalmanFilter.md:11:401 error MD013/line-length Line length [Expected: 400; Actual: 468]
doc/filters/active/UnscentedKalmanFilter.md:149:65 error MD060/table-column-style Table column style [Table pipe does not align with header for style "aligned"]
doc/filters/active/UnscentedKalmanFilter.md:149:153 error MD060/table-column-style Table column style [Table pipe does not align with header for style "aligned"]
doc/filters/passive/MedianFilter.md:69:25 error MD060/table-column-style Table column style [Table pipe does not align with header for style "aligned"]
doc/filters/passive/MedianFilter.md:69:43 error MD060/table-column-style Table column style [Table pipe does not align with header for style "aligned"]
doc/filters/passive/MedianFilter.md:70:51 error MD060/table-column-style Table column style [Table pipe does not align with header for style "aligned"]
doc/filters/passive/MedianFilter.md:70:96 error MD060/table-column-style Table column style [Table pipe does not align with header for style "aligned"]
doc/math/AngleUtilities.md:5:401 error MD013/line-length Line length [Expected: 400; Actual: 603]
doc/math/AngleUtilities.md:58:401 error MD013/line-length Line length [Expected: 400; Actual: 438]
doc/math/CubicSpline.md:5:401 error MD013/line-length Line length [Expected: 400; Actual: 453]
doc/math/CubicSpline.md:38:401 error MD013/line-length Line length [Expected: 400; Actual: 476]
doc/math/GivensRotation.md:5:401 error MD013/line-length Line length [Expected: 400; Actual: 429]
doc/math/HouseholderTransform.md:5:401 error MD013/line-length Line length [Expected: 400; Actual: 455]
doc/math/MatrixExponential.md:5:401 error MD013/line-length Line length [Expected: 400; Actual: 555]
doc/math/MatrixNorms.md:5:401 error MD013/line-length Line length [Expected: 400; Actual: 452]
doc/math/MatrixNorms.md:42:67 error MD060/table-column-style Table column style [Table pipe does not align with header for style "aligned"]
doc/math/MatrixNorms.md:43:67 error MD060/table-column-style Table column style [Table pipe does not align with header for style "aligned"]
doc/math/MatrixNorms.md:44:67 error MD060/table-column-style Table column style [Table pipe does not align with header for style "aligned"]
doc/math/MatrixNorms.md:45:67 error MD060/table-column-style Table column style [Table pipe does not align with header for style "aligned"]
doc/math/MatrixNorms.md:46:67 error MD060/table-column-style Table column style [Table pipe does not align with header for style "aligned"]
doc/math/SE3Transform.md:5:401 error MD013/line-length Line length [Expected: 400; Actual: 538]
doc/math/SE3Transform.md:7:401 error MD013/line-length Line length [Expected: 400; Actual: 546]
doc/math/SE3Transform.md:23:401 error MD013/line-length Line length [Expected: 400; Actual: 494]
doc/math/SE3Transform.md:43:401 error MD013/line-length Line length [Expected: 400; Actual: 464]
doc/math/SE3Transform.md:126:401 error MD013/line-length Line length [Expected: 400; Actual: 414]
doc/math/StepResponseMetrics.md:5:401 error MD013/line-length Line length [Expected: 400; Actual: 514]
doc/math/StepResponseMetrics.md:61 error MD040/fenced-code-language Fenced code blocks should have a language specified [Context: "```"]
doc/motion_profiles/SCurveProfile.md:5:401 error MD013/line-length Line length [Expected: 400; Actual: 438]
doc/motion_profiles/SCurveProfile.md:53:401 error MD013/line-length Line length [Expected: 400; Actual: 480]
doc/motion_profiles/TrapezoidalProfile.md:5:401 error MD013/line-length Line length [Expected: 400; Actual: 474]
doc/nonlinear_control/BacksteppingControl.md:5:401 error MD013/line-length Line length [Expected: 400; Actual: 594]
doc/nonlinear_control/FeedbackLinearization.md:5:401 error MD013/line-length Line length [Expected: 400; Actual: 533]
doc/nonlinear_control/FeedbackLinearization.md:15:401 error MD013/line-length Line length [Expected: 400; Actual: 491]
doc/nonlinear_control/ModelReferenceAdaptiveControl.md:5:401 error MD013/line-length Line length [Expected: 400; Actual: 587]
doc/nonlinear_control/README.md:9:80 error MD060/table-column-style Table column style [Table pipe does not align with header for style "aligned"]
doc/nonlinear_control/README.md:9:258 error MD060/table-column-style Table column style [Table pipe does not align with header for style "aligned"]
doc/nonlinear_control/README.md:10:80 error MD060/table-column-style Table column style [Table pipe does not align with header for style "aligned"]
doc/nonlinear_control/README.md:10:258 error MD060/table-column-style Table column style [Table pipe does not align with header for style "aligned"]
doc/nonlinear_control/README.md:11:80 error MD060/table-column-style Table column style [Table pipe does not align with header for style "aligned"]
doc/nonlinear_control/README.md:11:270 error MD060/table-column-style Table column style [Table pipe does not align with header for style "aligned"]
doc/optimization/LevenbergMarquardt.md:7:401 error MD013/line-length Line length [Expected: 400; Actual: 437]
doc/optimization/LevenbergMarquardt.md:42:401 error MD013/line-length Line length [Expected: 400; Actual: 511]
doc/optimization/LevenbergMarquardt.md:57:401 error MD013/line-length Line length [Expected: 400; Actual: 410]
doc/regularization/Regularization.md:100:32 error MD060/table-column-style Table column style [Table pipe does not align with header for style "aligned"]
doc/regularization/Regularization.md:100:135 error MD060/table-column-style Table column style [Table pipe does not align with header for style "aligned"]
doc/robust_control/ActiveDisturbanceRejection.md:5:401 error MD013/line-length Line length [Expected: 400; Actual: 699]
doc/robust_control/ActiveDisturbanceRejection.md:85:401 error MD013/line-length Line length [Expected: 400; Actual: 575]
doc/robust_control/ActiveDisturbanceRejection.md:93:401 error MD013/line-length Line length [Expected: 400; Actual: 622]
doc/robust_control/DisturbanceObserver.md:7:401 error MD013/line-length Line length [Expected: 400; Actual: 476]
doc/robust_control/README.md:12:259 error MD060/table-column-style Table column style [Table pipe does not align with header for style "aligned"]
doc/robust_control/SlidingModeControl.md:5:401 error MD013/line-length Line length [Expected: 400; Actual: 644]
doc/solvers/ActiveSetQp.md:7:401 error MD013/line-length Line length [Expected: 400; Actual: 584]
doc/solvers/ActiveSetQp.md:71:401 error MD013/line-length Line length [Expected: 400; Actual: 703]
doc/solvers/ActiveSetQp.md:107:401 error MD013/line-length Line length [Expected: 400; Actual: 421]
doc/solvers/ConditionNumber.md:5:401 error MD013/line-length Line length [Expected: 400; Actual: 461]
doc/solvers/ConditionNumber.md:51:401 error MD013/line-length Line length [Expected: 400; Actual: 425]
doc/solvers/DampedPseudoInverse.md:5:401 error MD013/line-length Line length [Expected: 400; Actual: 531]
doc/solvers/DampedPseudoInverse.md:89:401 error MD013/line-length Line length [Expected: 400; Actual: 581]
doc/solvers/JacobiEigenSolver.md:5:401 error MD013/line-length Line length [Expected: 400; Actual: 443]
doc/solvers/JacobiEigenSolver.md:7:401 error MD013/line-length Line length [Expected: 400; Actual: 609]
doc/solvers/JacobiEigenSolver.md:45:401 error MD013/line-length Line length [Expected: 400; Actual: 427]
doc/solvers/RungeKuttaIntegrators.md:9:401 error MD013/line-length Line length [Expected: 400; Actual: 509]
doc/solvers/SpectralRadius.md:5:401 error MD013/line-length Line length [Expected: 400; Actual: 665]
doc/solvers/SymplecticIntegrators.md:7:401 error MD013/line-length Line length [Expected: 400; Actual: 486]
doc/solvers/SymplecticIntegrators.md:35:401 error MD013/line-length Line length [Expected: 400; Actual: 476]
doc/solvers/SymplecticIntegrators.md:63:401 error MD013/line-length Line length [Expected: 400; Actual: 431]
doc/windowing/window.md:5:401 error MD013/line-length Line length [Expected: 400; Actual: 415]
README.md:1 error MD041/first-line-heading/first-line-h1 First line in a file should be a top-level heading [Context: "[![Quality Gate Status](https:..."]
README.md:9:401 error MD013/line-length Line length [Expected: 400; Actual: 442]
README.md:17:401 error MD013/line-length Line length [Expected: 400; Actual: 547]
roadmap/README.md:11 error MD040/fenced-code-language Fenced code blocks should have a language specified [Context: "```"]

(Truncated to last 20000 characters out of 20068)

Notices

⚠️ Your configuration references items that have been removed from MegaLinter and are ignored: 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

MegaLinter is provided by OX Security
Show us your support by starring ⭐ the repository

@gabrielfrasantos
gabrielfrasantos merged commit bf5cc90 into main Nov 6, 2026
14 checks passed
@gabrielfrasantos
gabrielfrasantos deleted the claude/particle-filter-nt70 branch November 6, 2026 09:45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants