Marsette Vona: ADMIN

 
ATHLETE Direct Manipulation INterface

download jar

ATHLETE Direct Manipulation INterface

ATHLETE Direct Manipulation INterface (ADMIN) is a 1/8 scale sensed but un-actuated model of one leg of JPL's ATHLETE robot, designed to be used as a human-interface device to aid operations.

ADMIN features

ADMIN Hardware

The ADMIN hardware was designed and fabricated using various rapid-prototyping strategies. It is functional but should be considered experimental, and should be treated with some care. It does not include protective casings. While this does not present any safety issue to the operator due to the low voltages involved, the operator should take care to discharge him/herself (e.g. by touching a large, preferably grounded, metal object) prior to handling the device. Also the device should not be operated in environments with significant dust or moisure.

The hardware is powered via USB with a maximum current draw of approximately 75mA. This is within the 100mA allowed current draw for a USB device which does not explicitly negotiate for more. A self-resetting fuse is included to protect the host USB hardware under any unforseen power conditions.

Communications is also performed over USB. The interface should be USB 1.1/2.0-compatible. The device will appear as a generic USB serial port when attached to a host, e.g. /dev/ttyUSB0 on Linux. The firmware communicates at 115.2kbps with 8 data bits, no parity, one stop bit (8N1), and no flow control. Normally the provided Java host library is used to communicate with the firmware over this port. It is also possible to exercise the various firmware functions with a generic terminal program, see below.

The USB-to-serial chip is in the same family as chips commonly used in USB-to-serial dongles, and may require non-standard drivers on some hosts. The chip manufacturer provides these drivers here. No driver installation should be required on modern Linux systems.

Unpacking and Assembly

Please retain all shipping materials and note the foam arrangement for re-packing.

Two allen wrenches are provided. Only the larger one is required for assembly. The smaller wrench can be used to adjust joint tension, but this should not normally be required. Exercise caution when tightening or loosening any screw. No screw in the device should be tightened to more than light finger torque. Overtightening can easily strip threads and heads.

Assembly steps:

  1. Unpack the base and place on a flat worksurface with the three rubber feet down.
  2. Locate the four black setscrews embedded in the blue plastic block on the base which extend radially into the support shaft hole.
    ADMIN assembly setscrews

  3. Ensure that the setscrews are not blocking the support shaft. Back them off slightly if they are.
  4. Unpack and insert the support shaft and ensure that it seats all the way down.
  5. Tighten the four setscrews to light finger tension.
  6. Unpack the deck-and-limb assembly and gently place face-down on the worksurface (the USB connector will be on the bottom side in this orientation). Avoid contact with the exposed electronics, the small components and leads are delicate.
  7. Locate the two black setscrews in the blue plastic block which extend radially into the support shaft hole, ensure they are not blocking the support shaft, and back them off slightly if they are.
  8. Ensure that the cabling is not blocking the support shaft hole. The white plastic cable stays can be rotated slightly to clear the hole. Exercise caution when doing this as the fine distal wires are extremely fragile.
    ADMIN assembly

  9. Invert the deck-and-limb assembly and insert onto the vertical support shaft, ensuring that it seats all the way down. Hold the longer cable aside so that it does not wrap around the pole.
  10. Visually align the limb rotation to center on the base.
  11. Tighten the two setscrews to light finger tension.
  12. Gently and slowly operate each joint from limit to limit, visually checking the cabling for pinch points and slack. Slight adjustments may be made to the cables by sliding them in their green stays.

Joint Sensing and Mobility

The joint angles are sensed with commodity ALPS RDC506002A potentiometers designed for low price miniature robotics applications. They have no hardstops and 320 degrees of electrical range (see below for details). They are specified with +/-2% linearity and are not mapped or otherwise calibrated for linearity in the current implementation. In the worst case this could mean that the joint angles are reported with up to about +/-6 degrees of error; in practice the actual error appears to be much smaller. The pot readings are digitized with 10 bits of precision, giving about 0.3 degrees resolution.

