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

libavr/libbioloid C library for CM5 released!

Bioloid robot kit from Korean company Robotis; CM5 controller block, AX12 servos..
289 posts • Page 14 of 20 • 1 ... 11, 12, 13, 14, 15, 16, 17 ... 20
289 posts • Page 14 of 20 • 1 ... 11, 12, 13, 14, 15, 16, 17 ... 20

Post by RandomMatt » Wed Feb 17, 2010 12:47 pm

Post by RandomMatt
Wed Feb 17, 2010 12:47 pm

right... the M1 firmware is on the interwebs: http://braincell.cx/bioloid/dist/.

The documentation (pdf) describes the control loop that I've used - which you might find interesting.

You need a PSX-B board(*) to get the motor to switch on. But, you can use the firmware as a way to convert an AX12 (or probably an AXS1) into a six channel 10 bit ADC without needing to authenticate.

(*) They are obtainable... see here: http://robosavvy.com/forum/viewtopic.php?p=21690#21690
right... the M1 firmware is on the interwebs: http://braincell.cx/bioloid/dist/.

The documentation (pdf) describes the control loop that I've used - which you might find interesting.

You need a PSX-B board(*) to get the motor to switch on. But, you can use the firmware as a way to convert an AX12 (or probably an AXS1) into a six channel 10 bit ADC without needing to authenticate.

(*) They are obtainable... see here: http://robosavvy.com/forum/viewtopic.php?p=21690#21690
RandomMatt
Savvy Roboteer
Savvy Roboteer
Posts: 117
Joined: Sat Dec 20, 2008 11:16 pm

Post by limor » Thu Feb 18, 2010 1:19 pm

Post by limor
Thu Feb 18, 2010 1:19 pm

thank you!!! :D :D
this is as exciting as rooting my Google Nexus w/ Cyanogen ROM


- how do you calculate velocity and current and how often are they updated ? what's that constant 32 used in calculating the EA?

- what is verbosity, vibration-enable

- is the authentication needed so that CM5 (or whatever controller) knows that the given servo is M1 firmware ? or do you need the PSX-B board to be sitting on the bus with a secret packet to turn on the servo?

- what effect does torque & max-torque have ? is that the PWM duty cycle ? (ie the % of time that the voltage is on during the 1ms cycle)?

- please give examples of some P,I,V,FF_V,FF_A values & ranges and what effect these will have on servo behavior

- I want to continuously as often as possible, receive from all servos their position, velocity (and external torque if possible) ; and continuously send them new target-positions and max-torque; -- how would you recommend doing this and what parameters to use?


Thank you for your patience. the more info is given here the more this ROM will appeal to a larger audience

thanks again
Limor
thank you!!! :D :D
this is as exciting as rooting my Google Nexus w/ Cyanogen ROM


- how do you calculate velocity and current and how often are they updated ? what's that constant 32 used in calculating the EA?

- what is verbosity, vibration-enable

- is the authentication needed so that CM5 (or whatever controller) knows that the given servo is M1 firmware ? or do you need the PSX-B board to be sitting on the bus with a secret packet to turn on the servo?

- what effect does torque & max-torque have ? is that the PWM duty cycle ? (ie the % of time that the voltage is on during the 1ms cycle)?

- please give examples of some P,I,V,FF_V,FF_A values & ranges and what effect these will have on servo behavior

- I want to continuously as often as possible, receive from all servos their position, velocity (and external torque if possible) ; and continuously send them new target-positions and max-torque; -- how would you recommend doing this and what parameters to use?


Thank you for your patience. the more info is given here the more this ROM will appeal to a larger audience

thanks again
Limor
limor
Savvy Roboteer
Savvy Roboteer
User avatar
Posts: 1845
Joined: Mon Oct 11, 2004 1:00 am
Location: London, UK

Post by RandomMatt » Thu Feb 18, 2010 3:20 pm

Post by RandomMatt
Thu Feb 18, 2010 3:20 pm

limor wrote:- how do you calculate velocity and current and how often are they updated ? what's that constant 32 used in calculating the EA?


every tick (i.e. at 1000Hz) I get the position of the servo, the derivative of this position is, by definition, measured velocity or V.

32 is 32ms, so EA = EV(now) - EV(32ms ago)


- what is verbosity, vibration-enable


verbosity is the same as robotis' "response status level" (I think that's what they called it... why they didn't use the word verbosity I don't know).

vibration-enable is a typo - that memory location isn't used. Whoops.

