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

How continuous rotation works

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

How continuous rotation works

Post by inaki » Sun May 21, 2006 10:59 pm

Post by inaki
Sun May 21, 2006 10:59 pm

In case you are interested in working with wheels with your Robotis Kit you will need continuous rotation.

To work with continuous rotation you will need to set to zero CW/CCW limits. By default CW limit is set to zero so you dont need to change this one. CCW is set to 0x3FF by deafault so you will need to set this one to zero.

The registers that hold the CCW limits are 8 and 9. These are EEPROM registers which means that once programed they stay that way even if you remove power.

Robot Terminal seems unable to change EEPROM registers so you will need to use Behavior Control Program to change these registers.

Once you change these setting to zero you can rotate CW or CCW by means of register Goal Speed, bit 10. If you set this bit to zero you will get CCW motion, while if it is zero you will get CW motion. The remaining bits, 0 to 9 set the actual speed (zero meaning no motion).

Caveats: I have found that Behavior Control Program may not work at all or even can set different registers to random values. I have been using version 1.25. For example I have been able to set the ID of my servo 17 to 1 just by trying to change registers 8 and 9. 8O . Obviously there is a (another!) bug in this program. So if you try this you are warned that you may end with an unusable servo !!! By the way, the command RESET does not restore the original ID setting. To set again the right ID you will need to use the command ID in Robot Terminal.
In case you are interested in working with wheels with your Robotis Kit you will need continuous rotation.

To work with continuous rotation you will need to set to zero CW/CCW limits. By default CW limit is set to zero so you dont need to change this one. CCW is set to 0x3FF by deafault so you will need to set this one to zero.

The registers that hold the CCW limits are 8 and 9. These are EEPROM registers which means that once programed they stay that way even if you remove power.

Robot Terminal seems unable to change EEPROM registers so you will need to use Behavior Control Program to change these registers.

Once you change these setting to zero you can rotate CW or CCW by means of register Goal Speed, bit 10. If you set this bit to zero you will get CCW motion, while if it is zero you will get CW motion. The remaining bits, 0 to 9 set the actual speed (zero meaning no motion).

Caveats: I have found that Behavior Control Program may not work at all or even can set different registers to random values. I have been using version 1.25. For example I have been able to set the ID of my servo 17 to 1 just by trying to change registers 8 and 9. 8O . Obviously there is a (another!) bug in this program. So if you try this you are warned that you may end with an unusable servo !!! By the way, the command RESET does not restore the original ID setting. To set again the right ID you will need to use the command ID in Robot Terminal.
inaki
Savvy Roboteer
Savvy Roboteer
User avatar
Posts: 233
Joined: Sun Mar 06, 2005 1:00 am
Location: EH

Post by inaki » Thu May 25, 2006 9:18 am

Post by inaki
Thu May 25, 2006 9:18 am

Some comments.

The only register that is needed to set to zero is the 8. Thanks to stevo3d for pointing out this. The register 9 is set to zero when the 8 is. No need to set register 6 and 7 because these are already at zero (except if you have changed it).

Stevo3d realized also that Robot Terminal is actually able to write to these registers but you must use 2 bytes instead of 1 as the argument. The argument to write to register 8 must be two bytes, LSB first.

The servos in continuous rotation mode are much slower that the same servos working in normal mode. For example, a speed of 80 that in normal conditions would move the servo slowly, would not rotate at all the wheel under continuous mode. You wont get any motion at all below speed 150.

So don't expect to achieve high speeds with your Bioloid road racer. My Trycicle prototype runs at about just 0,5m/second.

Anyway is nice to have such an easy continuous rotation mode without having to hack the servos.
Some comments.

The only register that is needed to set to zero is the 8. Thanks to stevo3d for pointing out this. The register 9 is set to zero when the 8 is. No need to set register 6 and 7 because these are already at zero (except if you have changed it).

Stevo3d realized also that Robot Terminal is actually able to write to these registers but you must use 2 bytes instead of 1 as the argument. The argument to write to register 8 must be two bytes, LSB first.

The servos in continuous rotation mode are much slower that the same servos working in normal mode. For example, a speed of 80 that in normal conditions would move the servo slowly, would not rotate at all the wheel under continuous mode. You wont get any motion at all below speed 150.

So don't expect to achieve high speeds with your Bioloid road racer. My Trycicle prototype runs at about just 0,5m/second.

Anyway is nice to have such an easy continuous rotation mode without having to hack the servos.
inaki
Savvy Roboteer
Savvy Roboteer
User avatar
Posts: 233
Joined: Sun Mar 06, 2005 1:00 am
Location: EH

Post by stevo3d » Wed Jun 07, 2006 9:29 pm

Post by stevo3d
Wed Jun 07, 2006 9:29 pm

This thread contains lots more discussion about getting continuous rotation working, along with some programming examples:

http://robosavvy.com/modules.php?name=Forums&file=viewtopic&p=1597#1597
This thread contains lots more discussion about getting continuous rotation working, along with some programming examples:

http://robosavvy.com/modules.php?name=Forums&file=viewtopic&p=1597#1597
Steve Munk
stevo3d
Savvy Roboteer
Savvy Roboteer
User avatar
Posts: 46
Joined: Fri May 19, 2006 1:00 am
Location: Fairbanks, Alaska, USA


3 postsPage 1 of 1
3 postsPage 1 of 1