1. Trammell Hudson
  2. puma


puma /

Filename Size Date modified Message
120 B
ignore generated files
58 B
Added tag before-usb-split for changeset e2de0d352031
347 B
Forgot to add this a long time ago
6.0 KB
merge with speed limited printout
283 B
direct ik works!
1.7 KB
Thoughts on what the servo controller should have
6.9 KB
allow adjustments to be made on the fly to the runtime offsets
529 B
Maybe a better joint config
2.8 KB
Stop after computing fk solution when used interactively
5.1 KB
Fix joint 5 computation when joint 4 has 0 or 180 degree
2.0 KB
Fix small typo
3.0 KB
allow adjustments to be made on the fly to the runtime offsets
1.8 KB
tweak acceleration parameters and positions
2.5 KB
Adjusted DH params; maybe right?
1.2 KB
solid tool holder
4.1 KB
skeleton for fk
1.4 KB
skeleton for fk
871 B
forward kinematics
316 B
Sort of works to route counts to output
3.3 KB
usb ports for mac
634 B
Updated for new tool and config; maybe incorrect
21.1 KB
factored command loop into separate function
494 B
putter tool

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.