Twist: Behaviors

examining what a spined quadruped can accomplish

This page documents the development of behaviors for Twist, a 13-actuated-DOF quadrupedal robot with an active, axially-twisting spine. The mechanical design, firmware, and control infrastructure development for Twist are documented in the linked project pages. This project is under the supervision of J. Diego Caporale.

Twist showing off its active-spine capabilities.

Objective

Twist was created as a research platform to investigate the applications and implications of an axially-twisting spine in quadrupedal locomotion. The objectives of this project are twofold:

  • to investigate the role of a passive, compliant spine in quadrupedal gaits
  • to use the larger workspace and actuation affordance provided by an active, twisting spine to execute dynamic behaviors with improved dexterity and efficiency.

Eventually, we intend to demonstrate highly-dynamic transitional behaviors on Twist that an otherwise equivalent, rigid-bodied quadruped would not be able to complete as effectively, if at all. Check out this video for an example of a transitional behavior that a rigid-bodied snow leopard would most certainly struggle to complete.

A snow leopard demonstrating some active-spine, parkour-like jumping.

Software

The Twist software is built within the Kod*Lab Mjbots SDK framework. Behaviors are written by implementing either the Behavior or IOBehavior class template from the SDK (depending on whether input or output is required), which describes behaviors in terms of initialization, control loop updates, and inter-behavior transitions. Combining this framework with the Twist control infrastructure, I implement behaviors by describing high-level control schemes instead of focusing on low-level implementation. This structure allows me to focus on developing novel behaviors while resting assured that the structures handling low-level operations will translate these scripted behaviors into effective, robot-executable code.

Behaviors

Below are some of the initial behaviors that Twist can perform. This section is a work in progress and will document the evolution of Twist’s capabilities as they continue to grow.

Standing

In order to perform any kind of quasi-static or dynamic behaviors, a legged locomotor must first stand. Using the Twist control infrastructure, implementing a stable stand is fairly trivial. We implemented our stand via a forward kinematic PD-controller — meaning that the state error and resulting force inputs are computed at the toes in body cartesian space — with gravity compensation. The computed toe forces are then transformed to joint space using the robot Jacobian.

This method produces very stable results and is robust to significant external disturbance. It also preserves the notion of the robot as a spring-loaded inverted pendulum (SLIP), with mass concentrated in the torso and neglected in the limbs. The stability of a controlled SLIP system can be examined with relatively simple nonlinear control theory techniques. An alternative approach to such a stand would involve the inverse limb dynamics, which requires an accurate limb inertial model and more complex computation. While this may be necessary for dynamic behaviors, a kinematic control scheme is more than sufficient for standing.

An interesting result of this approach to standing comes from the fact that Twist is over-actuated for toe positioning. Thereby, our system has a null space within which a desired toe configuration can be reached. Physically, this most clearly manifests in the spine. When the torque commanded to the spinal joint is zeroed-out (making the system well-actuated), the robot can still stand stably, and the spine can freely move throughout its range of motion. This idea is useful when commanding a spinal trajectory.

Twisting

As a tool for demonstrating the robot’s capabilities, I implemented a simple torso shake, which is demonstrated in the video at the top of this page. Once again, the stand is implemented in forward kinematic space. Due to the over-actuated nature of the system, I am able to drive the spine within the system’s null space. As a result, I can simply administer torque commands to the spine, and the forward kinematic standing controller will compensate and preserve a stable stand. The inspiration for the robot’s spinal oscillation is a wet dog twisting its torso to dry itself.

Single Rigid Body Stand

We will be using a single rigid body (SRB) model adapted for a spined robot for our torso control when executing gaits. The first step in developing novel, twisting-spine-incorporated behaviors is to implement their rigid-spine equivalent. We used the rigid floating torso model documented in the control infrastructure page to command a stand.

Below are two videos demonstrating unstable and stable SRB stands. The first is noticeably unstable in the fore-aft direction. Eventually, this instability leads to toe slip, invalidating our assumed-contact model. We were able to analyze this issue, and then tune our controller to stabilize this motion through aggressive data logging and visualization. Putting all of the forces, torques, and poses on intuitive plots makes hardware debugging quick and painless.

An unstable (left) and stable (right) demonstration of floating body control on Twist. The progression from unstable to stable was the result of diagnostics that came from sufficient data logging and visualization.