1. Trammell Hudson
  2. puma


puma / README.md

Trammell Hudson 0b610ec 

markroth8 4f6a74c 
Trammell Hudson 0b610ec 

Trammell Hudson 87b4c50 

Trammell Hudson 0b610ec 

Trammell Hudson 87b4c50 

Trammell Hudson 0b610ec 

Trammell Hudson 87b4c50 

PUMA robot

There are three pieces to the shuffleboard robot software:

* `mdc-telnet.py`: Listens to the USB serial controllers, exposes an
TCP port that prints the voltage and six raw count measurements.

* `Puma.py`: Contacts the telnet server and uses `PumaFk.py` to translate
the raw counts to joint angles and XYZ position / ASN angles.  Accepts
commands on stdin like `home`, `hold`, and XYZ positions like `300 130 0`.

* `Shuffleboard.py`: Opens a TCP port to accept commands from the
game server.  Contacts the telnet server and translate commands
line `move 300 -5` into XYZ coordinates and ASN angles, Then uses
`PumaIk.py` to generate raw joint commands to send the arm to the
desired position.

To startup the arm:

* Power up the the arm.
* Use the brake release switch to pose the arm into the home position.
* Power cycle the arm to reset the counters for the home position.
* Plug in the USB if it is not already.
* Run `mdc-telnet.py`, wait for all six axes to report.
* Run `Puma.py` to contact the server.
*# Send `r` command to read raw joint counters,
*# Send `a` command to read the joint angles.
*# Send `p` command to print XYZ, ASN coordinates
*# Send `hold` command to hold current position
* Run `Shuffleboard.py` to start the shuffleboard server
* Run `telnet localhost 27189` to verify data

To unlock the arm:

* Send `hold` command.
* Twist the E-stop to unlock the brake.
* If anything looks weird -- *HIT THE E-STOP SWITCH*.
* If the sixth axis is spinning, hit the E-stop and wait a few seconds before releasing it.
* Sometimes it takes two or three times to settle back down.

To calibrate the arm positions at different distances:

* Values are in `Shuffleboard.py` function `map_z`.
* Yes, it could be written in a much better fashion.
* To test, send a command from the `Puma.py` program:
** `350 130 0`
** And then adjust the Z value downwards:
** `350 130 -20`
** `350 130 -30`
** `350 130 -35`, etc
* Write that value into the `map_z` function.