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

New Bioloid Balance Sensor

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

Post by ED209 » Sun Oct 25, 2009 4:21 am

Post by ED209
Sun Oct 25, 2009 4:21 am

It's looking pretty good...
http://www.youtube.com/watch?v=AT-Uv0oztGQ

Can't wait for it to be released in early '10.
It's looking pretty good...
http://www.youtube.com/watch?v=AT-Uv0oztGQ

Can't wait for it to be released in early '10.
ED209
Robot Builder
Robot Builder
Posts: 11
Joined: Sun Aug 02, 2009 11:36 pm

Post by siempre.aprendiendo » Sun Oct 25, 2009 8:37 am

Post by siempre.aprendiendo
Sun Oct 25, 2009 8:37 am

Bioloid Surfing ;)
Bioloid Surfing ;)
siempre.aprendiendo
Savvy Roboteer
Savvy Roboteer
User avatar
Posts: 559
Joined: Wed Aug 08, 2007 9:13 pm
Location: Barcelona

Post by i-Bot » Sun Oct 25, 2009 11:11 am

Post by i-Bot
Sun Oct 25, 2009 11:11 am

That is a good video. It made me think of surfing too. Maybe we should have a new challenge for bipeds ?

Watching it made me consider what are the constraints on moving faster. At first thought I assumed it was limitations in the sensor, maybe they are only using accelerometers and not gyros too. Then I thought of other reasons due to the entry of dynamic effects to the motion and how these might be compensated. Heavy on the ankle servos too with the fixed stance.

So anyone know what single improvement would enable faster speed ? We see the start of front/back wobble in the video, so I guess this is already at limit.

I wonder if any non slip is added to feet or are they standard ?
That is a good video. It made me think of surfing too. Maybe we should have a new challenge for bipeds ?

Watching it made me consider what are the constraints on moving faster. At first thought I assumed it was limitations in the sensor, maybe they are only using accelerometers and not gyros too. Then I thought of other reasons due to the entry of dynamic effects to the motion and how these might be compensated. Heavy on the ankle servos too with the fixed stance.

So anyone know what single improvement would enable faster speed ? We see the start of front/back wobble in the video, so I guess this is already at limit.

I wonder if any non slip is added to feet or are they standard ?
i-Bot
Savvy Roboteer
Savvy Roboteer
User avatar
Posts: 1142
Joined: Wed May 17, 2006 1:00 am

Post by Gort » Sun Oct 25, 2009 1:14 pm

Post by Gort
Sun Oct 25, 2009 1:14 pm

phpBB [media]
phpBB [media]
Gort
Savvy Roboteer
Savvy Roboteer
User avatar
Posts: 555
Joined: Wed May 31, 2006 1:00 am
Location: KC, MO, USA

Post by billyzelsnack » Sun Oct 25, 2009 6:00 pm

Post by billyzelsnack
Sun Oct 25, 2009 6:00 pm

QRIO does a really nice job with the concept.

http://www.youtube.com/watch?v=33a33XEVHKE
( Skip to 40 seconds. )
QRIO does a really nice job with the concept.

http://www.youtube.com/watch?v=33a33XEVHKE
( Skip to 40 seconds. )
billyzelsnack
Savvy Roboteer
Savvy Roboteer
User avatar
Posts: 618
Joined: Sat Dec 30, 2006 1:00 am

Post by syperious » Mon Oct 26, 2009 5:22 am

Post by syperious
Mon Oct 26, 2009 5:22 am

i'm glad this is coming out too, i was really looking into a gyro for the bioloid... :)
i'm glad this is coming out too, i was really looking into a gyro for the bioloid... :)
syperious
Newbie
Newbie
Posts: 2
Joined: Fri Oct 23, 2009 5:09 am

Post by PedroR » Tue Oct 27, 2009 1:14 pm

Post by PedroR
Tue Oct 27, 2009 1:14 pm

FYI the balancing routine is written in ROBOPLUS Task, the new tool that replaces Behaviour Control Program.

I got to see it when I visited Korea in August ;)
FYI the balancing routine is written in ROBOPLUS Task, the new tool that replaces Behaviour Control Program.

I got to see it when I visited Korea in August ;)
PedroR
Savvy Roboteer
Savvy Roboteer
Posts: 1199
Joined: Mon Jun 16, 2008 11:07 pm

Post by Suicidal.Banana » Tue Oct 27, 2009 1:49 pm

Post by Suicidal.Banana
Tue Oct 27, 2009 1:49 pm