The ADMIN firmware samples all pots constantly at a configurable rate and then applies a moving-window averaging low-pass filter with configurable window size. The default sample period is 10ms and the default window size is 16, which yeilds about a 5Hz cutoff frequency. Jitter of about +/- 1 count is still to be expected in consecutive steady-state filtered pot readings (i.e. as reported by the firmware to the host) as in practice the pot will never physically be exactly at one count. The host polls the firmware for mechanism state updates and is thus in control of the highest-level update period; 100ms is a reasonable minimum host-to-firmware polling period as it will satisfy Nyquist with respect to the firmware 5Hz low-pass filter. Longer host-to-firmware polling periods are also reasonable since in practice with ADMIN highly dynamic motions will generally be transient anyway.

The firmware also stores, for each pot,

Let R be the raw reading for a given pot. Then the corresponding ATHLETE joint angle in degrees is computed as
joint angle in degrees = S*(R-O)*(333.3 degrees)/(2^10-1)
Methods are provided in the Java host library to perform this computation. The result is un-ambiguous for physical configurations of the joint that are within the corresponding ATHLETE softstop ranges, since the those ranges are never self-overlapping. In some cases the ADMIN hardware may be physically moved outside the corresp. softstop range; as long as the pot is still within its 320 degree electrical range, the joint angle will be reported with the same sign as the nearest softstop.

Some effort was expended to match the ADMIN joint ranges of motion, link geometry, and overall reachable workspace to ATHLETE. For example, the ADMIN knee can tuck into the thigh, as in ATHLETE:

ADMIN knee tuck

Still, a few differences do exist. The ADMIN hardware may not be able to reach every configuration that the actual ATHLETE hardware can reach due toAlso, the knee and ankle roll on ADMIN may be physically configured beyond both the corresponding ATHLETE softstops and the ADMIN pot electrical range of motion. Readings are undefined for pots that outside their electrical range, but will typically be either very low or very high (in raw counts).

The special case mobility for the ankle roll 1 joint is not implemented.

The knee pitch joint is handled as a special case, since for that joint the ADMIN hardware contains a secondary pot that extends the electrical range of the first. The firmware simply treats the two knee roll pots independently. The Java host library contains code to merge the two readings correctly to report a single aggregate knee pitch angle. The first pot is used unless

In either case the secondary pot is used, yeilding a (-205, +155] valid range of motion, a superset of the corresponding ATHLETE softstop range.

Calibration

For each pot, the firmware stores an additive offset which gives the raw counts when the corresponding ATHLETE joint is at zero rotation. These offsets constitute the zero calibration and are stored in nonvolatile memory on the hardware. The Java host library provides several high-level methods to update the offsets. In addition, a physical calibration template is provided, which an operator can use to physically pose ADMIN in the ATHLETE nominal driving configuration: -30 degrees hip pitch, -90 degrees knee pitch, +30 degrees ankle pitch, all other joints 0. The host library contains a one-shot method to compute and update the pot offsets with ADMIN in this pose; this is the preferred calibration method.

ADMIN nominal pose template

There are a few details to consider when using the nominal pose template to calibrate the pot offsets:

The nominal pose template can also be used during operation to positively configure the leg into the nominal driving pose, without updating the calibration offsets.

LEDs and Pushbuttons

Each ADMIN joint, including the wheel, includes a co-located constellation of two pushbuttons and one tri-color LED. The pushbuttons are rectangular with a definite orientation: the longitudinal button at each joint is aligned parallel to the length of the leg, and the transverse button is perpendicular to it. On/off control is provided for each color of each LED.

The firmware and Java host library provide access to the pushbutton and LED state, but do not themselves use the state, with two exceptions:

Neither of these features will interfere with normal usage of the corresponding hardware.

ADMIN Firmware and Monitor

The firmware automatically boots whenever ADMIN is power cycled. It can also be manually reset with a labelled switch on the underside of the top deck. In the current implementation the firmware is not self updating; separate programming hardware and software is required. See below for details.

