Lynxmotion software

What does it do?
   This software controls the Mini SSC from Scott Edwards Electronics. This
device can be controlled in two ways. The first method is to give the SSC the
servo number and the location to move to. The servos will very quickly move to
the position. The software waits for the servos to get into position before
giving the SSC a new destination. For example if servo number 1 is at position
1 and you tell the SSC to move servo 1 to position 254, it then goes to
position 254 as quickly as possible. The second way to control the SSC yields a
much smoother response. To achieve this the software tells the SSC to position
the servo at every position in between. For example if servo 1 is at position
50 and you want to move it to position 55 the software would tell the SSC to
move servo 1 to position 51 then position 52, 53, 54 and finally position 55.
However this method results in a much slower robot movement especially if two
or more servos are to be moved at one time. There is a trade off that can be
implemented, by jumping more than one location at a time. For example you could
move the servo in increments of 2, 3, or 4 but if you increment too many, the
response can be jittery. Lynx3 has been modified to provide this smooth motion. 

   The other features of this software are as follows. You have the ability to
move the robot manually from the keyboard, and save positions to memory to be
played back quickly or single stepped through. There is the ability to save
these movements to the disk and retrieve them to be played later. There are
also functions that control the home position, upper limit and lower limit of
travel for the servos.

A word about servos.
   There is apparently no standard for the direction of travel in coordination
with the controlling pulse length. The amount of travel can also vary widely
from one servo manufacturer to another. Therefore you can see why it's
necessary to be able to separate one robots setup from another

What do I do first?
   First time thru you will want to run the program called setup. This is the
way you set the communication port, home positions, upper limits and lower
limits for the 8 servos on each of 8 robots you want to control.  The baud rate
is set to 9600 only. The home positions will be set to 125, the upper limits
are set to 254 and the lower limits are set to 1 until they are changed.  Do
not worry about setting the limits and home positions when you are first
getting started. When everything is together then you can use the keyboard to
move each axis to check the limits and home positions. Once they are calculated
then run setup again to set them.

The specifics.
   There is a limit of between 1 and 254 for the numbers that represent the
positions of the servos. In other words nothing smaller than 1 and nothing
larger than 254 are allowed for positional, home, upper and lower limit values.

   The "DAT" files contain the information for each robot and are
differentiated by the filename. For example the setup for robot number 1 is
contained in the file "setup1.dat" and the setup for robot 2 is contained in
the file "setup2.dat".

   The "RB*" files contain the movement data for each robot and are
differentiated by the extension. For example a series of moves that you called
"pickup" for robot 1 will be saved as "pickup.rb1" and the moves that you
called "toss" for robot 4 will be saved as "toss.rb4".

What's next?
   Make sure the robot is connected to the correct serial port and turned on.
Run the program lynx3 and make sure the caps lock is off. The servos are
controlled by the keys as follows.

servo  dir 1  dir 2  name of axis
 1      q      a      rotate
 2      w      s      shoulder
 3      e      d      elbow
 4      r      f      wrist
 5      t      g      gripper
 6      y      h      spare
 7      u      j      spare
 8      i      k      spare

When lower case is used the servos will move in increments of 1, if upper case
is used the servos will move in increments of 10. Manually move the servos with
the keyboard one axis at a time slowly to find the limits for servos. If the
servo will move beyond its physical limitations then you will need to edit the
limits to restrict its throw. The only servos I had to limit were 2 and 5.
While you have everything powered up, position the robot the way you like and
write all the locations down, this is home position. Now run "setup" again and
enter the real home positions and the real limits. Setup is now done.

How do I make it go?
   Run "lynx3" again and the robot will automatically move to home position.
With the keyboard move the robot to a new position and press F4 to save that
location in memory, move the robot to yet another position and press F4 again.
Now press F6 and the robot will move to the 2 locations automatically. You can
move the robot to a new location and press F4 again and the location will be
appended to the list of moves, the pointer will also increment. Press F6 and
notice the robot will now move to the 3 locations automatically. Now try
pressing F5 to go into the single step mode. Every key press will move the
robot to the next location. To clear the memory and start over press F3, Simple
as that.

How does saving and loading work?
   When you have a series of moves in memory you simply press F2 and then type
a filename (no extension) then press enter. Right now there must be at least
one "RB*" file in the directory for the program to operate correctly. Loading a
pre-saved file is as simple as pressing F1 and then the filename (no extension)
then press enter.

Improvements in the works.
   I am working on an easy way to edit a series of moves, and a way to add
delays in the series of moves, also a "wait for" command could be interesting.

Feedback is good.
   I am trying to fill a void in the hobby robot arena, I am constantly
improving every aspect of the Lynxmotion line. Please let me know if there is
anything that I am missing.