do you need the PSX-B board to be sitting on the bus with a secret packet to turn on the servo?

Yes... that one. without a PSX-B board you will not be able to turn the torque on.


- what effect does torque & max-torque have ? is that the PWM duty cycle ? (ie the % of time that the voltage is on during the 1ms cycle)?

Yes... torque is used as the input to the hardware PWM.

- please give examples of some P,I,V,FF_V,FF_A values & ranges and what effect these will have on servo behavior

Look at the top of page 2.

- I want to continuously as often as possible, receive from all servos their position, velocity (and external torque if possible) ; and continuously send them new target-positions and max-torque; -- how would you recommend doing this and what parameters to use?

The same way you would with an AX12 - a loop of READs followed by a single SYNC_WRITE. i.e. my firmware is better at automatically doing position holding and following than the stock firmware.

You cannot reliably get the external torque of an AX12 using the robotis firmware - I know, I have tried. You _may_ be able to get the torque from my firmware - I am not sure, I have not yet tried. What I do know is that it should be easy (a one line code change - at most) to put the motor torque into the memory map.
limor wrote:- how do you calculate velocity and current and how often are they updated ? what's that constant 32 used in calculating the EA?


every tick (i.e. at 1000Hz) I get the position of the servo, the derivative of this position is, by definition, measured velocity or V.

32 is 32ms, so EA = EV(now) - EV(32ms ago)


- what is verbosity, vibration-enable


verbosity is the same as robotis' "response status level" (I think that's what they called it... why they didn't use the word verbosity I don't know).

vibration-enable is a typo - that memory location isn't used. Whoops.

do you need the PSX-B board to be sitting on the bus with a secret packet to turn on the servo?

Yes... that one. without a PSX-B board you will not be able to turn the torque on.


- what effect does torque & max-torque have ? is that the PWM duty cycle ? (ie the % of time that the voltage is on during the 1ms cycle)?

Yes... torque is used as the input to the hardware PWM.

- please give examples of some P,I,V,FF_V,FF_A values & ranges and what effect these will have on servo behavior

Look at the top of page 2.

- I want to continuously as often as possible, receive from all servos their position, velocity (and external torque if possible) ; and continuously send them new target-positions and max-torque; -- how would you recommend doing this and what parameters to use?

The same way you would with an AX12 - a loop of READs followed by a single SYNC_WRITE. i.e. my firmware is better at automatically doing position holding and following than the stock firmware.

You cannot reliably get the external torque of an AX12 using the robotis firmware - I know, I have tried. You _may_ be able to get the torque from my firmware - I am not sure, I have not yet tried. What I do know is that it should be easy (a one line code change - at most) to put the motor torque into the memory map.
RandomMatt
Savvy Roboteer
Savvy Roboteer
Posts: 117
Joined: Sat Dec 20, 2008 11:16 pm

Does this library work with Bioloid Premium CM-510 yet ?

Post by svadams » Sat Feb 20, 2010 1:19 pm

Post by svadams
Sat Feb 20, 2010 1:19 pm

Hi All,

Apologies if this is answered elsewhere and/or is a stupid question - I am a newbie and there is a lot of information in this Forum to assimilate! I saw that there are instructions available for programming the CM-510 via the C programming thread but wondered if this library would make it easier?

TIA
Sam
Hi All,

Apologies if this is answered elsewhere and/or is a stupid question - I am a newbie and there is a lot of information in this Forum to assimilate! I saw that there are instructions available for programming the CM-510 via the C programming thread but wondered if this library would make it easier?

TIA
Sam
svadams
Newbie
Newbie
Posts: 2
Joined: Sat Feb 20, 2010 1:07 pm

Re: Does this library work with Bioloid Premium CM-510 yet ?

Post by RandomMatt » Sat Feb 20, 2010 3:59 pm

Post by RandomMatt
Sat Feb 20, 2010 3:59 pm

svadams wrote:Apologies if this is answered elsewhere and/or is a stupid question - I am a newbie and there is a lot of information in this Forum to assimilate! I saw that there are instructions available for programming the CM-510 via the C programming thread but wondered if this library would make it easier?


It's neither a stupid question, nor answered elsewhere.

The short answer is I don't know. It would probably work with no changes, but it would certainly be trivial to make libbioloid support the CM510.

Basically, the hardware may be wired up slightly differently - so all one needs to do is get a multimeter and start checking connections. the file bioloid/hw/cm5/cm5.h contains the important parts of the pinout from a CM5 -if they are correct,and the CM510 is based on a mega128, and the dynamixel bus is wired to UART0, then it would just work.

