Repository navigation
Conversation
Up to standards ✅🟢 Issues
|
| Metric | Results |
|---|---|
| Complexity | 65 |
| Duplication | 9 |
NEW Get contextual insights on your PRs based on Codacy's metrics, along with PR and Jira context, without leaving GitHub. Enable AI reviewer
TIP This summary will be updated as you push new changes.
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## main #736 +/- ##
=====================================
Coverage 0.00% 0.00%
=====================================
Files 143 143
Lines 14667 14693 +26
=====================================
- Misses 14667 14693 +26 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
|
Thanks for your interest in RTB, and for taking the time to create a PR. Once again I'm afraid your summary is just too cryptic. You declare that you are using it AI which is fine, just prompt it: to write summaries for somebody who is solo maintaining multiple large open source projects and likes clear/simple examples of the issue and a gentle onramp for the solution. I see the problem but I'm reluctant to discard this function which I think has pedagogical value, as does its mode of failure. I'd propose this alternative:
|
Restore the six-equation teaching solver with a numerical-rank guard. Export the normalized-time Hermite function and use it for sampled quintic trajectories. Cover caller routing, endpoint derivatives and representable duration scaling.
|
Thanks for following up, it maybe that the hermit code becomes mainstream |
…es (#768) Annotates the tools, demo, bin, models, ets and robot packages and holds them to disallow_untyped_defs. BaseETS is generic over its element type (BaseETS[ET], BaseETS[ET2]), replacing the self-type overloads. 68 unused pyright ignores removed, module/class name clashes made explicit. Left on the mypy to-do list: tools/trajectory.py (open #736), mobile/ParticleFilter.py (open #735), the two unused DHFactor modules and a stale test in tools/urdf/tests. Behaviour unchanged except on paths that already raised.
Retain the teaching solver and Hermite API while preserving upstream mstraj derivatives and import cleanup.
…ehind method= (#805) * fix(trajectory): normalize quintic profile time * Keep quintic regression checks active under Python optimization * fix(trajectory): guard quintic solve and add Hermite alternative Restore the six-equation teaching solver with a numerical-rank guard. Export the normalized-time Hermite function and use it for sampled quintic trajectories. Cover caller routing, endpoint derivatives and representable duration scaling. * fix(trajectory): solve the quintic in normalized time, Hermite form behind method= The quintic boundary-condition matrix has entries from 1 to T**5, so its condition number is 1e15 at T=1000 and 1e16 at T=0.001, and lstsq silently drops a boundary condition: quintic(1, 2, 1000) started near zero. quintic_func now solves the same linear system in normalized time tau = t/T, where the matrix is that of the docstring with T = 1 (condition number 762, the same for every trajectory), scales the velocity boundary values by T and the derivatives by 1/T and 1/T**2. The closed-form Hermite basis contributed in #736 is kept, as method="hermite", and is used as an independent check. Raise ValueError for a zero or non-finite duration, and for a trajectory of fewer than two samples, instead of returning a degenerate result. quintic_hermite_func is not a public name. Triggered by #736 from Afloat16. Co-authored-by: Afloat <[email protected]> Co-Authored-By: Claude Sonnet 5.5 <[email protected]> * docs(trajectory): versionchanged notes for the quintic time scaling Co-Authored-By: Claude Sonnet 5.5 <[email protected]> --------- Co-authored-by: Afloat <[email protected]> Co-authored-by: Claude Sonnet 5.5 <[email protected]>
|
Thank you for your interest in RTB, and for this contribution, @Afloat16. You uncovered a real and quietly nasty bug that gives a very wrong answer under certain, not unreasonable, conditions. It's taken me a while to figure out the right approach here, trying to balance correctness, pedagogy, variation from my book, and API simplicity. This lands in #805, merged in 97c6c0f. Your commits are in it, with your authorship. The main difference from your PR is that we kept the book's least-squares formulation as the default, but solve it in normalized time, which fixes the conditioning with a few lines instead of a new function. Your closed-form Hermite basis is kept in the file as |
Summary
quintic(1, 2, 1000)starts near zero instead of 1, while a one-millisecond profile remains near 1.5 at both endpoints. The unscaled least-squares system loses numerical accuracy or rank and discards boundary constraints.Evaluate the quintic in normalized time using a factored Hermite basis. Preserve endpoint velocity units, zero endpoint acceleration, supplied timestamps, sample shapes, the zero-duration result and existing coefficient-type errors. Promote low-precision samples before normalization and basis evaluation, retaining supported complex and extended sample types. Add independent polynomial/derivative, 70-digit float32, signed-velocity and native multi-axis controls. Use NumPy testing calls for the Boolean checks so they remain active under Python optimization.
Validation
968ed048639c01c9032e256565731e2703de77fe. Updated tests on that base: 27 failed, 35 passed. Fixed trajectory tests: 76 passed, 14 subtests.-O: 172 actual Boolean checks pass and 172 forced-false calls raiseAssertionErrorin each mode, without pytest assertion rewriting.git diff --checkpass. Rerun whole-project lint adds no diagnostics; existing diagnostics remain at 1211 versus 1214 on the base.Related issue
None.
Checklist