Society of Robots - Robot Forum

Software => Software => Topic started by: Webbot on April 23, 2010, 01:40:10 PM

Title: WebbotLib Gait Designer
Post by: Webbot on April 23, 2010, 01:40:10 PM
Am currently working on a Gait Designer.

The Gait Designer is another pc app that allows you to create a gait file; containing one or more animations (eg Walk, Squat, etc).
Each animation has multiple 'key frames' where you can set the position of each servo/limb.
I produce all the positions in-between the key frames auto-magically.

The Gait Designer can be used 'stand alone' or you can 'Connect' to your Axon. If connected (and you've downloaded the hex file below) then the Axon moves the limbs on the fly. You can also 'play' an animation to make your robot move.

Here is the pc application
http://webbot.org.uk/webbotlib/GaitDesigner.jnlp (http://webbot.org.uk/webbotlib/GaitDesigner.jnlp)

and here is an example HEX file for the Axon or Axon II which allows one or two servos. It assumes the servos are connected to E7 and H2 respectively. Yep - only two servos for now. But this HEX file was created with a future release of WebbotLib - once released you will be able to create any number of servos/motors on any pins you like.
http://webbot.org.uk/webbotlib/GaitDesignerAxon.hex (http://webbot.org.uk/webbotlib/GaitDesignerAxon.hex)

The 'future' step will be to record the gait to EEPROM etc and WebbotLib will then allow you to play gaits with no pc involved - even controlling the speed of 'playback'.

But for now: give it a try - and let me know what you think.

EDIT: To add a frame - right click inside the graph



Title: WebbotLib Gait Designer
Post by: madsci1016 on April 23, 2010, 08:02:49 PM
Just in case you missed the thread

http://www.societyofrobots.com/robotforum/index.php?topic=10982.0 (http://www.societyofrobots.com/robotforum/index.php?topic=10982.0)

There seems to be a bug in the uart code somewhere.

Details in that thread.
Title: WebbotLib Gait Designer
Post by: Webbot on April 24, 2010, 11:59:04 PM
Info to all folk interested in Gait Designer.

Just in case you missed the thread

http://www.societyofrobots.com/robotforum/index.php?topic=10982.0 (http://www.societyofrobots.com/robotforum/index.php?topic=10982.0)

There seems to be a bug in the uart code somewhere.

Details in that thread.


Thats a different topic - and actually caused by an error in the users own code (not WebbotLib) - so don't let it stop you from giving Gait Designer a try.
Title: WebbotLib Gait Designer
Post by: Ryltar on April 25, 2010, 07:04:49 AM
Am currently working on a Gait Designer....

I downloaded the file but no dice. When it runs, I get a gray screen with a rectangle at the bottom. The drop down menu in the upper left seems to work, but no matter what I do I cannot get any reaction from the gray screen. Running Ubuntu 9.10. I'll try it on my windows machine later.
Title: WebbotLib Gait Designer
Post by: madsci1016 on April 25, 2010, 07:39:45 AM
Info to all folk interested in Gait Designer.


Thats a different topic - and actually caused by an error in the users own code (not WebbotLib) - so don't let it stop you from giving Gait Designer a try.

Why don't you start a new thread for the gait designer if you are worried about debug posts on webbotlib confusing people?
Title: Re: WebbotLib Gait Designer
Post by: Admin on April 28, 2010, 09:43:52 AM
Topic split as requested.

When I get more time I'll have a look at this Gait Designer, too. I'll definitely have thoughts! (read: demands to make it better :P)
Title: Re: WebbotLib Gait Designer
Post by: Webbot on April 28, 2010, 01:13:29 PM
Am currently working on a Gait Designer....

I downloaded the file but no dice. When it runs, I get a gray screen with a rectangle at the bottom. The drop down menu in the upper left seems to work, but no matter what I do I cannot get any reaction from the gray screen. Running Ubuntu 9.10. I'll try it on my windows machine later.

How did you get on with your Windows machine?

The Gait Designer, like my other Designers, are Java based - so your machine will need a Java Runtime installed (JRE).

The Gait Designer also needs to access the serial ports and this means including some native libraries (ie a DLL for Windows or a SO for Unix) to allow that.

I only have Windows so the Unix side is impossible for me to test and it may mean I have to use certain naming conventions for Solaris/Linux/32bit/64bit etc. Have spent ages searching the web to no avail.

The serial library I use is called RXTX (http://rxtx.qbang.org/wiki/index.php/Download (http://rxtx.qbang.org/wiki/index.php/Download)) and it includes 'native libraries' for lots of platforms. For Unix flavors these are all called "librxtxSerial.so" files. I include one in my distribution but whether its the "correct" one, or if its named correctly, I'm not sure.

The web page above gives a download that includes the Unix native libraries. As far as I can tell its just a question of copying the 'correct' SO file to your <Java>/jre/bin folder.

Any help from Unix folk appreciated.

Title: Re: WebbotLib Gait Designer
Post by: Webbot on April 28, 2010, 07:12:36 PM
Ok - have done some 'jiggery pokery' that may help Linux users.

Click on the cross-platform download ie http://webbot.org.uk/webbotlib/GaitDesigner.jnlp (http://webbot.org.uk/webbotlib/GaitDesigner.jnlp)

You should get a window with a menu: File, View, Window, Help etc.
If you don't have Java installed yet, then it will try to download it (but it takes a while). So if you prefer - then download Java first.

Select: File, New

You should now see a new project window. But if you don't - then the Designer can't load your O/S native serial drivers. Click View, Log and you should see loads of stuff like:-
Code: [Select]
AWT-EventQueue-0)[INFO] awt.toolkit=sun.awt.windows.WToolkit
(AWT-EventQueue-0)[INFO] deployment.browser.path=C:\Program Files\Internet Explorer\iexplore.exe
(AWT-EventQueue-0)[INFO] deployment.browser.vm.iexplorer=true
(AWT-EventQueue-0)[INFO] deployment.browser.vm.mozilla=true
(AWT-EventQueue-0)[INFO] deployment.cache.enabled=true
(AWT-EventQueue-0)[INFO] deployment.cache.jarcompression=0
(AWT-EventQueue-0)[INFO] deployment.cache.max.size=505
(AWT-EventQueue-0)[INFO] deployment.capture.mime.types=false
(AWT-EventQueue-0)[INFO] deployment.console.startup.mode=DISABLE
(AWT-EventQueue-0)[INFO] deployment.control.panel.log=false
(AWT-EventQueue-0)[INFO] deployment.javapi.cache.update=false
(AWT-EventQueue-0)[INFO] deployment.javapi.lifecycle.exception=true
(AWT-EventQueue-0)[INFO] deployment.javapi.log.filename=
(AWT-EventQueue-0)[INFO] deployment.javapi.runtime.type=0
(AWT-EventQueue-0)[INFO] deployment.javapi.stop.timeout=200
(AWT-EventQueue-0)[INFO] deployment.javapi.trace.filename=
etc
(AWT-EventQueue-0)[INFO] os.arch=x86
(AWT-EventQueue-0)[INFO] os.name=Windows XP
etc

Cut and paste all of this gumph into a PM for me - and it will help to find out whats going on!!!


Title: Re: WebbotLib Gait Designer
Post by: Webbot on April 28, 2010, 07:32:24 PM
Here's a quick vid of the Gait Designer in action.
Of course its not a real "walk" gait - but just a quick flavour blur


http://www.youtube.com/watch?v=llzWNdH2se8&hd=1
Title: Re: WebbotLib Gait Designer
Post by: Admin on April 28, 2010, 10:31:54 PM
How is data outputted?

For my own gait designer (which works through hyperterminal and is more crude might I note), it'll output an array of points, in array form, that I can just copy/paste into my code.

Also, I'd need the ability to view the positions on my robot as I select points of the gait.
Title: Re: WebbotLib Gait Designer
Post by: Webbot on April 28, 2010, 11:24:28 PM
How is data outputted?

For my own gait designer (which works through hyperterminal and is more crude might I note), it'll output an array of points, in array form, that I can just copy/paste into my code.

The plan is to write the gait to EEPROM directly from the Gait Designer. Since the Gaits can also be saved to the pc then you can always re-open the file and re-save to EEPROM.


Also, I'd need the ability to view the positions on my robot as I select points of the gait.

Yep - it does that....

You just click the 'Connect' button and it connects via UART to Axon(etc) running a WebbotLib program that uses the up'n'coming 'gaitDesigner' function.
Then as you move each limb on the pc the servo changes in real time.
Since the WebbotLib stuff hasn't been released yet then I've placed a hex file here http://webbot.org.uk/webbotlib/GaitDesigner.hex (http://webbot.org.uk/webbotlib/GaitDesigner.hex) which supports 2 servos on E7 and H2. So load that onto your Axon and then connect it to your PC via UART1 at 115200 baud.
You can then control them from Gait Designer both in 'real time' and during a 'play'.




Title: Re: WebbotLib Gait Designer
Post by: Ryltar on April 29, 2010, 09:55:10 AM
Am currently working on a Gait Designer....

I downloaded the file but no dice. When it runs, I get a gray screen with a rectangle at the bottom. The drop down menu in the upper left seems to work, but no matter what I do I cannot get any reaction from the gray screen. Running Ubuntu 9.10. I'll try it on my windows machine later.

How did you get on with your Windows machine?

The Gait Designer, like my other Designers, are Java based - so your machine will need a Java Runtime installed (JRE).

The Gait Designer also needs to access the serial ports and this means including some native libraries (ie a DLL for Windows or a SO for Unix) to allow that.

I only have Windows so the Unix side is impossible for me to test and it may mean I have to use certain naming conventions for Solaris/Linux/32bit/64bit etc. Have spent ages searching the web to no avail.

The serial library I use is called RXTX (http://rxtx.qbang.org/wiki/index.php/Download (http://rxtx.qbang.org/wiki/index.php/Download)) and it includes 'native libraries' for lots of platforms. For Unix flavors these are all called "librxtxSerial.so" files. I include one in my distribution but whether its the "correct" one, or if its named correctly, I'm not sure.

The web page above gives a download that includes the Unix native libraries. As far as I can tell its just a question of copying the 'correct' SO file to your <Java>/jre/bin folder.

Any help from Unix folk appreciated.



It works just fine on the windows machine (XP, SP3), but I don't know too much about Java so I am afraid I cannot help you much. My linux machine didn't report any errors when running...
Title: Re: WebbotLib Gait Designer
Post by: klims on June 21, 2010, 03:36:17 AM
Hi guys,

I'm trying to get the webbotlib Gait Designer working with my biped and am having some issues.
I am running the Axon and 16 software pwm controlled servos.

I have copied the code shown in the webbotlib documentation pdf and managed to compile, but I am getting a connection timeout error from within the program.

This is the main bit of code:
Code: [Select]
// Connect to terminal program via this uart at 115200 baud
#define UART1_RX_BUFFER_SIZE 40

#include "sys/Axon.h"
#include "Gait/GaitDesigner.h"
#include "servos.h"
#include "rprintf.h"
#include "uart.h"

// Define servos for my robot
#include "../../AAA_WebbotLib/hardware.c"

// Create the list - remember the place an & at the start of each servo name
SERVO_LIST right_arm[] = {&right_collar, &right_shoulder, &right_elbow};
SERVO_LIST left_arm[] = {&left_collar, &left_shoulder, &left_elbow};
SERVO_LIST right_leg[] = {&right_foot, &right_ankle, &right_knee, &right_thigh, &right_hip};
SERVO_LIST left_leg[] = {&left_foot, &left_ankle, &left_knee, &left_thigh, &left_hip};

// Create a driver for the list of servos
SERVO_DRIVER bank1 = MAKE_SERVO_DRIVER(right_arm);
SERVO_DRIVER bank2 = MAKE_SERVO_DRIVER(left_arm);
SERVO_DRIVER bank3 = MAKE_SERVO_DRIVER(right_leg);
SERVO_DRIVER bank4 = MAKE_SERVO_DRIVER(left_leg);

// Create a list of ALL servos across ALL banks
// The ordering in this list is the ordeing used by hte teminal program
ACTUATOR_LIST body[] =
{&right_foot.actuator, &right_ankle.actuator, &right_knee.actuator, &right_thigh.actuator,
&right_hip.actuator, &right_collar.actuator, &right_shoulder.actuator, &right_elbow.actuator,
&left_foot.actuator, &left_ankle.actuator, &left_knee.actuator, &left_thigh.actuator,
&left_hip.actuator, &left_collar.actuator, &left_shoulder.actuator, &left_elbow.actuator};

GAIT_DESIGNER gait = MAKE_GAIT_DESIGNER(body, UART1, (BAUD_RATE)115200);

void appInitHardware(void)
{
// Initialise the servo controller
servosInit(&bank1, TIMER1);
servosInit(&bank2, TIMER3);
servosInit(&bank3, TIMER4);
servosInit(&bank4, TIMER5);

rprintfInit(&uart1SendByte);
}

TICK_COUNT appInitSoftware(TICK_COUNT loopStart)
{
return 0;
}

// This is hte main loop
TICK_COUNT appControl(LOOP_COUNT loopCount, TICK_COUNT loopStart)
{
gaitDesignerProcess(&gait);
return 0;
}
Maybe someone sees something obviously wrong? I can't work it out.

I couldn't even get servosCenter to do anything useful! It seems as though I am missing something simple with the UART since I got the Hello World code working.

Any suggestions would be much appreciated.
Andrew
Title: Re: WebbotLib Gait Designer
Post by: Webbot on June 21, 2010, 06:36:08 AM
In appInitHardware you are missing the following line:-

Code: [Select]
gaitDesignerInit(&gait);
Which initialises the UART and the gait system - so its rather key !

EDIT: when using servosCenter rather than gait you will need to initialise the uart yourself in appInitHardware ie uartInit(UART1, 115200);
Title: Re: WebbotLib Gait Designer
Post by: klims on June 22, 2010, 02:57:38 AM
Code: [Select]
gaitDesignerInit(&gait);Which initialises the UART and the gait system - so its rather key !
Champion! Thanks for that. Worked a treat.

Absolutely love what you have done. Much better to use than my hyperterminal method I hacked up a while back.

A team of us made something similar for our final year uni project last year for our humanoid Bioloid robot. We did some usability testing and what not so hopefully some of that feedback will be useful here.

1. Would be great if you could build the servosCenter into this program. Its a much nicer interface to use  :)
2. It really needs the ability to fine adjust servos. The slider is good to get a rough measure but not too precise.
       I think if I could manually enter a value I would be happy.
       It would also serve to fix my need to see some numbers on the screen. They can be useful when troubleshooting a motion.
3. Would be nice if I could group servos, say "Right Side" and "Left Side" , and minimise them when I'm not using. While this is not an issue when you have 6 servos it gets hard to use when you have 16+ servos.

Gaits need a lead in and lead out sequence.
Say for example in walking I need a lead in to start walking and then a bit that loops to continue walking and then a lead out to stop walking.
At the moment your program only loops from start to end. To be useful creating nice motions I would need the ability to set a lead in and lead out along with a repeat section. We probably found this the most difficult part of the gait creating software as depending on how your interpolation works you may run into some issues.


Once again fantastic job on software. Hope my feedback was useful.
Andrew.

Edit: also, the program chews up 100% of my CPU!
Title: Re: WebbotLib Gait Designer
Post by: Webbot on June 22, 2010, 06:29:58 AM
Thanks for the feedback - glad you got it all going.

As it says on the website - it is still 'work in progress' as its always good to get feedback to make sure I'm doing something useful !

Quote
Would be great if you could build the servosCenter into this program. Its a much nicer interface to use
The left hand panel, in the 'Servo' box, there is a 'Config' button. You must be connected when you click on it. It then does nothing !? It currently reads the servo center/range info (which is why you need to be connected) but I haven't yet done the window to let you tweak the values.

Quote
I think if I could manually enter a value I would be happy.
Each slider shows its current numeric value underneath as a percentage: ie in the range -100 to +100. So I may allow you to edit it or just have a spinner control to allow you to increment/decrement the values. The spinner is easier as I don't have to worry with stuff like input validation and range checking.

Quote
Would be nice if I could group servos ... and minimise
Good idea.
I was also thinking of allowing you to select more than one servo at a time so that you move several sliders at the same time.
I trust that you have also discovered that you can change the name of the servo from say 'Servo 1' to 'Left Ankle'

Quote
At the moment your program only loops from start to end.
The 'Repeat' drop down on the left allows you to choose 'Cycle' or 'Side To Side'. This is really only relevant to the design stage as once the standalone runtime is written then it will be up to you how you play the gait as well as the speed.

Quote
Gaits need a lead in and lead out sequence
I've been thinking about the best way to do this for a while now.
It could be done by having separate animations for the lead in and the lead out ie 3 animations in total.
OR when you are adding frames into the animation then you could set one as the end of the lead-in and another as the start of the lead-out. So it will play the lead in frames once, repeat the middle frames, and finish with the lead-out frames.

My only issue here is that it means you can only go into the 'lead-out' phase from the end of the main animation. But for an emergency stop when walking then you want to go straight into the lead-out from any given point - even from the lead-in.

So as an alternative I was thinking of having an 'idle pose' - ie standing upright. All animations could then start and end at the 'idle pose'. The lead-in could then automatically interpolate from the idle pose to the first frame in the animation. And the lead-out could be an automatic interpolation from the current servo positions to the idle pose.

CPU usage - it probably peaks when playing the animation as there is a lot of computation going on as well as trying to send out the serial data as fast as it can in order to maximise the frames per second.

Title: Re: WebbotLib Gait Designer
Post by: Webbot on June 22, 2010, 12:56:20 PM
I've released a new version of Gait Designer with some of these changes in. See http://webbot.org.uk/iPoint/35.page (http://webbot.org.uk/iPoint/35.page)

Next time you run the app it will auto-magically download the new version.
Title: Re: WebbotLib Gait Designer
Post by: klims on June 22, 2010, 03:02:53 PM
I'll write a better reply tonight (I'm doing this from my phone).

