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

3D rigid-body style ball simulator with drag, Magnus lift, and ground contact. More...

#include <ball_physics.hpp>

Inheritance diagram for frcsim::BallPhysicsSim3D:
frcsim::Gamepiece frcsim::Ball frcsim::Season2025Gamepiece frcsim::Season2026Gamepiece

Classes

struct  Config
 Runtime physics environment parameters. More...
struct  BallProperties
 Physical parameters for the ball body. More...
struct  BallState
 Dynamic state advanced by step(). More...
struct  PickupRequest
 Request payload used to capture a ball into a carrier. More...

Public Member Functions

 BallPhysicsSim3D ()=default
 BallPhysicsSim3D (const Config &config)
 BallPhysicsSim3D (const Config &config, const BallProperties &ball_properties)
const Configconfig () const
 Returns active, sanitized configuration.
void setConfig (const Config &config)
 Replaces configuration after value sanitization and clamping.
const BallPropertiesballProperties () const
 Returns active, sanitized ball properties.
void setBallProperties (const BallProperties &props)
 Replaces ball properties after sanitization.
const BallStatestate () const
 Returns current ball state.
void setState (const BallState &state)
 Replaces state and sanitizes non-finite values.
void setCarrierPose (const Vector3 &carrier_position_m, const Vector3 &carrier_velocity_mps=Vector3::zero())
 Updates carrier pose used when the ball is in held mode.
bool requestPickup (const PickupRequest &pickup_request)
 Attempts to pick up and hold the ball.
void release ()
 Releases the ball from held mode without changing velocity.
void shoot (const Vector3 &muzzle_position_m, const Vector3 &muzzle_velocity_mps, const Vector3 &muzzle_spin_radps=Vector3::zero())
 Places the ball at a muzzle pose and sets launch velocity/spin.
void step (double dt_s)
 Advances simulation by dt seconds.

Detailed Description

3D rigid-body style ball simulator with drag, Magnus lift, and ground contact.

Units are SI: meters, seconds, kilograms, radians.

Constructor & Destructor Documentation

◆ BallPhysicsSim3D() [1/3]

frcsim::BallPhysicsSim3D::BallPhysicsSim3D ( )
default

◆ BallPhysicsSim3D() [2/3]

frcsim::BallPhysicsSim3D::BallPhysicsSim3D ( const Config & config)
inlineexplicit

◆ BallPhysicsSim3D() [3/3]

frcsim::BallPhysicsSim3D::BallPhysicsSim3D ( const Config & config,
const BallProperties & ball_properties )
inline

Member Function Documentation

◆ ballProperties()

const BallProperties & frcsim::BallPhysicsSim3D::ballProperties ( ) const
inline

Returns active, sanitized ball properties.

Returns
Immutable BallProperties reference.

◆ config()

const Config & frcsim::BallPhysicsSim3D::config ( ) const
inline

Returns active, sanitized configuration.

Returns
Immutable Config reference.

◆ release()

void frcsim::BallPhysicsSim3D::release ( )
inline

Releases the ball from held mode without changing velocity.

◆ requestPickup()

bool frcsim::BallPhysicsSim3D::requestPickup ( const PickupRequest & pickup_request)
inline

Attempts to pick up and hold the ball.

Parameters
pickup_requestCapture request parameters.
Returns
true when capture succeeds or ball is already held.

◆ setBallProperties()

void frcsim::BallPhysicsSim3D::setBallProperties ( const BallProperties & props)
inline

Replaces ball properties after sanitization.

Parameters
propsNew ball properties.

◆ setCarrierPose()

void frcsim::BallPhysicsSim3D::setCarrierPose ( const Vector3 & carrier_position_m,
const Vector3 & carrier_velocity_mps = Vector3::zero() )
inline

Updates carrier pose used when the ball is in held mode.

Parameters
carrier_position_mCarrier reference position in world frame.
carrier_velocity_mpsCarrier linear velocity in world frame.

◆ setConfig()

void frcsim::BallPhysicsSim3D::setConfig ( const Config & config)
inline

Replaces configuration after value sanitization and clamping.

Parameters
configNew config input.

◆ setState()

void frcsim::BallPhysicsSim3D::setState ( const BallState & state)
inline

Replaces state and sanitizes non-finite values.

Parameters
stateNew state value.

◆ shoot()

void frcsim::BallPhysicsSim3D::shoot ( const Vector3 & muzzle_position_m,
const Vector3 & muzzle_velocity_mps,
const Vector3 & muzzle_spin_radps = Vector3::zero() )
inline

Places the ball at a muzzle pose and sets launch velocity/spin.

Parameters
muzzle_position_mMuzzle world position.
muzzle_velocity_mpsLaunch velocity in world frame.
muzzle_spin_radpsLaunch spin in world frame.

◆ state()

const BallState & frcsim::BallPhysicsSim3D::state ( ) const
inline

Returns current ball state.

Returns
Immutable BallState reference.

◆ step()

void frcsim::BallPhysicsSim3D::step ( double dt_s)
inline

Advances simulation by dt seconds.

Parameters
dt_sSimulation timestep in seconds.

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