Class for evaluating rover performance on a variety of terrain test cases.
Hooks for derived classes
Class for evaluating rover performance on a variety of terrain test cases. A terrainGenerator is used to create terrain for several types of tests, and terrain objects can also be read from a file. The different test types supported by the roverEvaluator are:The step and distribution tests can also have slopes imposed on them by altering the gravity vector. The parameters describing each test are described below under "Test case file".
- fromFile - terrain objects are read from a file
- stepTest - positive and negative step and impulse obstacles, both half- and full-vehicle width
- slopeTest - sloped, smooth terrain
- distributionTest - terrain is generated from one of several stochastic rock distributions
P-file parameters
- char testCaseFile[] - Filename of the p-file containing test-case descriptions. (required)
- double totalTraverseKm - Total desired traverse length; used for computing number of motor revolutions
Test case file Parameters describing each test case are read from the file specified by 'testCaseFile' in the evaluator p-file. Parameters can be specified in the global context of the p-file, or in the case-specific context (e.g. #testCase2 for test 2). Values specified in the case-specific context override those in the global context.
The parameters are:
- int numTestCases - The number of test cases. This must be specified in the global context (required)
- triple initPos - initial position of the rover's base (required)
- quaternion initQ - initial orientation of the rover's base (required)
- double maxCaseTime - maximum time allotted for the test (required)
- double terrainSizeX - X size of the terrain model, in meters
- double terrainSizeY - Y size of the terrain model, in meters
- double terrainOrigin - origin of the terrain model, in world coordinates
- double groundMuS - static coefficient of friction for ground objects
- double groundMuD - dynamic coefficient of friction for ground objects
- double rockMuS - static coefficient of friction for rock objects
- double rockMuD - dynamic coefficient of friction for rock objects
- int failOnCollision - (0 or 1) indicates whether simulation should be terminated when a chassis-terrain collision is detected
- double collisionCheckInterval - Maximum time (in seconds) between checks for chassis-terrain collisions
- double stressCheckInterval - Maximum time (in seconds) between checks for structural safety factor
- int useRearForCompletion - (0 or 1) indicates whether rear of vehicle should be checked against goalY to determine successful completion
- double goalY - the "finish line": when the front or rear of the vehicle reaches this Y coordinate, the simulation will be terminated
- double maxXerror - the maximum allowable deviation of the base's X coordinate. If the absolute value of the base's X coordinate is ever larger than this, the simulation will be terminated
- double maxRoll - The maximum allowable vehicle roll
- double maxPitch - The maximum allowable vehicle pitch
- double driveSpeed - Desired driving speed
- double driveAcc - Desired acceleration/deceleration
- double levelBody - (0 or 1) Indicates whether the evaluator should attempt to level the rover's body at the beginning of simulation
- char activeMetrics[] - a string containing the indices of the metrics that should be used in the test, separated by single spaces.
In addition, each specific test type has its own parameters:
fromFile
- char terrainFile[] - The name of the file containing the terrain geometry, in the format used by daReadObstacles
- int addSlope - (0 or 1) Determines whether the gravity vector should be altered to impose a slope.
- double slope - The steepness (in degrees, with 0 being horizontal) of the slope; used only when addSlope is 1.
- double slopeHeading - The direction of the slope. 90 or 270 indicates a pure cross-slope
stepTest
- double stepStart - starting Y coordinate of the step (required)
- double stepHeight - height (positive) or depth (negative) of the step obstacle (required)
- double stepLength - length of the obstacle. If stepLength <= 0, then the obstacle will be a step rather than an impulse.
- int useFullWidth - (0 or 1) Determines whether the obstacle will be the full width of the vehicle, or will only extend in the negative X direction from the vehicle center.
- int obsType - Determines whether the obstacles are created as boxes (0) or ellipsoids (1).
- int addSlope - (0 or 1) Determines whether the gravity vector should be altered to impose a slope.
- double slope - The steepness (in degrees, with 0 being horizontal) of the slope; used only when addSlope is 1.
- double slopeHeading - The direction of the slope. 90 or 270 indicates a pure cross-slope
slopeTest
- double slope - The steepness (in degrees, with 0 being horizontal) of the slope; used only when addSlope is 1.
- double slopeHeading - The direction of the slope. 90 or 270 indicates a pure cross-slope
distributionTest
- enum distType { COVERAGE_10, COVERAGE_20, COVERAGE_30, COVERAGE_40 } - the type of rock distribution. COVERAGE_10 means that 10% of the surface is covered by rock; the meaning of the other selections is left as an exercise to the reader. Rock sizes for a particular distribution are governed by models from Golombek, Rapp, Benard, and others at JPL.
- double minRockDiameter - the minimum diameter rock to add
- double maxRockDiameter - the maximum diameter rock to add
- int randomSeed - an optional seed for the random number generator
- int addSlope - (0 or 1) Determines whether the gravity vector should be altered to impose a slope.
- double slope - The steepness (in degrees, with 0 being horizontal) of the slope; used only when addSlope is 1.
- double slopeHeading - The direction of the slope. 90 or 270 indicates a pure cross-slope
Alphabetic index HTML hierarchy of classes or Java