Glossary#

Frames#

Term

Definition

Homogeneous Transformation

An element of SE(3) (the Special Euclidean group of rigid motions (rotations + translations) that encodes a 3‑D pose: a rotation and a translation vector. In kdFlex it is represented by Karana.Math.HomTran.

Pose

An informal term for a homogeneous transformation that specifies a frame’s location and orientation relative to another frame.

Passive Attitude Representation

kdFlex uses a passive (coordinate‑frame‑based) attitude representation. A vector transforms as \({}^a v = {}^aR_b\ {}^b v\), i.e., it is rotated from the “b” frame into the “a” frame.

Spatial Vector

An element of se(3) that encodes an angular and a translation 3-vector. In kdFlex it is represented by Karana.Math.SpatialVector. Spatial vectors quantities can be use for spatial velocities, spatial accelerations, spatial forces and spatial momentum etc.

Rigid body transformation phi

A 6x6 matrix associated with homogeneous transforms that is is used to transform spatial quantities such as spatial velocities, spatial forces, spatial inertias and more from one frame on a rigid body to another frame on the same rigid body.

Frame

A coordinate system that defines a position and orientation in 3‑D space. In kdFlex, a Karana.Frame.Frame instance represents a node in the directed tree of frames that underpins the multibody model and more.

FrameContainer

The container class (Karana.Frame.FrameContainer) that owns and manages all Frame objects. It manages the directed tree (parent/child relationships) of frames and supplies utility methods for querying the hierarchy.

Root Frame

The root from for the frames tree.

FrameToFrame

An abstraction representing a directed relationship between two frames, from and to. It is defined by a Karana.Frame.FrameToFrame instance. The class provides methods to query the relative pose, spatial velocity, and spatial acceleration between the two frames.

oframe

Origin (or “from”) frame of a Karana.Frame.FrameToFrame instance. In kdFlex terminology it is the root of the directed relationship.

pframe

Destination (or “to”) frame of Karana.Frame.FrameToFrame instance. It is the child frame whose pose/velocity/acceleration is being queried relative to the oframe.

EdgeFrameToFrame

The tree edge type that actually stores the transformation between two adjacent frames in the FrameContainer tree. An EdgeFrameToFrame contains a relative pose (a homogeneous transform), relative spatial velocity and relative spatial acceleration between a child frame and its parent frame.

Observing Frame

The observing frame is defined as the frame that is used to express vector coordinates whose time derivatives such as relative velocity and accelerations are taken. The observing is also at times referred to as the derivative frame.

Representation Frame

A vector’s representation frame is the one in which a vector’s coordinates are expressed.

Relative Pose

The pose of the “to‑frame” expressed in the “from‑frame” coordinates. The FrameToFrame.relTransform() method returns the pose of the pframe with respect to the oframe.

Relative Spatial Velocity

The spatial velocity of the “to‑frame” with respect to the “from‑frame” coordinates. It includes both angular and linear components. The FrameToFrame::relSpVel method returns the relative spatial velocity of the pframe with respect to the oframe as observed and represented in the oframe.

Relative Spatial Acceleration

The spatial acceleration of the “to‑frame” expressed in the “from‑frame” coordinates. The FrameToFrame::relSpAccel method returns the relative spatial acceleration of the pframe with respect to the oframe as observed and represented in the oframe.

Changing Observer / Derivative Frames

FrameToFrame offers additional methods that let you change the observing or derivative frame for a pose/velocity/acceleration query, thereby providing the same quantity in a different reference frame.

OrientedFrameToFrame

A specialized FrameToFrame chain that represents a concatenation of sequence of FrameToFrame edges whose pframe is required to be downstream of the oframe.

ChainedFrameToFrame

A lightweight wrapper that represents a concatenation of sequence of FrameToFrame edges. The oframe and pframe can be arbitrary frames in the frame tree. It allows querying relative poses/velocities across several tree edges in a single call (e.g., from a leaf to the Newtonian frame).

SpiceFrame

A specialized Karana.Frame.FrameToFrame instance instance that is tied to a NASA SPICE kernel (C-Kernel) time‑dependent reference. It provides time‑varying poses and velocities derived from SPICE kernels, typically used for spacecraft or planetary frames.

SpiceFrameToFrame

The corresponding edge type between a SpiceFrame oframe and a SpiceFrame pframe. It uses the SPICE kernel to compute the relative transform at any simulation time.

Multibody model#

Term

Definition

Spatial Operator Algebra (SOA)

SOA is the broad and unifying mathematical framework that underpins kdFlex’s dynamics engine. It uses a set of system level operators to exploit the rich structure of minimal coordinate dynamics to develop analytical insights (eg. factorization and inversion of the mass matrix) and uses these to develop fast, recursive computational algorithms for solving different problems related to the equations of motion. SOA methods apply to the broad class of multibody systems including those with rigid and flexible bodies, and tree and graph topologies.

Rotational Inertia Matrix

A 3×3 symmetric matrix that describes how a body’s mass is distributed about its center of mass.

Spatial Inertia Matrix

A 6×6 matrix that combines mass, center‑of‑mass, and inertia tensor into a single object for use in spatial vector algebra.

Parallel‑Axis Theorem

A rule that shifts an inertia tensor from one frame to any other frame for a body. There is a version of the parallel-axis theorem for similarly transforming spatial inertias.

Rigid Body

A body whose shape and mass distribution do not change over time.

Flexible Body

A body that can deform; its internal dynamics are usually represented by modal expansions or finite‑element discretization.

Body Frame

The coordinate system attached to a particular body; often used to express velocities, forces, and inertias.

Multibody System

A collection of rigid (or flexible) bodies connected by joints and constraints and subject to forces/torques, described by a set of equations of motion.

Multibody topology

A multibody topology is the graph‑theoretic structure that describes how the individual bodies in a multibody system are connected by joints (hinges, sliders, etc.). It tells you whether the system is a simple serial chain, a branched tree, or a closed‑loop graph, and it determines the number of independent coordinates, the number of constraints, and the computational strategy that kdFlex will use.

Newtonian Frame

The inertial (world) reference frame in kdFlex for dynamics computations. This frame is often the same as the root frame for the frames tree,

Multibody virtual root body

The multibody’s virtual root body is a special PhysicalBody that has no parent body. All other bodies in the model are attached to this root (directly or indirectly) through hinges. The root body therefore serves as the anchor for the whole multibody system. The root body’s whose frame is either the same or downstream of the Newtonian frame.

Subhinge

A connection between a pair of frames that defines the permissible relative pose between the frames via an algebraic relationship. The dimension of the subspace of permitted relative spatial velocities can range from 0 to 6 and defines the degrees of freedom for the subhinge. Examples of subhinges are pin, prismatic and spherical subhinges.

Hinge

A connection between a pair of body nodes attached to parent/child bodies made up of a sequence of subhinges. Examples of hinges are revolute, slider, ball and full 6 dof hinges. A hinge’s body node on the inboard (parent) body is referred to as its onode, and the body node on the outboard (child) body is referred to an its pnode. The onode and pnode frames coincide when the Q generalized coordinates for a hinge are zero.

onode

The attachment body node for a hinge on the inboard (parent) body.

pnode

The attachment body node for a hinge on the outboard (child) body.

Joint

Another term for hinges.

Generalized Coordinate (Q)

A vector of independent variables that parameterizes the configuration of the system at multiple levels (e.g., joint angles, prismatic displacements).

Generalized Coordinate (Qdot)

The time derivatives of the Q generalized coordinates..

Generalized Velocity (U)

A vector of independent variables that parameterizes the velocities in the system at multiple levels. These are often the time derivatives of the Q generalized coordinates, but that does not hold true for spherical subhinges.

Generalized Acceleration (Udot)

The time derivatives of the U generalized velocity coordinates. They parameterize the accelerations in the system at multiple levels.

Generalized Force (T))