In my experience of designing gaits with repeat points the best way to do it is to have a single motion with a lead in and lead out in it. Exactly as you mentioned with the idle stance between all motions. But that special 'emergency stop' is a pain in the behind. It has the tendancy to make a biped fall over. I think maybe a better way to go about it would be to have certain points in the motion that are like safe exits, predetermined stances in the motion that will not crash the robot if an emergency stop is needed.

So for example if I was designing a motion that had 10 stances:
1-2-3-4-5-6-7-8-9-10

1-3 might be the lead in, making 4 the repeat start. 8-10 is the lead out, making 7 the repeat end. So that means the cycled stances are 4-7.
There a couple stances that need to be exactly the same but I need to think about it for a sec.
It's probably worth mentioning that this is exactly how Bioloid were driving their robot. 

That's all I have for now but I'll post some more detailed thoughts tonight and give the new gait designer a go!
Title: Re: WebbotLib Gait Designer
Post by: Admin on June 22, 2010, 03:13:36 PM
You really should have your biped balance sensors modify your gait in real time to improve balance.

You still have the same gait, but given various IMU values have it tweak the gait in real time, perhaps step further or not as far, etc.

I spoke with Webbot about this earlier, basically you're having dynamic balance issues, but the gait designer only works for static balance.

But yea, the transition phase is hard. What I do for my robot fish (it uses complex gaits) is have two gaits, and then interpolate between them for the transition. It works great for vectoring water thrust, but I don't have balance issues so its probably harder on a biped . . .
Title: Re: WebbotLib Gait Designer
Post by: klims on June 23, 2010, 12:00:10 AM
Each slider shows its current numeric value underneath as a percentage: ie in the range -100 to +100. So I may allow you to edit it or just have a spinner control to allow you to increment/decrement the values. The spinner is easier as I don't have to worry with stuff like input validation and range checking.
I'm a little confused by this. Does it increment as a percentage or by +-1?
Lets say in my servo set up I say I want a range of +-500 is this being scaled to a percentage? Or have I lost some of my movement since I'm restricted to +-100???
I like your slider for rough adjustment but I really need the ability to do fine adjustments.

