Experimental Setup




Our set-up consists of an air table which floats lightweight planar objects with nearly zero friction. The table is mounted to a pivoting frame which allows us to vary the effects of gravity in the plane by varying the table tilt.

The robot manipulators are made of lightweight aluminum links with small harmonic drive motors. The robots are from a modular design involving up to four drive motors. This allows for four one degree–of–freedom robots or two two degree–of–freedom serial robots. We design the joins and links to be interchangeable, so that we may easily switch between motors and arms during different tests in the lab. This simple design methodology allows for quick and inexpensive fabrication of links. We can create a variety of shapes and sizes for our robots and easily connect them to the existing hardware.

For position feedback of the parts on the table, we have a color CCD camera mounted above the table. This allows us to track colored blobs at 60 Hz. Analysis of the vision data is done by a separate Cognachrome vision board, and centroid information is sent by a serial link to a 300 MHz Pentium II PC.




A.1.1 Table, frame

Our air table is a standard, commercially available air hockey game table. We have replaced the factory air blower with a larger and more powerful model capable of 118 CFM. This allows us to float lightweight plastic objects of moderate size (our test disk is 7.5 cm in diameter and 0.5 cm thick) with very little friction.

The table is mounted on a custom built pivoting steel frame. The frame may be tilted to orient the table at discrete angles in either direction. We have eleven settings available at 0.0, 2.5, 5.0, 10.0, 20.0, 30.0, 40.0, 50.0, 60.0, 70.0, and 80.0 degrees. The amount of gravitational force affecting the table is then the sine of this angle.

To this steel frame, we attach modular framing of 80/20 aluminum extrusion. This outlines the perimeter of the table and allows us to attach our robots at any point in the plane. We extend this frame upwards to accommodate an adjustable camera mount. This may be raised and lowered as necessary to adjust the field of vision. The framing also supports raised lighting on either side.

A.1.2 PS/amp box design

The main hardware for the system is housed in a central enclosure that includes the power supplies, amplifiers, and the robot I/O. It serves as an external go-between for the central computing hardware and the actual robot manipulators. This includes switches for the power supplies for the motors and amps. Each channel (0-3) has a switched motor connection, encoder inputs and limit switch inputs. There is a panel mounted emergency stop and an external user E-stop.

A.1.2.1 Motors

The robots are actuated by HarmonicDrive RH-8 3006 and RH-11 3001 motors. The RH-8 motors each require 1.1 amps (max), and the RH-11 motor each require 2.1 amps (max). To insure that we always have enough operating power, we use a PowerOne 24V/12A linear power supply. This provides power for all four motors.

A 5/±15 V PowerOne power supply provides power for the amplifier operation and the optical encoders. The encoders are included on the motors and have a resolution of 1000 counts/revolution. The DC servo motors are integrated with harmonic drive gearing with a ratio of 100:1. This gives the encoders a shaft end resolution of 400,000 counts/revolution with quadrature.

A.1.2.2 Amplifiers

We are using Titech robot driver amplifiers configured for current/torque control. In order to stay within the ranges of the motors, we can adjust the maximum output current to match the maximum output current of the motors. This is achieved by a small trimmer on the amplifier labeled VT5. With the current factory windings of the current sensor, the max current is 16.7 amps. We adjust VT5 to be rather small, outputting a max of 1.1 amps for the small motor and 2.1 amps for the larger motor.

Note that the small motors should be used with the small current settings and the larger motors with the larger current settings. This is set up as follows:

Channel

Max current

motor

0

2.1 amps

RH-11 3001

1

1.1 amps

RH-8 3006

2

2.1 amps

RH-11 3001

3

1.1 amps

RH-8 3006

A.1.3 Controller card

Both the amplifiers and the encoders feed into a Servo To Go, Inc. ISA bus servo I/O card. This controller card is capable of controlling eight axes at a time. This includes eight digital to analog converters (DAC’s) for eight channels of analog output. There are an accompanying eight channels of encoder input. It also has interval timers capable of generating interrupts. (It has other capabilities, such as digital I/O and analog input, but we will not be using them for this project.) Our set-up only uses the first four axes (0-3) for our four motors.

A.1.4 Vision system