The vector of independent variables that serve as the dual of the U generalized velocities, and represent the forces on the system. They are referred to as generalized forces since their dot product with U has the units of power. Example of generalized forces are torques at the subhinges .

Degrees of Freedom (DOF)

Number of independent generalized coordinates in the system.

Hinge DOF

DOF contributed by a single hinge (e.g., 1 for revolute, 3 for spherical).

Zero configuration

The configuration of the multibody system when all the hinge generalized coordinates Q are zero. Imported multibody models are normally created in the zero-configuration. In this configuration the frames for the onode/pnode pair for each hinge are parallel.

Bilateral Constraint

A bilateral constraint enforces a algebraic relationship on the relative motion of a pair of bodies. Thus the permitted motion is implicitly restricted by such constraints. This is in contrast with hinges and subhinges where the permissible motion is explicitly parameterized by the Q, U etc generalized coordinates.

Loop Constraint

A type of bilateral constraint that closes a closed‑chain (a kinematic loop) in the multibody tree. It enforces that the relative motion between two non‑parent/child frames satisfies a specific relationship (often equality of pose, velocity, or acceleration).

Cut‑Joint Loop Constraint

A cut‑joint loop constraint is a special type of bilateral loop constraint where the permissible relative motion can be represented explicitly by a hinge. Hinges can be replaced by equivalent cut-joint constraints, and this is often done to decompose graph topology systems in a tree system (with hinges) and additional cut-joint constraints where loops have been cut.