cool, i wonder how easy it would be to use this with custom hardware though, like when you dont use a cm5 but some other dynamixel supporting board.
cool, i wonder how easy it would be to use this with custom hardware though, like when you dont use a cm5 but some other dynamixel supporting board.
Suicidal.Banana
Savvy Roboteer
Savvy Roboteer
Posts: 78
Joined: Tue Jun 16, 2009 12:54 pm

Post by PedroR » Tue Oct 27, 2009 2:06 pm

Post by PedroR
Tue Oct 27, 2009 2:06 pm

hi suicidal banana

Not 100% sure what you meant by "custom hardware" but here is the overview:
- Roboplus Task (the software tool they used to write the sample) is supposed to work with CM-5 (Bioloid Comprehensive), CM-510 (Bioloid Premium), CM-700 (the one that will replace CM-2), and any other Robotis board.

- If you are looking into using something like USB2Dynamixel or libbioloid, the module is fully compatible with the Dynamixel bus. Therefore you just need to send READ packets to read the specific IDs for each of the parameters: Pitch, Roll, Yaw, X acceleration, Y acceleration, etc etc
hi suicidal banana

Not 100% sure what you meant by "custom hardware" but here is the overview:
- Roboplus Task (the software tool they used to write the sample) is supposed to work with CM-5 (Bioloid Comprehensive), CM-510 (Bioloid Premium), CM-700 (the one that will replace CM-2), and any other Robotis board.

- If you are looking into using something like USB2Dynamixel or libbioloid, the module is fully compatible with the Dynamixel bus. Therefore you just need to send READ packets to read the specific IDs for each of the parameters: Pitch, Roll, Yaw, X acceleration, Y acceleration, etc etc
PedroR
Savvy Roboteer
Savvy Roboteer
Posts: 1199
Joined: Mon Jun 16, 2008 11:07 pm

Post by altwolf » Tue Oct 27, 2009 5:50 pm

Post by altwolf
Tue Oct 27, 2009 5:50 pm

S.B. is probably talking about using it with an Arbotix board or something similar. Seems like it should work fine being that the sensor uses the standard dynamixel bus system.
S.B. is probably talking about using it with an Arbotix board or something similar. Seems like it should work fine being that the sensor uses the standard dynamixel bus system.
altwolf
Savvy Roboteer
Savvy Roboteer
Posts: 50
Joined: Thu Jan 29, 2009 9:11 pm

Post by altwolf » Tue Oct 27, 2009 5:57 pm

Post by altwolf
Tue Oct 27, 2009 5:57 pm

So, Pedro, do you know how resource intensive the balancing stuff is? I mean, can it be implemented along with a full set of other code for doing bipedal stuff - a bunch of motion pages, sensor code, behviour code, etc, etc. and all fit onto the Cm510?

For some reason, I always think of balancing as being all intense and expensive for coding and processing, even though I have never tried it.

It would suck if the balancing trick was all the Bioloid could do at one time...
So, Pedro, do you know how resource intensive the balancing stuff is? I mean, can it be implemented along with a full set of other code for doing bipedal stuff - a bunch of motion pages, sensor code, behviour code, etc, etc. and all fit onto the Cm510?

For some reason, I always think of balancing as being all intense and expensive for coding and processing, even though I have never tried it.

It would suck if the balancing trick was all the Bioloid could do at one time...
altwolf
Savvy Roboteer
Savvy Roboteer
Posts: 50
Joined: Thu Jan 29, 2009 9:11 pm

Post by PedroR » Tue Oct 27, 2009 6:11 pm

Post by PedroR
Tue Oct 27, 2009 6:11 pm

Hi atwolf

I do not know the answer for sure but here is the information I have right now:

- In Roboplus, there is a special function named CALLBACK.
The code inside this function is called a number of times per second (everytime the controller sends a command to the servos when playing a motion).
I believe it is called every 8ms but I'm not sure. Check the thread on Roboplus as I have posted these tech details there.

- The balancing act is done inside that routine.
The way the balancing is done is by using a command called "joint offset".

The idea behind this is that you are running a motion and, whenever you find yourself in a not-so-good balancing situation you apply joint offsets in real time to the current motion page running.
So let's say that servo Y in the leg was supposed to be at position 300. If you find you are out of balance you set a joint offset for +20, and it will run that page by adding 20 to whatever was programmed in the motion.
It will continue adding +20 while playing the motion page until you set the joint offset back to 0 or some other value.
These adjustments are supposed to be a dynamic thing and that's why the callback is called so many times per second. That way you can continuously adjust the offsets needed.

But the idea is that you run normal Motion pages and just fine tune it as you need for the dynamic balancing.


Bear in mind that the ROBOPLUS program will runs like 2 separate threads: the main thread where you can do all sorts of calculations and programming using roboplus task; and every 8 ms the main thread is interrupted to run the CALLBACK.

The callback is supposed to be short. If you manage to keep it short and
efficient, you will be able to run other tasks on the main thread.

The word "thread" here is a bit incorrect but I use to give you the point. The controller obviously doesn't implement threads but it works very much like two parallel threads running. The CALLBACK has priority and the main thread gets the processor time that's left after the CALLBACK runs and until the next time the CALLBACK is called.

Also, the variables are shared across all the program (the main program, the callback, etc.).
Actually there are no private and public variables in Roboplus. There is a global variable table and you can read and write from it from whatever place on the program.

Another limitation to bear in mind that a CALLBACK can show up in the middle of some operation in the main thread.
You can use some variables of your own to implement some sort of basic synchronization but it's important to be aware that the main thread can be interrupted so you face the same challenges as when coding on a multi threaded system.

From what you can see it is not perfect but it's quite good and it is a huge leap forward in terms of ease of use and capabilities for such a general purpose consumer robot.
Also it is extremely easy to write your own auto balancing routines.
Hi atwolf

I do not know the answer for sure but here is the information I have right now:

- In Roboplus, there is a special function named CALLBACK.
The code inside this function is called a number of times per second (everytime the controller sends a command to the servos when playing a motion).
I believe it is called every 8ms but I'm not sure. Check the thread on Roboplus as I have posted these tech details there.

- The balancing act is done inside that routine.
The way the balancing is done is by using a command called "joint offset".

The idea behind this is that you are running a motion and, whenever you find yourself in a not-so-good balancing situation you apply joint offsets in real time to the current motion page running.
So let's say that servo Y in the leg was supposed to be at position 300. If you find you are out of balance you set a joint offset for +20, and it will run that page by adding 20 to whatever was programmed in the motion.
It will continue adding +20 while playing the motion page until you set the joint offset back to 0 or some other value.
These adjustments are supposed to be a dynamic thing and that's why the callback is called so many times per second. That way you can continuously adjust the offsets needed.

But the idea is that you run normal Motion pages and just fine tune it as you need for the dynamic balancing.


Bear in mind that the ROBOPLUS program will runs like 2 separate threads: the main thread where you can do all sorts of calculations and programming using roboplus task; and every 8 ms the main thread is interrupted to run the CALLBACK.

The callback is supposed to be short. If you manage to keep it short and
efficient, you will be able to run other tasks on the main thread.

The word "thread" here is a bit incorrect but I use to give you the point. The controller obviously doesn't implement threads but it works very much like two parallel threads running. The CALLBACK has priority and the main thread gets the processor time that's left after the CALLBACK runs and until the next time the CALLBACK is called.

Also, the variables are shared across all the program (the main program, the callback, etc.).
Actually there are no private and public variables in Roboplus. There is a global variable table and you can read and write from it from whatever place on the program.

Another limitation to bear in mind that a CALLBACK can show up in the middle of some operation in the main thread.
You can use some variables of your own to implement some sort of basic synchronization but it's important to be aware that the main thread can be interrupted so you face the same challenges as when coding on a multi threaded system.

From what you can see it is not perfect but it's quite good and it is a huge leap forward in terms of ease of use and capabilities for such a general purpose consumer robot.
Also it is extremely easy to write your own auto balancing routines.
PedroR
Savvy Roboteer
Savvy Roboteer
Posts: 1199
Joined: Mon Jun 16, 2008 11:07 pm

Post by Suicidal.Banana » Tue Oct 27, 2009 9:28 pm

Post by Suicidal.Banana
Tue Oct 27, 2009 9:28 pm

Oops sorry, yea, with "custom hardware" i actually meant an arbotix, or similair board that has dynamixel bus, cool to hear it should work (obviously some coding would be needed, but thats fine) looks like ill be getting one then :D
Thanks again for the info PedroR and altwolf
Oops sorry, yea, with "custom hardware" i actually meant an arbotix, or similair board that has dynamixel bus, cool to hear it should work (obviously some coding would be needed, but thats fine) looks like ill be getting one then :D
Thanks again for the info PedroR and altwolf
Suicidal.Banana
Savvy Roboteer
Savvy Roboteer
Posts: 78
Joined: Tue Jun 16, 2009 12:54 pm


13 postsPage 1 of 1
13 postsPage 1 of 1