You really should have your biped balance sensors modify your gait in real time to improve balance.

You still have the same gait, but given various IMU values have it tweak the gait in real time, perhaps step further or not as far, etc.
Most definitely, but this is no easy feat. I tried with an accelerometer but you really need both an accelerometer and a gyro. One for stabilising motion and one for detecting inclines and what not.

The biggest problem I have come across in designing gaits is that if you want a motion to look natural and be relatively fast not all of the stances in the motion will be statically stable. I hacked up a solution that 'worked' but would love to hear some ideas.

I was also thinking of allowing you to select more than one servo at a time so that you move several sliders at the same time.
Personally I don't think this will be any use in my situation. Would just make it more of a pain to change between servos.
May be useful for other people though.

I trust that you have also discovered that you can change the name of the servo from say 'Servo 1' to 'Left Ankle'
Most definitely. This has been super handy.

The 'Repeat' drop down on the left allows you to choose 'Cycle' or 'Side To Side'. This is really only relevant to the design stage as once the standalone runtime is written then it will be up to you how you play the gait as well as the speed.
I have to admit I didn't really understand what was happening with this. I didn't immediately understand it so I gave up :-P

From what I can see this program only works if you are using the microcontroller as the servo controller. I am going to buy a dedicated servo controller for my robot so I was wondering how I might get it working with the Gait Designer.
Title: Re: WebbotLib Gait Designer
Post by: Webbot on June 23, 2010, 04:59:54 AM
Quote
I'm a little confused by this. Does it increment as a percentage or by +-1?
Lets say in my servo set up I say I want a range of +-500 is this being scaled to a percentage? Or have I lost some of my movement since I'm restricted to +-100???
I like your slider for rough adjustment but I really need the ability to do fine adjustments.
The percentage from the slider is interpolated to the range. So if your range is +-500us then +100%=>center+500us, 0%=>center and -100%=>center-500us. So a 1% step (the minimum step in the designer) will result in a step of 5us to the servo and you have 200 such distinct steps - most servos struggle to provide 90 different steps.