ConVel Loop Constraint

A ConVel loop constraint (short for constant‑velocity loop constraint) is a special type of bilateral loop constraint that is applied to a loop (closed‑chain) in a multibody model. Unlike a normal kinematic (position‑level) constraint, a ConVel constraint only enforces a relationship at the velocity and acceleration levels. It does not restrict the bodies’ positions; it only forces a particular component of the relative velocity of two bodies to remain constant (usually zero).

Coordinate Constraint

A coordinate constraint is a type of bilateral constraint that directly restricts one or more generalized coordinates (the independent configuration variables of the multibody system). Unlike loop constraints that enforce relationships between body poses and velocities, a coordinate constraint enforces a relationship between pairs of coordinates. Such constraints are used for modeling gears and rack and pinion systems.

Prescribed Subhinge

A subhinge whose Udot generalized acceleration coordinates are not solved by the dynamic equations but are instead explicitly defined as a time‑varying function (e.g., a trajectory, periodic motion, or user‑supplied motion law).

Sub‑tree

A SubTree is a connected subset of bodies (and the hinges that link them) within a larger multibody system. It is defined by a root body and includes every body that can be reached from that root by following only the joints that belong to the SubTree. The root body itself is not considered part of the subtree. SubTree instances can be used to limit computations to just the bodies in the subtree. There can be a arbitrary hierarchy of subtrees defined in a multibody system.

Sub‑graph

Sub‑graphs are sub‑trees with additional bilateral constraints.There can be a arbitrary hierarchy of subgraphs defined in a multibody system. The multibody system itself is a unique, top-level special type of subgraph that contains the full set of physical bodies and bilateral constraints defined for the system.

Node

A node is is a special kind of Frame that is attached to a PhysicalBody. Body nodes often serve as attachment points for sensor and actuator device models.

Force Node

A force node is a special kind of Node that is attached to a PhysicalBody and is used to apply a spatial force (force + moment) to that body. It is the mechanism by which external loads are added to the dynamics equations without modifying the body’s internal structure.

Constraint Node

A constraint node is a special kind of Node that is attached to a PhysicalBody and are used as attachment points for cut-joint and other loop constraints.

Coordinate Provider

A coordinate‑data provider in kdFlex refers to entities that have generalized coordinates (Q, U etc) associated with them. It includes subhinges for their articulation coordinates, as well as flexible bodies for their deformable coordinates. kdFlex uses CoordBase as the base class for coordinate providers.

CoordData Class

The CoordData class is a container that manages a group of coordinate‑provider objects (CoordBase instances) in the kdFlex dynamics framework. It is used to aggregate and manipulate the generalized coordinates (Q, U, etc.) that belong to a set of bodies or sub‑hinges.

Compound Body

A collection of rigid (or flexible) bodies associated with a subgraph of bodies that are treated as a virtual body for simulation purposes. The bodies within the subgraph are said to be embedded within the compound body. Compound bodies do not change the dynamics of the system, and are used to add an abstraction option for simplifying the system topology. Unlike rigid and flexible bodies, compound bodies allow articulation of the internal embedded bodies and thus have variable geometry. In kdFlex a compound body is defined by a CompoundBody instance.

Body aggregation

Body aggregation refers to the process of creating a compound body by aggregating a set of bodies into a subgraph and creating a compound body to embed them.

Multibody properties and algorithms#

Term

Definition

Minimal Coordinates

Coordinate representation that contains only the true degrees of freedom, avoiding redundant variables.

Redundant Coordinates

Representation that includes more variables than necessary (e.g., quaternions for orientation, explicit constraints).

Jacobian matrix

The Jacobian matrix of a system of equations. In multibody dynamics it maps a vector of generalized coordinates (or velocities) to a vector of Cartesian (spatial) quantities.

Mass Matrix (\({\cal M}(q)\))

In kdFlex the multibody system mass matrix is the configuration dependent matrix that relates the generalized velocity vector U of the entire multibody system to its generalized momentum. The mass matrix also is the matrix that defines the quadratic form for computing the system kinetic energy via \(u^* {\cal M} u/2\). Solving the multibody equations of motion for a tree topology system involves the computation of \({\cal M}^{-1} x\) where \(x\) contains contributions from Coriolis accelerations, gyroscopic forces, external forces, gravity etc.

Composite Rigid Body (CRB) Algorithm

Efficient recursive method to compute the mass matrix \({\cal M}(q)\).

Forward Dynamics