In practice, robotis are unlikely to make significent changes without a very good reason, so the chances are in your favour.
svadams wrote:Apologies if this is answered elsewhere and/or is a stupid question - I am a newbie and there is a lot of information in this Forum to assimilate! I saw that there are instructions available for programming the CM-510 via the C programming thread but wondered if this library would make it easier?


It's neither a stupid question, nor answered elsewhere.

The short answer is I don't know. It would probably work with no changes, but it would certainly be trivial to make libbioloid support the CM510.

Basically, the hardware may be wired up slightly differently - so all one needs to do is get a multimeter and start checking connections. the file bioloid/hw/cm5/cm5.h contains the important parts of the pinout from a CM5 -if they are correct,and the CM510 is based on a mega128, and the dynamixel bus is wired to UART0, then it would just work.

In practice, robotis are unlikely to make significent changes without a very good reason, so the chances are in your favour.
RandomMatt
Savvy Roboteer
Savvy Roboteer
Posts: 117
Joined: Sat Dec 20, 2008 11:16 pm

Post by svadams » Sat Feb 20, 2010 8:25 pm

Post by svadams
Sat Feb 20, 2010 8:25 pm

OK -thank you for the fast reply!

According to the Premium spec the CM-510 is based on the atmega 256, but as you say they probably won't have changed things too drastically.

I don't mind writing some C code if I have to but it would be nice to save some time using a library that someone else has made!
OK -thank you for the fast reply!

According to the Premium spec the CM-510 is based on the atmega 256, but as you say they probably won't have changed things too drastically.

I don't mind writing some C code if I have to but it would be nice to save some time using a library that someone else has made!
svadams
Newbie
Newbie
Posts: 2
Joined: Sat Feb 20, 2010 1:07 pm

Post by 27Loco » Sat Feb 20, 2010 10:19 pm

Post by 27Loco
Sat Feb 20, 2010 10:19 pm

Hello,

I have a problem using the programmer and I dont know how to transfer the hex file.

Can I use the Behaviour program control and simply 'update CM5' with the hex file?

And when I execute programmer -t com5 example.bin the program crashes. I am using win7 32bit.


Thanks for your help.
Hello,

I have a problem using the programmer and I dont know how to transfer the hex file.

Can I use the Behaviour program control and simply 'update CM5' with the hex file?

And when I execute programmer -t com5 example.bin the program crashes. I am using win7 32bit.


Thanks for your help.
27Loco
Savvy Roboteer
Savvy Roboteer
Posts: 63
Joined: Sat Feb 20, 2010 10:16 pm

Post by RandomMatt » Sat Feb 20, 2010 11:19 pm

Post by RandomMatt
Sat Feb 20, 2010 11:19 pm

27Loco wrote:Can I use the Behaviour program control and simply 'update CM5' with the hex file?
.

MMMM... not sure, it has been quite sometime since I used robotis' software.

---

From memory I used the robot terminal alot. Once you get the robot terminal connected.... press and hold "#" while you press the reset (red, labelled mode) button on the CM5. you should get a prompt. Press 'l' for load firmware followed by return, and use the menu to select the .hex file for upload. then, at the next prompt press g (and return) to start the program executing.

Once you have libbioloid running the # key resets the robot - so you can get back to the bootloader by holding # down for a bit.


And when I execute programmer -t com5 example.bin the program crashes. I am using win7 32bit.


Interesting... I haven't had that happen for me (although I personally have only tested it using XP, linux or linux in a VM on XP). Can you run the program in gdb and tell me where it crashes? (I understand that this is a different problem to the one that you want to solve... but it would be useful).

As an aside.... are you _sure_ that it is crashing? what happens if you tap the reset button on the robot while programmer is running?
27Loco wrote:Can I use the Behaviour program control and simply 'update CM5' with the hex file?
.

MMMM... not sure, it has been quite sometime since I used robotis' software.

---

From memory I used the robot terminal alot. Once you get the robot terminal connected.... press and hold "#" while you press the reset (red, labelled mode) button on the CM5. you should get a prompt. Press 'l' for load firmware followed by return, and use the menu to select the .hex file for upload. then, at the next prompt press g (and return) to start the program executing.

Once you have libbioloid running the # key resets the robot - so you can get back to the bootloader by holding # down for a bit.


And when I execute programmer -t com5 example.bin the program crashes. I am using win7 32bit.


Interesting... I haven't had that happen for me (although I personally have only tested it using XP, linux or linux in a VM on XP). Can you run the program in gdb and tell me where it crashes? (I understand that this is a different problem to the one that you want to solve... but it would be useful).

As an aside.... are you _sure_ that it is crashing? what happens if you tap the reset button on the robot while programmer is running?
RandomMatt
Savvy Roboteer
Savvy Roboteer
Posts: 117
Joined: Sat Dec 20, 2008 11:16 pm

Post by 27Loco » Sun Feb 21, 2010 12:04 am

Post by 27Loco
Sun Feb 21, 2010 12:04 am

Thank you for your fast reply. Sending the hex file worked fine.

In the following line is the gdb output when starting the programmer:

Code: Select all
warning: HEAP[programmer.exe]:
warning: Heap block at 006511A8 modified at 006511B8 past required size 8

Program received signal SIGTRAP, trace/breakpoint trap.
0x77184685 in ntdll!RtlpSetUserPreferredUILanguages () from ntdll.dll


I hope this helps.
Thank you for your fast reply. Sending the hex file worked fine.

In the following line is the gdb output when starting the programmer:

Code: Select all
warning: HEAP[programmer.exe]:
warning: Heap block at 006511A8 modified at 006511B8 past required size 8

Program received signal SIGTRAP, trace/breakpoint trap.
0x77184685 in ntdll!RtlpSetUserPreferredUILanguages () from ntdll.dll


I hope this helps.
27Loco
Savvy Roboteer
Savvy Roboteer
Posts: 63
Joined: Sat Feb 20, 2010 10:16 pm

Post by RandomMatt » Sun Feb 21, 2010 1:12 am

Post by RandomMatt
Sun Feb 21, 2010 1:12 am

27Loco wrote:Thank you for your fast reply. Sending the hex file worked fine.

In the following line is the gdb output when starting the programmer:

Code: Select all
warning: HEAP[programmer.exe]:
warning: Heap block at 006511A8 modified at 006511B8 past required size 8

Program received signal SIGTRAP, trace/breakpoint trap.
0x77184685 in ntdll!RtlpSetUserPreferredUILanguages () from ntdll.dll


I hope this helps.


Kinda.... what happens if you type "bt" to get the stack trace? (and please double check that it is compiled with "-g" on the command line. i.e. with debugging symbols.)

The backtrace should tell me which line of code is causing a problem. AS it stands I am at a loss because I do not call RtlpUser... - So I assume that some windows function is calling it on my behalf.

Anyway... thanks for trying (and thanks in advance if you can get a stack a trace). Did you have any luck with robotis' robot terminal?
27Loco wrote:Thank you for your fast reply. Sending the hex file worked fine.

In the following line is the gdb output when starting the programmer:

Code: Select all
warning: HEAP[programmer.exe]:
warning: Heap block at 006511A8 modified at 006511B8 past required size 8

Program received signal SIGTRAP, trace/breakpoint trap.
0x77184685 in ntdll!RtlpSetUserPreferredUILanguages () from ntdll.dll


I hope this helps.


Kinda.... what happens if you type "bt" to get the stack trace? (and please double check that it is compiled with "-g" on the command line. i.e. with debugging symbols.)

The backtrace should tell me which line of code is causing a problem. AS it stands I am at a loss because I do not call RtlpUser... - So I assume that some windows function is calling it on my behalf.

Anyway... thanks for trying (and thanks in advance if you can get a stack a trace). Did you have any luck with robotis' robot terminal?
RandomMatt
Savvy Roboteer
Savvy Roboteer
Posts: 117
Joined: Sat Dec 20, 2008 11:16 pm

Post by 27Loco » Sun Feb 21, 2010 1:18 am

Post by 27Loco
Sun Feb 21, 2010 1:18 am

Transfering the hex with the terminal worked fine :)

Here is the output with bt

