Simulation Construction Set

Simulation Construction Set

  • IHMC Home
  • All IHMC Docs
  • About IHMC

›Implementing Closed-Chain Mechanisms Using External Force Points

Getting Started

  • Quick Start
  • Requirements
  • Using IHMC Open Robotics Software .jar releases with Maven/Gradle
  • Building .jars
  • Depending Directly on the Source

Using the SCS GUI

  • Running a simulation
  • Changing the Camera Settings
  • SCS Variables
  • Graphing Variables
  • Simulation Replay
  • Data Buffer
  • Exporting Data
  • Export Snapshots and Video of the 3D View

Creating a New Simulation

  • Summary
  • Create a New Project
  • SimplePendulumSimulation.java
  • SimplePendulumRobot.java
  • Run the simulation

Adding Control to a Simulation

  • Summary
  • Adding control to a simulation
  • Run the simulation

Creating Links

  • Summary
  • Creating Links
  • Run the Simulation

Creating Robot with Multiple Joints

  • Summary
  • Create a New Package
  • Mobile Simulation
  • Initial Variables in MobileRobot Class
  • MobileRobot Class Description

Ground Contact Modeling

  • Summary
  • Create a New Package
  • Create a New Class FallingBrickSimulation
  • Create a New Class FallingBrickRobot
  • Create a New Class WavyGroundProfile
  • Description and Analysis

Implementing Closed-Chain Mechanisms Using External Force Points

  • Summary
  • Implementing Closed-Chain Mechanisms
  • FlyballGovernorSimulation Class
  • FlyballGovernorRobot Class
  • FlyballGovernorSimpleClosedLoopConstraintController Class
  • FlyballGovernorCommonControlParameters Class
  • Description and Analysis

Description and Analysis

1. Examine the FlyballGovernorRobot source code

Add the following constructor to your FlyballGovernorRobot class.
Note where the ExternalForcePoints are created and attached.

2. Add the link methods to the FlyballGovernorRobot class

These methods build the links for the simulation.

3. Add the doConstraint method in FlyballGovernorSimpleClosedLoopConstraint

Here is where the constraint forces between two points, A and B, are generated. We see that for each constraint, a linear spring-damper is used to "glue" the two ExternalForcePoints together.

4. Run the FlyballGovernorSimulation class

Note that the blue cylinder rises as the device spins faster. To vary the desired speed, change the value of q_d_cylinder_z.

5. Change the value of constraintGain and constraintDamp to 0.0 while in simulation

See that the constraint is no longer enforced and the "glue" joint comes apart.

6. Now look at the doControl() function in FlyballGovernorRobot

The feedback mechanism used in the FlyballGovernor is tau_rotation.set(k_feedback.getDoubleValue() * (q_d_cylinder_z.getDoubleValue() - q_cylinder_z.getDoubleValue())); The torque on the rotation joint is proportional to the height of the cylinder. This is an example of how flyballs on locomotive engines are used. Flyball governors throttle steam engines proportionally to the height of the cylinder. In essence, a flyball governor provides velocity feedback control completely mechanically.

7. Try implementing a closed-loop mechanism on your own

Examples include four-bar linkages or a necklace with rigid links.

Full Code for Classes

FlyballGovernorSimulation

FlyballGovernorRobot

FlyballGovernorSimpleClosedLoopConstraintController

FlyballGovernorCommonControlParameters

← FlyballGovernorCommonControlParameters Class
Simulation Construction Set
Docs
Quick StartSoftware Documentation
Community
GitHubFacebookTwitterYouTube
Copyright © 2018 IHMC Robotics