Vision data is taken by an overhead Ultrak STC-630BT color camera. The camera outputs a standard NTSC signal (National Television Systems Committee – the video format used in the United States, Canada and Japan). This provides vision data at a rate of 60Hz with a resolution of 200x250 pixels. This data is analyzed using a Newton Research Labs Cognachrome Vision System. The card also outputs an NTSC signal of the tracked blob data for debugging, which can be viewed on a monitor or standard television.

A.1.4.1 Camera placement

We wish to get a bird’s eye view of our manipulation, so we place the camera directly overhead of our air table via a frame of 80/20 aluminum extrusion. This allows us to easily raise or lower the camera and alter the field of vision. We also choose to orient the camera 90 degrees to the table, so as to get the long part of the table as the long part of the camera field of view.

A.1.3.2 Blob recognition, color tracking

The Cognachrome vision system is capable of tracking up to three different colors at once. These colors should be chosen to be as different from each other as possible and to stand out from the background. In our case, the background is our air table. We are using an air hockey table with a white surface and red décor markings, therefore we must choose colors that are not white or red, or that look like these colors.

It is important to recognize that the vision system sees differently than a human. While colors might look like they stand out from one another, it may not be so from the vision system’s perceived spectrum point of view. For instance, the vision system has trouble discerning light colors from white and red, so yellow, orange, and all those in between do not work well.

Training of colors is done by first placing a large solid colored blob in the center of the camera’s view. We then ask the vision system to take a sampling of the center color and train the current channel to that color. We can then incrementally alter that color to fine tune the system.

It is beneficial to use colored paper to test colors with the system. This way, you can easily create a large blob for training, and easily reproduce that exact color in any shape and size (with a few extra sheets and a pair of scissors).

After a great deal of experimentation, a bright blue and a dark blue seemed to give good results. These colors were then trained on channel A (light blue) and channel B (dark blue) for data acquisition.

A.1.3.3 Lighting

After considerable jockeying and experimentation, we have found proper lighting of the surface is as important as the choice of colors for good blob recognition. This was discovered because the vision system recognized blobs differently, or sometimes not at all, depending on where they were in the on the table when using only ambient room lighting. The system recognized the blobs much better when they were directly under the overhead lights then when they were off to the sides. The lab is situated in a room with tall (20 feet) ceilings and diffuse overhead fluorescent lights, and one would not think a change in position would change lighting appreciably. One would be wrong.

To solve this dilemma, we mounted large halogen lights on both sides of the table to greatly increase ambient lighting. We use two opposing lights to try and eliminate shadows, mounted high enough to make the lighting seem indirect and close enough to give a good amount of luminescence. Again, this is something that involved some fiddling to get right.

The result is a very bright surface with dark blobs that stand out very well against each other and the table background. The vision system also completely ignores the red air hockey markings on the table.

A.1.3.4 System I/O, protocol strings

The system transmits and receives data over an RS-232 serial port. We run the port at 38400 baud in order to reliably get data at a steady 60Hz. The system allows for different amounts of data and different types of data to be outputted for each tracked object. The amount and type of data outputted directly affects how fast the vision board can compute and send information. We wish to know the position of the centroid of each blob, and perhaps the frame number to insure frame rate. Though the vision system is also capable of computing blob area, angle, aspect ratio, and bounding box size, these are extraneous pieces of information that are unnecessary to our goal.

The protocol string sets these parameters and describes how they are outputted. Using this string, we can format the output a variety of ways. That includes binary, binary base 254, encoded hexadecimal, or encoded decimal. Obviously, a pure binary string would be the most efficient, but the least easy to understand and decode. A decimal output is the easiest to decode, but also the least efficient. We choose a hexadecimal transfer as a fair compromise.

The protocol string contains a header, which we specify to be a character marker then the current frame (mod 256). We specify each channel (A and B) to output centroid position in x and y coordinates, preceded by a one-character marker. We use "x" and "y" for channel A, and "z" and "w" for channel B. We do not use channel C. This data can then be easily parsed and converted into physical distances for use in our control software.

Cognachrome protocol string:

h: protocol header ="$%02xG"
a: protocol chan A ="x%04xXy%04xY"
b: protocol chan B ="z%04xXw%04xY"
c: protocol chan C =""

A.1.5 Computer

Computation and control is done by a Dell PentiumII/300 computer with 128MB RAM. This houses the controller card which controls the DAC’s, reads the encoders, and generates timing signals. An onboard RS-232 serial port is used for vision data acquisition.

All system software was developed and implemented in C++ using Borland C++ v5.0 for Windows. The control software runs under DOS.