Buy an Axon, Axon II, or Axon Mote and build a great robot, while helping to support SoR.
0 Members and 1 Guest are viewing this topic.
Just in case you missed the threadhttp://www.societyofrobots.com/robotforum/index.php?topic=10982.0There seems to be a bug in the uart code somewhere. Details in that thread.
Am currently working on a Gait Designer....
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.
Quote from: Webbot on April 23, 2010, 01:40:10 PMAm 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.
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 XPetc
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.
Quote from: Ryltar on April 25, 2010, 07:04:49 AMQuote from: Webbot on April 23, 2010, 01:40:10 PMAm 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) 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.
// 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 nameSERVO_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 servosSERVO_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 programACTUATOR_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 loopTICK_COUNT appControl(LOOP_COUNT loopCount, TICK_COUNT loopStart){ gaitDesignerProcess(&gait); return 0;}
gaitDesignerInit(&gait);
Code: [Select]gaitDesignerInit(&gait);Which initialises the UART and the gait system - so its rather key !
Would be great if you could build the servosCenter into this program. Its a much nicer interface to use
I think if I could manually enter a value I would be happy.
Would be nice if I could group servos ... and minimise
At the moment your program only loops from start to end.
Gaits need a lead in and lead out sequence
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.
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 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'
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'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.
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.
The percentage from the slider is interpolated to the range.
WebbotLib already supports the Devantech SD21 servo controller.
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.
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.
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.
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.
What other apps are you running that need lots of CPU whilst the PC is controlling your humanoid?