⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 benchmark.java

📁 一款机器人仿真软件,功能上与microsoft robotics studio有些相似,但基于Java平台.突出特点是给出了传感器仿真,如声纳,激光等.
💻 JAVA
字号:
/** * Created on 26 avr. 2005 * @author cedric and nicolas *  * ## Simbad speed Benchmark ## *  * The robot will run during 1.000.000 steps randomly wandering in the environment (sometimes it even gets stuck,  * eventhough this does not impact the benchmark). This benchmark provides the number of steps per seconds for this  * very specific setup (i.e. it *will* vary from one environment or controller to another). based upon the wander  * demo. *  * Please add your own statistics at the end of this file. Please follow the provided layout for clarity purpose. * You may want to benchmark simbad with and without display mode (note however that displayMode=false sometimes * causes a memory error due to a known memory leak bug in Java3D). * **/package contribs.bench;import java.util.Random;import javax.vecmath.Vector3d;import simbad.gui.Simbatch;import simbad.sim.Agent;import simbad.sim.EnvironmentDescription;import simbad.sim.RangeSensorBelt;import simbad.sim.RobotFactory;import simbad.sim.Wall;public class Benchmark {	static private boolean _displayMode = true; // true: display simulator window, false : quiet mode (faster)		public static void main(String[] args) {				long _chrono = System.currentTimeMillis();		long totalSteps = 1000000; 				EnvBench eb = new EnvBench();		Simbatch sim = new Simbatch(eb,_displayMode);		sim.reset();				System.out.println("Starting Benchmark (display mode = " + _displayMode + ")");		for(int i=0;i<totalSteps;i++) 		{			if ( i%(totalSteps/10) == 0 ) System.out.print(".");			sim.step();		}				System.out.println("\nEnd of Benchmark (please provide several results for relevant average figures)");		// at the end, simply have to compute the time taken		_chrono = System.currentTimeMillis()-_chrono;		System.out.println("/* username : (fill in) */");		System.out.println("/* date : (fill in) */");		System.out.println("/* hardware (speed,ram,video) and OS description : (fill in) */");		System.out.println("/* notes : (anything special?) */");		System.out.println("/* benchmark took "+_chrono+" ms, i.e. "+ totalSteps/(_chrono/1000) +" steps/sec (display mode is " + _displayMode + ") */");			}}class EnvBench  extends EnvironmentDescription {		static Random _rand=new Random();		    public EnvBench()    {    	Wall w1 = new Wall(new Vector3d(9, 0, 0), 18, 1, this); w1.rotate90(1); add(w1);    	Wall w2 = new Wall(new Vector3d(-9, 0, 0), 18, 1, this); w2.rotate90(1); add(w2);    	Wall w3 = new Wall(new Vector3d(0, 0, 9), 18, 1, this); add(w3);    	Wall w4 = new Wall(new Vector3d(0, 0, -9), 18, 1, this); add(w4);    	add(new Robot(new Vector3d(0,0,0),"Astro le petit robot"));    }	    public class Robot extends Agent {    	        RangeSensorBelt sonars, bumpers;        public Robot (Vector3d position, String name)         {            super(position, name);            // Add sensors            bumpers = RobotFactory.addBumperBeltSensor(this,12);            sonars = RobotFactory.addSonarBeltSensor(this,12);        }        public void initBehavior () {}        public void updateLog (){}                public void performBehavior ()         {            if (bumpers.oneHasHit())             {                setTranslationalVelocity(-0.1);                setRotationalVelocity(0.5-(0.1 * Math.random()));            }             else             	if (collisionDetected())             	{	                setTranslationalVelocity(0.0);	                setRotationalVelocity(0);	                moveToStartPosition();	                System.out.println("Collision!");            	}             	else               		if (sonars.oneHasHit())             		{		                // reads the three front quadrants		                double left = sonars.getFrontLeftQuadrantMeasurement();		                double right = sonars.getFrontRightQuadrantMeasurement();		                double front = sonars.getFrontQuadrantMeasurement();		                // if obstacle near		                if ((front  < 0.7)||(left  < 0.7)||(right  < 0.7)) 		                {		                    if (left < right)		                        setRotationalVelocity(-1);		                    else		                        setRotationalVelocity(1);		                    setTranslationalVelocity(0);	                    } 		                else		                {		                    setRotationalVelocity(0);		                    setTranslationalVelocity(0.6);		                }            		}             else             {                setTranslationalVelocity(0.8);;                setRotationalVelocity(0);            }        }    }  }/* ********************************************************************************************************************************** *//* username : nicolas br. *//* date : 2005/04/27 *//* hardware (speed,ram,video) and OS description : pc 2.8ghz 512mo nvidiaQuadro4_200/400 under linux (knoppix)*//* notes : under linux+eclipse, simbad processes do not terminate (!!), moreover speed is quite unstable *//* display mode is true *//* benchmark took 175969 ms, i.e. 5714 steps/sec (display mode is true) *//* benchmark took 155511 ms, i.e. 6451 steps/sec (display mode is true) *//* benchmark took 111907 ms, i.e. 9009 steps/sec (display mode is true) *//* benchmark took 113035 ms, i.e. 8849 steps/sec (display mode is true) *//* average benchmark : ~138 sec => ~7200 steps/sec (but high variability btw runs (+/- 30 sec)) *//* display mode is false *//* benchmark took 66579 ms, i.e. 15151 steps/sec (display mode is false) *//* benchmark took 61572 ms, i.e. 16393 steps/sec (display mode is false) *//* benchmark took 77088 ms, i.e. 12987 steps/sec (display mode is false) *//* benchmark took 63374 ms, i.e. 15873 steps/sec (display mode is false) *//* average benchmark : ~67 sec => ~15000 steps/sec *//* username : nicolas br. *//* date : 2005/04/27 *//* hardware (speed,ram,video) and OS description : pc 2.8ghz 512mo nvidiaQuadro4_200/400 under windows XP*//*          java3D/directX *//* notes : ( displayMode = false ) cannot be done due to java3D bug. *//* benchmark took 75219 ms, i.e. 13333 steps/sec (display mode is true) *//* benchmark took 75687 ms, i.e. 13333 steps/sec (display mode is true) *//* benchmark took 72906 ms, i.e. 13888 steps/sec (display mode is true) *//* benchmark took 73157 ms, i.e. 13698 steps/sec (display mode is true) *//* benchmark took 79156 ms, i.e. 12658 steps/sec (display mode is true) *//* benchmark took 70672 ms, i.e. 14285 steps/sec (display mode is true) *//* average benchmark : ~75 sec => ~13500 steps/sec *//* other runs: *//* benchmark took 74797 ms, i.e. 13513 steps/sec (display mode is false) -- only full run in 4 tries, not that quicker... *//* benchmark took 86093 ms, i.e. 11627 steps/sec (display mode is true, but window hidden) *//* benchmark took 92922 ms, i.e. 10869 steps/sec (display mode is true, but window hidden) *//* benchmark took 101141 ms, i.e. 9900 steps/sec (display mode is true, but window hidden) --> so, dont hide the window :-) *//* other run: *//* hardware (speed,ram,video) and OS description : pc 2.8ghz 512mo nvidiaQuadro4_200/400 under windows XP*//*          java3D/openGL *//* notes : ( displayMode = false ) cannot be done due to java3D bug. *//* benchmark took 60703 ms, i.e. 16666 steps/sec (display mode is true) *//* benchmark took 66453 ms, i.e. 15151 steps/sec (display mode is true) *//* benchmark took 80109 ms, i.e. 12500 steps/sec (display mode is true) *//* benchmark took 59735 ms, i.e. 16949 steps/sec (display mode is true) *//* benchmark took 59984 ms, i.e. 16949 steps/sec (display mode is true) *//* benchmark took 64750 ms, i.e. 15625 steps/sec (display mode is true) *//* benchmark took 60000 ms, i.e. 16666 steps/sec (display mode is true) *//* benchmark took 61422 ms, i.e. 16393 steps/sec (display mode is true) *//* average benchmark : ~64 sec => ~15862 steps/sec *//* conclusion : better use java3d/opengl under windows. Moreover the directX version is more bugged.  *//* ********************************************************************************************************************************** *//* username : Vincent Besson *//* date : 2005/05/10 *//* hardware (speed,ram,video) and OS description : P4 3.4 GHz, ram 512 Mo, NVidia Quadro NVS 64 Mo, Linux Mandrake 10.1 *//* notes : - often the robot stay blocked in a corner, but I let end the benchmark;/* 		   - when I run Benchmark with totalSteps = 1000000 i get memory heaps. Anyway, I got these results: *//* display mode is true*//* benchmark took 102147 ms, i.e. 9803 steps/sec (display mode is true) *//* benchmark took 115492 ms, i.e. 8695 steps/sec (display mode is true) *//* benchmark took 106357 ms, i.e. 9433 steps/sec (display mode is true) *//* benchmark took 111622 ms, i.e. 9009 steps/sec (display mode is true) *//* average benchmark took ~ 109 s, i.e. ~ 9200 steps/s                  *//* display mode is false*//* benchmark took 65314 ms, i.e. 15384 steps/sec (display mode is false) *//* benchmark took 47375 ms, i.e. 21276 steps/sec (display mode is false) *//* benchmark took 63029 ms, i.e. 15873 steps/sec (display mode is false) *//* benchmark took 50172 ms, i.e. 20000 steps/sec (display mode is false) *//* average benchmark took ~ 56 s,  i.e. ~ 18000 steps/s *//* username : Vincent Besson *//* date : 2005/05/10 *//* hardware (speed,ram,video) and OS description : P4 3.4 GHz, ram 512 Mo, NVidia Quadro NVS 64 Mo, Windows XP Pro (2002 SP1) *//* notes : - often the robot stay blocked in a corner, but I let end the benchmark;/* 		   - only in windows, I get sometimes "java.lang.OutOfMemoryError". I reboot Eclipse and it works;/* 		   - when I run Benchmark with totalSteps = 1000000 i get memory heaps. Anyway, I got these results: *//* display mode is true*//* benchmark took 65719 ms, i.e. 15384 steps/sec (display mode is true) *//* benchmark took 57375 ms, i.e. 17543 steps/sec (display mode is true) *//* benchmark took 56250 ms, i.e. 17857 steps/sec (display mode is true) *//* benchmark took 42328 ms, i.e. 23809 steps/sec (display mode is true) *//* average benchmark took ~ 55 s,  i.e. ~ 18600 steps/s *//* display mode is false*//* benchmark took 61891 ms, i.e. 16393 steps/sec (display mode is false) *//* benchmark took 56844 ms, i.e. 17857 steps/sec (display mode is false) *//* benchmark took 78968 ms, i.e. 12820 steps/sec (display mode is false) *//* benchmark took 62469 ms, i.e. 16129 steps/sec (display mode is false) *//* average benchmark took ~ 65 s,  i.e. ~ 15800 steps/s *//* ********************************************************************************************************************************** */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -