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

Bioloid Control (Open Source Project)

Bioloid robot kit from Korean company Robotis; CM5 controller block, AX12 servos..
50 postsPage 3 of 41, 2, 3, 4
50 postsPage 3 of 41, 2, 3, 4

Post by jorge ochoa » Sun Sep 21, 2008 5:23 pm

Post by jorge ochoa
Sun Sep 21, 2008 5:23 pm

I follow the link, but when I download the code, the physics simulator is not present. please review the zip file.
I follow the link, but when I download the code, the physics simulator is not present. please review the zip file.
jorge ochoa
Robot Builder
Robot Builder
Posts: 14
Joined: Mon Jan 14, 2008 4:50 am

Post by billyzelsnack » Sun Sep 21, 2008 7:21 pm

Post by billyzelsnack
Sun Sep 21, 2008 7:21 pm

I don't think they've put a release for it yet. You can grab it from the project page via SVN..

http://bioloidcontrol.svn.sourceforge.n ... idcontrol/

There also is a little link at the bottom that lets you download the tree in a GNU tarball.
I don't think they've put a release for it yet. You can grab it from the project page via SVN..

http://bioloidcontrol.svn.sourceforge.n ... idcontrol/

There also is a little link at the bottom that lets you download the tree in a GNU tarball.
billyzelsnack
Savvy Roboteer
Savvy Roboteer
User avatar
Posts: 618
Joined: Sat Dec 30, 2006 1:00 am

Post by obscene911 » Wed Dec 03, 2008 7:40 pm

Post by obscene911
Wed Dec 03, 2008 7:40 pm

@Cosa: I know this is somewhat off-topic for the thread, but was wondering, if you can remember, where did you get the black spherical feet for the custom hexapod?

I'm looking at something like http://www.amazon.com/Minnesota-Rubber- ... 508&sr=1-2
but not sure if that is light weight enough or the right material.
@Cosa: I know this is somewhat off-topic for the thread, but was wondering, if you can remember, where did you get the black spherical feet for the custom hexapod?

I'm looking at something like http://www.amazon.com/Minnesota-Rubber- ... 508&sr=1-2
but not sure if that is light weight enough or the right material.
obscene911
Newbie
Newbie
Posts: 4
Joined: Tue Dec 02, 2008 6:58 am

Post by cosa » Sat Dec 06, 2008 11:36 am

Post by cosa
Sat Dec 06, 2008 11:36 am

Hehe, the feet were used squash balls from my local squash center (~50cents each). I would look out for balls with the same size and roughly the same compliance.

I think http://www.amazon.com/Minnesota-Rubber-514AD-Fluoroelastomer-Balls/dp/B00137STSY/ref=sr_1_2?ie=UTF8&s=industrial&qid=1228327508&sr=1-2 is a bit too small. A typical squash ball has a diameter of about 4cm = 1.57inch. Bigger is better :) I think 4.4cm will be the biggest you can use if you want to utilize the same plastic piece I used to hold the ball.
Hehe, the feet were used squash balls from my local squash center (~50cents each). I would look out for balls with the same size and roughly the same compliance.

I think http://www.amazon.com/Minnesota-Rubber-514AD-Fluoroelastomer-Balls/dp/B00137STSY/ref=sr_1_2?ie=UTF8&s=industrial&qid=1228327508&sr=1-2 is a bit too small. A typical squash ball has a diameter of about 4cm = 1.57inch. Bigger is better :) I think 4.4cm will be the biggest you can use if you want to utilize the same plastic piece I used to hold the ball.
cosa
Savvy Roboteer
Savvy Roboteer
User avatar
Posts: 40
Joined: Mon Dec 04, 2006 1:00 am

Post by cosa » Sat Dec 06, 2008 11:44 am

Post by cosa
Sat Dec 06, 2008 11:44 am

Project Update:
I've added inverse kinematics for the legs of the default humanoid.
Inverse kinematics now exist for the default humanoid, the custom humanoid and the custom hexapod (see Project Page).
Project Update:
I've added inverse kinematics for the legs of the default humanoid.
Inverse kinematics now exist for the default humanoid, the custom humanoid and the custom hexapod (see Project Page).
cosa
Savvy Roboteer
Savvy Roboteer
User avatar
Posts: 40
Joined: Mon Dec 04, 2006 1:00 am