Quote
From what I can see this program only works if you are using the microcontroller as the servo controller. I am going to buy a dedicated servo controller for my robot so I was wondering how I might get it working with the Gait Designer.
WebbotLib already supports the Devantech SD21 servo controller. If you look this up in the WebbotLib documentation you will see that you only have to make a couple of changes to your program to use it. Gait Designer will then talk to your microcontroller and your microcontroller will send the commands out to the servo controller.
Title: Re: WebbotLib Gait Designer
Post by: klims on June 24, 2010, 02:23:46 AM
The percentage from the slider is interpolated to the range.
I guess this is fine for the way servos are configured now (See my question at the end)

WebbotLib already supports the Devantech SD21 servo controller.
I would most likely get this controller. http://www.pololu.com/catalog/product/1356 (http://www.pololu.com/catalog/product/1356)
This is one I can get in Aus, plus I like it better. I was having a read through the webbotlib documentation and I may be able to reuse the code from the Pololu motor driver.

I love the changes you have made to the program. I need a bigger screen to see all the information!!!
The only change I would suggest for the minute is maybe moving the location of the selection of the groups to the 'servos' section. Would be awesome if you could make it its own box like a servo, and it was always present just before the first servo. Its a pain to move the mouse so far to have to change groups.

CPU usage - it probably peaks when playing the animation as there is a lot of computation going on as well as trying to send out the serial data as fast as it can in order to maximise the frames per second.
My computer peaks as soon as I connect. I haven't really played any motions yet.
I'm running Gait Designer on a P4 2.8GHz. Thought that would have been plenty for this type of thing...


