Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Controller Architecture

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.

Controller Architecture

Documentation on the IHMC controller architecture.

Avatar for SylvainBertrand

SylvainBertrand

May 04, 2016
Tweet

Other Decks in Science

Transcript

  1. API Input HeadTrajectoryMessage NeckTrajectoryMessage NeckDesiredAccelerationsMessage ChestTrajectoryMessage PelvisTrajectoryMessage PelvisOrientationTrajectoryMessage PelvisHeightTrajectoryMessage FootstepDataMessage

    FootstepDataListMessage FootTrajectoryMessage HandTrajectoryMessage ArmTrajectoryMessage ArmDesiredAccelerationsMessage StopAllTrajectoryMessage EndEffectorLoadBearingMessage GoHomeMessage WholeBodyTrajectoryMessage PauseWalkingMessage HandDesiredConfigurationMessage
  2. Quick notes on messages • Before being processed by the

    controller, each message is validated using PacketValidityChecker to check the sanity of the data. • A message with an id == INVALID_MESSAGE_ID (= 0L) will be thrown away. • Some messages are “queue-able”, i.e. HandTrajectoryMessage, ArmTrajectoryMessage, FootTrajectoryMessage, and ChestTrajectoryMessage. By setting the message field ExecutionMode, the user can choose whether such the message should be queued or should override the message being executed.
  3. Quick notes on queue-able messages • Some messages are “queue-able”:

    • HandTrajectoryMessage, • ArmTrajectoryMessage, • FootTrajectoryMessage, • ChestTrajectoryMessage. • By setting the message field ExecutionMode, the user can choose whether such the message should be queued or should override the message being executed.
  4. Quick notes on GoHomeMessage • Some body parts can be

    requested to go a controller predefined home position (safe configuration) in a given time: • Arm • Chest • Pelvis • Home configurations: • Arm: the configuration that robot starts in. • Chest: upward orientation facing forward. • Pelvis: orientation leveled to the ground, facing forward, position between the feet, and height at which the robot starts in.
  5. HighLevelHumanoidControllerManager Control architecture overview CommandInputManager: Input API (Thread safe) StatusMessageOutputManager:

    Output API (Protect controller data) ControllerNetworkSubscriber Walking controller Managers Head Chest Feet Manipulation Pelvis Balance Whole body controller core Message Status Command Controller core command Robot command Status
  6. WalkingHighLevelHumanoidController overview • This is the high-level controller that deals

    directly with the different managers. • It has full control on each manager. • The managers cannot interact directly with the “outside world”. They interact with the walking controller which either passes or stops the flow of information.
  7. Quick notes on the API • The input messages are

    received by the ControllerNetworkSubscriber: • A received message is first validated. • Bad messages are thrown away and the user is notified with a InvalidPacketNotificationPacket. • Good message are then passed to the CommandInputManager. • The CommandInputManager converts the messages supported by the controller into equivalent Command: • ArmTrajectoryMessage->ArmTrajectoryCommand • This conversion is to deal with implementation restrictions. • The Commands are then passed to the controller which then executes them.
  8. ManipulationControlModule overview HandTrajectoryMessage ArmTrajectoryMessage ArmDesiredAccelerationsMessage EndEffectorLoadBearingMessage ManipulationControlModule left/right HandControlModule TaskspaceHandControlState

    JointspaceHandControlState HandUserControlModeState LoadBearingHandControlState Controller Java API Command HandTrajectoryCommand ArmTrajectoryCommand ArmDesiredAccelerationsCommand EndEffectorLoadBearingCommand Walking controller InverseDynamicsCommand, FeedbackControlCommand
  9. ManipulationControlModule quick description • The ManipulationControlModule interfaces the two HandControlModules

    with the high-level walking controller. • The HandControlModule manages the different control modes with a state machine that changes state depending on the type of command to be executed. • The active state output is either an InverseDynamicsCommand or a FeedControlCommand that is picked by the high-level controller and later fed to the controller core.
  10. TaskspaceHandControlState • Control the hand in taskspace. • It executes

    HandTrajectoryCommand. • Uses MultipleWaypointsOrientationTrajectoryGenerator and MultipleWaypointsPositionTrajectoryGenerator to spline through the given trajectory points. • For viewing desireds from SCS, look for: • (left|right)HandSubTrajectoryCurrent(Position|Velocity|AngularVelocity|Acceleratio n|AngularAcceleration)(X|Y|Z) • (left|right)HandSubTrajectoryCurrentOrientation(Qx|Qy|Qz|Qs) • For viewing tracking error from SCS, look for: • (hand name)RotationErrorInBody(X|Y|Z) • (hand name)PositionError(X|Y|Z) • Where hand name = (left|right)Palm for Valkyrie.
  11. JointspaceHandControlState • Control the hand in jointspace. • It executes

    ArmTrajectoryCommand. • Uses MultipleWaypointsTrajectoryGenerator to spline through the given trajectory points. • For viewing desireds from SCS, look for: • (joint name)SubTrajectoryCurrent(Value|Velocity|Acceleration) • For viewing tracking error from SCS, look for: • (q|qd)_err_(joint name)
  12. HandUserControlModeState • Give user direct access to joint desired accelerations.

    • It executes ArmDesiredAccelerationsCommand. • For viewing desired joint accelerations from SCS, look for: • qdd_d_user_(joint name)
  13. LoadBearingHandControlState • Allow a hand to help support the robot.

    • It executes EndEffectorLoadBearingCommand. • This state is not reliable. We advise not using it for now.
  14. HeadOrientationManager overview HeadOrientationManager TaskspaceHeadControlState JointspaceHeadControlState HeadUserControlModeState Controller Java API Command

    HeadTrajectoryCommand NeckTrajectoryCommand NeckDesiredAccelerationsCommand Walking controller InverseDynamicsCommand, FeedbackControlCommand HeadTrajectoryMessage NeckTrajectoryMessage NeckDesiredAccelerationsMessage
  15. HeadOrientationManager quick description • The HeadOrientationManager interfaces the control modes

    with the high-level walking controller. • It manages the different control modes with a state machine that changes state depending on the type of command to be executed. • The active state output is either an InverseDynamicsCommand or a FeedControlCommand that is picked by the high-level controller and later fed to the controller core.
  16. TaskspaceHeadControlState • Control the head in taskspace. • It executes

    HeadTrajectoryCommand. • Uses MultipleWaypointsOrientationTrajectoryGenerator to spline through the given trajectory points. • For viewing desireds from SCS, look for: • HeadSubTrajectoryCurrentOrientation(Qx|Qy|Qz|Qs) • HeadSubTrajectoryCurrent(AngularVelocity|AngularAcceleration)(X|Y|Z) • For viewing tracking error from SCS, look for: • (head name)RotationErrorInBody(X|Y|Z) • Where head name = upperNeckPitchLink for Valkyrie.
  17. JointspaceHeadControlState • Control the head in jointspace. • It executes

    NeckTrajectoryCommand. • Uses MultipleWaypointsTrajectoryGenerator to spline through the given trajectory points. • For viewing desireds from SCS, look for: • (joint name)SubTrajectoryCurrent(Value|Velocity|Acceleration) • For viewing tracking error from SCS, look for: • (q|qd)_err_(joint name)
  18. HeadUserControlModeState • Give user direct access to joint desired accelerations.

    • It executes NeckDesiredAccelerationsCommand. • For viewing desired joint accelerations from SCS, look for: • qdd_d_user_(joint name)