Code: Select all
#0  0x77184685 in ntdll!RtlpSetUserPreferredUILanguages () from ntdll.dll
#1  0x0022fcc0 in ?? ()
#2  0x7716d55f in ntdll!RtlInitUnicodeString () from ntdll.dll
#3  0x003d1188 in ?? ()
#4  0x003d0000 in ?? ()
#5  0x003d1188 in ?? ()
#6  0x003d0000 in ?? ()
#7  0x0022fce0 in ?? ()
#8  0x7714fa18 in ntdll!RtlTraceDatabaseValidate () from ntdll.dll
#9  0x00000000 in ?? () from
#10 0x003d1188 in ?? ()
#11 0x003d1188 in ?? ()
#12 0x7710f98e in ntdll!RtlEqualSid () from ntdll.dll
#13 0x03070004 in ?? ()
#14 0x0000167c in ?? ()
#15 0x0022fd28 in ?? ()
#16 0x771856df in ntdll!RtlpSetUserPreferredUILanguages () from ntdll.dll
#17 0x003d0000 in ?? ()
#18 0x003d1188 in ?? ()
#19 0x7710f98e in ntdll!RtlEqualSid () from ntdll.dll
#20 0x7410cb28 in ?? ()
#21 0x003d0000 in ?? ()
#22 0x003d0000 in ?? ()
Transfering the hex with the terminal worked fine :)

Here is the output with bt

Code: Select all
#0  0x77184685 in ntdll!RtlpSetUserPreferredUILanguages () from ntdll.dll
#1  0x0022fcc0 in ?? ()
#2  0x7716d55f in ntdll!RtlInitUnicodeString () from ntdll.dll
#3  0x003d1188 in ?? ()
#4  0x003d0000 in ?? ()
#5  0x003d1188 in ?? ()
#6  0x003d0000 in ?? ()
#7  0x0022fce0 in ?? ()
#8  0x7714fa18 in ntdll!RtlTraceDatabaseValidate () from ntdll.dll
#9  0x00000000 in ?? () from
#10 0x003d1188 in ?? ()
#11 0x003d1188 in ?? ()
#12 0x7710f98e in ntdll!RtlEqualSid () from ntdll.dll
#13 0x03070004 in ?? ()
#14 0x0000167c in ?? ()
#15 0x0022fd28 in ?? ()
#16 0x771856df in ntdll!RtlpSetUserPreferredUILanguages () from ntdll.dll
#17 0x003d0000 in ?? ()
#18 0x003d1188 in ?? ()
#19 0x7710f98e in ntdll!RtlEqualSid () from ntdll.dll
#20 0x7410cb28 in ?? ()
#21 0x003d0000 in ?? ()
#22 0x003d0000 in ?? ()
27Loco
Savvy Roboteer
Savvy Roboteer
Posts: 63
Joined: Sat Feb 20, 2010 10:16 pm

Post by RandomMatt » Sun Feb 21, 2010 10:21 am

Post by RandomMatt
Sun Feb 21, 2010 10:21 am

27Loco wrote:Transfering the hex with the terminal worked fine :)


That's good to know

Here is the output with bt

Code: Select all
#0  0x77184685 in ntdll!RtlpSetUserPreferredUILanguages () from ntdll.dll
#1  0x0022fcc0 in ?? ()
#2  0x7716d55f in ntdll!RtlInitUnicodeString () from ntdll.dll
#3  0x003d1188 in ?? ()
#4  0x003d0000 in ?? ()
#5  0x003d1188 in ?? ()
#6  0x003d0000 in ?? ()
#7  0x0022fce0 in ?? ()
#8  0x7714fa18 in ntdll!RtlTraceDatabaseValidate () from ntdll.dll
#9  0x00000000 in ?? () from
#10 0x003d1188 in ?? ()
#11 0x003d1188 in ?? ()
#12 0x7710f98e in ntdll!RtlEqualSid () from ntdll.dll
#13 0x03070004 in ?? ()
#14 0x0000167c in ?? ()
#15 0x0022fd28 in ?? ()
#16 0x771856df in ntdll!RtlpSetUserPreferredUILanguages () from ntdll.dll
#17 0x003d0000 in ?? ()
#18 0x003d1188 in ?? ()
#19 0x7710f98e in ntdll!RtlEqualSid () from ntdll.dll
#20 0x7410cb28 in ?? ()
#21 0x003d0000 in ?? ()
#22 0x003d0000 in ?? ()


Crap... stack corruption - which probably means a buffer overflow or a use after free in my code. But no clue as to where. Anyway, thanks for trying. I'll have a go using programmer on my windows 7 (64 bit) machine and see how I get on.
27Loco wrote:Transfering the hex with the terminal worked fine :)


That's good to know

Here is the output with bt

