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 postsPage 14 of 201 ... 11, 12, 13, 14, 15, 16, 17 ... 20
289 postsPage 14 of 201 ... 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 postsPage 14 of 201 ... 11, 12, 13, 14, 15, 16, 17 ... 20
289 postsPage 14 of 201 ... 11, 12, 13, 14, 15, 16, 17 ... 20