chore: add nuget cache files to gitignore#5
Open
DanielKow wants to merge 1 commit into
Open
Conversation
DanielKow
pushed a commit
that referenced
this pull request
Apr 15, 2026
…veLin) Per ADR-004: collisions are runtime conditions, not programmer errors. MoveJoint no longer throws InvalidOperationException on collision; it now leaves state unchanged and emits nothing (matches MoveLin returning -2). Callers needing a structured failure use TryMoveJoint. Updates the MoveJoint collision test to assert no-throw + state preserved.
DanielKow
pushed a commit
that referenced
this pull request
Apr 15, 2026
…per ADR-004 MoveJoint/MoveLin now return MoveResult and never throw on runtime conditions (joint-limit violations, unreachable IK, collisions). Legacy IRobot int/void signatures retained via explicit interface implementation. TryMoveJoint/TryMoveLin removed as redundant.
DanielKow
added a commit
that referenced
this pull request
Apr 15, 2026
* feat: TASK-003 MoveResult evolution with MoveFailureReason and CollisionResult * feat: TASK-005 ToolModel hierarchy (capsule, mesh, none) * feat: TASK-004 ICollisionSource + primitive hierarchy + PrimitiveCollisionSource * feat: TASK-008 RobotProgram + ProgramStep + JSON round-trip * feat: TASK-009 TeachingPointSet with JSON round-trip * feat: TASK-010 FkValidator + records with schema-versioned JSON * feat: TASK-006 CollisionEnvironment with validation * feat: TASK-007 CollisionDetector with 10 non-adjacent self-collision pairs * feat: TASK-011 SimulatedRobot collision-aware moves, teaching points, program execution * fix: PR#6 round 1 MUST fixes (path-level collision, records, hot-path allocs) - SimulatedRobot.ExecuteWaypoints/Execute: check FirstCollision inside the joint-space interpolation loop so colliding intermediate configs are detected even when endpoints are safe. Truncate steps at last safe sub-step. - Add regression test: safe endpoints, colliding mid-swing obstacle. - ToolModel: remove manual Equals/GetHashCode overrides from record derivatives (rely on compiler-generated structural equality). - CollisionDetector: return IReadOnlyList<CollisionResult> using a lazily allocated List; no final ToArray materialization. - CollisionEnvironment.LinkRadii: expose ImmutableArray<double> instead of IReadOnlyList<double> copied on each use. - FkValidator / TeachingPointSet: pre-size arrays for JSON DTOs instead of Select().ToList() in hot export paths. * fix: PR#6 MUST #4 closed-form segment/box/cylinder SDF Replace 17-point parametric sampling in ClosestPointOnSegmentToBox and ClosestPointOnSegmentToCylinderZ with closed-form break-point enumeration: - Box: endpoints + axis-center crossings + face crossings + outside-quadratic stationary point per sign cell. Up to ~37 structural candidates; exact minimum for piecewise-linear inside SDF and quadratic outside SDF. - Cylinder-Z: endpoints + axial face/center crossings + radial surface crossings (quadratic roots) + radial-projection minimum t*. Adds worst-case tests comparing against a 10_001-sample brute-force minimum plus a tangent-pierce regression that the old uniform sampler missed. * fix: PR#6 finding #5 MoveJoint silently rejects collision (matches MoveLin) Per ADR-004: collisions are runtime conditions, not programmer errors. MoveJoint no longer throws InvalidOperationException on collision; it now leaves state unchanged and emits nothing (matches MoveLin returning -2). Callers needing a structured failure use TryMoveJoint. Updates the MoveJoint collision test to assert no-throw + state preserved. * refactor: SHOULD #5 — unify MoveJoint/MoveLin to MoveResult contract per ADR-004 MoveJoint/MoveLin now return MoveResult and never throw on runtime conditions (joint-limit violations, unreachable IK, collisions). Legacy IRobot int/void signatures retained via explicit interface implementation. TryMoveJoint/TryMoveLin removed as redundant. * feat: TASK-012 RobotPresets FR5 DH correction + v6 fleet (FR3/10/16/20/30) Apply the FR5 DH correction per docs/epics/epic-021-robot-simulator/fairino-preset-reference.md: - a_{J4}: -392.25 -> -395.01 - d4: 115.7 -> 0 (j3/j4 axes parallel under Craig MDH, not in URDF) - d5: 92.2 -> 102.1 - d6: 94.0 -> 102.0 Replace the symmetric +/-175 deg joint-limit array with per-axis v6 limits (J1 +/-178, J2 [-265,+85], J3 +/-162, J4 [-265,+85], J5 +/-178, J6 +/-360). Add factories FairinoFR3/10/16/20/30 built from a shared FairinoV6 helper that hard-wires d4=0 and the shared v6 joint-limit array. Test ground-truth regeneration (OPTION A, user-approved): FK_HOME, FK_CFG_A..E, and WP1..WP5 were regenerated from our own ForwardKinematics output on the corrected model. These are REGRESSION-ONLY fixtures, not independent ground truth. Old fixtures encoded the old (incorrect) DH, so they could not be treated as reference values after the correction. Waypoints were re-chosen as FK outputs of curated joint configs so chained IK seeds stay on the same branch. Limit-violation tests rewritten against the new per-axis limits. IK_Should_Select_ClosestToSeed derives elbow-down from mirror-seeded IK instead of the old hardcoded mirror which no longer reaches the same TCP pose under the corrected DH. 230/230 tests green in csharp/RocketWelder.SDK.Robotics.Core.Tests/. * test: iter3 round-2 Finding #10 v6 preset FK smoke [Theory] Adds FairinoV6_Presets_FK_AtHome_ShouldBe_Finite_And_WithinReach to RobotPresetTests.cs. For every v6 preset the test computes FK(HOME), asserts all TCP components are finite, and bounds |TCP| by the DH-derived geometric reach (sum of |a_i| + |d_i| across the chain) times 1.1. No datasheet reach figures are consulted; the bound is computed directly from the preset's own DH chain, keeping the check self-consistent. 236/236 tests green (up from 230). * docs: strip unsourced payload/reach figures from RobotPresets XML (Finding #9) * test: renumber TASK-003..TASK-012 XML summary refs to TASK-001..TASK-010 --------- Co-authored-by: Daniel Kowalski <daniel.kowalski@modelingevolution.com>
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.
Summary
.nuget-help.db,.nuget/,*.db-shm, and*.db-walto the C#/.NET section of.gitignore🤖 Generated with Claude Code