Hi everyone,

We have been trying to evolve a NN based brain for a pioneer using pyro with the techniques Doug describes for using PyroFromPython (http://emergent.brynmawr.edu/emergent/PyroFromPython) and have run into an interesting issue. In particular, we find that the results of simulations run using the technique using engine.pleaseRun() (as at the top of the PyroFromPython page) differ from those in which simulator.step() is called explicitly (as in section 1.1 Running Faster on the PyroFromPython page).

In particular, when directly calling simulator.step() it appears that every time step is exactly 100 ms long, while when running under control of the engine (or from the pyrobot gui) there is some non- determinism in the length of the time step. This means that with simulator.step() the brain can rely on precise timing between control opportunities that don't exist in the other modes or on a real robot. Thus, when evaluating fitness using simulations that run the faster modes the evolving brains exploit the reliability of the fixed length time steps and as a result perform very poorly when run in with the pyrobot gui (or on a real robot).

Has anyone else encountered this issue? Has anyone found a work around other than running the simulations at real-time speed using the engine or pyrobot interface?

One possibility that I can think of would be to add noise to the amount of translation or rotation that actually occurs during one time step of the simulation. Has anyone had any experience with doing that?

Thanks for any insights.

Grant



_______________________________________________
Pyro-users mailing list
Pyro-users@pyrorobotics.org
http://emergent.brynmawr.edu/mailman/listinfo/pyro-users

Reply via email to