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

Replacing the RoboBasic board

Hitec robotics including ROBONOVA humanoid, HSR-8498HB servos, MR C-3024 Controllers and RoboBasic
44 postsPage 3 of 31, 2, 3
44 postsPage 3 of 31, 2, 3

Post by limor » Thu Jun 29, 2006 3:13 pm

Post by limor
Thu Jun 29, 2006 3:13 pm

i-Bot wrote:The alternative to replace the board is OK. The C3024 board does perform position feedback, but many other boards are capable. Some boards are not hardware capable of reading and measuring pulse widths on the servo ports ! The position feedback is of little use for realtime motion control due to limitations of the HSR 8489 servo protocol:
http://web.ukonline.co.uk/r.ibbotson/fi ... 0Servo.pdf
Since the position feedback is only of real use to read limb positions during programming, the software to perform this function is not too difficult for most alternative controllers.

FYI I disagree a bit with your statement that the position feedback "is of little use for realtime motion control" due to the servo shutting down the PID control function during the 2-3ms that it returns the value.

At the Robocup competition Bredobrothers have designed a controller board (mostly done by Thomas) that forwards the the position feedback of 16 Kondo KHR-1 servos at 50hz to a PC while receiving servo-update commands from the PC at the same rate. (Kondo's ICS servos deploy the same trick for position feedback as do the Hitec 8498 servos)
In Thomas's own words:
The controller board doesn't do anything on it's own. No calculations, no motion-programming, no speed control. This was a design decision, because if you're doing inverse kinematics you'll need non-linear speed ramps anyway. The board just receives "raw" values and sends raw sensor readings. All calibration and calculation is done on the PC side.

One interesting by-product of having the servos relax regularly is that you can actually create a "suspention" effect by controlling the % of of relaxation throughout a cycle. For example if the robot has to jump, the servo's torque can be effectively reduced in a way that the impact doesn't damage the gears or motor.
i-Bot wrote:The alternative to replace the board is OK. The C3024 board does perform position feedback, but many other boards are capable. Some boards are not hardware capable of reading and measuring pulse widths on the servo ports ! The position feedback is of little use for realtime motion control due to limitations of the HSR 8489 servo protocol:
http://web.ukonline.co.uk/r.ibbotson/fi ... 0Servo.pdf
Since the position feedback is only of real use to read limb positions during programming, the software to perform this function is not too difficult for most alternative controllers.

FYI I disagree a bit with your statement that the position feedback "is of little use for realtime motion control" due to the servo shutting down the PID control function during the 2-3ms that it returns the value.

At the Robocup competition Bredobrothers have designed a controller board (mostly done by Thomas) that forwards the the position feedback of 16 Kondo KHR-1 servos at 50hz to a PC while receiving servo-update commands from the PC at the same rate. (Kondo's ICS servos deploy the same trick for position feedback as do the Hitec 8498 servos)
In Thomas's own words:
The controller board doesn't do anything on it's own. No calculations, no motion-programming, no speed control. This was a design decision, because if you're doing inverse kinematics you'll need non-linear speed ramps anyway. The board just receives "raw" values and sends raw sensor readings. All calibration and calculation is done on the PC side.

One interesting by-product of having the servos relax regularly is that you can actually create a "suspention" effect by controlling the % of of relaxation throughout a cycle. For example if the robot has to jump, the servo's torque can be effectively reduced in a way that the impact doesn't damage the gears or motor.
limor
Savvy Roboteer
Savvy Roboteer
User avatar
Posts: 1845
Joined: Mon Oct 11, 2004 1:00 am
Location: London, UK

Post by i-Bot » Thu Jun 29, 2006 9:01 pm

Post by i-Bot
Thu Jun 29, 2006 9:01 pm

Thanks for the comments.

You highlight one important factor that I did not stress. The fact that the 50microSec pulse turns off the servos. This previously undocumented feature does offer as many/more opportunities as problems.

I still have issues with the fact that this is a by product of an otherwise unrelated activity in reading the servos position.

I admit I come from the engineering school rather than the robotic artist school, so always prefer a controlled approach with an order on magnitude margin on my feedback and control.

I feel like the kids are in the back of the car saying "are we there yet, are we there yet", and it takes me twice as long due to their intervention !
Thanks for the comments.

You highlight one important factor that I did not stress. The fact that the 50microSec pulse turns off the servos. This previously undocumented feature does offer as many/more opportunities as problems.

I still have issues with the fact that this is a by product of an otherwise unrelated activity in reading the servos position.

I admit I come from the engineering school rather than the robotic artist school, so always prefer a controlled approach with an order on magnitude margin on my feedback and control.

I feel like the kids are in the back of the car saying "are we there yet, are we there yet", and it takes me twice as long due to their intervention !
i-Bot
Savvy Roboteer
Savvy Roboteer
User avatar
Posts: 1142
Joined: Wed May 17, 2006 1:00 am

Post by cp » Sat Nov 25, 2006 9:23 pm

Post by cp
Sat Nov 25, 2006 9:23 pm

I am resurrecting this thread because I am in the beginning stages of developing a C8051F120/1 based controller for a project I have been discussing in this thread:
http://robosavvy.com/modules.php?name=F ... =4878#4878

The basic specs for the controller are here.
http://www.silabs.com/public/documents/ ... _Short.pdf
The controller is much faster than the HR-C3024, and I hope to be able to overcome a number of the limitations with timing that have been discovered.

I would like to get your thoughts about the choice of micro, and whether you think people would be interested in using C8051-based boards for advanced controller development.
I am resurrecting this thread because I am in the beginning stages of developing a C8051F120/1 based controller for a project I have been discussing in this thread:
http://robosavvy.com/modules.php?name=F ... =4878#4878

The basic specs for the controller are here.
http://www.silabs.com/public/documents/ ... _Short.pdf
The controller is much faster than the HR-C3024, and I hope to be able to overcome a number of the limitations with timing that have been discovered.

I would like to get your thoughts about the choice of micro, and whether you think people would be interested in using C8051-based boards for advanced controller development.
cp
Newbie
Newbie
User avatar
Posts: 6
Joined: Wed Nov 08, 2006 1:00 am

Post by Bullit » Sun Nov 26, 2006 1:19 am

Post by Bullit
Sun Nov 26, 2006 1:19 am

Looks like a nice choice. It's actually very similar to the ATMega128. It would be nice if it had more ram but you can always do what they did in the MR-C3024 is add a serial eeprom for data storage. Its certainly much faster at 100Mhz!
Looks like a nice choice. It's actually very similar to the ATMega128. It would be nice if it had more ram but you can always do what they did in the MR-C3024 is add a serial eeprom for data storage. Its certainly much faster at 100Mhz!
Image
Bullit
Savvy Roboteer
Savvy Roboteer
User avatar
Posts: 291
Joined: Wed May 31, 2006 1:00 am
Location: Near robot

Post by DanAlbert » Tue Nov 28, 2006 3:28 am

Post by DanAlbert
Tue Nov 28, 2006 3:28 am

In my day job as an embedded programmer I have spent the last year writing C and assembly code for a SiLabs C8051F020

All and all it's not a bad chip, but I would NOT use it for a multiple servo controller.
It has the same limitation as the ATmega128.
It is an 8 bit processor.
Therefor you can not write all leading edge pulses to the servos at the same time.
It takes a minimum or three instruction to set all edges.

This may not be as important with digital servos but still it took a lot of tight assembly code for me to get the ATmega to be able to perform servo interrupts that had the necessary resolution for the trailing edge.
Otherwise you can get jitter.

Also we needed a very expensive compiler.
Couldn't find a good free one. We paid $1200 for the Keil compiler.

It would be much easier to use a 32bit MCU (maybe an ARM9) that has the ability to write 32 servos in one instruction.

The ARM GNU compiler works well too.

Dan
In my day job as an embedded programmer I have spent the last year writing C and assembly code for a SiLabs C8051F020

All and all it's not a bad chip, but I would NOT use it for a multiple servo controller.
It has the same limitation as the ATmega128.
It is an 8 bit processor.
Therefor you can not write all leading edge pulses to the servos at the same time.
It takes a minimum or three instruction to set all edges.

This may not be as important with digital servos but still it took a lot of tight assembly code for me to get the ATmega to be able to perform servo interrupts that had the necessary resolution for the trailing edge.
Otherwise you can get jitter.

Also we needed a very expensive compiler.
Couldn't find a good free one. We paid $1200 for the Keil compiler.

It would be much easier to use a 32bit MCU (maybe an ARM9) that has the ability to write 32 servos in one instruction.

The ARM GNU compiler works well too.

Dan
DanAlbert
Savvy Roboteer
Savvy Roboteer
User avatar
Posts: 70
Joined: Fri Feb 04, 2005 1:00 am

Post by robokoi » Thu Nov 30, 2006 5:18 pm

Post by robokoi
Thu Nov 30, 2006 5:18 pm

Would a chips like
http://www.st.com/stonline/products/lit ... 10fm32.pdf
or
http://www.nxp.com/acrobat_download/dat ... 6_38_3.pdf

be better for us to use? I'll admit I just went poking thru Digikey looking for ARM microcontrollers and various IO lines.


My interest in RN is more towards the AI than the RoboONE style fights (although an autonomous fight would be fun!) and even though I'm just starting out, I'll be bumping up against the control functions of the current board and the IO lines I can use for sensors, etc. I'll need new functionality eventually, but I don't have experience designing my own board. :(

Maybe I will get it through this! :-D
Would a chips like
http://www.st.com/stonline/products/lit ... 10fm32.pdf
or
http://www.nxp.com/acrobat_download/dat ... 6_38_3.pdf

be better for us to use? I'll admit I just went poking thru Digikey looking for ARM microcontrollers and various IO lines.


My interest in RN is more towards the AI than the RoboONE style fights (although an autonomous fight would be fun!) and even though I'm just starting out, I'll be bumping up against the control functions of the current board and the IO lines I can use for sensors, etc. I'll need new functionality eventually, but I don't have experience designing my own board. :(

Maybe I will get it through this! :-D
robokoi
Robot Builder
Robot Builder
Posts: 13
Joined: Fri Nov 17, 2006 1:00 am
Location: Boston, MA

Post by DirtyRoboto » Thu Nov 30, 2006 7:46 pm

Post by DirtyRoboto
Thu Nov 30, 2006 7:46 pm

Sorry for interrupting but, You guys are all looking in the wrong place!

The key to this uncracking of the code should be done by hacking the software. In Robobasic the compile menu, download command should include the firmware in the compile.
When you run download, Robobasic generates an exact image of what will be 1's and 0's on the chip.
Crack the compile and you understand the method used to encode.

Hope this gets you bot fiddlers on the right tracks.

Marcus.

Ps. Make a robobasic program to poke values in a for/next loop and increase the address being poked, Read for remcon or motor input to stop the program at any point.
Sorry for interrupting but, You guys are all looking in the wrong place!

The key to this uncracking of the code should be done by hacking the software. In Robobasic the compile menu, download command should include the firmware in the compile.
When you run download, Robobasic generates an exact image of what will be 1's and 0's on the chip.
Crack the compile and you understand the method used to encode.

Hope this gets you bot fiddlers on the right tracks.

Marcus.

Ps. Make a robobasic program to poke values in a for/next loop and increase the address being poked, Read for remcon or motor input to stop the program at any point.
DirtyRoboto
Savvy Roboteer
Savvy Roboteer
User avatar
Posts: 412
Joined: Tue Sep 19, 2006 1:00 am
Location: London

Post by i-Bot » Thu Nov 30, 2006 9:41 pm

Post by i-Bot
Thu Nov 30, 2006 9:41 pm

Hey Dirty, keep up with the dancing lessons. Looks like you have a big contest ahead.

Thanks for the insight on the code, I guess we missed some key points there. Maybe you can help us to understand how a EEPROM poke or a RAM poke can read flash. Guess you artistes got spell it out ot the fiddlers !

Damn, I knew that 1's and 0's would be in there somewhere ! How could I miss that !
Hey Dirty, keep up with the dancing lessons. Looks like you have a big contest ahead.

Thanks for the insight on the code, I guess we missed some key points there. Maybe you can help us to understand how a EEPROM poke or a RAM poke can read flash. Guess you artistes got spell it out ot the fiddlers !

Damn, I knew that 1's and 0's would be in there somewhere ! How could I miss that !
i-Bot
Savvy Roboteer
Savvy Roboteer
User avatar
Posts: 1142
Joined: Wed May 17, 2006 1:00 am

Post by robokoi » Thu Nov 30, 2006 11:41 pm

Post by robokoi
Thu Nov 30, 2006 11:41 pm

has anyone tried getting the Kondo RCB-3j to work with a RN? Is that even practical since the KHRs are moving to a higher voltage?
has anyone tried getting the Kondo RCB-3j to work with a RN? Is that even practical since the KHRs are moving to a higher voltage?
robokoi
Robot Builder
Robot Builder
Posts: 13
Joined: Fri Nov 17, 2006 1:00 am
Location: Boston, MA

Post by DirtyRoboto » Fri Dec 01, 2006 12:26 am

Post by DirtyRoboto
Fri Dec 01, 2006 12:26 am

Sorry that I aint as smart as you I-Bot. It must be that I am just so stupid and ignorant of the things that you guys get up to.
I will just have to be content with making my robot dance.

Marcus.
PS.
Why do I have a window open with dissembled robobasic code?
Sorry that I aint as smart as you I-Bot. It must be that I am just so stupid and ignorant of the things that you guys get up to.
I will just have to be content with making my robot dance.

Marcus.
PS.
Why do I have a window open with dissembled robobasic code?
DirtyRoboto
Savvy Roboteer
Savvy Roboteer
User avatar
Posts: 412
Joined: Tue Sep 19, 2006 1:00 am
Location: London

Post by hivemind » Fri Dec 01, 2006 12:58 am

Post by hivemind
Fri Dec 01, 2006 12:58 am

I-Bot- You didn't mention the intermediate code was made up of 1's and 0's. You've had the answer all along haven't you?
I-Bot- You didn't mention the intermediate code was made up of 1's and 0's. You've had the answer all along haven't you?
hivemind
Savvy Roboteer
Savvy Roboteer
User avatar
Posts: 211
Joined: Sat Jul 01, 2006 1:00 am
Location: between my computer and robot.

Post by i-Bot » Fri Dec 01, 2006 2:17 pm

Post by i-Bot
Fri Dec 01, 2006 2:17 pm

I've got some vacation coming up, so I hope to update the decriptions I made of the Intermediate code, and the C3024 internal workings. I will try to make some of the parts more clear, and to add the detail I have from running the C3024 code under JTAG ICE.

Also my C library is working OKincluding motion, gyro and interrupts, but I am not sure of the copyright implications of sharing, since it is based on Hitec code. I am hoping Dan can help us with a clean room version

At least I will document the library, since the structure make it very easy to rewrite Robobaasic to C.

Hoepfully I will get finished, for when Dan has his loader done.
I've got some vacation coming up, so I hope to update the decriptions I made of the Intermediate code, and the C3024 internal workings. I will try to make some of the parts more clear, and to add the detail I have from running the C3024 code under JTAG ICE.

Also my C library is working OKincluding motion, gyro and interrupts, but I am not sure of the copyright implications of sharing, since it is based on Hitec code. I am hoping Dan can help us with a clean room version

At least I will document the library, since the structure make it very easy to rewrite Robobaasic to C.

Hoepfully I will get finished, for when Dan has his loader done.
i-Bot
Savvy Roboteer
Savvy Roboteer
User avatar
Posts: 1142
Joined: Wed May 17, 2006 1:00 am

Post by onesandzeros » Sat Dec 02, 2006 5:15 am

Post by onesandzeros
Sat Dec 02, 2006 5:15 am

huuh 8O
thought you guys were talking about me
:lol:
i felt popular for a moment there.
huuh 8O
thought you guys were talking about me
:lol:
i felt popular for a moment there.
onesandzeros
Savvy Roboteer
Savvy Roboteer
User avatar
Posts: 99
Joined: Mon Apr 03, 2006 1:00 am

Thread Resurrection

Post by lampcov » Fri Feb 22, 2008 2:33 am

Post by lampcov
Fri Feb 22, 2008 2:33 am

Hey everyone,

I'm bringing back this thread from the dead to ask a couple questions.

My company has a new controller based on the ATMega128 chip, and we just lost our lead developer. The work being discussed in this thread seems to show that there are some folks around here who would like to write their own "firmware" for lack of a better word, for an ATmega128 based controller.

We're looking for someone to take over where our dev left off, or to implement their fresh idea if it's better than what we have. There is some more info in this thread:

http://robosavvy.com/forum/viewtopic.php?p=14307

If you are interested in assisting/contracting for this project please PM or email me at development [at] robofactors [dot] com

Thanks,
Marc
www.robofactors.com
Hey everyone,

I'm bringing back this thread from the dead to ask a couple questions.

My company has a new controller based on the ATMega128 chip, and we just lost our lead developer. The work being discussed in this thread seems to show that there are some folks around here who would like to write their own "firmware" for lack of a better word, for an ATmega128 based controller.

We're looking for someone to take over where our dev left off, or to implement their fresh idea if it's better than what we have. There is some more info in this thread:

http://robosavvy.com/forum/viewtopic.php?p=14307

If you are interested in assisting/contracting for this project please PM or email me at development [at] robofactors [dot] com

Thanks,
Marc
www.robofactors.com
lampcov
Savvy Roboteer
Savvy Roboteer
User avatar
Posts: 50
Joined: Wed Dec 13, 2006 1:00 am

Previous
44 postsPage 3 of 31, 2, 3
44 postsPage 3 of 31, 2, 3