| Marsette Vona: | ADMIN |
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
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.
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:


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,
joint angle in degrees = S*(R-O)*(333.3 degrees)/(2^10-1)
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:

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
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.

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.
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:
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.
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.
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).
sudo apt-get remove brltty.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.
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.
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,
make makefiles generates makefiles in any subpackagesmake project-clean removes most precompiled stuffmake project-realclean removes all precompiled stuffmake project (re)builds the binary files for the projectmake (re)builds the binary files in the current directorymake project-javadoc (re)builds the project documentationTHIS 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 |