Aggregate
What aggregate(reference, runs) returns: the bias and the spread of N runs.
Full docstring
- `accuracy`: ``compare(reference, barycentre)`` on the grid: what a feed-forward could remove (ISO AP / AT). - `repeatability`: a `Trajectory` over the grid; per instant ISO's RP = l̄ + 3·S_l, where ``l_i`` is run i's distance to the barycentre and ``S_l`` its sample standard deviation (ddof=1). Joints: channel ``positions`` ``(N, J)``, ``l = |x - b|`` per joint. Poses: channels ``position`` ``(N,)`` (``l = ‖p - b‖``) and ``rotation`` ``(N,)`` (``l`` = angle of ``q_i ⊗ b⁻¹``). - `metrics`: `ErrorStats` of the repeatability channels (``positions/<joint>``, ``position``, ``rotation``). - `runs` and `coverage` (the fraction of the reference's duration that every run covers) say what the numbers are made of.
Fields
| Name | Type | Default |
|---|---|---|
accuracy | Comparison | required |
repeatability | Trajectory | required |
metrics | Mapping[str, ErrorStats] | {} |
runs | int | 0 |
coverage | float | 1.0 |
Example
One instance from the package's own test catalog; the output is its real repr().
Aggregate(accuracy=Comparison(error=JointTrajectory(N=11, t=[0 … 1] s, header=Header(stamp=12.0, frame_id='base_link'), joint_names=('j1', 'j2', 'j3'), positions=float64[11×3]), metrics={'positions/j1': ErrorStats(n=11, rms=0.0049999999999999845, mean=-0.0049999999999999845, median=-0.0050000000000000044, std=6.383377409953155e-17, min=-0.0050000000000001155, max=-0.004999999999999893, max_abs=0.0050000000000001155, p95_abs=0.00500000000000006, final=-0.0050000000000000044, iae=0.004999999999999988, ise=2.4999999999999876e-05, itae=0.0025000000000000044), 'positions/j2': ErrorStats(n=11, rms=0.005000000000000007, mean=-0.005000000000000007, median=-0.0050000000000000044, std=4.800786852376917e-17, min=-0.0050000000000001155, max=-0.004999999999999893, max_abs=0.0050000000000001155, p95_abs=0.005000000000000074, final=-0.0050000000000000044, iae=0.005000000000000013, ise=2.5000000000000127e-05, itae=0.0025000000000000074), 'positions/j3': ErrorStats(n=11, rms=0.0050000000000000495, mean=-0.0050000000000000495, median=-0.0050000000000000044, std=5.22410784102598e-17, min=-0.0050000000000001155, max=-0.005000000000000001, max_abs=0.0050000000000001155, p95_abs=0.0050000000000001155, final=-0.0050000000000000044, iae=0.005000000000000054, ise=2.5000000000000543e-05, itae=0.002500000000000029)}, time_offset_s=0.0, dropped=0, coverage=1.0), repeatability=Trajectory(N=11, t=[0 … 1] s, channels={'positions': float64[11×3]}, header=Header(stamp=12.0, frame_id='base_link')), metrics={'positions/j1': ErrorStats(n=11, rms=0.005000000000000052, mean=0.005000000000000052, median=0.0050000000000000044, std=1.725033212525087e-16, min=0.004999999999999893, max=0.005000000000000475, max_abs=0.005000000000000475, p95_abs=0.005000000000000386, final=0.0050000000000000044, iae=0.0050000000000000626, ise=2.5000000000000618e-05, itae=0.002500000000000036), 'positions/j2': ErrorStats(n=11, rms=0.005000000000000031, mean=0.005000000000000031, median=0.0050000000000000044, std=9.366740131307095e-17, min=0.004999999999999893, max=0.005000000000000296, max_abs=0.005000000000000296, p95_abs=0.005000000000000187, final=0.0050000000000000044, iae=0.00500000000000004, ise=2.5000000000000398e-05, itae=0.0025000000000000165), 'positions/j3': ErrorStats(n=11, rms=0.005000000000000144, mean=0.005000000000000144, median=0.0050000000000000495, std=1.7860090452265964e-16, min=0.005000000000000001, max=0.005000000000000475, max_abs=0.005000000000000475, p95_abs=0.005000000000000475, final=0.0050000000000000044, iae=0.005000000000000157, ise=2.5000000000001573e-05, itae=0.002500000000000097)}, runs=2, coverage=1.0)to_dict() as JSON
{
"_type": "compare/Aggregate",
"accuracy": {
"_type": "compare/Comparison",
"error": {
"_type": "trajectory/JointTrajectory",
"t": {
"dtype": "<f8",
"shape": [11],
"data": [0.0, 0.1, 0.2, 0.30000000000000004, 0.4, 0.5, 0.6000000000000001, 0.7000000000000001, 0.8, 0.9, 1.0]
},
"channels": {},
"header": {
"_type": "std/Header",
"stamp": 12.0,
"frame_id": "base_link",
"meta": {}
},
"joint_names": ["j1", "j2", "j3"],
"positions": {
"dtype": "<f8",
"shape": [11, 3],
"data": [-0.004999999999999893, -0.004999999999999893, -0.0050000000000000044, -0.0050000000000000044, -0.0050000000000000044, -0.0050000000000000044, -0.004999999999999893, -0.005000000000000032, -0.0050000000000001155, -0.004999999999999893, -0.0050000000000000044, -0.00500000000000006, -0.0050000000000000044, -0.0050000000000001155, -0.0050000000000001155, -0.0050000000000000044, "… 17 more values"]
},
"velocities": null,
"accelerations": null,
"effort": null,
"limits": null
},
"metrics": {
"positions/j1": {
"_type": "compare/ErrorStats",
"n": 11,
"rms": 0.0049999999999999845,
"mean": -0.0049999999999999845,
"median": -0.0050000000000000044,
"std": 6.383377409953155e-17,
"min": -0.0050000000000001155,
"max": -0.004999999999999893,
"max_abs": 0.0050000000000001155,
"p95_abs": 0.00500000000000006,
"final": -0.0050000000000000044,
"iae": 0.004999999999999988,
"ise": 2.4999999999999876e-05,
"itae": 0.0025000000000000044
},
"positions/j2": {
"_type": "compare/ErrorStats",
"n": 11,
"rms": 0.005000000000000007,
"mean": -0.005000000000000007,
"median": -0.0050000000000000044,
"std": 4.800786852376917e-17,
"min": -0.0050000000000001155,
"max": -0.004999999999999893,
"max_abs": 0.0050000000000001155,
"p95_abs": 0.005000000000000074,
"final": -0.0050000000000000044,
"iae": 0.005000000000000013,
"ise": 2.5000000000000127e-05,
"itae": 0.0025000000000000074
},
"positions/j3": {
"_type": "compare/ErrorStats",
"n": 11,
"rms": 0.0050000000000000495,
"mean": -0.0050000000000000495,
"median": -0.0050000000000000044,
"std": 5.22410784102598e-17,
"min": -0.0050000000000001155,
"max": -0.005000000000000001,
"max_abs": 0.0050000000000001155,
"p95_abs": 0.0050000000000001155,
"final": -0.0050000000000000044,
"iae": 0.005000000000000054,
"ise": 2.5000000000000543e-05,
"itae": 0.002500000000000029
}
},
"time_offset_s": 0.0,
"dropped": 0,
"coverage": 1.0
},
"repeatability": {
"_type": "trajectory/Trajectory",
"t": {
"dtype": "<f8",
"shape": [11],
"data": [0.0, 0.1, 0.2, 0.30000000000000004, 0.4, 0.5, 0.6000000000000001, 0.7000000000000001, 0.8, 0.9, 1.0]
},
"channels": {
"positions": {
"dtype": "<f8",
"shape": [11, 3],
"data": [0.004999999999999893, 0.004999999999999893, 0.0050000000000000044, 0.005000000000000296, 0.0050000000000000044, 0.0050000000000000495, 0.004999999999999893, 0.005000000000000077, 0.005000000000000296, 0.004999999999999893, 0.0050000000000000495, 0.00500000000000015, 0.005000000000000095, 0.005000000000000296, 0.0050000000000001155, 0.0050000000000000044, "… 17 more values"]
}
},
"header": {
"_type": "std/Header",
"stamp": 12.0,
"frame_id": "base_link",
"meta": {}
}
},
"metrics": {
"positions/j1": {
"_type": "compare/ErrorStats",
"n": 11,
"rms": 0.005000000000000052,
"mean": 0.005000000000000052,
"median": 0.0050000000000000044,
"std": 1.725033212525087e-16,
"min": 0.004999999999999893,
"max": 0.005000000000000475,
"max_abs": 0.005000000000000475,
"p95_abs": 0.005000000000000386,
"final": 0.0050000000000000044,
"iae": 0.0050000000000000626,
"ise": 2.5000000000000618e-05,
"itae": 0.002500000000000036
},
"positions/j2": {
"_type": "compare/ErrorStats",
"n": 11,
"rms": 0.005000000000000031,
"mean": 0.005000000000000031,
"median": 0.0050000000000000044,
"std": 9.366740131307095e-17,
"min": 0.004999999999999893,
"max": 0.005000000000000296,
"max_abs": 0.005000000000000296,
"p95_abs": 0.005000000000000187,
"final": 0.0050000000000000044,
"iae": 0.00500000000000004,
"ise": 2.5000000000000398e-05,
"itae": 0.0025000000000000165
},
"positions/j3": {
"_type": "compare/ErrorStats",
"n": 11,
"rms": 0.005000000000000144,
"mean": 0.005000000000000144,
"median": 0.0050000000000000495,
"std": 1.7860090452265964e-16,
"min": 0.005000000000000001,
"max": 0.005000000000000475,
"max_abs": 0.005000000000000475,
"p95_abs": 0.005000000000000475,
"final": 0.0050000000000000044,
"iae": 0.005000000000000157,
"ise": 2.5000000000001573e-05,
"itae": 0.002500000000000097
}
},
"runs": 2,
"coverage": 1.0
}Long arrays are cut after 16 values and say so with “…”.
Functions
Constructors
Classmethods and staticmethods: ways to build one.