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 1 of 31, 2, 3
44 postsPage 1 of 31, 2, 3

Replacing the RoboBasic board

Post by roycepipkins » Thu Jun 22, 2006 9:26 pm

Post by roycepipkins
Thu Jun 22, 2006 9:26 pm

Doesn't the main value of the RoboBasic board come from its ability to interpret the overall template program and all its pre-made movement subroutines?

Looking at the routines, they mostly just seem to me to be a series of servo position commands. If one took the trouble to transribe those positions into a file that another language could read (Tedious perhaps, but not difficult) would we not be most of the way to replaceing the board? Or is there another critical but mysterious function of the board I'm missing?
Doesn't the main value of the RoboBasic board come from its ability to interpret the overall template program and all its pre-made movement subroutines?

Looking at the routines, they mostly just seem to me to be a series of servo position commands. If one took the trouble to transribe those positions into a file that another language could read (Tedious perhaps, but not difficult) would we not be most of the way to replaceing the board? Or is there another critical but mysterious function of the board I'm missing?
roycepipkins
Savvy Roboteer
Savvy Roboteer
User avatar
Posts: 25
Joined: Tue Jun 20, 2006 1:00 am

Post by robodude666 » Thu Jun 22, 2006 9:36 pm

Post by robodude666
Thu Jun 22, 2006 9:36 pm

As far as I undersatand, there is nothing special about the board. And yes, as as I understand, all the code does is move the servo into different positions, along with changing the speed of the servos and waiting between motions.

If you can transribe the code into a different language then you can use it with any board. As long as that board has enough I/Os for all the servos and whatnots you want to use.
As far as I undersatand, there is nothing special about the board. And yes, as as I understand, all the code does is move the servo into different positions, along with changing the speed of the servos and waiting between motions.

If you can transribe the code into a different language then you can use it with any board. As long as that board has enough I/Os for all the servos and whatnots you want to use.
robodude666
Savvy Roboteer
Savvy Roboteer
User avatar
Posts: 62
Joined: Sat Jun 17, 2006 1:00 am
Location: Brooklyn, New York

Post by subpilot » Fri Jun 23, 2006 2:27 am

Post by subpilot
Fri Jun 23, 2006 2:27 am

I have a ServoPod board on order and will be doing just that. It's far more powerful than the RN board and gives me a range of development tools to work with.
I have a ServoPod board on order and will be doing just that. It's far more powerful than the RN board and gives me a range of development tools to work with.
subpilot
Savvy Roboteer
Savvy Roboteer
User avatar
Posts: 146
Joined: Sat Feb 25, 2006 1:00 am
Location: Lake Arrowhead, Ca,USA

Post by robodude666 » Fri Jun 23, 2006 3:21 pm

Post by robodude666
Fri Jun 23, 2006 3:21 pm

Hey,

Could someone post a list of boards that are known to work, or would work with the RoboNova-1? As far as I understand, only major thing that the board needs is support for the 16 servos the RN has. And maybe same size as the stock board to fit inside of the back.
Hey,

Could someone post a list of boards that are known to work, or would work with the RoboNova-1? As far as I understand, only major thing that the board needs is support for the 16 servos the RN has. And maybe same size as the stock board to fit inside of the back.
robodude666
Savvy Roboteer
Savvy Roboteer
User avatar
Posts: 62
Joined: Sat Jun 17, 2006 1:00 am
Location: Brooklyn, New York

Post by subpilot » Fri Jun 23, 2006 5:36 pm

Post by subpilot
Fri Jun 23, 2006 5:36 pm

