Getting Started
Installation
Install the latest development version directly from GitHub:
pip install git+https://github.com/incebellipipo/shoeboxpy.git
Or (after cloning) install in editable mode:
pip install -e .
Quick Example (6-DOF)
import numpy as np
from shoeboxpy.model6dof import Shoebox
box = Shoebox(L=1.0, B=0.3, T=0.03,
eta0=np.array([0,0,0, 0.05,0.05,0.05]),
GM_phi=0.2, GM_theta=0.2)
dt = 0.01
tau = np.array([1.0, 0.2, 0.0, 0.0, 0.0, 0.1])
for _ in range(1000): # 10 seconds
box.step(tau=tau, dt=dt)
eta, nu = box.get_states()
print("Final pose:", eta)
3-DOF Variant
from shoeboxpy.model3dof import Shoebox as Shoebox3
b3 = Shoebox3(L=1.0, B=0.3, T=0.03)
for _ in range(1000):
b3.step(tau=np.array([1.0, 0.0, 0.05]), dt=0.01)
print(b3.get_states())
Choosing Parameters
Added mass coefficients (alpha_*) are dimensionless multipliers on rigid-body mass/inertia. Start with 0.05–0.2.
Damping factors (beta_*) are linear; increase to reduce oscillations.
GM_phi / GM_theta govern roll and pitch stiffness; too large => stiff dynamics.
What Next?
Read Theory for derivations.
Browse API Reference for full API.
Use
shoeboxpy.animate.animate_history
to visualize 6-DOF trajectories.
FAQ
Why diagonal added mass? Simplicity and speed; you can extend to a full matrix if needed.
Can I add nonlinear damping? Yes; subclass and override step
/_dynamics_into
inserting extra forces.
Stability issues? Reduce dt or increase damping / metacentric heights.