{"id":"v001","input":{"energy":"90.4 Wh","usable":80,"power":"150.6 W","reserve":0},"expect":{"result.hover_time.value":28.812749003984063,"ok":true},"source":"Momentum theory (Leishman 2006, ch. 2) and battery arithmetic evaluated in Python (tools/vectors/gen_drone.py)","sourceVersion":"2nd edition (2006)","tolerance":{"result.hover_time.value":{"rel":1e-09,"abs":1e-09}}}
{"id":"v002","input":{"energy":"100 Wh","usable":100,"power":"100 W","reserve":20},"expect":{"result.hover_time.value":48.0,"ok":true},"source":"Momentum theory (Leishman 2006, ch. 2) and battery arithmetic evaluated in Python (tools/vectors/gen_drone.py)","sourceVersion":"2nd edition (2006)","tolerance":{"result.hover_time.value":{"rel":1e-09,"abs":1e-09}}}
{"id":"v003","input":{"energy":"77 Wh","usable":90,"power":"220 W","reserve":15},"expect":{"result.hover_time.value":16.064999999999998,"ok":true},"source":"Momentum theory (Leishman 2006, ch. 2) and battery arithmetic evaluated in Python (tools/vectors/gen_drone.py)","sourceVersion":"2nd edition (2006)","tolerance":{"result.hover_time.value":{"rel":1e-09,"abs":1e-09}}}
{"id":"v004","input":{"energy":"274 Wh","usable":85,"power":"900 W","reserve":25},"expect":{"result.hover_time.value":11.645000000000001,"ok":true},"source":"Momentum theory (Leishman 2006, ch. 2) and battery arithmetic evaluated in Python (tools/vectors/gen_drone.py)","sourceVersion":"2nd edition (2006)","tolerance":{"result.hover_time.value":{"rel":1e-09,"abs":1e-09}}}
{"id":"v005","input":{"energy":"45 Wh","usable":100,"power":"60 W","reserve":0},"expect":{"result.hover_time.value":45.0,"ok":true},"source":"Momentum theory (Leishman 2006, ch. 2) and battery arithmetic evaluated in Python (tools/vectors/gen_drone.py)","sourceVersion":"2nd edition (2006)","tolerance":{"result.hover_time.value":{"rel":1e-09,"abs":1e-09}}}
{"id":"v006","input":{"energy":"100 Wh","power":"150 W","peukert":1.05},"expect":{"result.hover_time.value":39.19723461250231,"result.peukert_factor":0.9799308653125577,"ok":true},"source":"Momentum theory (Leishman 2006, ch. 2) and battery arithmetic evaluated in Python (tools/vectors/gen_drone.py)","sourceVersion":"2nd edition (2006)","tolerance":{"result.hover_time.value":{"rel":1e-09,"abs":1e-09},"result.peukert_factor":{"rel":1e-09,"abs":1e-09}}}
{"id":"v007","input":{"energy":"90.4 Wh","power":"150.6 W","peukert":1.1,"rated_time":"1 h"},"expect":{"result.hover_time.value":34.223865059059534,"result.peukert_factor":0.9502422709982237,"ok":true},"source":"Momentum theory (Leishman 2006, ch. 2) and battery arithmetic evaluated in Python (tools/vectors/gen_drone.py)","sourceVersion":"2nd edition (2006)","tolerance":{"result.hover_time.value":{"rel":1e-09,"abs":1e-09},"result.peukert_factor":{"rel":1e-09,"abs":1e-09}}}
{"id":"v008","input":{"energy":"274 Wh","power":"900 W","peukert":1.03,"rated_time":"0.5 h"},"expect":{"result.hover_time.value":17.996806419109245,"result.peukert_factor":0.9852266287833529,"ok":true},"source":"Momentum theory (Leishman 2006, ch. 2) and battery arithmetic evaluated in Python (tools/vectors/gen_drone.py)","sourceVersion":"2nd edition (2006)","tolerance":{"result.hover_time.value":{"rel":1e-09,"abs":1e-09},"result.peukert_factor":{"rel":1e-09,"abs":1e-09}}}
{"id":"v009","input":{"energy":"45 Wh","power":"30 W","peukert":1.08,"rated_time":"2 h"},"expect":{"result.hover_time.value":87.95234243437464,"result.peukert_factor":0.9772482492708294,"ok":true},"source":"Momentum theory (Leishman 2006, ch. 2) and battery arithmetic evaluated in Python (tools/vectors/gen_drone.py)","sourceVersion":"2nd edition (2006)","tolerance":{"result.hover_time.value":{"rel":1e-09,"abs":1e-09},"result.peukert_factor":{"rel":1e-09,"abs":1e-09}}}
{"id":"v010","input":{"energy":"72.372 Wh","power":"89.5 W"},"expect":{"result.hover_time.value":48.483333333333334,"ok":true},"source":"Bauersfeld and Scaramuzza, Range, Endurance, and Optimal Speed Estimates for Multicopters, IEEE RA-L 7(2) 2022, Sec. VII-E step 6 (DJI Mavic 3: C_eff 4.89 Ah and 4.88 Ah, 4S at 3.7 V per cell, 89.5 W and 107.0 W give 2909 s and 2429 s)","sourceVersion":"IEEE RA-L 7(2), 2022","tolerance":{"result.hover_time.value":{"abs":0.06,"rel":0}}}
{"id":"v011","input":{"energy":"72.224 Wh","power":"89.5 W","cruise_power":"107 W"},"expect":{"result.cruise_time.value":40.483333333333334,"ok":true},"source":"Bauersfeld and Scaramuzza, Range, Endurance, and Optimal Speed Estimates for Multicopters, IEEE RA-L 7(2) 2022, Sec. VII-E step 6 (DJI Mavic 3: C_eff 4.89 Ah and 4.88 Ah, 4S at 3.7 V per cell, 89.5 W and 107.0 W give 2909 s and 2429 s)","sourceVersion":"IEEE RA-L 7(2), 2022","tolerance":{"result.cruise_time.value":{"abs":0.06,"rel":0}}}
{"id":"v012","input":{"energy":"72.224 Wh","power":"89.5 W","cruise_power":"107 W","groundspeed":"13.12 m/s"},"expect":{"result.hover_time.value":48.41832402234637,"result.cruise_time.value":40.49943925233645,"result.range.value":31.881158579439255,"ok":true},"source":"Bauersfeld and Scaramuzza (2022) Sec. VII-E step 6, t = E / P, with the spec's reserve, derating, and range, evaluated in Python (tools/vectors/gen_endurance.py)","sourceVersion":"IEEE RA-L 7(2), 2022","tolerance":{"result.hover_time.value":{"rel":1e-09,"abs":1e-09},"result.cruise_time.value":{"rel":1e-09,"abs":1e-09},"result.range.value":{"rel":1e-09,"abs":1e-09}}}
{"id":"v013","input":{"energy":"90.4 Wh","usable":80,"power":"150.6 W","reserve":20},"expect":{"result.hover_time.value":23.050199203187248,"result.hover_time_no_reserve.value":28.812749003984063,"result.usable_energy.value":72.32,"result.reserve_energy.value":14.463999999999999,"result.derating_applied":0.0,"ok":true},"source":"Bauersfeld and Scaramuzza (2022) Sec. VII-E step 6, t = E / P, with the spec's reserve, derating, and range, evaluated in Python (tools/vectors/gen_endurance.py)","sourceVersion":"IEEE RA-L 7(2), 2022","tolerance":{"result.hover_time.value":{"rel":1e-09,"abs":1e-09},"result.hover_time_no_reserve.value":{"rel":1e-09,"abs":1e-09},"result.usable_energy.value":{"rel":1e-09,"abs":1e-09},"result.reserve_energy.value":{"rel":1e-09,"abs":1e-09},"result.derating_applied":{"rel":1e-09,"abs":1e-09}}}
{"id":"v014","input":{"energy":"77 Wh","usable":100,"power":"180 W","reserve":30},"expect":{"result.hover_time.value":17.96666666666667,"result.hover_time_no_reserve.value":25.666666666666664,"result.usable_energy.value":77.0,"result.reserve_energy.value":23.1,"result.derating_applied":0.0,"ok":true},"source":"Bauersfeld and Scaramuzza (2022) Sec. VII-E step 6, t = E / P, with the spec's reserve, derating, and range, evaluated in Python (tools/vectors/gen_endurance.py)","sourceVersion":"IEEE RA-L 7(2), 2022","tolerance":{"result.hover_time.value":{"rel":1e-09,"abs":1e-09},"result.hover_time_no_reserve.value":{"rel":1e-09,"abs":1e-09},"result.usable_energy.value":{"rel":1e-09,"abs":1e-09},"result.reserve_energy.value":{"rel":1e-09,"abs":1e-09},"result.derating_applied":{"rel":1e-09,"abs":1e-09}}}
{"id":"v015","input":{"energy":"90.398 Wh","usable":90,"power":"250 W","reserve":25},"expect":{"result.hover_time.value":14.644476000000001,"result.hover_time_no_reserve.value":19.525968000000002,"result.usable_energy.value":81.35820000000001,"result.reserve_energy.value":20.339550000000003,"result.derating_applied":0.0,"ok":true},"source":"Bauersfeld and Scaramuzza (2022) Sec. VII-E step 6, t = E / P, with the spec's reserve, derating, and range, evaluated in Python (tools/vectors/gen_endurance.py)","sourceVersion":"IEEE RA-L 7(2), 2022","tolerance":{"result.hover_time.value":{"rel":1e-09,"abs":1e-09},"result.hover_time_no_reserve.value":{"rel":1e-09,"abs":1e-09},"result.usable_energy.value":{"rel":1e-09,"abs":1e-09},"result.reserve_energy.value":{"rel":1e-09,"abs":1e-09},"result.derating_applied":{"rel":1e-09,"abs":1e-09}}}
{"id":"v016","input":{"energy":"100 Wh","power":"100 W","battery_temperature":"25 degC"},"expect":{"result.hover_time.value":60.0,"result.usable_energy.value":100.0,"result.derating_applied":0.0,"ok":true},"source":"Bauersfeld and Scaramuzza (2022) Sec. VII-E step 6, t = E / P, with the spec's reserve, derating, and range, evaluated in Python (tools/vectors/gen_endurance.py)","sourceVersion":"IEEE RA-L 7(2), 2022","tolerance":{"result.hover_time.value":{"rel":1e-09,"abs":1e-09},"result.usable_energy.value":{"rel":1e-09,"abs":1e-09},"result.derating_applied":{"rel":1e-09,"abs":1e-09}}}
{"id":"v017","input":{"energy":"100 Wh","power":"100 W","battery_temperature":"20 degC"},"expect":{"result.hover_time.value":60.0,"result.usable_energy.value":100.0,"result.derating_applied":0.0,"ok":true},"source":"Bauersfeld and Scaramuzza (2022) Sec. VII-E step 6, t = E / P, with the spec's reserve, derating, and range, evaluated in Python (tools/vectors/gen_endurance.py)","sourceVersion":"IEEE RA-L 7(2), 2022","tolerance":{"result.hover_time.value":{"rel":1e-09,"abs":1e-09},"result.usable_energy.value":{"rel":1e-09,"abs":1e-09},"result.derating_applied":{"rel":1e-09,"abs":1e-09}}}
{"id":"v018","input":{"energy":"100 Wh","power":"100 W","battery_temperature":"10 degC"},"expect":{"result.hover_time.value":54.0,"result.usable_energy.value":90.0,"result.derating_applied":10.0,"meta.warnings.*.code":"HEURISTIC_DERATING","ok":true},"source":"Bauersfeld and Scaramuzza (2022) Sec. VII-E step 6, t = E / P, with the spec's reserve, derating, and range, evaluated in Python (tools/vectors/gen_endurance.py)","sourceVersion":"IEEE RA-L 7(2), 2022","tolerance":{"result.hover_time.value":{"rel":1e-09,"abs":1e-09},"result.usable_energy.value":{"rel":1e-09,"abs":1e-09},"result.derating_applied":{"rel":1e-09,"abs":1e-09}}}
{"id":"v019","input":{"energy":"100 Wh","power":"100 W","battery_temperature":"0 degC"},"expect":{"result.hover_time.value":48.0,"result.usable_energy.value":80.0,"result.derating_applied":20.0,"meta.warnings.*.code":"HEURISTIC_DERATING","ok":true},"source":"Bauersfeld and Scaramuzza (2022) Sec. VII-E step 6, t = E / P, with the spec's reserve, derating, and range, evaluated in Python (tools/vectors/gen_endurance.py)","sourceVersion":"IEEE RA-L 7(2), 2022","tolerance":{"result.hover_time.value":{"rel":1e-09,"abs":1e-09},"result.usable_energy.value":{"rel":1e-09,"abs":1e-09},"result.derating_applied":{"rel":1e-09,"abs":1e-09}}}
{"id":"v020","input":{"energy":"100 Wh","power":"100 W","battery_temperature":"-10 degC"},"expect":{"result.hover_time.value":42.0,"result.usable_energy.value":70.0,"result.derating_applied":30.0,"meta.warnings.*.code":"HEURISTIC_DERATING","ok":true},"source":"Bauersfeld and Scaramuzza (2022) Sec. VII-E step 6, t = E / P, with the spec's reserve, derating, and range, evaluated in Python (tools/vectors/gen_endurance.py)","sourceVersion":"IEEE RA-L 7(2), 2022","tolerance":{"result.hover_time.value":{"rel":1e-09,"abs":1e-09},"result.usable_energy.value":{"rel":1e-09,"abs":1e-09},"result.derating_applied":{"rel":1e-09,"abs":1e-09}}}
{"id":"v021","input":{"energy":"100 Wh","power":"100 W","battery_temperature":"-40 degC"},"expect":{"result.hover_time.value":30.0,"result.usable_energy.value":50.0,"result.derating_applied":50.0,"meta.warnings.*.code":"HEURISTIC_DERATING","ok":true},"source":"Bauersfeld and Scaramuzza (2022) Sec. VII-E step 6, t = E / P, with the spec's reserve, derating, and range, evaluated in Python (tools/vectors/gen_endurance.py)","sourceVersion":"IEEE RA-L 7(2), 2022","tolerance":{"result.hover_time.value":{"rel":1e-09,"abs":1e-09},"result.usable_energy.value":{"rel":1e-09,"abs":1e-09},"result.derating_applied":{"rel":1e-09,"abs":1e-09}}}
{"id":"v022","input":{"energy":"90.4 Wh","usable":80,"power":"150.6 W","reserve":20,"derating":15,"battery_temperature":"0 degC"},"expect":{"result.hover_time.value":19.592669322709163,"result.usable_energy.value":61.471999999999994,"result.derating_applied":15.0,"ok":true},"source":"Bauersfeld and Scaramuzza (2022) Sec. VII-E step 6, t = E / P, with the spec's reserve, derating, and range, evaluated in Python (tools/vectors/gen_endurance.py)","sourceVersion":"IEEE RA-L 7(2), 2022","tolerance":{"result.hover_time.value":{"rel":1e-09,"abs":1e-09},"result.usable_energy.value":{"rel":1e-09,"abs":1e-09},"result.derating_applied":{"rel":1e-09,"abs":1e-09}}}
{"id":"v023","input":{"energy":"500 Wh","usable":85,"power":"1.2 kW","reserve":20,"groundspeed":"15 m/s"},"expect":{"result.hover_time.value":17.0,"result.range.value":15.3,"ok":true},"source":"Bauersfeld and Scaramuzza (2022) Sec. VII-E step 6, t = E / P, with the spec's reserve, derating, and range, evaluated in Python (tools/vectors/gen_endurance.py)","sourceVersion":"IEEE RA-L 7(2), 2022","tolerance":{"result.hover_time.value":{"rel":1e-09,"abs":1e-09},"result.range.value":{"rel":1e-09,"abs":1e-09}}}
{"id":"v024","input":{"energy":"360 kJ","power":"200 W"},"expect":{"result.hover_time.value":30.0,"ok":true},"source":"Bauersfeld and Scaramuzza (2022) Sec. VII-E step 6, t = E / P, with the spec's reserve, derating, and range, evaluated in Python (tools/vectors/gen_endurance.py)","sourceVersion":"IEEE RA-L 7(2), 2022","tolerance":{"result.hover_time.value":{"rel":1e-09,"abs":1e-09}}}
{"id":"v025","input":{"energy":"0 Wh","power":"100 W"},"expect":{"ok":false,"error.code":"INVALID_INPUT","error.field":"/energy"},"source":"Bauersfeld and Scaramuzza (2022) Sec. VII-E step 6, t = E / P, with the spec's reserve, derating, and range, evaluated in Python (tools/vectors/gen_endurance.py)","sourceVersion":"IEEE RA-L 7(2), 2022","tolerance":{}}
{"id":"v026","input":{"energy":"100 Wh","power":"-5 W"},"expect":{"ok":false,"error.code":"INVALID_INPUT","error.field":"/power"},"source":"Bauersfeld and Scaramuzza (2022) Sec. VII-E step 6, t = E / P, with the spec's reserve, derating, and range, evaluated in Python (tools/vectors/gen_endurance.py)","sourceVersion":"IEEE RA-L 7(2), 2022","tolerance":{}}
{"id":"v027","input":{"energy":"100 Wh","power":"100 W","cruise_power":"0 W"},"expect":{"ok":false,"error.code":"INVALID_INPUT","error.field":"/cruise_power"},"source":"Bauersfeld and Scaramuzza (2022) Sec. VII-E step 6, t = E / P, with the spec's reserve, derating, and range, evaluated in Python (tools/vectors/gen_endurance.py)","sourceVersion":"IEEE RA-L 7(2), 2022","tolerance":{}}
{"id":"v028","input":{"energy":"100 Wh","power":"100 W","reserve":100},"expect":{"ok":false,"error.code":"INVALID_INPUT","error.field":"/reserve"},"source":"Bauersfeld and Scaramuzza (2022) Sec. VII-E step 6, t = E / P, with the spec's reserve, derating, and range, evaluated in Python (tools/vectors/gen_endurance.py)","sourceVersion":"IEEE RA-L 7(2), 2022","tolerance":{}}
{"id":"v029","input":{"energy":"100 Wh","power":"100 W","derating":96},"expect":{"ok":false,"error.code":"INVALID_INPUT","error.field":"/derating"},"source":"Bauersfeld and Scaramuzza (2022) Sec. VII-E step 6, t = E / P, with the spec's reserve, derating, and range, evaluated in Python (tools/vectors/gen_endurance.py)","sourceVersion":"IEEE RA-L 7(2), 2022","tolerance":{}}