Post by obscene911 » Sat Dec 06, 2008 11:32 pm

Post by obscene911
Sat Dec 06, 2008 11:32 pm

@Cosa: I was just wondering, what your advice is about using inverse kinematics for a custom Bioloid "gorilla" configuration:
http://forums.trossenrobotics.com/showthread.php?t=2672

Would there be any particular challenge for programming IK for a configuration like this? The arms have a high DOF, so it would use the arms for the majority of stablization, I suppose?

I'm currently just using robot terminal for programming movements, but getting the walking gait going is quite a challenge.

Thanks for any help.
@Cosa: I was just wondering, what your advice is about using inverse kinematics for a custom Bioloid "gorilla" configuration:
http://forums.trossenrobotics.com/showthread.php?t=2672

Would there be any particular challenge for programming IK for a configuration like this? The arms have a high DOF, so it would use the arms for the majority of stablization, I suppose?

I'm currently just using robot terminal for programming movements, but getting the walking gait going is quite a challenge.

Thanks for any help.
obscene911
Newbie
Newbie
Posts: 4
Joined: Tue Dec 02, 2008 6:58 am

Post by siempre.aprendiendo » Sat Dec 06, 2008 11:59 pm

Post by siempre.aprendiendo
Sat Dec 06, 2008 11:59 pm

obscene911, do you know the toss mode, pressing the 't' key? You can send and get binary data to/from the AX12+ and AX-S1
obscene911, do you know the toss mode, pressing the 't' key? You can send and get binary data to/from the AX12+ and AX-S1
siempre.aprendiendo
Savvy Roboteer
Savvy Roboteer
User avatar
Posts: 559
Joined: Wed Aug 08, 2007 9:13 pm
Location: Barcelona

Post by cosa » Sun Dec 07, 2008 12:59 pm

Post by cosa
Sun Dec 07, 2008 12:59 pm

Would there be any particular challenge for programming IK for a configuration like this? The arms have a high DOF, so it would use the arms for the majority of stablization, I suppose?

The arms have 6 DOF so you might find a program that automatically generates a closed form solution to inverse kinematics (try google). You might also be interested in numerical solutions which solve the problem by iteration and are therefore slow (but fast enough if you don't want to calculate IK every few ms). See http://graphics.ucsd.edu/courses/cse169_w04/welman.pdf, http://jgt.akpeters.com/papers/BussKim05/, http://diegopark.googlepages.com/computergraphics or sth similar.

If you want to retrieve a closed form solution yourself I would simplify the kinematics. Most of the servo axes don't intersect which complicates the problem.
Would there be any particular challenge for programming IK for a configuration like this? The arms have a high DOF, so it would use the arms for the majority of stablization, I suppose?

The arms have 6 DOF so you might find a program that automatically generates a closed form solution to inverse kinematics (try google). You might also be interested in numerical solutions which solve the problem by iteration and are therefore slow (but fast enough if you don't want to calculate IK every few ms). See http://graphics.ucsd.edu/courses/cse169_w04/welman.pdf, http://jgt.akpeters.com/papers/BussKim05/, http://diegopark.googlepages.com/computergraphics or sth similar.

If you want to retrieve a closed form solution yourself I would simplify the kinematics. Most of the servo axes don't intersect which complicates the problem.
cosa
Savvy Roboteer
Savvy Roboteer
User avatar
Posts: 40
Joined: Mon Dec 04, 2006 1:00 am

Post by obscene911 » Sun Dec 07, 2008 11:24 pm

Post by obscene911
Sun Dec 07, 2008 11:24 pm

I understand. I can see how it would be particularly difficult to work on kinematics for the arms, considering the servo axis are all offset from each other. I never thought about the consequences before, but I think you just broadened my understanding of the concept.

I've found an article about a closed-form inverse kinematics solver for reconfigurable robots: http://ieeexplore.ieee.org/articleSale/ ... ber=932980

Would it be worth it to purchase that, or am I headed down the wrong path? I'm searching for what you said, but can't find much in terms of a program that will generate explicit formula for IK.

As far as the configuration that I've come up with, should I reconfigure it so that the axis are simplified and intersect the length of the arm?
I understand. I can see how it would be particularly difficult to work on kinematics for the arms, considering the servo axis are all offset from each other. I never thought about the consequences before, but I think you just broadened my understanding of the concept.

I've found an article about a closed-form inverse kinematics solver for reconfigurable robots: http://ieeexplore.ieee.org/articleSale/ ... ber=932980

Would it be worth it to purchase that, or am I headed down the wrong path? I'm searching for what you said, but can't find much in terms of a program that will generate explicit formula for IK.

As far as the configuration that I've come up with, should I reconfigure it so that the axis are simplified and intersect the length of the arm?
obscene911
Newbie
Newbie
Posts: 4
Joined: Tue Dec 02, 2008 6:58 am

Post by Barryke » Mon Dec 08, 2008 11:07 am

Post by Barryke
Mon Dec 08, 2008 11:07 am

This thread makes a most interesting read! Thanks guys.

A week ago i stubled upon http://bioloidcontrol.sourceforge.net/ Hells bells, thats a nice project!

I got quite interested because i'm in the planning phase for a AX-12 based spider bot, and need to do simulation. And this is called control, so:

1)
Is AX-12 feedback given by the animation? On a related note, is there a feedback implementation of real AX-12's data?
I want to generate a dynamic gait by some external program. Therefore i would like to have those registers simulated.

2)
I saw it has kinematic calculators but does that include a solver?
Can not find that in the documentation.

