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
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)
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:
- Arm Control Overview
- Arm Control Modes
- Collision Avoidance and Detection
- Gravity Compensation
- Zero-G Mode
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.
- 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 Position Keyboard Example
- The joint position keyboard example demonstrates how to move the arms using joint angles input based on keyboard input.
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
- IK Service Example
- Basic example using the Inverse Kinematics solver service.
Joint Trajectory
- Simple Joint trajectory example
- Enable the robot joint trajectory interface and send a simple joint trajectory for Baxter to follow.
- 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)