Solving the equations of motion for the Udot generalized accelerations given the state, and external and generalized forces on the system.

Inverse Dynamics

Solving the equations of motion for the T generalized forces given the state, and external forces and generalized accelerations on the system.

Hybrid Forward Dynamics

Hybrid forward dynamics addresses the case where a mix of Udot generalized accelerations and complimentary T generalized forces are inputs, and the equations of motion need to be solved for the remaining generalized accelerations and forces as outputs. The hybrid dynamics problem reduces to the regular forward dynamics when the full T are the inputs, and to the inverse dynamics problem with all the Udot are inputs. kdFlex implements a version of ABA algorithm for O(N) hybrid dynamics.

Recursive Newton–Euler (NE) Algorithm

Recursively computes inverse dynamics for tree topology systems.

Articulated Body (AB) Algorithm

Recursive O(N) method to compute forward dynamics (solve for Udot for tree topology systems.

Inter‑body forces

In kdFlex are the equal‑and‑opposite spatial forces that act across the hinges (physical joints) that connect two bodies in a multibody system. They are internal forces—i.e., they do not appear in the external force balance of the whole system, but they are crucial for understanding the loads on each joint and for design‑level analysis. While normally not solved for in the normal forward dynamics procedures, kdFlex provides low-cost ways of computing them on demand.

Multibody state

The complete set of Q generalized configuration and U velocity coordinates that uniquely describe the instantaneous configuration and motion of every body in a kdFlex multibody system.

ODE Solver

Numerical algorithm (e.g., RK4, implicit trapezoidal) that integrates equations of motion in the form of ordinary differential equations over time.

Equilibration

An equilibrium is a configuration of the multibody system in which all generalized forces and moments balance so that the system can remain at rest (or move with constant velocity) without any external actuation. In other words, the net acceleration of every body is zero when the system is held in that configuration. Within kdFlex, equilibration is the process for finding equilibrium configurations.

Linearization

Linearization is the process of approximating the nonlinear multibody dynamics of a kdFlex model by a linear, first‑order system around a chosen operating point (typically an equilibrium configuration). The resulting linear model is expressed in state‑space form and is the basis for control‑system design, rapid simulation, and system analysis. Such linearization should always be carried out around equilibrium configurations for meaningful results.

State space model

A state‑space model is a compact, first‑order representation of a dynamical system that expresses the system’s evolution in terms of a set of state variables and a set of inputs. In kdFlex it is used to describe the linearized dynamics of a multibody system (rigid or flexible) in a form that is convenient for control‑system design, simulation, and analysis.

Modal Analysis

Modal analysis is the process of determining the natural frequencies and the corresponding mode shapes (eigenvectors) of a flexible structure using a linearized model. In kdFlex it is used to recover system modes and frequencies, and develop reduced order models for control system design and analysis.

Fully Augmented (FA) Model

An FA model is a multibody representation in which every physical body is treated as an independent entity. Each body is connected to the root (or ground) by a 6‑degree‑of‑freedom hinge, and no body has any children. The motion constraints on each body are defined solely by a set of bilateral constraints. The generalized coordinates for such models are fully redundant.

Tree Augmented (TA) Model

A TA model is a compact representation of a multibody system that uses a maximal spanning tree of physical bodies connected by hinges, together with a minimal set of bilateral constraint instances that close any remaining loops.

Constraint Embedding (CE) Model

Constraint embedding is the process of embedding constraints directly into a compound body. When applied to all the bilateral constraints on the system, the system’s graph topology is transformed into a tree topology with a mix of physical and compound bodies. This minimal coordinate constraint embedding model dynamics can be solved with fast O(N) AB like algorithms.

Aggregation Subgraph

For a list of one or more bilateral constraints, their aggregation subgraph is defined as the minimal subgraph that meets the requirements for embedding the bilateral constraints within a compound body.

Constraint Kinematics Solver

In kdFlex the ConstraintKinematicsSolver is a dedicated class that can be used to solves for the generalized coordinates (Q), the generalized velocities (U) and generalized accelerations (Udot)that satisfy a set of bilateral constraints imposed on a subgraph.

Tree-Augmented (TA) dynamics

A 2-pass recursive forward dynamics algorithm for solving the equations of motion in the presence of explicit bilateral constraints. This method is an alternative to the constraint embedding approach for solving the dynamics of constrained multibody systems.

Operational Space Compliance Matrix (OSCM)

The OSCM is the the system mass matrix inverse reflected to the task space and is defined as \(J{\cal M}^{-1} J^*\). kdFlex provides a low-cost recursive algorithm for computing this important quantity for solving equations of motion under constraints, as well as in robotics for whole-body motion control.