puma /

Filename Size Date modified Message
120 B
58 B
347 B
6.2 KB
283 B
1.8 KB
7.1 KB
529 B
2.8 KB
5.2 KB
2.0 KB
3.1 KB
1.8 KB
2.5 KB
1.2 KB
4.2 KB
1.5 KB
871 B
316 B
3.3 KB
634 B
21.6 KB
494 B

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.