You could run the servos with just about any of the standard servo boards but you won't get position feedback. The ServoPod has the ability to measure pulse widths in hardware. I am going to have to add a multiplexer in order to get all the PWM input channels I want but the advantage is very low processor overhead. It also has very high resolution PWM drivers so it will be a bit smoother than the standard RN board.
The major advantage is having magnitudes more horsepower and I/O support in a multitasking environment.
I'm eventually going to make a new PCB with the DSP56F807 processor, LiPo charge monitor, accelerometers/gyros and my WiPort module all rolled on the same board. I'm also planning on changing over all my servos to a smaller JST connector that will take up much less landscape on the PCB.
You could run the servos with just about any of the standard servo boards but you won't get position feedback. The ServoPod has the ability to measure pulse widths in hardware. I am going to have to add a multiplexer in order to get all the PWM input channels I want but the advantage is very low processor overhead. It also has very high resolution PWM drivers so it will be a bit smoother than the standard RN board.
The major advantage is having magnitudes more horsepower and I/O support in a multitasking environment.
I'm eventually going to make a new PCB with the DSP56F807 processor, LiPo charge monitor, accelerometers/gyros and my WiPort module all rolled on the same board. I'm also planning on changing over all my servos to a smaller JST connector that will take up much less landscape on the PCB.
subpilot
Savvy Roboteer
Savvy Roboteer
User avatar
Posts: 146
Joined: Sat Feb 25, 2006 1:00 am
Location: Lake Arrowhead, Ca,USA

Post by robodude666 » Sat Jun 24, 2006 3:40 am

Post by robodude666
Sat Jun 24, 2006 3:40 am

Hmm, interesting. Do you think you could be able to run it from:
OOPIC-R
OOPIC-II or +
Mini Atom Bot Board w/ Basic Stamp or OOPIC-C or BASIC Atom
Hmm, interesting. Do you think you could be able to run it from:
OOPIC-R
OOPIC-II or +
Mini Atom Bot Board w/ Basic Stamp or OOPIC-C or BASIC Atom
robodude666
Savvy Roboteer
Savvy Roboteer
User avatar
Posts: 62
Joined: Sat Jun 17, 2006 1:00 am
Location: Brooklyn, New York

Post by roycepipkins » Sat Jun 24, 2006 6:48 am

Post by roycepipkins
Sat Jun 24, 2006 6:48 am

Looks like the oopic can theortically handle 21 servos but I wouldn't expect much ram to be left over for the code.
Looks like the oopic can theortically handle 21 servos but I wouldn't expect much ram to be left over for the code.
roycepipkins
Savvy Roboteer
Savvy Roboteer
User avatar
Posts: 25
Joined: Tue Jun 20, 2006 1:00 am

Post by robodude666 » Sat Jun 24, 2006 4:32 pm

Post by robodude666
Sat Jun 24, 2006 4:32 pm

I just realized something important! RoboBasic has a command, MOVE, which is used to tell the servos to go to whatever position.

MOVE G6D, 100, 58, 135, 160, 100, 100

For example. OOPIC's language does not have such a command, at least not that I know of. You would have to move each servo by itself, eg:

s1 = 100
s2 = 58
s3 = 135
s4 = 160
s5 = 100
s6 = 100

If you want to do a few simple servo motions, such as just reset the 2 hip servos, but if you want to have long combos of servos being moved then it won't work very well because there will be a few ms delay between motions. If your making the robot flip or something of that sort or maybe thin wire act it might prove deadly as the servos wont be aligned 100% and the robot might fall over or think the servo is at 99 when its really 100 and might overdo it causing the robot to maybe fall over.

How does RoboBasic execute the MOVE command at once? Does it just do a for loop through all the arguments? Or does it send a global command out to move all the servos at once. If it uses a for loop type of thing to execute the command then it wont make that much of a difference. All you need is a strong processor to read the code and send out the commands asap.
I just realized something important! RoboBasic has a command, MOVE, which is used to tell the servos to go to whatever position.

MOVE G6D, 100, 58, 135, 160, 100, 100

For example. OOPIC's language does not have such a command, at least not that I know of. You would have to move each servo by itself, eg:

s1 = 100
s2 = 58
s3 = 135
s4 = 160
s5 = 100
s6 = 100

If you want to do a few simple servo motions, such as just reset the 2 hip servos, but if you want to have long combos of servos being moved then it won't work very well because there will be a few ms delay between motions. If your making the robot flip or something of that sort or maybe thin wire act it might prove deadly as the servos wont be aligned 100% and the robot might fall over or think the servo is at 99 when its really 100 and might overdo it causing the robot to maybe fall over.