Code: Select all
#0  0x77184685 in ntdll!RtlpSetUserPreferredUILanguages () from ntdll.dll
#1  0x0022fcc0 in ?? ()
#2  0x7716d55f in ntdll!RtlInitUnicodeString () from ntdll.dll
#3  0x003d1188 in ?? ()
#4  0x003d0000 in ?? ()
#5  0x003d1188 in ?? ()
#6  0x003d0000 in ?? ()
#7  0x0022fce0 in ?? ()
#8  0x7714fa18 in ntdll!RtlTraceDatabaseValidate () from ntdll.dll
#9  0x00000000 in ?? () from
#10 0x003d1188 in ?? ()
#11 0x003d1188 in ?? ()
#12 0x7710f98e in ntdll!RtlEqualSid () from ntdll.dll
#13 0x03070004 in ?? ()
#14 0x0000167c in ?? ()
#15 0x0022fd28 in ?? ()
#16 0x771856df in ntdll!RtlpSetUserPreferredUILanguages () from ntdll.dll
#17 0x003d0000 in ?? ()
#18 0x003d1188 in ?? ()
#19 0x7710f98e in ntdll!RtlEqualSid () from ntdll.dll
#20 0x7410cb28 in ?? ()
#21 0x003d0000 in ?? ()
#22 0x003d0000 in ?? ()


Crap... stack corruption - which probably means a buffer overflow or a use after free in my code. But no clue as to where. Anyway, thanks for trying. I'll have a go using programmer on my windows 7 (64 bit) machine and see how I get on.
RandomMatt
Savvy Roboteer
Savvy Roboteer
Posts: 117
Joined: Sat Dec 20, 2008 11:16 pm

Post by 27Loco » Sun Feb 21, 2010 2:47 pm

Post by 27Loco
Sun Feb 21, 2010 2:47 pm

Used the windows compatibility mode. When I execute the programmer the following output is given.

Code: Select all
- l
Write Address : 00000000
Ready..Success
Rewriting:0x0000
Size:0x00002B23 Checksum: CC-CC


Is this the output expected?

Thanks for your help :)
Used the windows compatibility mode. When I execute the programmer the following output is given.

Code: Select all
- l
Write Address : 00000000
Ready..Success
Rewriting:0x0000
Size:0x00002B23 Checksum: CC-CC


Is this the output expected?

Thanks for your help :)
27Loco
Savvy Roboteer
Savvy Roboteer
Posts: 63
Joined: Sat Feb 20, 2010 10:16 pm

Post by RandomMatt » Sun Feb 21, 2010 3:18 pm

Post by RandomMatt
Sun Feb 21, 2010 3:18 pm

27Loco wrote:Is this the output expected?


Yes.

Basically, programmer has (at that point) tried and succeeded to get to a bootloader prompt, loaded a firmware, and checked that the checksum matches. Then programmer behaves like a terminal. so, if you type "g<return>" you'll start to run the firmware, and you should see the same results as you did with robot terminal.
27Loco wrote:Is this the output expected?


Yes.

Basically, programmer has (at that point) tried and succeeded to get to a bootloader prompt, loaded a firmware, and checked that the checksum matches. Then programmer behaves like a terminal. so, if you type "g<return>" you'll start to run the firmware, and you should see the same results as you did with robot terminal.
RandomMatt
Savvy Roboteer
Savvy Roboteer
Posts: 117
Joined: Sat Dec 20, 2008 11:16 pm

Post by 27Loco » Mon Feb 22, 2010 11:53 pm

Post by 27Loco
Mon Feb 22, 2010 11:53 pm

I started to do some simple servo movements but I am facing some problems.

As long as I am doing everything in the main function the code works fine but when I try something like the following:

Code: Select all
void WalkForward(dx_stance_t s) {//some code here}

int main void() {
    // init stuff
    WalkForward(s) // not working
}


I just created a simple C function copying the code from main into that function but nothin happens.

What are the reasons?

Thanks for the help :)
I started to do some simple servo movements but I am facing some problems.

As long as I am doing everything in the main function the code works fine but when I try something like the following:

Code: Select all
void WalkForward(dx_stance_t s) {//some code here}

int main void() {
    // init stuff
    WalkForward(s) // not working
}


I just created a simple C function copying the code from main into that function but nothin happens.

What are the reasons?

Thanks for the help :)
27Loco
Savvy Roboteer
Savvy Roboteer
Posts: 63
Joined: Sat Feb 20, 2010 10:16 pm

PreviousNext
289 posts • Page 14 of 20 • 1 ... 11, 12, 13, 14, 15, 16, 17 ... 20
289 posts • Page 14 of 20 • 1 ... 11, 12, 13, 14, 15, 16, 17 ... 20