Description

RoboSimian robot model.

The robot model consists of a chassis (torso) with an attached sled and four limbs (legs).

#include <RoboSimian.h>

Public Member Functions

 RoboSimian (chrono::ChContactMethod contact_method, bool has_sled=false, bool fixed=false)
 Construct a RoboSimian with an implicit Chrono system. More...
 
 RoboSimian (chrono::ChSystem *system, bool has_sled=false, bool fixed=false)
 Construct a RoboSimian within the specified Chrono system. More...
 
chrono::ChSystemGetSystem ()
 Get the containing system.
 
void SetMotorActuationMode (ActuationMode mode)
 Set actuation type for wheel motors (default: SPEED).
 
void EnableCollision (int flags)
 Set collision flags for the various subsystems. More...
 
void SetFrictionCoefficients (float sled_friction, float wheel_friction)
 Set coefficients of friction for sled-terrain and wheel-terrain contacts. More...
 
void SetDriver (std::shared_ptr< RS_Driver > driver)
 Attach a driver system.
 
void SetVisualizationTypeChassis (VisualizationType vis)
 Set visualization type for chassis subsystem.
 
void SetVisualizationTypeSled (VisualizationType vis)
 Set visualization type for sled subsystem.
 
void SetVisualizationTypeLimbs (VisualizationType vis)
 Set visualization type for all limb subsystems.
 
void SetVisualizationTypeLimb (LimbID id, VisualizationType vis)
 Set visualization type for thr specified limb subsystem.
 
void SetVisualizationTypeWheels (VisualizationType vis)
 Set visualization type for all wheel subsystem.
 
void SetOutputDirectory (const std::string &outdir, const std::string &root="results")
 Set output directory.
 
double GetMass () const
 Get the total mass of the robot.
 
std::shared_ptr< RS_ChassisGetChassis () const
 Get a handle to the robot's chassis subsystem.
 
std::shared_ptr< chrono::ChBodyAuxRefGetChassisBody () const
 Get a handle to the robot's chassis body.
 
const chrono::ChVector3dGetChassisPos () const
 Get location of the chassis body.
 
const chrono::ChQuaternionGetChassisRot () const
 Get orientation of the chassis body.
 
std::shared_ptr< RS_SledGetSled () const
 Get a handle to the robot's sled subsystem.
 
std::shared_ptr< chrono::ChBodyAuxRefGetSledBody () const
 Get a handle to the robot's sled body.
 
std::shared_ptr< RS_LimbGetLimb (LimbID id) const
 Get a handle to the robot's specified limb subsystem.
 
std::shared_ptr< chrono::ChBodyAuxRefGetWheelBody (LimbID id) const
 Get a handle to the wheel body for the specified limb.
 
const chrono::ChVector3dGetWheelPos (LimbID id) const
 Get location of the wheel body for the specified limb.
 
chrono::ChVector3d GetWheelAngVelocity (LimbID id) const
 Get angular velocity of the wheel body for the specified limb (expressed in local coordinates).
 
double GetWheelAngle (LimbID id) const
 Get wheel angle for the specified limb.
 
double GetWheelOmega (LimbID id) const
 Get wheel angular speed for the specified limb.
 
std::array< double, 8 > GetMotorAngles (LimbID id)
 Get angles for all 8 limb motors.
 
std::array< double, 8 > GetMotorOmegas (LimbID id)
 Get angular velocities for all 8 limb motors.
 
std::array< double, 8 > GetMotorTorques (LimbID id)
 Get actuator torques for all 8 limb motors.
 
std::shared_ptr< ChContactMaterialGetChassisContactMaterial ()
 Access the chassis contact material.
 
std::shared_ptr< ChContactMaterialGetSledContactMaterial ()
 Access the sled contact material.
 
std::shared_ptr< ChContactMaterialGetWheelContactMaterial ()
 Access the wheel contact material. Note that this material is shared by all wheels.
 
std::shared_ptr< ChContactMaterialGetWheelDDContactMaterial ()
 Access the wheelDD contact material. Note that this material is shared by all DD wheels.
 
std::shared_ptr< ChContactMaterialGetLinkContactMaterial ()
 Access the link contact material. Note that this material is shared by all non-wheel links.
 
void Initialize (const chrono::ChCoordsys<> &pos)
 Initialize the robot at the specified chassis position and orientation.
 
void Activate (LimbID id, const std::string &motor_name, double time, double val)
 Directly activate the specified motor on the specified limb.
 
void DoStepDynamics (double step)
 Advance dynamics of underlying system. More...
 
void Translate (const chrono::ChVector3d &shift)
 Translate all robot bodies by the specified value.
 
void Output ()
 Output current data.
 
void ReportContacts ()
 Report current contacts for all robot parts.
 

Friends

class ContactMaterial
 

Constructor & Destructor Documentation

◆ RoboSimian() [1/2]

chrono::robosimian::RoboSimian::RoboSimian ( chrono::ChContactMethod  contact_method,
bool  has_sled = false,
bool  fixed = false 
)

Construct a RoboSimian with an implicit Chrono system.

Parameters
contact_methodcontact formulation (SMC or NSC)
has_sledtrue if robot has sled body attached to chassis
fixedtrue if robot chassis fixed to ground

◆ RoboSimian() [2/2]

chrono::robosimian::RoboSimian::RoboSimian ( chrono::ChSystem system,
bool  has_sled = false,
bool  fixed = false 
)

Construct a RoboSimian within the specified Chrono system.

Parameters
systemcontaining system
has_sledtrue if robot has sled body attached to chassis
fixedtrue if robot chassis fixed to ground

Member Function Documentation

◆ DoStepDynamics()

void chrono::robosimian::RoboSimian::DoStepDynamics ( double  step)

Advance dynamics of underlying system.

If a driver system is specified, apply motor actuations at current time.

◆ EnableCollision()

void chrono::robosimian::RoboSimian::EnableCollision ( int  flags)

Set collision flags for the various subsystems.

By default, collision is enabled for the sled and wheels only. The 'flags' argument can be any of the CollisionFlag enums, or a combination thereof (using bit-wise operators).

◆ SetFrictionCoefficients()

void chrono::robosimian::RoboSimian::SetFrictionCoefficients ( float  sled_friction,
float  wheel_friction 
)

Set coefficients of friction for sled-terrain and wheel-terrain contacts.

Default values: 0.8.


The documentation for this class was generated from the following files:
  • /builds/uwsbel/chrono/src/chrono_models/robot/robosimian/RoboSimian.h
  • /builds/uwsbel/chrono/src/chrono_models/robot/robosimian/RoboSimian.cpp