Mechanism modeling
Turn a physical concept into a clean system of bodies, joints, drivers, forces, and measurable outputs.
- 2D & 3D model architecture
- Constraint formulation
- Motion & load analysis
Independent engineering practice
We turn multibody models into decisions engineers can trust—from first-principles mechanism analysis to custom simulation workflows.
01 / THE PROBLEM
When constraints drift, forces look suspicious, or a prototype behaves differently from the model, more software is rarely the whole answer. You need the mechanics, the numerics, and the implementation to agree.
02 / EXPERTISE
Focused support for teams who need a model they can inspect, extend, and use with confidence.
Turn a physical concept into a clean system of bodies, joints, drivers, forces, and measurable outputs.
Find the source of drift, instability, rank loss, or results that simply do not pass an engineering smell test.
Replace one-off notebooks with readable, tested tools that connect analysis to design and reporting.
05 / APPROACH
Define the physical decision, useful outputs, known unknowns, and what “good enough” means.
Build the smallest faithful model, expose assumptions, and create diagnostics before adding detail.
Cross-check against limiting cases, conservation laws, independent calculations, and available test data.
Deliver readable code, documented reasoning, and a workflow your team can continue to own.
Open source, by design
MBSD Core is a compact Python toolkit for planar mechanism kinematics and constrained dynamics. Read the equations. Run the examples. Keep the code.
import numpy as np
from mbsd import Mechanism
r, L = 0.35, 1.15 # crank radius, rod length [m]
m = Mechanism.planar(gravity=(0.0, 0.0))
ground = m.ground()
crank = m.body("crank", mass=0.5, inertia=0.01)
rod = m.body("rod", mass=1.0, inertia=0.03)
slider = m.body("slider", mass=1.5, inertia=0.02)
m.pin(ground, crank, point_a=(0, 0), point_b=(0, 0))
m.pin(crank, rod, point_a=(r, 0), point_b=(0, 0))
m.pin(rod, slider, point_a=(L, 0), point_b=(0, 0))
m.slider(ground, slider, axis=(1, 0))
m.motor(crank, omega=2 * np.pi) # 1 rev/s
q0 = np.zeros(m.ncoord)
q0[6:9] = [r, 0, 0]
q0[9:12] = [r + L, 0, 0]
result = m.solve_kinematics(np.linspace(0, 1, 361), q0=q0)
m.assert_constraints_satisfied(result)
print(f"max residual: {m.max_constraint_residual(result):.1e}")07 / FAQ
Multi-body systems dynamics (MBSD) is the engineering discipline of analysing and synthesising connected mechanical systems — linkages, engines, suspensions, robots — as systems of constrained rigid bodies whose motion follows from algebraic and differential equations together.
In practice that means two things: a mechanism has to be assembled consistently (constraints, Jacobians, branches) and it has to behave (forces, energy, vibration). Most design mistakes happen in the gap between the two: a linkage that passes geometry but locks, flips branch or shakes its mounts loose. We work in that gap, with the same model used for synthesis and for dynamic validation.
Yes. MBSD Core and MBSD Examples are MIT-licensed: use them in commercial projects, modify them and ship them. The browser tools and the solver app on this site are free as well. We earn our living from engagements: modelling, validation and custom tooling built around your mechanism.
Yes. A common engagement starts from existing .m scripts: we reproduce the results, move the model to tested Python with the same notation, and add the checks MATLAB scripts rarely have, such as constraint residuals, Jacobian rank and finite-difference derivative tests, so the new code can be trusted against the old.
It starts with a short description of the mechanism and the decision you need to make. We reply with questions and a proposed scope: usually one well-defined problem (a synthesis study, a validation of an existing model, or a solver issue) delivered as readable code, a report with the numbers that matter, and a hand-over session. Larger programmes add on-site workshops and ongoing support.
START A CONVERSATION
A short description is enough to start. You’ll receive a direct, technically informed reply—not a sales sequence.
Best fit: teams shipping motion-heavy hardware, and courses teaching it. Not a fit for one-off hobby kinematics.
hello@multibodysystemsdynamics.com