JSim 2026.06.01-p(1)
Loading...
Searching...
No Matches
frcsim::RevoluteJoint Class Reference

Hinge joint that permits rotation about one axis while constraining relative translation. More...

#include <revolute_joint.hpp>

Inheritance diagram for frcsim::RevoluteJoint:
frcsim::JointBase

Public Member Functions

 RevoluteJoint (RigidBody *body_a, RigidBody *body_b, const Vector3 &axis_local)
const Vector3axisLocal () const
void setLimits (double min_angle_rad, double max_angle_rad)
void clearLimits ()
bool hasLimits () const
double minAngle () const
double maxAngle () const
void setMotorTarget (double target_velocity_radps, double max_torque_nm)
bool hasMotor () const
double motorTargetVelocity () const
double motorMaxTorque () const
void solveConstraint (double dt_s, int iterations) override
double constraintError () const override
Public Member Functions inherited from frcsim::JointBase
virtual ~JointBase ()=default
JointType type () const
RigidBodybodyA ()
RigidBodybodyB ()
const RigidBodybodyA () const
const RigidBodybodyB () const
const Vector3anchorA () const
const Vector3anchorB () const
void setAnchorA (const Vector3 &anchor)
void setAnchorB (const Vector3 &anchor)
bool isEnabled () const
void setEnabled (bool enabled)
double breakForceThreshold () const
void setBreakForceThreshold (double force_n)
bool isBroken () const
void resetBroken ()
virtual void warmStart ()

Additional Inherited Members

Protected Member Functions inherited from frcsim::JointBase
 JointBase (JointType type, RigidBody *body_a, RigidBody *body_b)
Protected Attributes inherited from frcsim::JointBase
JointType type_
RigidBodybody_a_ {nullptr}
RigidBodybody_b_ {nullptr}
Vector3 anchor_a_ {}
Vector3 anchor_b_ {}
bool is_enabled_ {true}
bool is_broken_ {false}
double break_force_threshold_ {1e6}

Detailed Description

Hinge joint that permits rotation about one axis while constraining relative translation.

Physics principle: constrained rigid-body dynamics with one rotational degree of freedom. Limit and motor behavior are represented as angular inequality/equality constraints solved by impulses.

Reference: https://en.wikipedia.org/wiki/Hinge

Constructor & Destructor Documentation

◆ RevoluteJoint()

frcsim::RevoluteJoint::RevoluteJoint ( RigidBody * body_a,
RigidBody * body_b,
const Vector3 & axis_local )
inline

Member Function Documentation

◆ axisLocal()

const Vector3 & frcsim::RevoluteJoint::axisLocal ( ) const
inline

◆ clearLimits()

void frcsim::RevoluteJoint::clearLimits ( )
inline

◆ constraintError()

double frcsim::RevoluteJoint::constraintError ( ) const
overridevirtual

Implements frcsim::JointBase.

◆ hasLimits()

bool frcsim::RevoluteJoint::hasLimits ( ) const
inline

◆ hasMotor()

bool frcsim::RevoluteJoint::hasMotor ( ) const
inline

◆ maxAngle()

double frcsim::RevoluteJoint::maxAngle ( ) const
inline

◆ minAngle()

double frcsim::RevoluteJoint::minAngle ( ) const
inline

◆ motorMaxTorque()

double frcsim::RevoluteJoint::motorMaxTorque ( ) const
inline

◆ motorTargetVelocity()

double frcsim::RevoluteJoint::motorTargetVelocity ( ) const
inline

◆ setLimits()

void frcsim::RevoluteJoint::setLimits ( double min_angle_rad,
double max_angle_rad )
inline

◆ setMotorTarget()

void frcsim::RevoluteJoint::setMotorTarget ( double target_velocity_radps,
double max_torque_nm )
inline

◆ solveConstraint()

void frcsim::RevoluteJoint::solveConstraint ( double dt_s,
int iterations )
overridevirtual

Implements frcsim::JointBase.


The documentation for this class was generated from the following file: