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

BioloidCControl - Alternative firmware for CM-510

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

BioloidCControl - Alternative firmware for CM-510

Post by planius » Sat Oct 22, 2011 5:43 am

Post by planius
Sat Oct 22, 2011 5:43 am

Hi All,

BioloidCControl is an alternative firmware for the CM-510 controller/Bioloid Premium Kit robots. It allows the import and execution of motion files generated by RoboPlus Motion. In contrast to the Robotis firmware it is:
    - open source
    - much less memory hungry than Robotis (70KB vs. 170KB for firmware + motion file)
    - supports sending commands to the robot via Zig2Serial from the PC (so you can implement behaviour based code on the PC if you like)

Hosted on Google Code: http://code.google.com/p/bioloidccontrol/

What's implemented in version 0.4:
    - support for humanoid Type A/B/C robots (only Type A has been tested - included motion.h file is for Type A robot)
    - support for executing motions based on a RoboPlus Motion file
    - support for walking and shifting between walk commands
    - support for all Dynamixel commands incl. sync_write
    - support for gyro, DMS sensor and the other ADC channels
    - support for LED's, buttons, buzzer (including melodies)
    - support for serial communication via cable or ZigBee & Zig2Serial
    - command interpreter
    - basic control loop and finite state machine for executing motions without waiting for completion

What's missing compared to default Robotis firmware/motion/task files:
    - Ctrl Inertial Force is ignored in this version
    - balancing is not implemented
    - joint offsets are not implemented
    - no autonomous walking support
    - no RC-100 support
    - no CM-5 support (but should be easy)


The code is based on the Robotis embedded C toolkit, but has been heavliy modified and extended. The ADC and Buzzer functions have been adapted from the Pololu library. The project has been developed using AVR Studio 5.

I would welcome feedback, suggestions and bug reports. If people are interested to contribute, let me know.

Cheers
Peter
Hi All,

BioloidCControl is an alternative firmware for the CM-510 controller/Bioloid Premium Kit robots. It allows the import and execution of motion files generated by RoboPlus Motion. In contrast to the Robotis firmware it is:
    - open source
    - much less memory hungry than Robotis (70KB vs. 170KB for firmware + motion file)
    - supports sending commands to the robot via Zig2Serial from the PC (so you can implement behaviour based code on the PC if you like)

Hosted on Google Code: http://code.google.com/p/bioloidccontrol/

What's implemented in version 0.4:
    - support for humanoid Type A/B/C robots (only Type A has been tested - included motion.h file is for Type A robot)
    - support for executing motions based on a RoboPlus Motion file
    - support for walking and shifting between walk commands
    - support for all Dynamixel commands incl. sync_write
    - support for gyro, DMS sensor and the other ADC channels
    - support for LED's, buttons, buzzer (including melodies)
    - support for serial communication via cable or ZigBee & Zig2Serial
    - command interpreter
    - basic control loop and finite state machine for executing motions without waiting for completion

What's missing compared to default Robotis firmware/motion/task files:
    - Ctrl Inertial Force is ignored in this version
    - balancing is not implemented
    - joint offsets are not implemented
    - no autonomous walking support
    - no RC-100 support
    - no CM-5 support (but should be easy)


The code is based on the Robotis embedded C toolkit, but has been heavliy modified and extended. The ADC and Buzzer functions have been adapted from the Pololu library. The project has been developed using AVR Studio 5.

I would welcome feedback, suggestions and bug reports. If people are interested to contribute, let me know.

Cheers
Peter
Last edited by planius on Sat Oct 22, 2011 9:22 pm, edited 1 time in total.
planius
Savvy Roboteer
Savvy Roboteer
Posts: 40
Joined: Wed Jul 20, 2011 5:33 am

Post by siempre.aprendiendo » Sat Oct 22, 2011 8:18 am

Post by siempre.aprendiendo
Sat Oct 22, 2011 8:18 am

:shock:

Wow... I will try it! Thanks!
:shock:

Wow... I will try it! Thanks!
siempre.aprendiendo
Savvy Roboteer
Savvy Roboteer
User avatar
Posts: 559
Joined: Wed Aug 08, 2007 9:13 pm
Location: Barcelona

Post by limor » Sun Oct 23, 2011 10:14 am

Post by limor
Sun Oct 23, 2011 10:14 am

Great!
Thanks for sharing
Great!
Thanks for sharing
limor
Savvy Roboteer
Savvy Roboteer
User avatar
Posts: 1845
Joined: Mon Oct 11, 2004 1:00 am
Location: London, UK

Post by planius » Tue Nov 01, 2011 5:14 am

Post by planius
Tue Nov 01, 2011 5:14 am

Version 0.5 now available!

What's new:
- support for 2-axis accelerometer (ADXL203) and ultrasonic distance sensor (Maxbotix EZ0)
- joint offsets and gyro based balancing during motions are now implemented
- basic obstacle avoidance when walking
- speed of execution improvements
- exact timings for the control loop documented in comments
- some bug fixes
- updated User's Guide

To download go to: http://code.google.com/p/bioloidccontrol/downloads/list

Enjoy.
Version 0.5 now available!

What's new:
- support for 2-axis accelerometer (ADXL203) and ultrasonic distance sensor (Maxbotix EZ0)
- joint offsets and gyro based balancing during motions are now implemented
- basic obstacle avoidance when walking
- speed of execution improvements
- exact timings for the control loop documented in comments
- some bug fixes
- updated User's Guide

To download go to: http://code.google.com/p/bioloidccontrol/downloads/list

Enjoy.
planius
Savvy Roboteer
Savvy Roboteer
Posts: 40
Joined: Wed Jul 20, 2011 5:33 am

Post by MOHIT JINDAL » Tue Nov 01, 2011 9:37 am

Post by MOHIT JINDAL
Tue Nov 01, 2011 9:37 am

Can you please tell me how to use that software easily?
Can you please tell me how to use that software easily?
MOHIT JINDAL
Savvy Roboteer
Savvy Roboteer
Posts: 178
Joined: Wed Nov 10, 2010 7:43 am

Post by planius » Tue Nov 01, 2011 10:27 am

Post by planius
Tue Nov 01, 2011 10:27 am

I am assuming you are familiar with C programming and are using AVR Studio 5.

To get started:
1. Unpack the zip file into a suitable directory
2. Create a motion.h file (the included file is for a Type A humanoid robot) using Perl (needs cygwin on Windows):
cygwin> perl translate_motion.pl bio_prm_humanoidtypeX_en.mtn (where X = a, b or c - files available from Robotis or use your own)
3. Overwrite the default motion.h file with the one generated above
4. Import the project into AVR Studio 5
5. Open global.h and select the hardware configuration from the options provided
6. Open serial.h and select the serial interface (Zig2Serial or cable) that you will be using
7. Open BioiloidCControl.c and check the configuration options at the top for any adjustments you would like to make
8. If you don't use an ultrasonic sensor or accelerometer change adc_sensor_enable[ADC_CHANNELS] = {1, 1, 1, 1, 1, 1}; to
adc_sensor_enable[ADC_CHANNELS] = {0, 0, 1, 1, 1, 0}; and change the 2 IF statements in walk_avoidObstacle()
9. Copy the code in motionPageInit.c generated in step 2 to the motionPageInit() function in motion.c
10. Build the solution
11. Transfer the .hex file to the CM-510 controller using RoboPlus Terminal (you have to hold down Shift-# whilst pressing the Robot power button to start the bootloader)
12. Type ‘go’ in RoboPlus Terminal or cycle the power on the CM-510 once the download is complete
13. Wait for the PLAY LED to flash and then press the START button
14. Issue commands at the prompt as per the table in the User's Guide

If you have a Type A humanoid robot, you can skip steps 2, 3 and 9.

Hope this helps.
Peter
I am assuming you are familiar with C programming and are using AVR Studio 5.

To get started:
1. Unpack the zip file into a suitable directory
2. Create a motion.h file (the included file is for a Type A humanoid robot) using Perl (needs cygwin on Windows):
cygwin> perl translate_motion.pl bio_prm_humanoidtypeX_en.mtn (where X = a, b or c - files available from Robotis or use your own)
3. Overwrite the default motion.h file with the one generated above
4. Import the project into AVR Studio 5
5. Open global.h and select the hardware configuration from the options provided
6. Open serial.h and select the serial interface (Zig2Serial or cable) that you will be using
7. Open BioiloidCControl.c and check the configuration options at the top for any adjustments you would like to make
8. If you don't use an ultrasonic sensor or accelerometer change adc_sensor_enable[ADC_CHANNELS] = {1, 1, 1, 1, 1, 1}; to
adc_sensor_enable[ADC_CHANNELS] = {0, 0, 1, 1, 1, 0}; and change the 2 IF statements in walk_avoidObstacle()
9. Copy the code in motionPageInit.c generated in step 2 to the motionPageInit() function in motion.c
10. Build the solution
11. Transfer the .hex file to the CM-510 controller using RoboPlus Terminal (you have to hold down Shift-# whilst pressing the Robot power button to start the bootloader)
12. Type ‘go’ in RoboPlus Terminal or cycle the power on the CM-510 once the download is complete
13. Wait for the PLAY LED to flash and then press the START button
14. Issue commands at the prompt as per the table in the User's Guide

If you have a Type A humanoid robot, you can skip steps 2, 3 and 9.

Hope this helps.
Peter
planius
Savvy Roboteer
Savvy Roboteer
Posts: 40
Joined: Wed Jul 20, 2011 5:33 am

Post by angelocarenzo » Sat Jan 07, 2012 12:06 pm

Post by angelocarenzo
Sat Jan 07, 2012 12:06 pm

Hello planius,
I'm doing a similar work that you have developed for my exams to university.
Code: Select all
My question is: in which way do you debug your code?
Did you used any Jtag connections?

I'm trying to connected to the CM510 trought the Dragon Jtag and I have some problem in debug mode.

Your post is very interesting an for your source code also, congratulations.

Best Regards.
Angelo.
Hello planius,
I'm doing a similar work that you have developed for my exams to university.
Code: Select all
My question is: in which way do you debug your code?
Did you used any Jtag connections?

I'm trying to connected to the CM510 trought the Dragon Jtag and I have some problem in debug mode.

Your post is very interesting an for your source code also, congratulations.

Best Regards.
Angelo.
angelocarenzo
Newbie
Newbie
Posts: 2
Joined: Thu Jan 05, 2012 4:26 pm

Post by wiweet » Mon Jan 09, 2012 6:36 am

Post by wiweet
Mon Jan 09, 2012 6:36 am

Hi Planius..

Excellent work..

I want to ask something here related to the latest version (version 0.5), in the userguide for version 5 page 2 its written on the command table that BAL will execute balance page(balancing using gyro not yet implemented).

On your post on the 01 Nov 2011 04:14, Version 0.5 now available it's mentioned that "- joint offsets and gyro based balancing during motions are now implemented "

From that I assume that balancing using gyro is not yet implemented for balance page but it's implemented for walking and other motion. Is it right? Correct me if I'm wrong.

Thanks a lot.

wiweet
Hi Planius..

Excellent work..

I want to ask something here related to the latest version (version 0.5), in the userguide for version 5 page 2 its written on the command table that BAL will execute balance page(balancing using gyro not yet implemented).

On your post on the 01 Nov 2011 04:14, Version 0.5 now available it's mentioned that "- joint offsets and gyro based balancing during motions are now implemented "

From that I assume that balancing using gyro is not yet implemented for balance page but it's implemented for walking and other motion. Is it right? Correct me if I'm wrong.

Thanks a lot.

wiweet
wiweet
Savvy Roboteer
Savvy Roboteer
Posts: 43
Joined: Fri Apr 15, 2011 2:50 am

Post by planius » Mon Jan 09, 2012 7:04 am

Post by planius
Mon Jan 09, 2012 7:04 am

Hi wiweet,

yes, that's right. Static balancing using Kalman filter will be in version 0.6 which is planned for February.

Cheers
Peter
Hi wiweet,

yes, that's right. Static balancing using Kalman filter will be in version 0.6 which is planned for February.

Cheers
Peter
planius
Savvy Roboteer
Savvy Roboteer
Posts: 40
Joined: Wed Jul 20, 2011 5:33 am

Post by wiweet » Thu Feb 23, 2012 8:52 pm

Post by wiweet
Thu Feb 23, 2012 8:52 pm

Does bioloidccontrol support motion offset?
Does bioloidccontrol support motion offset?
wiweet
Savvy Roboteer
Savvy Roboteer
Posts: 43
Joined: Fri Apr 15, 2011 2:50 am

Post by planius » Sat Feb 25, 2012 3:36 am

Post by planius
Sat Feb 25, 2012 3:36 am

Yes, it does. All goal poses (in pose.c) are calculated including joint offset values which are kept in a global array:
Code: Select all
// joint offset values
extern volatile int16 joint_offset[NUM_AX12_SERVOS];


The code currently only uses joint offsets during walking based on gyro values.
Yes, it does. All goal poses (in pose.c) are calculated including joint offset values which are kept in a global array:
Code: Select all
// joint offset values
extern volatile int16 joint_offset[NUM_AX12_SERVOS];


The code currently only uses joint offsets during walking based on gyro values.
planius
Savvy Roboteer
Savvy Roboteer
Posts: 40
Joined: Wed Jul 20, 2011 5:33 am

bioloidccontrol version 0.6?

Post by wiweet » Thu Mar 29, 2012 8:06 am

Post by wiweet
Thu Mar 29, 2012 8:06 am

Hi Planius,
Is bioloidccontrol 0.6 released yet?
I'm looking forward kalman filter implementation you have planned for static stabilization using gyro data and joint offset.
Hi Planius,
Is bioloidccontrol 0.6 released yet?
I'm looking forward kalman filter implementation you have planned for static stabilization using gyro data and joint offset.
wiweet
Savvy Roboteer
Savvy Roboteer
Posts: 43
Joined: Fri Apr 15, 2011 2:50 am

Post by planius » Fri Mar 30, 2012 1:06 am

Post by planius
Fri Mar 30, 2012 1:06 am

Unfortunately all my spare time has been sucked into a home renovation project since January and I haven't had the chance to get back to completing the code for version 0.6. The Kalman filter and corrections are implemented, but the tuning is not yet finished. Should be able to get back to it after Easter...
Unfortunately all my spare time has been sucked into a home renovation project since January and I haven't had the chance to get back to completing the code for version 0.6. The Kalman filter and corrections are implemented, but the tuning is not yet finished. Should be able to get back to it after Easter...
planius
Savvy Roboteer
Savvy Roboteer
Posts: 40
Joined: Wed Jul 20, 2011 5:33 am

Post by e0ne199 » Wed Jun 20, 2012 4:21 pm

Post by e0ne199
Wed Jun 20, 2012 4:21 pm

unfortunately for me, all of the commands listed on the manual don't give any response to the robot, even if i just want the robot to stand up using those commands...and the code works well only when doing some initialization...

btw i have followed every direction written on the manual but the program still gives no effect to the robot when i try to transmit commands listed on the manual...do i make a mistake when transmitting the command? thx for helping :)
unfortunately for me, all of the commands listed on the manual don't give any response to the robot, even if i just want the robot to stand up using those commands...and the code works well only when doing some initialization...

btw i have followed every direction written on the manual but the program still gives no effect to the robot when i try to transmit commands listed on the manual...do i make a mistake when transmitting the command? thx for helping :)
e0ne199
Newbie
Newbie
Posts: 3
Joined: Wed Jun 20, 2012 3:59 pm

Post by planius » Sun Jun 24, 2012 10:07 am

Post by planius
Sun Jun 24, 2012 10:07 am

Are you using ZigBee or serial cable?
Which type humanoid robot are you using - A, B or C?
Do you get the welcome message 'Bioloid C Control V0.5'?
Does your robot assume the default (balance page 224) pose?
Do you then get the command prompt 'Ready for command.
>' ?
What happens after you enter a command?
Thx, Peter
Are you using ZigBee or serial cable?
Which type humanoid robot are you using - A, B or C?
Do you get the welcome message 'Bioloid C Control V0.5'?
Does your robot assume the default (balance page 224) pose?
Do you then get the command prompt 'Ready for command.
>' ?
What happens after you enter a command?
Thx, Peter
planius
Savvy Roboteer
Savvy Roboteer
Posts: 40
Joined: Wed Jul 20, 2011 5:33 am

Next
57 postsPage 1 of 41, 2, 3, 4
57 postsPage 1 of 41, 2, 3, 4