How does RoboBasic execute the MOVE command at once? Does it just do a for loop through all the arguments? Or does it send a global command out to move all the servos at once. If it uses a for loop type of thing to execute the command then it wont make that much of a difference. All you need is a strong processor to read the code and send out the commands asap.
robodude666
Savvy Roboteer
Savvy Roboteer
User avatar
Posts: 62
Joined: Sat Jun 17, 2006 1:00 am
Location: Brooklyn, New York

Post by Joerg » Sat Jun 24, 2006 8:38 pm

Post by Joerg
Sat Jun 24, 2006 8:38 pm

There is still another point.

The firmware of the C-3024 is able to synchronize the servo movements. So you can make that all servo movements will end at the same time. The speed of the used servos will be different and this is calculated by the firmware.
To use several speeds you have to calculate the intermediate positions yourself, because the servomotors will move with one (maximum) speed to the given position.

If you want to replace the Robonova-board you have to arrange with this things. I doubt that this will be possible with a board/controller with a runtime system (like OOPic, BASICStamp etc.).

Joerg
There is still another point.

The firmware of the C-3024 is able to synchronize the servo movements. So you can make that all servo movements will end at the same time. The speed of the used servos will be different and this is calculated by the firmware.
To use several speeds you have to calculate the intermediate positions yourself, because the servomotors will move with one (maximum) speed to the given position.

If you want to replace the Robonova-board you have to arrange with this things. I doubt that this will be possible with a board/controller with a runtime system (like OOPic, BASICStamp etc.).

Joerg
Joerg
Robot Builder
Robot Builder
User avatar
Posts: 17
Joined: Mon Jun 12, 2006 1:00 am
Location: Dresden / Germany

Post by Pev » Sat Jun 24, 2006 9:54 pm

Post by Pev
Sat Jun 24, 2006 9:54 pm

I think you'd need to add a servo controller board to the OOPIC or BasicX type control board to get the synchronous moves all ending at the same time. Something like the Lynxmotion SSC-32, but it starts to get bulky then as the SSC is pretty big on its own
I think you'd need to add a servo controller board to the OOPIC or BasicX type control board to get the synchronous moves all ending at the same time. Something like the Lynxmotion SSC-32, but it starts to get bulky then as the SSC is pretty big on its own
Carl
-------------------------
www.alt-view.co.uk
Pev
Savvy Roboteer
Savvy Roboteer
User avatar
Posts: 547
Joined: Sun Feb 26, 2006 1:00 am
Location: UK

Post by robodude666 » Sat Jun 24, 2006 11:21 pm

Post by robodude666
Sat Jun 24, 2006 11:21 pm

Yea, was going to ask if the SSC-32 would work as mostly all lynxmotion robots use it with the atom bot board
Yea, was going to ask if the SSC-32 would work as mostly all lynxmotion robots use it with the atom bot board
robodude666
Savvy Roboteer
Savvy Roboteer
User avatar
Posts: 62
Joined: Sat Jun 17, 2006 1:00 am
Location: Brooklyn, New York

Post by subpilot » Sun Jun 25, 2006 6:46 am

Post by subpilot
Sun Jun 25, 2006 6:46 am

That would be one heck of a slow controller to have ms of delay between servo commands. All you have to do is set a timer register value per servo. That's a couple of clock cycles and that doesn't take much time on an 80mips processor. Certainly far shorter than the response time of the servo motors.
In order to get the servos to complete a syncronous move sequence you would take the delta between the current position and desired position for all commanded servos. The servo with the highest delta position would get the most frequent update while lower deltas would get less frequent command updates. Velocity is determined by how quickly you loop thru the servo command sequence and is only limited by the max possible servo speed.
That would be one heck of a slow controller to have ms of delay between servo commands. All you have to do is set a timer register value per servo. That's a couple of clock cycles and that doesn't take much time on an 80mips processor. Certainly far shorter than the response time of the servo motors.
In order to get the servos to complete a syncronous move sequence you would take the delta between the current position and desired position for all commanded servos. The servo with the highest delta position would get the most frequent update while lower deltas would get less frequent command updates. Velocity is determined by how quickly you loop thru the servo command sequence and is only limited by the max possible servo speed.
subpilot
Savvy Roboteer
Savvy Roboteer
User avatar
Posts: 146
Joined: Sat Feb 25, 2006 1:00 am
Location: Lake Arrowhead, Ca,USA

