Project:UMI RTX Robot arm: Difference between revisions
(29 intermediate revisions by 3 users not shown) | |||
Line 4: | Line 4: | ||
[[File:UMI_Robot_Arm_popular_mechanics.png|thumb|UMI robot arm in its heyday]] | [[File:UMI_Robot_Arm_popular_mechanics.png|thumb|UMI robot arm in its heyday]] | ||
[[File: | [[File:UMI_RTX_half_way.jpg|thumb|UMI RTX half way there!]] | ||
Line 37: | Line 37: | ||
|- | |- | ||
|[[User:Mentar|Mentar]] | |[[User:Mentar|Mentar]] | ||
|Coordinating, | |Coordinating, ROSifying, old board repair attempt, power-supply (with Asoko's help),the elbow pulleys, clean-up | ||
|- | |||
|[[User:AlexR|AlexR]] | |||
|Implementing the inverse kinematics control (harder than it sounds!) | |||
|- | |- | ||
|[[User:Tmylk|Tmylk]] | |[[User:Tmylk|Tmylk]] | ||
|Motor control | |Motor control | ||
|- | |||
|pepelisu | |||
|Tracing and working on the optical rotary encoder inputs | |||
|- | |- | ||
|jasperw | |jasperw | ||
|Diagnosing issues with the elbow joint, clean up | |Diagnosing issues with the elbow joint, clean up | ||
|- | |- | ||
|tgreer | |tgreer | ||
Line 54: | Line 57: | ||
== Work to do == | == Work to do == | ||
* | |||
* Sand down and repaint! | * Software | ||
** PID code for the motors, and use of h-bridge enables to make the robot arm more efficient. (Lev started, needs finishing) | |||
** Write the ROS side of the bridge that figures out the counters and (if the current sensing is implemented) auto calibration. (Mentar + more?) | |||
* Hardware | |||
** Add current sensing to the h-bridge boards | |||
** Make an enclosure for the back of the wrist | |||
** Make the elbow cover (Paddy still has the pieces from the old one) | |||
** Check the Z-axis stalling, probably needs a commutator clean(seems ok now) | |||
** Sand down and repaint! | |||
== Updates == | == Updates == | ||
==== Update 8/09/2014 ==== | |||
[[User:Mentar|Mentar]]: Inverse kinematics and planning now works, thanks for amazing effort by AlexR http://youtu.be/CrpvGv78pwU | |||
==== Update 31/08/2013 ==== | |||
[[User:Mentar|Mentar]]: Finally managed to replace the broken encoders, tried using photo transistor ones (4 pin) but in the end found more affordable 5 pin photo interrupters. Tested the z-axis and it seems to be working well after tightening the belt. Now onto finishing the software! Although the basic encoder count logic works ideally it needs proper PID control and be able to accept radians/angles | |||
==== Update 02/07/2013 ==== | |||
[[User:Mentar|Mentar]]: Turns out 2 of the encoder pairs are dead, one on the z-axis the other on the gripper. The other 5 joints work well and are rossified. | |||
==== Update 25/06/2013 ==== | |||
[[User:Mentar|Mentar]]: Still issues with the encoder connections, the issue must be in the Z-axis enclosure. Preliminary version of the control board has been written but faced issues today due to problems figuring out how arduino mega handled pin change interrupts. | |||
==== Update 19/06/2013 ==== | |||
[[User:Mentar|Mentar]]: Motor drivers have arrived! tmlk and I tested one out and it works like a charm. Time to write some control code. | |||
==== Update 12/06/2013 ==== | |||
[[User:Mentar|Mentar]]: We've figured out the pinouts on the Z-axis control board, a basic URDF model has been created. Discussed handling of the interrupts by the arduino and PID control. The Z-axis is not responsive sometimes so may need a commutator clean. | |||
==== Update 03/06/2013 ==== | ==== Update 03/06/2013 ==== | ||
[[User:Mentar|Mentar]]: All traced! With | [[User:Mentar|Mentar]]: All traced! With Pepelisu we found out that the problem was in the ribbon cable that we've promptly replaced. He is now doing the part sensing part for the motors and tmlk is making the motor drivers. | ||
Line 104: | Line 132: | ||
Tomw and tgreer tried to get this running but the z axis seems to be rusted to f***. The PSU outputs the correct voltages but when trying to put this into "green mode" it buzzes and sticks in red. | Tomw and tgreer tried to get this running but the z axis seems to be rusted to f***. The PSU outputs the correct voltages but when trying to put this into "green mode" it buzzes and sticks in red. | ||
Checked fuses and | Checked fuses and they're ok. | ||
We forced the z-axis to try and break it out of any rusted stickiness and managed to move it down. We also tried 12-24v across the z axis motor and got no response | We forced the z-axis to try and break it out of any rusted stickiness and managed to move it down. We also tried 12-24v across the z axis motor and got no response | ||
Line 119: | Line 147: | ||
{| class="wikitable" | {| class="wikitable" | ||
|+Pin outs for the main cable | |+Pin outs for the main cable | ||
! 40pin cable pin !! Function !! arduino pin !! launchpad pin | |||
|- | |- | ||
|1 | |1 | ||
|Wrist left (roll left + pitch) motor + | |Wrist left (roll left + pitch) motor + | ||
|4 | |||
|29 | |||
|- | |- | ||
|2 | |2 | ||
|Wrist left (roll left + pitch) motor - | |Wrist left (roll left + pitch) motor - | ||
|5 | |||
|30 | |||
|- | |- | ||
|3 | |3 | ||
|Wrist right (roll left + pitch) motor + | |Wrist right (roll left + pitch) motor + | ||
|6 | |||
|19 | |||
|- | |- | ||
|4 | |4 | ||
|Wrist right (roll left + pitch) motor - | |Wrist right (roll left + pitch) motor - | ||
|7 | |||
|36 | |||
|- | |- | ||
|5 | |5 | ||
|wrist yaw motor + | |wrist yaw motor + | ||
|8 | |||
|35 | |||
|- | |- | ||
|6 | |6 | ||
|wrist yaw motor - | |wrist yaw motor - | ||
|9 | |||
|59 | |||
|- | |- | ||
|7 | |7 | ||
|shoulder yaw motor + | |shoulder yaw motor + | ||
|46 | |||
|77 | |||
|- | |- | ||
|8 | |8 | ||
|shoulder yaw motor - | |shoulder yaw motor - | ||
|12 | |||
|76 | |||
|- | |- | ||
|9 | |9 | ||
|elbow yaw motor + | |elbow yaw motor + | ||
|10 | |||
|75 | |||
|- | |- | ||
|10 | |10 | ||
|elbow yaw motor + | |elbow yaw motor + | ||
|11 | |||
|51 | |||
|- | |- | ||
|11 | |11 | ||
|gripper motor + | |gripper motor + | ||
|3 | |||
|45 | |||
|- | |- | ||
|12 | |12 | ||
|gripper motor - | |gripper motor - | ||
|2 | |||
|46 | |||
|- | |- | ||
|13 | |13 | ||
Line 166: | Line 219: | ||
|- | |- | ||
|16 | |16 | ||
|GND | |GND for ? | ||
|- | |- | ||
|17 | |17 | ||
|GND | |GND for ? | ||
|- | |- | ||
|18 | |18 | ||
|GND | |GND for shoulder | ||
|- | |- | ||
|19 | |19 | ||
|left wrist ch1 | |left wrist ch1 | ||
|A9 | |||
|23 | |||
|- | |- | ||
|20 | |20 | ||
|left wrist ch2 | |left wrist ch2 | ||
|25 | |||
|24 | |||
|- | |- | ||
|21 | |21 | ||
|right wrist ch1 | |right wrist ch1 | ||
|A10 | |||
|25 | |||
|- | |- | ||
|22 | |22 | ||
|right wrist ch2 | |right wrist ch2 | ||
|27 | |||
|26 | |||
|- | |- | ||
|23 | |23 | ||
|wrist yaw ch1 | |wrist yaw ch1 | ||
|29 | |||
|13 | |||
|- | |- | ||
|24 | |24 | ||
|wrist yaw ch2 | |wrist yaw ch2 | ||
|A11 | |||
|12 | |||
|- | |- | ||
|25 | |25 | ||
|shoulder ch1 | |shoulder ch1 | ||
|33 | |||
|11 | |||
|- | |- | ||
|26 | |26 | ||
|shoulder ch2 | |shoulder ch2 | ||
|A13 | |||
|32 | |||
|- | |- | ||
|27 | |27 | ||
|elbow ch1 | |elbow ch1 | ||
|A12 | |||
|31 | |||
|- | |- | ||
|28 | |28 | ||
|elbow ch2 | |elbow ch2 | ||
|31 | |||
|53 | |||
|- | |- | ||
|29 | |29 | ||
|gripper ch1 | |gripper ch1 | ||
|23 | |||
|79 | |||
|- | |- | ||
|30 | |30 | ||
|gripper ch2 | |gripper ch2 | ||
|A8 | |||
|78 | |||
|- | |- | ||
|31 | |31 | ||
Line 245: | Line 322: | ||
{| class="wikitable" | {| class="wikitable" | ||
|+Pin outs for the z-axis only cable | |+Pin outs for the z-axis only cable | ||
! 10pin cable pin !! Function !! arduino pin !! launchpad pin | |||
|- | |- | ||
|1 | |1 | ||
|ch 2 | |ch 2 | ||
|14 | |||
|74 | |||
|- | |- | ||
|2 | |2 | ||
Line 254: | Line 334: | ||
|3 | |3 | ||
|ch 1 | |ch 1 | ||
|25 | |||
|73 | |||
|- | |- | ||
|4 | |4 | ||
Line 259: | Line 341: | ||
|- | |- | ||
|5 | |5 | ||
| | |PWM | ||
|44 | |||
|72 | |||
|- | |- | ||
|6 | |6 | ||
| | |Direction, + up, - down (11.87 resistor) | ||
|43 | |||
|71 | |||
|- | |- | ||
|7 | |7 | ||
Line 275: | Line 361: | ||
|10 | |10 | ||
|NC | |NC | ||
|- | |||
|} | |||
{| class="wikitable" | |||
|+ Joint encoder range | |||
! Joint !! Encoder Range !! +ve Direction | |||
|- | |||
|Z-axis(7) | |||
|3559 | |||
|Up | |||
|- | |||
|Shoulder(6) | |||
|5295 | |||
|Left | |||
|- | |||
|Elbow(5) | |||
|4907 | |||
|Left | |||
|- | |||
|Wrist Yaw(4) | |||
|2301 | |||
|Left | |||
|- | |||
|Wrist R(3) | |||
|1381 | |||
|Down | |||
|- | |||
|Wrist L(2) | |||
|1344 | |||
|Down | |||
|- | |||
|Gripper (1) | |||
|1326 | |||
|Open | |||
|- | |||
|} | |||
{| class="wikitable" | |||
|+ Enable pins for H Bridges on Launchpad | |||
! Enable !! En A !! En B | |||
|- | |||
|Wrist left | |||
|48 | |||
|40 | |||
|- | |||
|Wrist right | |||
|67 | |||
|68 | |||
|- | |||
|Wrist yaw | |||
|39 | |||
|38 | |||
|- | |||
|Shoulder yaw | |||
|18 | |||
|17 | |||
|- | |||
|Elbow yaw | |||
|55 | |||
|54 | |||
|- | |||
|Gripper | |||
|58 | |||
|52 | |||
|- | |- | ||
|} | |} |
Latest revision as of 22:23, 7 March 2016
UMI RTX Robot arm | |
---|---|
Created | 23/08/2012 |
Members | Mentar |
QR code |
6 DOF robot arm from 1986, donated by Daithi (he even got the caps that blew!).
It's part of the hackspace and collaborators are welcome, please get in-touch with Mentar (IRC) to find out what you can help. It's a great learning exercise for:
- robotics (surprise!)
- ROS
- arduino
- motor control
- optical sensor control.
Design
- 7 24VDC motors, 20w (3A) for Z axis and 3w (750mA) for the rest
- Each motor has two phase optical incremental encoder
- Arduino Mega 2560 has been kindly donated to the project by tgreer
What's been done
Some of us are working on getting the arm working for the HSRDP project. The plan is to integrate it with ROS package and an make a URDF model for the arm. This will allow it for general robotic use, i.e. someone can create the ROS nodes for a robotic barman, simulate it and then send it to the bot to perform
Might have to replace the control board electronics with a ... wait for it... a Raspbery Pi (well and an Arduino ofcourse)! :D But if someone wants to restore the stock electronics I will avoid hacking the old control board up in-case you want to have a go!
People involved
This is a hackspace project and members are encouraged to participate
Mentar | Coordinating, ROSifying, old board repair attempt, power-supply (with Asoko's help),the elbow pulleys, clean-up |
AlexR | Implementing the inverse kinematics control (harder than it sounds!) |
Tmylk | Motor control |
pepelisu | Tracing and working on the optical rotary encoder inputs |
jasperw | Diagnosing issues with the elbow joint, clean up |
tgreer | Tried to get the z-axis moving, from the output end of the gearbox! Donated Arduino Mega for the project |
Work to do
- Software
- PID code for the motors, and use of h-bridge enables to make the robot arm more efficient. (Lev started, needs finishing)
- Write the ROS side of the bridge that figures out the counters and (if the current sensing is implemented) auto calibration. (Mentar + more?)
- Hardware
- Add current sensing to the h-bridge boards
- Make an enclosure for the back of the wrist
- Make the elbow cover (Paddy still has the pieces from the old one)
- Check the Z-axis stalling, probably needs a commutator clean(seems ok now)
- Sand down and repaint!
Updates
Update 8/09/2014
Mentar: Inverse kinematics and planning now works, thanks for amazing effort by AlexR http://youtu.be/CrpvGv78pwU
Update 31/08/2013
Mentar: Finally managed to replace the broken encoders, tried using photo transistor ones (4 pin) but in the end found more affordable 5 pin photo interrupters. Tested the z-axis and it seems to be working well after tightening the belt. Now onto finishing the software! Although the basic encoder count logic works ideally it needs proper PID control and be able to accept radians/angles
Update 02/07/2013
Mentar: Turns out 2 of the encoder pairs are dead, one on the z-axis the other on the gripper. The other 5 joints work well and are rossified.
Update 25/06/2013
Mentar: Still issues with the encoder connections, the issue must be in the Z-axis enclosure. Preliminary version of the control board has been written but faced issues today due to problems figuring out how arduino mega handled pin change interrupts.
Update 19/06/2013
Mentar: Motor drivers have arrived! tmlk and I tested one out and it works like a charm. Time to write some control code.
Update 12/06/2013
Mentar: We've figured out the pinouts on the Z-axis control board, a basic URDF model has been created. Discussed handling of the interrupts by the arduino and PID control. The Z-axis is not responsive sometimes so may need a commutator clean.
Update 03/06/2013
Mentar: All traced! With Pepelisu we found out that the problem was in the ribbon cable that we've promptly replaced. He is now doing the part sensing part for the motors and tmlk is making the motor drivers.
Update 28/05/2013
Mentar: Fixed the elbow joint, had to drill a jammed screw off. Traced out about half of the wires from the blue cable, which control all the rotary joints
Update 16/03/2013
Mentar: After attempting to talk to the arm over the serial using different software that's list on this page I got no response of any kind from the arm. Given the state of the RS232 port on the arm I then made sure that all the relevant pins (only 9 are used) rang through to the board. At this point I'm giving up on the control board. I'll start checking the motors and encoders with aim to make a new board from scratch. If anyone wants to have a go at restoring the old board feel free! (I'll try to make an in/out replacement)
Update 07/03/2013
Mentar: Turns out the motor power light didn't go on often due to the fact that the emergency stop contact was rubbish due to the corroded 9-pin D-sub female connector. For the testing phase I've shorted the 2 pins internally, though these would be undone when the arm is to be used. Next step is to connect it up to the and try the talking to it with the software that tgreer found. I have doubts the rusty serial socket works however, so will probably need more repairing.
Update 05/03/2013
Mentar: after taking the power supply apart with Aaron, we found that the problem was with the actual switch, the contacts on it were somewhat corroded resulting in a bad connection. That has now been fixed and the arm powers up. The motor power LEDs are a finicky, and the green button light doesn't always go on when asked. But it remains stable once it does. Next step would be to open up the manual and try to talk to it!
Update 08/01/2013
Mentar: replaced daithi's cap, as only one was blown. Still no luck, the power supply is making a sparky noise even when no external load is attached to it. The red and green motor LEDs go on and then fade out. Opened the power-supply but there is nothing obviously wrong with it despite some areas of corrosion. Didn't have enough time to take it fully out of the enclosure to check the back of the board. Next time I'm in I'll take the board app-art and test it further possibly re-soldering it.
Update 02/10/2012
daithi got the caps, but would like an interested party to try replace them. He's not getting more if the blow again!
Update 27/09/2012
Now that the z-axis works again daithi will try replacing the caps that blew up and see if he can bring the original board back to life
Update 11/09/2012
artag, jasperw and mentar took the arm apart to figure out the problem with the z-axis. Turns out it's not that bad, turns fine. The z-axis motor (24V) wasn't working because of the corrosion layer on the commutator, cleaning the brushes and rotating the motor axle cleaned off some of the corrosion and it works beautifully at 24v
Update 29/08/2012
Tomw and tgreer tried to get this running but the z axis seems to be rusted to f***. The PSU outputs the correct voltages but when trying to put this into "green mode" it buzzes and sticks in red.
Checked fuses and they're ok.
We forced the z-axis to try and break it out of any rusted stickiness and managed to move it down. We also tried 12-24v across the z axis motor and got no response
One of the fuses then blew which we replaced and promptly blew the 5 tantalum capacitors near the right hand connector on the main board. These will need replacing
note: (artag) tantalum capacitors of this age have a tendency to die by going short-circuit. If the fuse allows it, they will then burn up fairly vigorously. Depnding on which ones died, you might be able to ignore this (once they've burnt open-circuit) but it would be best to replace the lot. There are about 4 1uF 35V, about 8 10uF 35V, and 1 47uF 35V.
Reverse engineering
5 of the joints are controlled via an ide like cable, light blue in color, pinouts below
40pin cable pin | Function | arduino pin | launchpad pin |
---|---|---|---|
1 | Wrist left (roll left + pitch) motor + | 4 | 29 |
2 | Wrist left (roll left + pitch) motor - | 5 | 30 |
3 | Wrist right (roll left + pitch) motor + | 6 | 19 |
4 | Wrist right (roll left + pitch) motor - | 7 | 36 |
5 | wrist yaw motor + | 8 | 35 |
6 | wrist yaw motor - | 9 | 59 |
7 | shoulder yaw motor + | 46 | 77 |
8 | shoulder yaw motor - | 12 | 76 |
9 | elbow yaw motor + | 10 | 75 |
10 | elbow yaw motor + | 11 | 51 |
11 | gripper motor + | 3 | 45 |
12 | gripper motor - | 2 | 46 |
13 | VCC for wrist | ||
14 | VCC for shoulder and elbow | ||
15 | VCC for shoulder and elbow | ||
16 | GND for ? | ||
17 | GND for ? | ||
18 | GND for shoulder | ||
19 | left wrist ch1 | A9 | 23 |
20 | left wrist ch2 | 25 | 24 |
21 | right wrist ch1 | A10 | 25 |
22 | right wrist ch2 | 27 | 26 |
23 | wrist yaw ch1 | 29 | 13 |
24 | wrist yaw ch2 | A11 | 12 |
25 | shoulder ch1 | 33 | 11 |
26 | shoulder ch2 | A13 | 32 |
27 | elbow ch1 | A12 | 31 |
28 | elbow ch2 | 31 | 53 |
29 | gripper ch1 | 23 | 79 |
30 | gripper ch2 | A8 | 78 |
31 | ? | ||
32 | ? | ||
33 | ? | ||
34 | ? | ||
35 | ? | ||
36 | ? | ||
37 | ? | ||
38 | ? | ||
39 | ? | ||
40 | ? |
Z axis has it's own control board with an L298 driver
10pin cable pin | Function | arduino pin | launchpad pin |
---|---|---|---|
1 | ch 2 | 14 | 74 |
2 | GND (encoder) | ||
3 | ch 1 | 25 | 73 |
4 | VCC (encoder) | ||
5 | PWM | 44 | 72 |
6 | Direction, + up, - down (11.87 resistor) | 43 | 71 |
7 | GND (control logic) | ||
8 | VCC (control logic) | ||
9 | NC | ||
10 | NC |
Joint | Encoder Range | +ve Direction |
---|---|---|
Z-axis(7) | 3559 | Up |
Shoulder(6) | 5295 | Left |
Elbow(5) | 4907 | Left |
Wrist Yaw(4) | 2301 | Left |
Wrist R(3) | 1381 | Down |
Wrist L(2) | 1344 | Down |
Gripper (1) | 1326 | Open |
Enable | En A | En B |
---|---|---|
Wrist left | 48 | 40 |
Wrist right | 67 | 68 |
Wrist yaw | 39 | 38 |
Shoulder yaw | 18 | 17 |
Elbow yaw | 55 | 54 |
Gripper | 58 | 52 |
Docs
- Hitsquad_Robot_Manual.pdf
- RTX_Zabala_final2008.pdf
- RTX_Zabala_Labview2009.pdf
- File:RTX Inside.pdf
- Drivers and server etc
- windows based WII remote controller for the robot
Misc
iBot has one of these in store at Reading Hackspace , it is an RT100 not an RTX, but he thinks they are very similar. He's offered to help with info and also has some more documentation about internals and protocol if needed. Also has some bad C# code he wrote to drive it.