I have a problem with the way servos are defined/initialised with the webbotlib.
My robot is setup in such a way that is representative of the human body. For example the knee servo is at its maximum position when my robot is standing upright. This is a problem for me when I have to define a servo with a center value and a range that represents +- travel.
Ideally I would like to define a servo with a center, max, min.


Webbot: Have you had any thoughts about the gait?
I'll try to explain how I have been designing my gaits.

Lets say I was designing my 'walk forward' gait it would be made of the following key stances:

1. home position
2. lean left with right foot off the ground
3. right foot forward
4. lean right with left foot off the ground
5. left foot forward
6. lean left with right foot off the ground
7. right foot down.
8. home position

So lets say I wanted to walk forward 2 steps I would just run from 1-8.
If I wanted to walk continuously I would go from 1-6, then loop from 3-6 till I was ready to stop in which time I would go through to 8.

I'm pretty confident this is the easiest way to do it with what you have already written. Would just need the ability to plug in some repeat points for me to test my gait properly.
Title: Re: WebbotLib Gait Designer
Post by: Admin on June 24, 2010, 07:03:16 AM
Quote
My computer peaks as soon as I connect. I haven't really played any motions yet.
I'm running Gait Designer on a P4 2.8GHz. Thought that would have been plenty for this type of thing...
Somethings up, as Project Designer takes up 30% of my resources as well even when I'm not doing anything. It'll be fine until I load up a board. I'm suspecting its a related problem . . .
Title: Re: WebbotLib Gait Designer
Post by: Webbot on June 24, 2010, 08:25:15 AM
My computer peaks as soon as I connect. I haven't really played any motions yet.
I'm running Gait Designer on a P4 2.8GHz. Thought that would have been plenty for this type of thing...
As soon as you click the connect button then it starts sending out commands and listening for responses over the serial port. Since I can't use interrupts on the PC then it has to constantly poll the serial port. Hence the CPU goes right up. I'm running on a 1.8Ghz P4 which works fine.
Admin: your 'problem' is different (as the Project Designer doesn't use the serial port on the PC) and as I've said before I think this caused by the timer event to flash the selected headers on the image.


I have a problem with the way servos are defined/initialised with the webbotlib.
My robot is setup in such a way that is representative of the human body. For example the knee servo is at its maximum position when my robot is standing upright. This is a problem for me when I have to define a servo with a center value and a range that represents +- travel.
Ideally I would like to define a servo with a center, max, min.
I wont be changing the servo set up. You may be assuming that the standing position requires all servos to be in the center position which isn't the case. Just set the knee joints to be at 100%.

Title: Re: WebbotLib Gait Designer
Post by: Admin on June 24, 2010, 08:36:18 AM
Quote
As soon as you click the connect button then it starts sending out commands and listening for responses over the serial port. Since I can't use interrupts on the PC then it has to constantly poll the serial port. Hence the CPU goes right up. I'm running on a 1.8Ghz P4 which works fine.
Admin: your 'problem' is different (as the Project Designer doesn't use the serial port on the PC) and as I've said before I think this caused by the timer event to flash the selected headers on the image.
Hmmm but Hyperterminal doesn't use 100% . . . maybe its a java thing, but it sounds a bit odd to me . . .

Why so much processing power to make things flash once per second?

This is a major issue for those with a laptop and without access to a wall outlet, such as at a robot competition . . . this will quickly drain a battery.
Title: Re: WebbotLib Gait Designer
Post by: Webbot on June 24, 2010, 08:55:31 AM
On my 1.8GHz laptop I can't get the CPU to go above about 8% in Project Designer even with lots of things flashing. Other than during intense periods like loading and saving files, auto route and code generation.
Title: Re: WebbotLib Gait Designer
Post by: Admin on June 24, 2010, 09:26:06 AM
On my 1.8GHz laptop I can't get the CPU to go above about 8% in Project Designer even with lots of things flashing. Other than during intense periods like loading and saving files, auto route and code generation.
Got a Dell Inspiron 9400 running, at 1.6GHz (if I remember right) and 4gb RAM, on XP. 30% gets used as soon as I load up a project file. No problem at all on my work PC, also XP.
Title: Re: WebbotLib Gait Designer
Post by: klims on June 24, 2010, 07:59:33 PM
As soon as you click the connect button then it starts sending out commands and listening for responses over the serial port. Since I can't use interrupts on the PC then it has to constantly poll the serial port. Hence the CPU goes right up.
I figured as much. Is there no way to set up some kind of event listener? Or maybe you could somehow cap the refresh rate.

Just saw the new feed from your website. Thanks for the mention!  ;D
Title: Re: WebbotLib Gait Designer
Post by: Webbot on June 24, 2010, 08:25:07 PM
Can I use an event listener? Well believe me there are loads of listeners in the app - all very quick and non-obtrusive. The app is in Java so that it works, ideally, on PC, Mac, Unix etc. But Java has no inherent serial comms - so I use the 3rd party RxTx libs as used by loads of other people privately and commercially (including the Arduino IDE). This uses input and output streams but means that I can only detect incoming chars by polling - there is no 'wait until a character arrives' kinda function or event.

Are we looking at a 'non problem' here. ie when connected to the robot you need to send commands as fast as possible, to stop jerkiness, but that obviously requires CPU. If you are disconnected from the robot then you can still make changes and the CPU usage is almost zero.  What other apps are you running that need lots of CPU whilst the PC is controlling your humanoid?

Of course if you are familiar with RxTx libs in Java then I'd welcome any suggestions.

Title: Re: WebbotLib Gait Designer
Post by: klims on June 24, 2010, 09:24:29 PM
What other apps are you running that need lots of CPU whilst the PC is controlling your humanoid?
I don't know why this made me laugh, but it did  ;D I still use my pc for pc purposes like web browsing, music playing etc. I guess its mainly a pain because the computer becomes unresponsive. When I try to save my progress without disconnecting everything locks up.

I am by no means an experienced Java programmer. I had to do some in uni but that's about it. Some of my mates may be though so I'll ask around.

I agree that this is a 'non-problem' and your time is better spent on other features. If I come up with anything I'll be sure to let you know
Title: Re: WebbotLib Gait Designer
Post by: Webbot on June 24, 2010, 09:42:37 PM
what I meant was - you can click the Disconnect button to disconnect from the robot but leave Gait Designer running. ie seems odd to have GaitDesigner on your PC constantly sending serial commands to make your humanoid walk whilst you are off looking at the internet, doing emails etc.

I've been doing Java for about 8 years and programming for 30 years. But always willing to learn!
Title: Re: WebbotLib Gait Designer
Post by: klims on June 24, 2010, 10:47:51 PM
Fair comment. I meant to put more emphasis on the general sluggishness of the system when connected. For example if I forget to disconnect when I save my system locks up for about 30 seconds.
Title: Re: WebbotLib Gait Designer
Post by: Admin on June 28, 2010, 02:11:29 PM
Got a Dell Inspiron 9400 running, at 1.6GHz (if I remember right) and 4gb RAM, on XP. 30% gets used as soon as I load up a project file. No problem at all on my work PC, also XP.
Tried it on my work computer . . . loaded up board designer and java was using like 1% . . . created a new board file, still 1%. Then I dragged over an image and it shoots up to like 20%. I haven't even declared any pins on it yet . . . If I let it be for ~10 minutes it'll slowly go down to ~5%. Odd . . .
Title: Re: WebbotLib Gait Designer
Post by: Webbot on July 03, 2010, 05:32:36 PM
As of version 1.22 of WebbotLib then you can now export your gait from Gait Designer and use it in your stand alone robot.
Title: Re: WebbotLib Gait Designer
Post by: klims on July 07, 2010, 04:37:02 AM
I'm having some trouble getting gaits to play on my robot.

In the output file there is a reference to GaitPlayer.h but this does not exist in the Gait folder. Did you mean GaitRunner.h?

I'm not sure if my problem is caused by the fact that I have a servo controller. When I set up everything as you describe in the documentation I don't even get a flashing light on my servo controller telling me data is getting to it.

I have attached my code so you can hopefully point out what I have so obviously done wrong  :P
Title: Re: WebbotLib Gait Designer
Post by: Webbot on July 07, 2010, 07:43:37 AM
Quote
In the output file there is a reference to GaitPlayer.h but this does not exist in the Gait folder. Did you mean GaitRunner.h?
Ooops my mistake - it should be GaitRunner.h

The baud rate of 115385 for talking to your servo controller looks like a strange figure. 115200 is more of a standard baud rate - but check the datasheet for your controller to see what it expects and do not use auto baud detection.
If you dont think that the servo controller is being sent anything then try connecting it to Hyperterminal instead.

In your main loop you are always calling gaitRunnerPlay which will reset it to the first frame of the animation - so you wont get any movement. You can use the gaitRunnerIsPlaying call to see if there is a current active animation. Alternatively if you just want the robot to make one loop of the animation and then stop then you could just move your gaitRunnerPlay to the end of the appInitSoftware so that it is only called once. Your main loop then just calls gaitRunnerProcess to keep the animation frames being sent out until the animation loop comes to an end.

Title: Re: WebbotLib Gait Designer
Post by: klims on July 07, 2010, 03:43:37 PM
The baud rate of 115385 for talking to your servo controller looks like a strange figure.
Yeah it's a strange number, but my servo controller seems to round the baud rate of 115200 to 115385. I figured since I can't change it in the servo controller I may as well match it on my Axon.

Thanks for the help. I'll give it a go tonight.

Are you taking usability feedback for the Gait Designer at this stage? I have been using it a fair bit lately and have some suggestions that I think would make it easier to use.
Title: Re: WebbotLib Gait Designer
Post by: Webbot on July 07, 2010, 07:21:31 PM
Quote
Are you taking usability feedback for the Gait Designer at this stage? I have been using it a fair bit lately and have some suggestions that I think would make it easier to use.

Yes I am - but I would prefer it via a PM/email so as not to confuse folk trying to use what is already there. Equally I value comments more from people who have used it versus those just giving a random opinion via a forum post. ie dont want to spend ages adding functionality suggested by people who don't even use it in practice.

In the longer term I want to add that sort of feedback to my own website so that SoR can just concentrate on any implementation issues with the current functionality/release.
Title: Re: WebbotLib Gait Designer
Post by: klims on July 31, 2010, 04:03:34 AM
Thought I needed to post a short video of my accomplishments so far using webbot's gaitDesigner, gaitRunner and soon to be released delta function for dynamically adjusting servos in real time.

video 2010 07 31 19 36 37 (http://www.youtube.com/watch?v=00E6FMTXF_w#)

It may not look like much but this is a HUGE leap forward in being able to dynamically stabilize a biped in real time.
What you are seeing is my robot running its default 'home' motion waiting for another motion to be called.
All the work of managing motions and reading sensors is being done in the background using the webbotlib scheduler so there is no messy code to play motions. All I need is one line to ask for a new motion to be played and it happens in the background.

The feedback the robot is getting is only from an accelerometer, meaning the data is only really useful to measure slopes or when my robot has fallen over. My gyro is busted so it will be a little while yet till I have full dynamic stability control on my biped :-D

Edit: I'm holding an accelerometer in my hand which is directly influencing the angle of the ankle joint, which will make my robot always stand upright.
Title: Re: WebbotLib Gait Designer
Post by: kjleitz on July 04, 2011, 04:35:44 PM
Sorry to revive this old topic, but I believe that the file in the first post (http://webbot.org.uk/webbotlib/GaitDesignerAxon.hex (http://webbot.org.uk/webbotlib/GaitDesignerAxon.hex)) is an out-of-date URL. Is there a new location for this hex file?
Title: Re: WebbotLib Gait Designer
Post by: Webbot on July 04, 2011, 05:33:57 PM
Sorry to revive this old topic, but I believe that the file in the first post (http://webbot.org.uk/webbotlib/GaitDesignerAxon.hex (http://webbot.org.uk/webbotlib/GaitDesignerAxon.hex)) is an out-of-date URL. Is there a new location for this hex file?
Briefly 'No' - if you read that original post then the .hex file was something to play with before the Gait stuff was released in WebbotLib. Since its now been released for ages then you can create your own hex files with the number of servos you see fit and on whatever ports you see fit. It was just a 'taster'.