puma /

PUMA robot

There are three pieces to the shuffleboard robot software:

  • Listens to the USB serial controllers, exposes an TCP port that prints the voltage and six raw count measurements.

  • Contacts the telnet server and uses 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.

  • 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 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, wait for all six axes to report.
  • Run 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 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 function map_z.
  • Yes, it could be written in a much better fashion.
  • To test, send a command from the 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.