Post by robodude666 » Sun Jun 25, 2006 6:56 am

Post by robodude666
Sun Jun 25, 2006 6:56 am

In other words, there is no easy way of using a board other than the MR C-3024?
In other words, there is no easy way of using a board other than the MR C-3024?
robodude666
Savvy Roboteer
Savvy Roboteer
User avatar
Posts: 62
Joined: Sat Jun 17, 2006 1:00 am
Location: Brooklyn, New York

Post by subpilot » Sun Jun 25, 2006 7:07 am

Post by subpilot
Sun Jun 25, 2006 7:07 am

Depends on what you mean by "easy". If you mean able to just plug in and go then I think no. If you are up for emulating the 3024 functionality then it is definately going to take some work but is very much possible on many different boards.
Another way to skin the cat is to use a secondary Master controller sending commands via the ext serial port to the 3024. That way the 3024 handles all the dirty work of servo control and the master handles higher level tasks.
Depends on what you mean by "easy". If you mean able to just plug in and go then I think no. If you are up for emulating the 3024 functionality then it is definately going to take some work but is very much possible on many different boards.
Another way to skin the cat is to use a secondary Master controller sending commands via the ext serial port to the 3024. That way the 3024 handles all the dirty work of servo control and the master handles higher level tasks.
subpilot
Savvy Roboteer
Savvy Roboteer
User avatar
Posts: 146
Joined: Sat Feb 25, 2006 1:00 am
Location: Lake Arrowhead, Ca,USA

Post by Pev » Sun Jun 25, 2006 8:20 am

Post by Pev
Sun Jun 25, 2006 8:20 am

subpilot wrote:That would be one heck of a slow controller to have ms of delay between servo commands. All you have to do is set a timer register value per servo. That's a couple of clock cycles and that doesn't take much time on an 80mips processor. Certainly far shorter than the response time of the servo motors.
In order to get the servos to complete a syncronous move sequence you would take the delta between the current position and desired position for all commanded servos. The servo with the highest delta position would get the most frequent update while lower deltas would get less frequent command updates. Velocity is determined by how quickly you loop thru the servo command sequence and is only limited by the max possible servo speed.


Agreed, but wanted to point out that it's about the only way for us mortals with limited electronics and programming skills. I have built a home brew simple biped using the BasicX and SSC-32. It worked fine but was no RN1 lol.

I also believe that another valid approach is to make the M3024 a slave processor and have it do all the grunt work as Subpilot says above.
subpilot wrote:That would be one heck of a slow controller to have ms of delay between servo commands. All you have to do is set a timer register value per servo. That's a couple of clock cycles and that doesn't take much time on an 80mips processor. Certainly far shorter than the response time of the servo motors.
In order to get the servos to complete a syncronous move sequence you would take the delta between the current position and desired position for all commanded servos. The servo with the highest delta position would get the most frequent update while lower deltas would get less frequent command updates. Velocity is determined by how quickly you loop thru the servo command sequence and is only limited by the max possible servo speed.


Agreed, but wanted to point out that it's about the only way for us mortals with limited electronics and programming skills. I have built a home brew simple biped using the BasicX and SSC-32. It worked fine but was no RN1 lol.

I also believe that another valid approach is to make the M3024 a slave processor and have it do all the grunt work as Subpilot says above.
Carl
-------------------------
www.alt-view.co.uk
Pev
Savvy Roboteer
Savvy Roboteer
User avatar
Posts: 547
Joined: Sun Feb 26, 2006 1:00 am
Location: UK

Next
44 postsPage 1 of 31, 2, 3
44 postsPage 1 of 31, 2, 3