Project:UMI RTX Robot arm: Difference between revisions

From London Hackspace Wiki
No edit summary
 
(69 intermediate revisions by 8 users not shown)
Line 1: Line 1:
[[File:UMI_Robot_Arm1.jpg|thumb|UMI robot arm feeling poorly]]
__NOTOC__
6 DOF robot arm from 1986, Possibly being donated by Daithi.


== Proposals ==
{{ Project|name=UMI RTX Robot arm|created=23/08/2012|members=[[User:Mentar|Mentar]] }}


[[User:Mentar|mentar]] would love to make a [http://www.ros.org ROS] package and an URDF model for the arm. I've compiled ROS on the Pi so can use that to get make a network node pretty easily. Would need to sort out the electronics on the arm. Personally it would be easier for me to just salvage the power electronics and replace with a Pi. But if someone wants to restore the stock electronics then I think you should have a bash first!
[[File:UMI_Robot_Arm_popular_mechanics.png|thumb|UMI robot arm in its heyday]]
[[File:UMI_RTX_half_way.jpg|thumb|UMI RTX half way there!]]
 
 
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 [[User:Mentar|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 [[Project:HSRDP|HSRDP]] project. The plan is to integrate it with [http://www.ros.org 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
 
{| class="wikitable"
|+Person
|+What is being done
|-
|[[User:Mentar|Mentar]]
|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]]
|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 ==
== 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 27/09/2012 ===
==== 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.


Now that the z-axis works again [[Daithi|daithi]] will try replacing the caps that blew up and see if he can bring the original board back to life
==== 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 11/09/2012 ===
==== 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 ====
 
[[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.
 
 
==== Update 28/05/2013 ====
 
[[User:Mentar|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 ====
 
[[User:Mentar|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 ====
 
[[User:Mentar|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 ====
 
[[User:Mentar|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 ====
 
[[User:Mentar|Mentar]]: replaced [[User:Daithi|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 ====
 
[[User:Daithi|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 [[User:Daithi|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
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 ===
==== 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.
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 theyre ok.  
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 27: Line 139:


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.
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
[[File:ATA_Plug.svg|thumb|interface cable]]
{| class="wikitable"
|+Pin outs for the main cable
! 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
{| class="wikitable"
|+Pin outs for the z-axis only cable
! 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
|-
|}
{| 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
|-
|}


== Docs ==
== Docs ==
Line 33: Line 433:
* [http://itech.fgcu.edu/faculty/zalewski/projects/files/RTX_Zabala_final2008.pdf RTX_Zabala_final2008.pdf]
* [http://itech.fgcu.edu/faculty/zalewski/projects/files/RTX_Zabala_final2008.pdf RTX_Zabala_final2008.pdf]
* [http://itech.fgcu.edu/faculty/zalewski/projects/files/RTX_Zabala_Labview2009.pdf RTX_Zabala_Labview2009.pdf]
* [http://itech.fgcu.edu/faculty/zalewski/projects/files/RTX_Zabala_Labview2009.pdf RTX_Zabala_Labview2009.pdf]
* [[File:RTX Inside.pdf]]
* [http://www.fcet.staffs.ac.uk/sow1/robot_hardware_resources.htm Drivers and server etc]
* [http://sourceforge.net/projects/wiibotrtxumi/ windows based WII remote controller for the robot]


== Misc ==
== Misc ==
Line 38: Line 441:
iBot has one of these in store at Reading Hackspace , it is an RT100 not an RTX, but he thinks they are very similar.
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.
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.
[[Category:Projects]]
[[Category:Space_Infrastructure_Projects]]

Latest revision as of 22:23, 7 March 2016


UMI RTX Robot arm
Created 23/08/2012
Members Mentar
QR code


UMI robot arm in its heyday
UMI RTX half way there!


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

Person What is being done
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

interface cable
Pin outs for the main cable
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

Pin outs for the z-axis only cable
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
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 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

Docs

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.