Skip to content

Add forward rigid-body dynamics with loads, stops and analytical regression tests - #18

Open
PaddleStroke wants to merge 5 commits into
FreeCAD:mainfrom
PaddleStroke:codex/forward-rigid-body-dynamics
Open

PaddleStroke wants to merge 5 commits into
FreeCAD:mainfrom
PaddleStroke:codex/forward-rigid-body-dynamics

Conversation

@PaddleStroke

@PaddleStroke PaddleStroke commented Sep 10, 2026

Copy link
Copy Markdown

Summary

Implement forward rigid-body dynamics in OndselSolver through the existing ASMT model and a new ASMTAssembly::runDYNAMIC() entry point. Solver-only: no FreeCAD UI/application dependency or second runtime solver. Dynamics integration code is ported/adapted from FreeCADMbD.

  • Adaptive DAE/BDF integration, initial conditions, generalized-force Jacobians and sampled output histories.
  • Gravity, COM initial velocities, constant/formula/follower wrenches, linear/torsional spring-dampers, coupled 6×6 bushings and joint friction.
  • Rigid/compliant translation, rotation and distance stops; caller-provided contact evaluators and run-local event callbacks.
  • Preserve grounded input poses, including half-turns; replace histories on rerun.
  • Harden ASMT parsing and Release dragging-log replay.

Commit organization

  1. ASMT parsing and Release dragging-log fixes.
  2. Coupled forward-dynamics implementation and solver APIs.
  3. Analytical tests and API documentation.
  4. Integration with upstream's kinematic/drag limit behavior, with regression coverage.
  5. Shared-library ABI versioning and rebuild documentation.

The dynamics core is kept together because the integrator, equation assembly and generalized-force interfaces depend on one another.

…mits

Add adaptive DAE/BDF integration and generalized force Jacobians; expose typed loads, coupled bushings, friction and contact/event callbacks. Preserve existing assembly and kinematic entry points.
…rities

Integrate upstream drag-only limits without dropping active stops from forward dynamics. Skip unused limit initialization/output in kinematics and apply cursor weights after mass-based defaults. Cover prescribed kinematics versus free dynamic impact in a regression.
@PaddleStroke

Copy link
Copy Markdown
Author

@aiksiongkoh could you please check this PR out ?

@aiksiongkoh

Copy link
Copy Markdown

Will do.

@PaddleStroke

Copy link
Copy Markdown
Author

Hi @aiksiongkoh
A small bump regarding this PR

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