Skip to content

The evaluation ​

The .eval file is optional. It lists checks, each a measurement of the run with bounds it must stay within.

robotdsl
Evaluate demo_eval {
    Check_clearance(target = @world/goal, min = 0.3)
    Check_vel(target = @core/wheel_lf, min = 0, max = 60)
    Check_time(target = @task/drone_demo, max = 300)
}

Every check takes a target and at least one of min and max.

Checks ​

CheckMeasuresTarget
Check_velA joint's speed, rad/s, every samplea wheel, @core/...
Check_accA joint's acceleration, rad/s², every samplea wheel
Check_jerkA joint's jerk, rad/s³, every samplea wheel
Check_effortA joint's effort, N·m, every samplea wheel
Check_distanceDistance to a goal or entity: min bounds the closest approach, max the distance at the end@world/...
Check_clearanceThe closest approach to an obstacle over the run@world/..., or every obstacle
Check_contactSeconds a part spends touching a scene entitya part, @core/...
Check_timeThe task's duration, seconds@task/...

Check_distance and Check_clearance also take a source, the part measured from; without it they measure from the whole robot. On a Bumper, Check_contact reads what the bumper itself reported; on any other part, the simulator's geometry.

How checks are judged ​

A check is judged from the simulator's own record of the run, never from what the robot or its navigation stack believed: the robot's pose as the simulator publishes it, the joint states, and the bumpers' reports. Each check ends pass, fail or unknown. A check with no samples to judge is unknown, never pass.

A joint check on a part that has no moving joint is refused at compile time, since there would be nothing to measure.

The checks are one of three verdicts a run gets; Judging a run explains the other two.

Next ​

Component libraries explains where the parts come from.