The ADMIN firmware normally converses in a polled binary protocol with a USB-connected host running the Java host library. Holding the transverse hip yaw pushbutton while the firmware boots causes it to enter a special monitor mode (a historical name). In this mode the firmware offers the same core functionality but uses a human-readable ASCII communication protocol instead of its usual binary protocol. A generic terminal program, such as c-kermit, can then be used to interact directy for the firmware. A Kermit script is provided in the admin/firmware directory in the distribution jar, on Linux it is invoked like this: kermit admin/firmware/kermit.scr /dev/ttyUSB0. Other terminal programs can be used; the communications parameters are 115.2kbps 8N1 (no flow control, VT100 escape codes). A prompt and simple command line editing is provided. The "h" command dumps a list of the available commands. If the Java host library connects to the firmware while it is in monitor mode it will switch to binary mode.

The red hip yaw LED is used as a firmware error indicator. It will go on and stay on (until firmware reset) in the event of an unexpected and serious firmware-level error, such as host-to-firmware input buffer overflow.

ADMIN Host Library

The Java host library exposes most of the firmware functionality as a Java API, and also adds some higher-level functionality such as calibrated joint angle computation. It is intended that applications which use the ADMIN hardware do so via the ADMIN host library. The host library javadoc gives further details and the typical usage recipe.

ADMIN Shell

An executable REPL-style interactive JScheme interpreter is also included. This is a high-level way to exercise the functionality of the device "out of the box". It is mainly intended for debugging.

The full ADMINShell JScheme API is defined in admin-shell-api.scm, with additional scheme sugar in admin-shell-extra.scm. In general, the JScheme api is a thin cover over the corresponding Java API, which itself is mapped fairly directly to the firmware monitor. For example, the JScheme command (gp hy) is equivalent to the firmware monitor command gp hy, which gets the raw reading of the hip yaw pot.

You can run ADMINShell by executing java -jar ADMIN-R33_2008-07-11.jar. You interact with the interpreter via the console, though it may be more convenient to use a console with specific support for scheme interaction, for example, Emacs Quack (tip: open admin-shell-api.scm and admin-shell-extra.scm in the same Emacs session and you'll get M-/ name completion for the ADMIN API).

Known Bugs and Limitations

Binary Requirements and Installation

The ADMIN host code requires a Java 1.5+ JRE. It has been tested (using RXTX) under recent Sun JREs on Linux, Windows XP, Mac OS 10.4, and Mac OS 10.5. Other JREs may work.

The ADMIN host Java code can establish a connection to the firmware either via file I/O on a platform-dependent serial port device file, or it can use the RXTX Java serial port library for platform-independent serial port access. In the latter case you'll need to install RXTX separately.

Download

ADMIN is released in precompiled source form under the GNU LGPL.

The distribution jar comes with everything rolled into one: java source, C source, scheme source, html (m4) source, the makefiles and related stuff, plus precompiled versions of everything (java class files, binaries compiled from C code, html, and javadoc). Further, it includes the pure java dependencies of ADMIN, which are at the time of this writing just (a slightly modified) JScheme. A lighter-weight jar is also available which does not include the java dependencies. You do not need JScheme unless you are actually running ADMINShell.

Build Requirements

The ADMIN build has been tested on Linux. Other platforms may work. You should only need to (re)build the code if you have made a change; it is distributed with pre-built binaries.

The build system is based on the Super-Ninja Makefile. You'll need

The build depends on the RXTX library for portable access to serial ports. This is not a pure java dependency, RXTX contains both Java and native code. You'll need to manually install it before the build will succeed.

Note that the RXTX library need not be present at run-time unless you actually use it. For example, if you choose the direct file I/O communications option, the pre-compiled host library should not complain if RXTX is not available.

You'll probably want to create a directory into which to unpack the jar (jar xvf ADMIN-R33_2008-07-11.jar). The code for ADMIN proper will be under the unpacked directory admin/; other unpacked directories contain the bundled pure-Java dependencies.

From within the admin/ directory,

Disclaimer

THIS INFORMATION, SOFTWARE, AND HARDWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS INFORMATION AND/OR SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

 

vona@mit.edu © 2008 Marsette A. Vona, III and Massachusetts Institute of Technology Fri Jul 11 08:40:24 EDT 2008