3)
I don't grasph the bioloid bus <> your application connection.
A UML outlining what part of the program goes where would fitt well on the sourceforge website. Or mention parts like physics seperatly, as its optional.
This thread makes a most interesting read! Thanks guys.

A week ago i stubled upon http://bioloidcontrol.sourceforge.net/ Hells bells, thats a nice project!

I got quite interested because i'm in the planning phase for a AX-12 based spider bot, and need to do simulation. And this is called control, so:

1)
Is AX-12 feedback given by the animation? On a related note, is there a feedback implementation of real AX-12's data?
I want to generate a dynamic gait by some external program. Therefore i would like to have those registers simulated.

2)
I saw it has kinematic calculators but does that include a solver?
Can not find that in the documentation.

3)
I don't grasph the bioloid bus <> your application connection.
A UML outlining what part of the program goes where would fitt well on the sourceforge website. Or mention parts like physics seperatly, as its optional.
Barryke
Newbie
Newbie
Posts: 6
Joined: Mon Dec 01, 2008 2:24 pm

Post by cosa » Mon Dec 08, 2008 11:52 am

Post by cosa
Mon Dec 08, 2008 11:52 am

1)
Is AX-12 feedback given by the animation? On a related note, is there a feedback implementation of real AX-12's data?
I want to generate a dynamic gait by some external program. Therefore i would like to have those registers simulated.

Hmm, what do you mean by simulated? Are you referring to the dynamics extension?
If you plan to control the servos in a closed loop I suggest using the USB2Dynamixel or use the tossmode of the standard firmware (if you can set the baudrate to sth higher than 57.6k).
At the moment, my cm-5 controller program has problems when I try to read data from the servos after making a few write attempts which can cause sloppy motions. But I think this is due to communication errors on my broken cm-5. Therefore position feedback during a motion is deactivated at the moment (can easily be reactivated if you compile it yourself: controller/src/interpolation.cpp line 262). I'll have to test it on another cm-5 which will take some time. Of course, this problem doesn't occur if you're using the USB2Dynamixel.

The main program reads data from and writes data to the robot in a closed loop every few milliseconds (see CMotionContainer::updateRobot(), 80ms by default with 57.6k baud). This data is used to show the animation of the robot. If communication is deactivated (on/off, ron/roff) the internal data structures will still be updated as normal but the target position (which is normally sent to the robot) is used as input. You can generate dynamixel packets and send them through a TCP line if you want to use the information in another program.
2)
I saw it has kinematic calculators but does that include a solver?
Can not find that in the documentation.

If you refer to inverse kinematics, there are closed form solutions for the standard humanoid, the custom humanoid and the custom spider. You'll probably be able to use the IK of the custom spider on your robot.
The program doesn't include a working solver. The function CRobot::estimateInverseKinematics() serves as a test area for this purpose. It should contain an implementation of the Jacobian Transponse method, but if I remember it correct, it didn't work properly ;) I haven't worked on this problem for a long time.
3)
I don't grasph the bioloid bus <> your application connection.
A UML outlining what part of the program goes where would fitt well on the sourceforge website. Or mention parts like physics seperatly, as its optional.

I plan ( ;) ) to improve the documentation on the project page and this will be a part of it.
My program outputs data to and reads data from the serial line (<UseSerial>true</UseSerial>) and a tcp connection (<UseTCP>true</UseTCP>). If both are activated the program will use the data from the serial line as input but write the output to both. By default (<UseCM5>true</UseCM5>) the data will be compressed and crc checked which can be interpreted by the cm-5 controller program. You have to deactivate this option if you use a USB2Dynamixel or use another program (like the dynamics extension of Martin) to communicate with the main program. In this case, the main program will use the dynamixel packet format to write and read data.

Please feel free to ask additional questions.
1)
Is AX-12 feedback given by the animation? On a related note, is there a feedback implementation of real AX-12's data?
I want to generate a dynamic gait by some external program. Therefore i would like to have those registers simulated.

Hmm, what do you mean by simulated? Are you referring to the dynamics extension?
If you plan to control the servos in a closed loop I suggest using the USB2Dynamixel or use the tossmode of the standard firmware (if you can set the baudrate to sth higher than 57.6k).
At the moment, my cm-5 controller program has problems when I try to read data from the servos after making a few write attempts which can cause sloppy motions. But I think this is due to communication errors on my broken cm-5. Therefore position feedback during a motion is deactivated at the moment (can easily be reactivated if you compile it yourself: controller/src/interpolation.cpp line 262). I'll have to test it on another cm-5 which will take some time. Of course, this problem doesn't occur if you're using the USB2Dynamixel.

The main program reads data from and writes data to the robot in a closed loop every few milliseconds (see CMotionContainer::updateRobot(), 80ms by default with 57.6k baud). This data is used to show the animation of the robot. If communication is deactivated (on/off, ron/roff) the internal data structures will still be updated as normal but the target position (which is normally sent to the robot) is used as input. You can generate dynamixel packets and send them through a TCP line if you want to use the information in another program.
2)
I saw it has kinematic calculators but does that include a solver?
Can not find that in the documentation.

If you refer to inverse kinematics, there are closed form solutions for the standard humanoid, the custom humanoid and the custom spider. You'll probably be able to use the IK of the custom spider on your robot.
The program doesn't include a working solver. The function CRobot::estimateInverseKinematics() serves as a test area for this purpose. It should contain an implementation of the Jacobian Transponse method, but if I remember it correct, it didn't work properly ;) I haven't worked on this problem for a long time.
3)
I don't grasph the bioloid bus <> your application connection.
A UML outlining what part of the program goes where would fitt well on the sourceforge website. Or mention parts like physics seperatly, as its optional.

I plan ( ;) ) to improve the documentation on the project page and this will be a part of it.
My program outputs data to and reads data from the serial line (<UseSerial>true</UseSerial>) and a tcp connection (<UseTCP>true</UseTCP>). If both are activated the program will use the data from the serial line as input but write the output to both. By default (<UseCM5>true</UseCM5>) the data will be compressed and crc checked which can be interpreted by the cm-5 controller program. You have to deactivate this option if you use a USB2Dynamixel or use another program (like the dynamics extension of Martin) to communicate with the main program. In this case, the main program will use the dynamixel packet format to write and read data.

Please feel free to ask additional questions.
cosa
Savvy Roboteer
Savvy Roboteer
User avatar
Posts: 40
Joined: Mon Dec 04, 2006 1:00 am

Post by obscene911 » Tue Dec 09, 2008 9:58 pm

Post by obscene911
Tue Dec 09, 2008 9:58 pm

Edit: I apologize. If someone could remove these posts, I'd be appreciative.
Edit: I apologize. If someone could remove these posts, I'd be appreciative.
Last edited by obscene911 on Wed Dec 10, 2008 9:37 pm, edited 1 time in total.
obscene911
Newbie
Newbie
Posts: 4
Joined: Tue Dec 02, 2008 6:58 am

Post by Barryke » Wed Dec 10, 2008 10:03 am

Post by Barryke
Wed Dec 10, 2008 10:03 am

@obscene911: link was faulty, and starting a new thread might be better.
http://www.orchestracontrol.com/Controlsuite/Modules/tabid/60/Default.aspx

obscene911 wrote:I found a program called Orchestra Control and was wondering if something like this would be good for generating the IK that I need for the Bioloid kit?
Did not encounter that package in my last weeks of research, can it interface with (any form of) C code?

The only one i knew of was KDL, which has solvers onboard:
http://www.orocos.org/kdl

There is breve, which can simulate some robot sensors, is equipped to run some simulated evolution:
http://www.spiderland.org/node/2733
Evolution happens in the PUSH language, and i wonder if it is transferable to my physical robot. That'd be insanely useful.

No experience with either tough.
@obscene911: link was faulty, and starting a new thread might be better.
http://www.orchestracontrol.com/Controlsuite/Modules/tabid/60/Default.aspx

obscene911 wrote:I found a program called Orchestra Control and was wondering if something like this would be good for generating the IK that I need for the Bioloid kit?
Did not encounter that package in my last weeks of research, can it interface with (any form of) C code?

The only one i knew of was KDL, which has solvers onboard:
http://www.orocos.org/kdl

There is breve, which can simulate some robot sensors, is equipped to run some simulated evolution:
http://www.spiderland.org/node/2733
Evolution happens in the PUSH language, and i wonder if it is transferable to my physical robot. That'd be insanely useful.

No experience with either tough.
Barryke
Newbie
Newbie
Posts: 6
Joined: Mon Dec 01, 2008 2:24 pm

Post by cosa » Thu Dec 11, 2008 1:20 am

Post by cosa
Thu Dec 11, 2008 1:20 am

(@obscene911:)
Update:
I added the CCD Inverse Kinematics algorithm, see:
http://bioloidcontrol.svn.sourceforge.net/viewvc/bioloidcontrol/main/src/robot.cpp?revision=155&view=markup line 388.
It's not optimized but it seems to work for the humanoid ;)

If you want to use simple joint constraints (min, max) you'll have to change the robot config file (dh_*.xml):
Code: Select all
<dh rotz="0"       transz="0" rotx="-90"    transx="0" id="8" sgn="1"  min="-150" max="150" />

It might be necessary to sample multiple starting configurations due to local minima which is currently not implemented.
(@obscene911:)
Update:
I added the CCD Inverse Kinematics algorithm, see:
http://bioloidcontrol.svn.sourceforge.net/viewvc/bioloidcontrol/main/src/robot.cpp?revision=155&view=markup line 388.
It's not optimized but it seems to work for the humanoid ;)

If you want to use simple joint constraints (min, max) you'll have to change the robot config file (dh_*.xml):
Code: Select all
<dh rotz="0"       transz="0" rotx="-90"    transx="0" id="8" sgn="1"  min="-150" max="150" />

It might be necessary to sample multiple starting configurations due to local minima which is currently not implemented.
cosa
Savvy Roboteer
Savvy Roboteer
User avatar
Posts: 40
Joined: Mon Dec 04, 2006 1:00 am

Baudrate and ipopause question

Post by Compadre1 » Tue May 19, 2009 3:55 am

Post by Compadre1
Tue May 19, 2009 3:55 am

Hi cosa,

At 115, 200 B/Seg, it should be possible to send packets of 548 bits (AX12_DATA_WRITE_TOTAL) every ~5 ms. getting the reply of the same length then 10 ms are required.

I was wondering where is the hint to set the transmission every 80 ms.

Thanks
Hi cosa,

At 115, 200 B/Seg, it should be possible to send packets of 548 bits (AX12_DATA_WRITE_TOTAL) every ~5 ms. getting the reply of the same length then 10 ms are required.

I was wondering where is the hint to set the transmission every 80 ms.

Thanks
Compadre1
Newbie
Newbie
Posts: 1
Joined: Tue May 19, 2009 3:42 am

PreviousNext
50 postsPage 3 of 41, 2, 3, 4
50 postsPage 3 of 41, 2, 3, 4