featherstone 0.1.0

Robotics dynamics engine — O(n) forward/inverse dynamics for kinematic trees, contact solvers, and time integration
Documentation
//! # featherstone
//!
//! Featherstone articulated body dynamics solver.
//!
//! O(n) forward/inverse dynamics for kinematic trees, with LCP contact solving
//! and differentiable smooth contacts. MuJoCo-grade solver quality in a minimal,
//! dependency-light Rust crate.
//!
//! # Algorithms
//!
//! - **ABA** — Articulated Body Algorithm: O(n) forward dynamics
//! - **RNEA** — Recursive Newton-Euler: O(n) inverse dynamics, gravity compensation
//! - **CRBA** — Composite Rigid Body Algorithm: mass matrix computation
//! - **Forward Kinematics** — body transforms, velocities, Jacobians, CoM
//! - **GJK/EPA** — convex collision detection
//! - **LCP Solver** — Projected Gauss-Seidel with warm-starting
//! - **Newton Solver** — quadratic-convergence contact solver for stacking
//! - **Smooth Contacts** — differentiable contact forces for gradient-based optimization
//! - **Integration** — semi-implicit Euler, RK4, Verlet, implicit, explicit
//!
//! # Usage
//!
//! ```rust
//! use featherstone::prelude::*;
//! ```

pub mod error;
pub mod collider;
pub mod spatial;
pub mod joint;
pub mod body;
pub mod limits;
pub mod aba;
pub mod rnea;
pub mod crba;
pub mod kinematics;
pub mod contact;
pub mod contact_jacobian;
pub mod gjk;
pub mod lcp_solver;
pub mod newton_solver;
pub mod smooth_contact;
pub mod integrator;

#[cfg(feature = "urdf")]
pub mod urdf_convert;

/// Commonly used types and functions.
pub mod prelude {
    // Error types
    pub use crate::error::{Error, Result};

    // Core data structures
    pub use crate::body::{ArticulatedBody, BodyDef, GenJointType};
    pub use crate::joint::GenJoint;
    pub use crate::spatial::{SpatialVector, SpatialTransform, SpatialInertia};
    pub use crate::limits::JointLimits;

    // Algorithms
    pub use crate::aba::{aba_forward_dynamics, AbaData};
    pub use crate::rnea::{rnea_inverse_dynamics, gravity_compensation, bias_forces_rnea, coriolis_forces};
    pub use crate::crba::crba_mass_matrix;
    pub use crate::kinematics::{forward_kinematics, body_transform, body_velocity, body_jacobian, FKResult};
    pub use crate::integrator::{step, IntegrationMethod, IntegratorConfig};

    // Contact dynamics
    pub use crate::contact::{ContactPoint, ContactManifold, ShapePair, ground_plane_contacts};
    pub use crate::contact_jacobian::ContactConstraints;
    pub use crate::lcp_solver::{LcpSolverConfig, solve_contact_lcp};
    pub use crate::smooth_contact::{SmoothContactConfig, smooth_contact_forces};
}