Legacy Forum: Preserving Nearly 20 Years of Community History - A Time Capsule of Discussions, Memories, and Shared Experiences.

AX12: Writing to EEPROM registers. Possible ?

Bioloid robot kit from Korean company Robotis; CM5 controller block, AX12 servos..
14 postsPage 1 of 1
14 postsPage 1 of 1

AX12: Writing to EEPROM registers. Possible ?

Post by inaki » Sun May 21, 2006 12:46 pm

Post by inaki
Sun May 21, 2006 12:46 pm

Well I have realized that the EEPROM registers within AX12 cannot be writen. These are registers 3 to 19. So I could not set to zero CW/CCW limits in order to have continuous rotation :( .

It seems that although these registers cannot be writen using Robot Terminal, there must be a way to do so because, for example, the command to set ID writes actually to register 3. However it is strange that this command only allows for broadcast setting!

There is Lock register at address 47. I wonder is this one has something to do with the EEPROM registers being locked.
Well I have realized that the EEPROM registers within AX12 cannot be writen. These are registers 3 to 19. So I could not set to zero CW/CCW limits in order to have continuous rotation :( .

It seems that although these registers cannot be writen using Robot Terminal, there must be a way to do so because, for example, the command to set ID writes actually to register 3. However it is strange that this command only allows for broadcast setting!

There is Lock register at address 47. I wonder is this one has something to do with the EEPROM registers being locked.
inaki
Savvy Roboteer
Savvy Roboteer
User avatar
Posts: 233
Joined: Sun Mar 06, 2005 1:00 am
Location: EH

Post by inaki » Sun May 21, 2006 1:48 pm

Post by inaki
Sun May 21, 2006 1:48 pm

The Behavior Control Program is able to write in these EEPROM registers. It does not work all the time however( sometimes the writing fails).

Anyway, I have been able to set to zero the CW/CCW limits in order to have continuous rotation, but now I don't know how to get any motion from that servo !:-( I have tried some logical values to no avail.
The Behavior Control Program is able to write in these EEPROM registers. It does not work all the time however( sometimes the writing fails).

Anyway, I have been able to set to zero the CW/CCW limits in order to have continuous rotation, but now I don't know how to get any motion from that servo !:-( I have tried some logical values to no avail.
inaki
Savvy Roboteer
Savvy Roboteer
User avatar
Posts: 233
Joined: Sun Mar 06, 2005 1:00 am
Location: EH

Continuous rotation

Post by stevo3d » Mon May 22, 2006 7:35 pm

Post by stevo3d
Mon May 22, 2006 7:35 pm

Hi Inaki,

Refer to page 14, the bottom of page 17 and the top of page 18 of the AX-12 manual, "Operating Angle Limit", "Endless Turn" and "Goal Speed Setting".

First you set the Goal Position to 0 (to avoid errors) and the CW and CCW angle limits to 0. You need to use a Custom ID in the Behavior Control Programmer to set the angle limits since there's no nice GUI choice for them. You've probably already done this:

LOAD [AX-12 ID]:Goal Position <- 0
LOAD {Custom ID} [AX-12 ID]:6 <- 0
LOAD {Custom ID} [AX-12 ID]:8 <- 0

I'm not sure but Addresses 7 and 9 might also need to be set to 0. The code above did work for me, but I might have just gotten lucky.

To get the AX-12 to rotate, just set the moving speed to whatever you want. It's not spelled out exactly in the manual but settings of 0 thru 1023 turn the AX-12 at various speeds counter-clockwise, 1024 thru 2047 turn it clockwise. The goal position setting doesn't do anything in this mode (other than perhaps causing errors if it's not set to 0).

The AX-12 will continue to rotate at the set speed until you set the moving speed to 0 or turn off the CM-5.

I'd like to see someone come up with some good ways to use AX-12's ability to report the present position and present speed for tracking wheel rotation and speed for precise navigation.
Hi Inaki,

Refer to page 14, the bottom of page 17 and the top of page 18 of the AX-12 manual, "Operating Angle Limit", "Endless Turn" and "Goal Speed Setting".

First you set the Goal Position to 0 (to avoid errors) and the CW and CCW angle limits to 0. You need to use a Custom ID in the Behavior Control Programmer to set the angle limits since there's no nice GUI choice for them. You've probably already done this:

LOAD [AX-12 ID]:Goal Position <- 0
LOAD {Custom ID} [AX-12 ID]:6 <- 0
LOAD {Custom ID} [AX-12 ID]:8 <- 0

I'm not sure but Addresses 7 and 9 might also need to be set to 0. The code above did work for me, but I might have just gotten lucky.

To get the AX-12 to rotate, just set the moving speed to whatever you want. It's not spelled out exactly in the manual but settings of 0 thru 1023 turn the AX-12 at various speeds counter-clockwise, 1024 thru 2047 turn it clockwise. The goal position setting doesn't do anything in this mode (other than perhaps causing errors if it's not set to 0).

The AX-12 will continue to rotate at the set speed until you set the moving speed to 0 or turn off the CM-5.

I'd like to see someone come up with some good ways to use AX-12's ability to report the present position and present speed for tracking wheel rotation and speed for precise navigation.
Steve Munk
stevo3d
Savvy Roboteer
Savvy Roboteer
User avatar
Posts: 46
Joined: Fri May 19, 2006 1:00 am
Location: Fairbanks, Alaska, USA

Post by inaki » Mon May 22, 2006 8:56 pm

Post by inaki
Mon May 22, 2006 8:56 pm

Thanks stevo3d,
actually I set only registers 8 and 9 as the registers 6 and 7 are already at zero. Are you positive you set the 6 and 8 only ?

However I cannot get it to work.
I admit that I did not set the goal position to zero. The behavior I see is pretty strange. The wheel stays stopped and you can move it by hand to one direction but not to the other !

The bit that controls the direction is apparently bit 10 of Speed value, so anything with this bit to 1 will rotate CCW while if set to zero will rotate it CW.

All this theoretically speaking, because, by now, I have been unable to achieve continuous rotation.

On the other hand, have you been able to write to EEPROM registers using Robot Terminal ? It seems it only works under Behavior Control prog. Am I right ?
Thanks stevo3d,
actually I set only registers 8 and 9 as the registers 6 and 7 are already at zero. Are you positive you set the 6 and 8 only ?

However I cannot get it to work.
I admit that I did not set the goal position to zero. The behavior I see is pretty strange. The wheel stays stopped and you can move it by hand to one direction but not to the other !

The bit that controls the direction is apparently bit 10 of Speed value, so anything with this bit to 1 will rotate CCW while if set to zero will rotate it CW.

All this theoretically speaking, because, by now, I have been unable to achieve continuous rotation.

On the other hand, have you been able to write to EEPROM registers using Robot Terminal ? It seems it only works under Behavior Control prog. Am I right ?
inaki
Savvy Roboteer
Savvy Roboteer
User avatar
Posts: 233
Joined: Sun Mar 06, 2005 1:00 am
Location: EH

Post by stevo3d » Tue May 23, 2006 8:53 pm

Post by stevo3d
Tue May 23, 2006 8:53 pm

inaki wrote:actually I set only registers 8 and 9 as the registers 6 and 7 are already at zero. Are you positive you set the 6 and 8 only ?

Positive.
The bit that controls the direction is apparently bit 10 of Speed value, so anything with this bit to 1 will rotate CCW while if set to zero will rotate it CW.

Right. For folks who are put off by binary math, setting bit 10 to 0 means integers less than 1024, and setting bit 10 to 1 means integers from 1024 to 2047. These numbers are especially useful in the Behavior Control Programmer since as far as I know it doesn't give control of individual bits.
On the other hand, have you been able to write to EEPROM registers using Robot Terminal ? It seems it only works under Behavior Control prog. Am I right ?

Haven't tried it yet. I'll try it tonight and let you know.
inaki wrote:actually I set only registers 8 and 9 as the registers 6 and 7 are already at zero. Are you positive you set the 6 and 8 only ?

Positive.
The bit that controls the direction is apparently bit 10 of Speed value, so anything with this bit to 1 will rotate CCW while if set to zero will rotate it CW.

Right. For folks who are put off by binary math, setting bit 10 to 0 means integers less than 1024, and setting bit 10 to 1 means integers from 1024 to 2047. These numbers are especially useful in the Behavior Control Programmer since as far as I know it doesn't give control of individual bits.
On the other hand, have you been able to write to EEPROM registers using Robot Terminal ? It seems it only works under Behavior Control prog. Am I right ?

Haven't tried it yet. I'll try it tonight and let you know.
Steve Munk
stevo3d
Savvy Roboteer
Savvy Roboteer
User avatar
Posts: 46
Joined: Fri May 19, 2006 1:00 am
Location: Fairbanks, Alaska, USA

Post by inaki » Tue May 23, 2006 10:39 pm

Post by inaki
Tue May 23, 2006 10:39 pm

Steve, I am going crazy with this issue.

I will describe the set up I have:

I have only one servo connected, It is servo ID=17. It has a wheel attached.
I can detect servo 17 under Robot Terminal, so the ID is right.

Then I write the following short program under Behavior Control:

START
LOAD 17:6 0
LOAD 17:8 0
LOAD 17:POS 0
LOAD 17:SPEED 80 (I have tried this one with several values)
END

I understand that if the speed has the bit 10 to zero will rotate to one direction and if it is 1 it will rotate to the oposite direction. The remaining lower bits will indicate the actual speed. Right ?

I check with Robot Terminal that 6,7,8 and 9 registers are all zero. It seems that writing on registers 6 and 8 writes actually at the same time to registers 7 and 9. So you were right, there is no need to set 8 and 9 because both are set to zero just by setting only the 8.

However, all I get is the followng behavior:

The servo 17 stays stopped, no motion at all. However, if I rotate it by hand I get resistance from one direction but not from the other. It is like it is locked in one direction.

Any idea about what is happening here ?
Steve, I am going crazy with this issue.

I will describe the set up I have:

I have only one servo connected, It is servo ID=17. It has a wheel attached.
I can detect servo 17 under Robot Terminal, so the ID is right.

Then I write the following short program under Behavior Control:

START
LOAD 17:6 0
LOAD 17:8 0
LOAD 17:POS 0
LOAD 17:SPEED 80 (I have tried this one with several values)
END

I understand that if the speed has the bit 10 to zero will rotate to one direction and if it is 1 it will rotate to the oposite direction. The remaining lower bits will indicate the actual speed. Right ?

I check with Robot Terminal that 6,7,8 and 9 registers are all zero. It seems that writing on registers 6 and 8 writes actually at the same time to registers 7 and 9. So you were right, there is no need to set 8 and 9 because both are set to zero just by setting only the 8.

However, all I get is the followng behavior:

The servo 17 stays stopped, no motion at all. However, if I rotate it by hand I get resistance from one direction but not from the other. It is like it is locked in one direction.

Any idea about what is happening here ?
inaki
Savvy Roboteer
Savvy Roboteer
User avatar
Posts: 233
Joined: Sun Mar 06, 2005 1:00 am
Location: EH

Post by stevo3d » Wed May 24, 2006 12:20 am

Post by stevo3d
Wed May 24, 2006 12:20 am

inaki wrote:LOAD 17:SPEED 80

80 may be too slow to actually get the servo moving. Try speed 500 and speed 1000. Same result or different?
inaki wrote:LOAD 17:SPEED 80

80 may be too slow to actually get the servo moving. Try speed 500 and speed 1000. Same result or different?
Steve Munk
stevo3d
Savvy Roboteer
Savvy Roboteer
User avatar
Posts: 46
Joined: Fri May 19, 2006 1:00 am
Location: Fairbanks, Alaska, USA

Post by inaki » Wed May 24, 2006 12:56 am

Post by inaki
Wed May 24, 2006 12:56 am

Yes, thanks ! I have tried with values 524 and 1524 and now the wheel rotates as expected !!!

Why do I get a decent speed under Robot Terminal or Behavior Control when I set a speed value of 80 while it does not move at all when used under continuous rotation? Are these different parameters or do I need to set higher values for continuous rotation ?

Thanks for your help! I was going to give up with this continuous rotation issue. :lol:
Yes, thanks ! I have tried with values 524 and 1524 and now the wheel rotates as expected !!!

Why do I get a decent speed under Robot Terminal or Behavior Control when I set a speed value of 80 while it does not move at all when used under continuous rotation? Are these different parameters or do I need to set higher values for continuous rotation ?

Thanks for your help! I was going to give up with this continuous rotation issue. :lol:
inaki
Savvy Roboteer
Savvy Roboteer
User avatar
Posts: 233
Joined: Sun Mar 06, 2005 1:00 am
Location: EH

Writing to registers on AX-12 with Manage mode

Post by stevo3d » Wed May 24, 2006 8:34 am

Post by stevo3d
Wed May 24, 2006 8:34 am

Glad to hear you got your wheel to rotate continuously Inaki!
inaki wrote:On the other hand, have you been able to write to EEPROM registers using Robot Terminal ? It seems it only works under Behavior Control prog. Am I right ?

Ok, with a bit of experimentation I think I have it all figured out.

Let's start with something we're all familiar with from the user manual. Using Manage mode and Robot Terminal, you can turn on the LED by setting RAM register 25 to a value of 1:
    [CID:021(0X15)] write 25 1
    ->[Dynamixel]:255 255 021 004 003 025 001 201 LEN:008(0X08)
The AX-12 responds with:
    <-[Dynamixel]:255 255 021 002 000 232 LEN:006(0X06)
Note the last byte value returned, 232. That's the AX-12's way of saying, "command completed with no error". You get the same status code when you set the LED to 0 for off.

Review the table on page 18 of the AX-12 manual. It shows all the registers and the valid range of values each register can hold. The entry for register 25, LED, says the min value is 0 and the max value is 1. Let's try to set an invalid value for the LED register:
    [CID:021(0X15)] write 25 2
    ->[Dynamixel]:255 255 021 004 003 025 002 200 LEN:008(0X08)
    <-[Dynamixel]:255 255 021 002 008 224 LEN:006(0X06)
Interesting. The status byte is 224, not 232! The AX-12 is smart enough to complain about setting any register outside that register's valid range. A status byte of 224 is an "invalid data" error. This is corroborated by the Range paragraph on page 18 of the AX-12 manual: "Each data has a valid minimum and maximum values. Write instructions made outside of these valid ranges will return an error." Let's see if the register was changed anyway:
    [CID:021(0X15)] dump
    ...
    [RAM AREA]
    TORQUE_ENABLE (R/W)[024(0X18)]:000(0X00)
    LED (R/W)[025(0X19)]:001(0X01)
    ...
The value of register 25 is still 1, unchanged from before. Ok great. So now we know we can set a RAM register and see when an error (code 224) or success (code 232) occurs.

How about the EEPROM registers? Let's try setting a simple one. EEPROM register 11, Limit Temperature will do. According to the table it's 1 byte, min value 0 and max value 150. What's it currently set to?
    [CID:021(0X15)] dump
    ...
    [EEPROM AREA]
    ...
    LIMIT_TEMPERATURE (R/W)[011(0X0B)]:070(0X46)
Let's set the temperature limit to 72 degrees C:
    [CID:021(0X15)] write 11 72
    ->[Dynamixel]:255 255 021 004 003 011 072 117 LEN:008(0X08)
    <-[Dynamixel]:255 255 021 002 000 232 LEN:006(0X06)
232! Success! Let's make sure.
    [CID:021(0X15)] dump
    ...
    [EEPROM AREA]
    ...
    LIMIT_TEMPERATURE (R/W)[011(0X0B)]:072(0X48)
Ok, in my own long winded way hopefully I've proven that you can set EEPROM registers with Manage mode. Let's try setting register 8, the CCW Angle Limit. It's a 2 byte register with min value of 0 and max of 1023. What happens when we try to set it to 0:
    [CID:021(0X15)] write 8 0
    ->[Dynamixel]:255 255 021 004 003 008 000 219 LEN:008(0X08)
    <-[Dynamixel]:255 255 021 002 008 224 LEN:006(0X06)
Didn't work. Error code 224 rears its ugly head yet again. If the AX-12 is smart enough to recognize out of range errors, maybe it is also smart enough to recognize other errors. According to the table, register 8 has to be treated as a 2-byte register. Hmm. What if we set it using two bytes:
    [CID:021(0X15)] write 8 0 0
    ->[Dynamixel]:255 255 021 005 003 008 000 000 218 LEN:009(0X09)
    <-[Dynamixel]:255 255 021 002 000 232 LEN:006(0X06)
Woo hoo! Success! :D Let's make sure:
    [CID:021(0X15)] dump
    ...
    CCW_ANGLE_LIMIT_L (R/W)[008(0X08)]:000(0X00)
    CCW_ANGLE_LIMIT_H (R/W)[009(0X09)]:000(0X00)
Register 8 and so-called register 9 are both set to 0. You have to set both bytes at the same time with 2-byte registers. This also explains why, when setting angle limits, you only have to set registers 6 and 8 in the Behavior Control Programmer, and don't have to worry about 7 and 9. You can't set 6 without setting 7 and you can't set 8 without also setting 9. The Behavior Control Programmer apparently knows this and sets 7 and 9 automatically.

Another tricky thing: to set any 2-byte register with Manage mode you have to convert the value you want to set into hex, break it into two bytes, and then convert each byte back into decimal. For example, if you want to set register 8 back to the default of 1023, you'd convert 1023 to hex (3FF), break the hex value into two bytes (high byte 03 and low byte FF), and convert the hex back into decimal (high byte 3 and low byte 255). Those are the values you'll need to enter into the write command. But one last tricky thing is you have to swap the order of the bytes because the AX-12 expects the low byte first (255) and the high byte last (3). So finally we use this command to set register 8 to a value of 1023:
    [CID:021(0X15)] write 8 255 3
    ->[Dynamixel]:255 255 021 005 003 008 255 003 216 LEN:009(0X09)
    <-[Dynamixel]:255 255 021 002 000 232 LEN:006(0X06)
Command completed successfully. Let's check the value with a dump command:
    [CID:021(0X15)] dump
    ...
    CCW_ANGLE_LIMIT_L (R/W)[008(0X08)]:255(0XFF)
    CCW_ANGLE_LIMIT_H (R/W)[009(0X09)]:003(0X03)
Finally, if you print the value of register 8 using the Behavior Control Programmer, you'll see that it contains the value 1023:
    LOAD CM5 Print DX:Custom ID: 21:8

Hope you found this helpful and not too tedious. I wanted to make this as general-purpose as possible for everyone.
Glad to hear you got your wheel to rotate continuously Inaki!
inaki wrote:On the other hand, have you been able to write to EEPROM registers using Robot Terminal ? It seems it only works under Behavior Control prog. Am I right ?

Ok, with a bit of experimentation I think I have it all figured out.

Let's start with something we're all familiar with from the user manual. Using Manage mode and Robot Terminal, you can turn on the LED by setting RAM register 25 to a value of 1:
    [CID:021(0X15)] write 25 1
    ->[Dynamixel]:255 255 021 004 003 025 001 201 LEN:008(0X08)
The AX-12 responds with:
    <-[Dynamixel]:255 255 021 002 000 232 LEN:006(0X06)
Note the last byte value returned, 232. That's the AX-12's way of saying, "command completed with no error". You get the same status code when you set the LED to 0 for off.

Review the table on page 18 of the AX-12 manual. It shows all the registers and the valid range of values each register can hold. The entry for register 25, LED, says the min value is 0 and the max value is 1. Let's try to set an invalid value for the LED register:
    [CID:021(0X15)] write 25 2
    ->[Dynamixel]:255 255 021 004 003 025 002 200 LEN:008(0X08)
    <-[Dynamixel]:255 255 021 002 008 224 LEN:006(0X06)
Interesting. The status byte is 224, not 232! The AX-12 is smart enough to complain about setting any register outside that register's valid range. A status byte of 224 is an "invalid data" error. This is corroborated by the Range paragraph on page 18 of the AX-12 manual: "Each data has a valid minimum and maximum values. Write instructions made outside of these valid ranges will return an error." Let's see if the register was changed anyway:
    [CID:021(0X15)] dump
    ...
    [RAM AREA]
    TORQUE_ENABLE (R/W)[024(0X18)]:000(0X00)
    LED (R/W)[025(0X19)]:001(0X01)
    ...
The value of register 25 is still 1, unchanged from before. Ok great. So now we know we can set a RAM register and see when an error (code 224) or success (code 232) occurs.

How about the EEPROM registers? Let's try setting a simple one. EEPROM register 11, Limit Temperature will do. According to the table it's 1 byte, min value 0 and max value 150. What's it currently set to?
    [CID:021(0X15)] dump
    ...
    [EEPROM AREA]
    ...
    LIMIT_TEMPERATURE (R/W)[011(0X0B)]:070(0X46)
Let's set the temperature limit to 72 degrees C:
    [CID:021(0X15)] write 11 72
    ->[Dynamixel]:255 255 021 004 003 011 072 117 LEN:008(0X08)
    <-[Dynamixel]:255 255 021 002 000 232 LEN:006(0X06)
232! Success! Let's make sure.
    [CID:021(0X15)] dump
    ...
    [EEPROM AREA]
    ...
    LIMIT_TEMPERATURE (R/W)[011(0X0B)]:072(0X48)
Ok, in my own long winded way hopefully I've proven that you can set EEPROM registers with Manage mode. Let's try setting register 8, the CCW Angle Limit. It's a 2 byte register with min value of 0 and max of 1023. What happens when we try to set it to 0:
    [CID:021(0X15)] write 8 0
    ->[Dynamixel]:255 255 021 004 003 008 000 219 LEN:008(0X08)
    <-[Dynamixel]:255 255 021 002 008 224 LEN:006(0X06)
Didn't work. Error code 224 rears its ugly head yet again. If the AX-12 is smart enough to recognize out of range errors, maybe it is also smart enough to recognize other errors. According to the table, register 8 has to be treated as a 2-byte register. Hmm. What if we set it using two bytes:
    [CID:021(0X15)] write 8 0 0
    ->[Dynamixel]:255 255 021 005 003 008 000 000 218 LEN:009(0X09)
    <-[Dynamixel]:255 255 021 002 000 232 LEN:006(0X06)
Woo hoo! Success! :D Let's make sure:
    [CID:021(0X15)] dump
    ...
    CCW_ANGLE_LIMIT_L (R/W)[008(0X08)]:000(0X00)
    CCW_ANGLE_LIMIT_H (R/W)[009(0X09)]:000(0X00)
Register 8 and so-called register 9 are both set to 0. You have to set both bytes at the same time with 2-byte registers. This also explains why, when setting angle limits, you only have to set registers 6 and 8 in the Behavior Control Programmer, and don't have to worry about 7 and 9. You can't set 6 without setting 7 and you can't set 8 without also setting 9. The Behavior Control Programmer apparently knows this and sets 7 and 9 automatically.

Another tricky thing: to set any 2-byte register with Manage mode you have to convert the value you want to set into hex, break it into two bytes, and then convert each byte back into decimal. For example, if you want to set register 8 back to the default of 1023, you'd convert 1023 to hex (3FF), break the hex value into two bytes (high byte 03 and low byte FF), and convert the hex back into decimal (high byte 3 and low byte 255). Those are the values you'll need to enter into the write command. But one last tricky thing is you have to swap the order of the bytes because the AX-12 expects the low byte first (255) and the high byte last (3). So finally we use this command to set register 8 to a value of 1023:
    [CID:021(0X15)] write 8 255 3
    ->[Dynamixel]:255 255 021 005 003 008 255 003 216 LEN:009(0X09)
    <-[Dynamixel]:255 255 021 002 000 232 LEN:006(0X06)
Command completed successfully. Let's check the value with a dump command:
    [CID:021(0X15)] dump
    ...
    CCW_ANGLE_LIMIT_L (R/W)[008(0X08)]:255(0XFF)
    CCW_ANGLE_LIMIT_H (R/W)[009(0X09)]:003(0X03)
Finally, if you print the value of register 8 using the Behavior Control Programmer, you'll see that it contains the value 1023:
    LOAD CM5 Print DX:Custom ID: 21:8

Hope you found this helpful and not too tedious. I wanted to make this as general-purpose as possible for everyone.
Last edited by stevo3d on Wed May 24, 2006 7:40 pm, edited 1 time in total.
Steve Munk
stevo3d
Savvy Roboteer
Savvy Roboteer
User avatar
Posts: 46
Joined: Fri May 19, 2006 1:00 am
Location: Fairbanks, Alaska, USA

Post by inaki » Wed May 24, 2006 9:07 am

Post by inaki
Wed May 24, 2006 9:07 am

Good work and very clear and detailed explanation ! Thanks!
Good work and very clear and detailed explanation ! Thanks!
inaki
Savvy Roboteer
Savvy Roboteer
User avatar
Posts: 233
Joined: Sun Mar 06, 2005 1:00 am
Location: EH

Re: Writing to registers on AX-12 with Manage mode

Post by barbar » Wed May 24, 2006 11:02 am

Post by barbar
Wed May 24, 2006 11:02 am

stevo3d wrote:Hope you found this helpful ...

Yes, thank you very much!
stevo3d wrote:Hope you found this helpful ...

Yes, thank you very much!
barbar
Savvy Roboteer
Savvy Roboteer
User avatar
Posts: 87
Joined: Tue Apr 04, 2006 1:00 am
Location: Germany

Post by Pev » Wed May 24, 2006 2:14 pm

Post by Pev
Wed May 24, 2006 2:14 pm

Brilliant Stevo3d, Thanks you so much for taking the time to post this great info.
Brilliant Stevo3d, Thanks you so much for taking the time to post this great info.
Carl
-------------------------
www.alt-view.co.uk
Pev
Savvy Roboteer
Savvy Roboteer
User avatar
Posts: 547
Joined: Sun Feb 26, 2006 1:00 am
Location: UK

Clever!!!

Post by Takedown » Wed May 24, 2006 7:31 pm

Post by Takedown
Wed May 24, 2006 7:31 pm

The word 'clever' springs to mind!!! :D
The word 'clever' springs to mind!!! :D
Takedown
Newbie
Newbie
User avatar
Posts: 6
Joined: Thu Apr 06, 2006 1:00 am

Post by stevo3d » Mon May 29, 2006 9:48 pm

Post by stevo3d
Mon May 29, 2006 9:48 pm

Thanks very much for the positive feedback everyone! :D
Thanks very much for the positive feedback everyone! :D
Steve Munk
stevo3d
Savvy Roboteer
Savvy Roboteer
User avatar
Posts: 46
Joined: Fri May 19, 2006 1:00 am
Location: Fairbanks, Alaska, USA


14 postsPage 1 of 1
14 postsPage 1 of 1