From sdk-wiki
Jump to: navigation, search
Robot Components : Robot, Arms, Grippers, Cameras, Head, I/O, Screen

Summary

This components page describes Baxter's Arms. Baxter's arms are an integral part of "Baxter being Baxter" from the basic actuation premise of Series Elastic Actuators (SEAs), to available control modes, to the overall safety of the system. This page is the gathering point for all of the knowledge that define Baxter's Arms.

Joints

Baxter's has two seven degree-of-freedom (DOF) arms. Seven DOF arms are desirable as they provide a kinematic redundancy greatly improving manipulability and safety.

Joint Naming

Baxter arm.png

The arm joints are named in the following manner:

S0 - Shoulder Roll

S1 - Shoulder Pitch

E0 - Elbow Roll

E1 - Elbow Pitch

W0 - Wrist Roll

W1 - Wrist Pitch

W2 - Wrist Roll

Series Elastic Actuators (SEAs)

Baxter arm naked.png

Image Credit: MIT Technology Review

Series Elastic Actuators (SEAs) are the actuation technique, or mechanism responsible for moving the robot links. SEAs are an integral part of "what makes Baxter, Baxter".

Recommended Reading: Series Elastic Actuators (Rethink's own Matthew Williamson)

Series Elastic Actuators differ from traditional actuation techniques in that we introduce a spring between the motor/gearing elements and the output of the actuator. This results in "gains in stable, low noise force control, and protection against shock loads".

Inherent safety is a characteristic of SEAs. The springs in these actuators are deformable by human level inputs. This deflection is an inherent safety mechanism.

Lastly, and perhaps most importantly, by introducing the spring element we are now able to measure torque output from the actuator. This enables such things as torque control, impedance control, and more!

Control Systems

There are a number of control systems for controlling Baxter's arms and adding robustness or safety to Baxter. Joint Position, Joint Velocity, and Joint Torque control modes exist for commanding Baxter's arm for your specific application. The robustness and safety systems consist of Collision Avoidance (preventing self collision) and Collision Detection (detecting collision with the environment). Zero-G mode is one of the most prominent modes, allowing human-interaction with Baxter.

For detailed explanations and information on usage (including enabling/disabling) of these control systems, see:

Sensors

Baxter's arms are also loaded with a number of useful sensors. These include an 'eye-in-hand' camera, IR range sensor, accelerometer, and user input buttons.

Hand sensors.png

  • Cameras
  • Infrared (IR) Range Sensors
  • Accelerometer
  • Navigators/Cuff Buttons

Resources

Hardware Specs

See the Hardware Specifications page for detailed hardware specs.

Control Modes

See Arm Control Modes for detailed explanations on the position, velocity, and torque arm control modes.

ROS API

See the API Reference Page for information on the ROS Interface to the Arms.

Python API (baxter_interface)

Limb interface class

(limb.py) - The python baxter_interface class for limb control. Allows for all of the above control methods, abstracting the ROS communication into clean Python method calls.

Joint trajectory action server class

(joint_trajectory_action_server.py) - The implementation of the ROS standard joint trajectory action. Used in popular motion planning framework MoveIt!

Examples & Tools

Examples

This section lists example programs which use the arms, demonstrating baxter_interface's Limb class (limb.py).

Joint Position

Joint Velocity

  • Wobbler Example
    Simple demo that uses velocity control to move the arms in a random magnitude sinusoidal pattern.
  • Puppet Example
    Reads the measured joint velocities of the input arm and 'puppets' (mimics) those velocity commands on the opposing arm.

Inverse Kinematics

Joint Trajectory

  • Joint Trajectory Playback Example
    Enable the robot joint trajectory interface, parse a file created using the joint recorder example, and send the resulting joint trajectory to the joint trajectory action server.

Tools

  • Enable Robot Tool
    You need to have the robot enabled to control the arm motors. (Or... if you ever need a way to stop the motors via software.)
  • Tuck Arms Example
    The tuck arms program will allow you to tuck/untuck Baxter's arms to/from 'shipping pose'.
  • rviz (ROS)
    You can use the Robot Model to visualize the joint positions and tf world axes coordinates. Check out the Joint States Display Types.
  • Maintenance tools
    • Tare - Light arm re-zeroing (Can run approx. weekly, at constant daily use)
    • Calibration - Arm sensor re-calibration (Can run approx. monthly, with daily use)