Commit 3409524b authored by Valentin Platzgummer's avatar Valentin Platzgummer

ROSJsonFactory running, not fully tested.

parent 652511a1
{
"AreaItems": [
{
"AreaType": "Measurement Area",
"BorderPolygonOffset": 5,
"BottomLayerAltitude": 5,
"LayerDistance": 1,
"NumberOfLayers": 1,
"ShowBorderPolygon": 0,
"maxAltitude": 30,
"polygon": [
[
-35.36245358940141,
149.1646806473599
],
[
-35.36245358940141,
149.16578342801836
],
[
-35.363352909990994,
149.16578342801836
],
[
-35.363352909990994,
149.1646806473599
],
[
-35.36312807984359,
149.1646806473599
],
[
-35.36296398653496,
149.16502466400482
]
]
},
{
"AreaType": "Service Area",
"BorderPolygonOffset": 5,
"ShowBorderPolygon": 0,
"maxAltitude": 30,
"polygon": [
[
-35.36248285724683,
149.1627701598158
],
[
-35.36248285724683,
149.16387294047433
],
[
-35.363382177836534,
149.16387291919182
],
[
-35.363382177836534,
149.1627701385335
]
]
},
{
"AreaType": "Corridor",
"BorderPolygonOffset": 5,
"ShowBorderPolygon": 0,
"maxAltitude": 30,
"polygon": [
[
-35.363273753723696,
149.16372963643585
],
[
-35.363273753723696,
149.1648324170943
],
[
-35.36417307431327,
149.16483240650035
],
[
-35.36417307431327,
149.16372962584202
]
]
},
{
"AreaType": "WimaArea",
"BorderPolygonOffset": 6,
"ShowBorderPolygon": 0,
"maxAltitude": 30,
"polygon": [
[
-35.36248285724683,
149.1627701598158
],
[
-35.36248285724683,
149.16387294047428
],
[
-35.363273753723696,
149.16387292175767
],
[
-35.363273753723696,
149.1646806473599
],
[
-35.36312807984359,
149.1646806473599
],
[
-35.36296398653496,
149.1650246640048
],
[
-35.36245358940141,
149.1646806473599
],
[
-35.36245358940141,
149.16578342801833
],
[
-35.363352909991,
149.16578342801833
],
[
-35.363352909991,
149.1648324161618
],
[
-35.36417307431327,
149.16483240650035
],
[
-35.36417307431327,
149.16372962584197
],
[
-35.363382177836534,
149.1637296351586
],
[
-35.363382177836534,
149.1627701385335
]
]
}
],
"MissionItems": {
"fileType": "Plan",
"geoFence": {
"circles": [
],
"polygons": [
],
"version": 2
},
"groundStation": "QGroundControl",
"mission": {
"cruiseSpeed": 15,
"firmwareType": 3,
"hoverSpeed": 5,
"items": [
{
"autoContinue": true,
"command": 22,
"doJumpId": 1,
"frame": 3,
"params": [
15,
0,
0,
null,
-35.362932518793876,
149.16332153950356,
10
],
"type": "SimpleItem"
},
{
"AMSLAltAboveTerrain": null,
"Altitude": 10,
"AltitudeMode": 1,
"autoContinue": true,
"command": 16,
"doJumpId": 2,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.363273663892166,
149.16387303191465,
10
],
"type": "SimpleItem"
},
{
"AMSLAltAboveTerrain": null,
"Altitude": 10,
"AltitudeMode": 1,
"autoContinue": true,
"command": 16,
"doJumpId": 3,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.363273663892166,
149.16468053720507,
10
],
"type": "SimpleItem"
},
{
"AMSLAltAboveTerrain": null,
"Altitude": 10,
"AltitudeMode": 1,
"autoContinue": true,
"command": 16,
"doJumpId": 4,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.36296395315454,
149.16502451580715,
10
],
"type": "SimpleItem"
},
{
"TransectStyleComplexItem": {
"CameraCalc": {
"AdjustedFootprintFrontal": 25,
"AdjustedFootprintSide": 25,
"CameraName": "Manual (no camera specs)",
"DistanceToSurface": 10,
"DistanceToSurfaceRelative": true,
"version": 1
},
"CameraShots": 0,
"CameraTriggerInTurnAround": true,
"FollowTerrain": false,
"HoverAndCapture": false,
"Items": [
{
"autoContinue": true,
"command": 16,
"doJumpId": 5,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.36245358940141,
149.16518717036158,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 6,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.36247735936669,
149.1651774174514,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 7,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.36250200492619,
149.16517181600187,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 8,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.36252704638213,
149.16517047503885,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 9,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.362551996331035,
149.16517342066268,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 10,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.36257636915055,
149.1651805955401,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 11,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.36259969045146,
149.1651918600203,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 12,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.36262150631118,
149.16520699485298,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 13,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.36264139210879,
149.16522570545587,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 14,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.36265896078989,
149.1652476276483,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 15,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.362673870400066,
149.16527233473983,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 16,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.36268583074072,
149.16529934583494,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 17,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.36269460901743,
149.1653281351934,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 18,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.362700034371024,
149.16535814246313,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 19,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.36270200120316,
149.16538878358676,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 20,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.3627004712317,
149.16541946216964,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 21,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.362695474235785,
149.16544958108804,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 22,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.36268710747626,
149.16547855411153,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 23,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.36267553380259,
149.16550581731312,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 24,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.36266097848315,
149.16553084004562,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 25,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.3626437248207,
149.16555313527,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 26,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.36262410863814,
149.16557226903504,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 27,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.362602511742146,
149.16558786892384,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 28,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.36257935449174,
149.16559963130226,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 29,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.362555087616464,
149.165607327229,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 30,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.36253018344343,
149.16561080691162,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 31,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.36250512670405,
149.165610002622,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 32,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.362480405099255,
149.16560493001478,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 33,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.362456499806946,
149.16559568782245,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 34,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.36245358940141,
149.16559424592086,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 35,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.362685271932776,
149.16578342801833,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 36,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.36270758009503,
149.1657682665007,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 37,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.362748628979816,
149.16573298019028,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 38,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.362785273504365,
149.16569103194377,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 39,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.36281680042469,
149.16564323823604,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 40,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.362842596105146,
149.16559052931726,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 41,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.36286215846216,
149.16553393110658,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 42,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.36287510673669,
149.1654745452238,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 43,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.36288118890531,
149.16541352754757,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 44,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.362880286585536,
149.16535206571754,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 45,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.36287241733998,
149.16529135601834,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 46,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.36285773433456,
149.16523258009522,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 47,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.36283652335729,
149.16517688195464,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 48,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.362809197255686,
149.16512534569753,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 49,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.36277628790126,
149.16507897441858,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 50,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.36273843583715,
149.16503867068192,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 51,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.36269637781073,
149.16500521895398,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 52,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.36265093243364,
149.16497927033458,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 53,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.36260298424845,
149.16496132988408,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 54,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.362553466512054,
149.16495174679295,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 55,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.36250334303086,
149.16495070758515,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 56,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.36245358940141,
149.1649582324877,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 57,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.362967300577246,
149.16501771621566,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 58,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.36300530360555,
149.16509728158712,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 59,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.36303390639399,
149.1651825581727,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 60,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.363052552221816,
149.16527188616064,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 61,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.363060878169215,
149.16536352688328,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 62,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.36305872218108,
149.16545569665817,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 63,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.36304612622127,
149.16554660150553,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 64,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.363023335455814,
149.16563447206588,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 65,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.36299079348104,
149.16571759803867,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 66,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.36295586461468,
149.16578342801833,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 67,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.36316568857457,
149.16578342801833,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 68,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.363183712274775,
149.16573548289094,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 69,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.36321640664655,
149.16561925963694,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 70,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.3632355918979,
149.16549858788807,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 71,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.36324089460972,
149.1653758163826,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 72,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.363232211570754,
149.1652533347283,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 73,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.363209711786496,
149.16513352689122,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 74,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.363173833189634,
149.16501872479463,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 75,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.36312527411626,
149.16491116293076,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 76,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.363064979713485,
149.16481293486896,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 77,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.36320912064541,
149.1646806473599,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 78,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.36328302645749,
149.1648047617062,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 79,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.36334212647029,
149.16494028083335,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 80,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.363352909991,
149.16497103554732,
10
],
"type": "SimpleItem"
}
],
"Refly90Degrees": false,
"TurnAroundDistance": 10,
"VisualTransectPoints": [
[
-35.36245358940141,
149.16518717036158
],
[
-35.36247735936669,
149.1651774174514
],
[
-35.36250200492619,
149.16517181600187
],
[
-35.36252704638213,
149.16517047503885
],
[
-35.362551996331035,
149.16517342066268
],
[
-35.36257636915055,
149.1651805955401
],
[
-35.36259969045146,
149.1651918600203
],
[
-35.36262150631118,
149.16520699485298
],
[
-35.36264139210879,
149.16522570545587
],
[
-35.36265896078989,
149.1652476276483
],
[
-35.362673870400066,
149.16527233473983
],
[
-35.36268583074072,
149.16529934583494
],
[
-35.36269460901743,
149.1653281351934
],
[
-35.362700034371024,
149.16535814246313
],
[
-35.36270200120316,
149.16538878358676
],
[
-35.3627004712317,
149.16541946216964
],
[
-35.362695474235785,
149.16544958108804
],
[
-35.36268710747626,
149.16547855411153
],
[
-35.36267553380259,
149.16550581731312
],
[
-35.36266097848315,
149.16553084004562
],
[
-35.3626437248207,
149.16555313527
],
[
-35.36262410863814,
149.16557226903504
],
[
-35.362602511742146,
149.16558786892384
],
[
-35.36257935449174,
149.16559963130226
],
[
-35.362555087616464,
149.165607327229
],
[
-35.36253018344343,
149.16561080691162
],
[
-35.36250512670405,
149.165610002622
],
[
-35.362480405099255,
149.16560493001478
],
[
-35.362456499806946,
149.16559568782245
],
[
-35.36245358940141,
149.16559424592086
],
[
-35.362685271932776,
149.16578342801833
],
[
-35.36270758009503,
149.1657682665007
],
[
-35.362748628979816,
149.16573298019028
],
[
-35.362785273504365,
149.16569103194377
],
[
-35.36281680042469,
149.16564323823604
],
[
-35.362842596105146,
149.16559052931726
],
[
-35.36286215846216,
149.16553393110658
],
[
-35.36287510673669,
149.1654745452238
],
[
-35.36288118890531,
149.16541352754757
],
[
-35.362880286585536,
149.16535206571754
],
[
-35.36287241733998,
149.16529135601834
],
[
-35.36285773433456,
149.16523258009522
],
[
-35.36283652335729,
149.16517688195464
],
[
-35.362809197255686,
149.16512534569753
],
[
-35.36277628790126,
149.16507897441858
],
[
-35.36273843583715,
149.16503867068192
],
[
-35.36269637781073,
149.16500521895398
],
[
-35.36265093243364,
149.16497927033458
],
[
-35.36260298424845,
149.16496132988408
],
[
-35.362553466512054,
149.16495174679295
],
[
-35.36250334303086,
149.16495070758515
],
[
-35.36245358940141,
149.1649582324877
],
[
-35.362967300577246,
149.16501771621566
],
[
-35.36300530360555,
149.16509728158712
],
[
-35.36303390639399,
149.1651825581727
],
[
-35.363052552221816,
149.16527188616064
],
[
-35.363060878169215,
149.16536352688328
],
[
-35.36305872218108,
149.16545569665817
],
[
-35.36304612622127,
149.16554660150553
],
[
-35.363023335455814,
149.16563447206588
],
[
-35.36299079348104,
149.16571759803867
],
[
-35.36295586461468,
149.16578342801833
],
[
-35.36316568857457,
149.16578342801833
],
[
-35.363183712274775,
149.16573548289094
],
[
-35.36321640664655,
149.16561925963694
],
[
-35.3632355918979,
149.16549858788807
],
[
-35.36324089460972,
149.1653758163826
],
[
-35.363232211570754,
149.1652533347283
],
[
-35.363209711786496,
149.16513352689122
],
[
-35.363173833189634,
149.16501872479463
],
[
-35.36312527411626,
149.16491116293076
],
[
-35.363064979713485,
149.16481293486896
],
[
-35.36320912064541,
149.1646806473599
],
[
-35.36328302645749,
149.1648047617062
],
[
-35.36334212647029,
149.16494028083335
],
[
-35.363352909991,
149.16497103554732
]
],
"version": 1
},
"complexItemType": "circularSurvey",
"deltaAlpha": 8,
"deltaR": 20,
"isSnakePath": true,
"polygon": [
[
-35.36245358940141,
149.1646806473599
],
[
-35.36245358940141,
149.16578342801836
],
[
-35.363352909990994,
149.16578342801836
],
[
-35.363352909990994,
149.1646806473599
],
[
-35.36312807984359,
149.1646806473599
],
[
-35.36296398653496,
149.16502466400482
]
],
"referencePointAlt": 0,
"referencePointLat": -35.36252234500177,
"referencePointLong": 149.16539070814122,
"transectMinLength": 10,
"type": "ComplexItem",
"version": 1
},
{
"AMSLAltAboveTerrain": null,
"Altitude": 10,
"AltitudeMode": 1,
"autoContinue": true,
"command": 16,
"doJumpId": 88,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.363273663892166,
149.16387303191522,
10
],
"type": "SimpleItem"
},
{
"AMSLAltAboveTerrain": null,
"Altitude": 0,
"AltitudeMode": 1,
"autoContinue": true,
"command": 21,
"doJumpId": 89,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.362932518793905,
149.16332153950393,
0
],
"type": "SimpleItem"
}
],
"plannedHomePosition": [
-35.362932518793905,
149.16332153950393,
584
],
"vehicleType": 2,
"version": 2
},
"rallyPoints": {
"points": [
],
"version": 2
},
"version": 1
}
}
{
"AreaItems": [
{
"AreaType": "Measurement Area",
"BorderPolygonOffset": 5,
"BottomLayerAltitude": 5,
"LayerDistance": 1,
"NumberOfLayers": 1,
"ShowBorderPolygon": 0,
"maxAltitude": 30,
"polygon": [
[
-35.36245358940141,
149.1646806473599
],
[
-35.36245358940141,
149.16578342801836
],
[
-35.363352909990994,
149.16578342801836
],
[
-35.363352909990994,
149.1646806473599
],
[
-35.36312807984359,
149.1646806473599
],
[
-35.36296398653496,
149.16502466400482
]
]
},
{
"AreaType": "Service Area",
"BorderPolygonOffset": 5,
"ShowBorderPolygon": 0,
"maxAltitude": 30,
"polygon": [
[
-35.36248285724683,
149.1627701598158
],
[
-35.3626687576296,
149.16366279250963
],
[
-35.363382177836534,
149.16387291919182
],
[
-35.363382177836534,
149.1627701385335
]
]
},
{
"AreaType": "Corridor",
"BorderPolygonOffset": 5,
"ShowBorderPolygon": 0,
"maxAltitude": 30,
"polygon": [
[
-35.363320220969754,
149.1637670850203
],
[
-35.363529358437894,
149.16378063924185
],
[
-35.363574380892516,
149.1642967591381
],
[
-35.363543879984505,
149.16482712641488
],
[
-35.36329351841123,
149.164816439099
],
[
-35.36330340439825,
149.1649660354658
],
[
-35.363702517472056,
149.16497315778963
],
[
-35.363660401341,
149.16360075931567
],
[
-35.36331910239775,
149.16358542808774
]
]
}
],
"MissionItems": {
"fileType": "Plan",
"geoFence": {
"circles": [
],
"polygons": [
],
"version": 2
},
"groundStation": "QGroundControl",
"mission": {
"cruiseSpeed": 15,
"firmwareType": 3,
"hoverSpeed": 5,
"items": [
{
"autoContinue": true,
"command": 22,
"doJumpId": 1,
"frame": 3,
"params": [
15,
0,
0,
null,
-35.362978993685076,
149.16326900199346,
10
],
"type": "SimpleItem"
},
{
"AMSLAltAboveTerrain": null,
"Altitude": 10,
"AltitudeMode": 1,
"autoContinue": true,
"command": 16,
"doJumpId": 2,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.36352927725744,
149.1637807442891,
10
],
"type": "SimpleItem"
},
{
"AMSLAltAboveTerrain": null,
"Altitude": 10,
"AltitudeMode": 1,
"autoContinue": true,
"command": 16,
"doJumpId": 3,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.363574290722916,
149.1642967611374,
10
],
"type": "SimpleItem"
},
{
"AMSLAltAboveTerrain": null,
"Altitude": 10,
"AltitudeMode": 1,
"autoContinue": true,
"command": 16,
"doJumpId": 4,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.363543796473635,
149.16482701262834,
10
],
"type": "SimpleItem"
},
{
"TransectStyleComplexItem": {
"CameraCalc": {
"AdjustedFootprintFrontal": 25,
"AdjustedFootprintSide": 25,
"CameraName": "Manual (no camera specs)",
"DistanceToSurface": 10,
"DistanceToSurfaceRelative": true,
"version": 1
},
"CameraShots": 0,
"CameraTriggerInTurnAround": true,
"FollowTerrain": false,
"HoverAndCapture": false,
"Items": [
{
"autoContinue": true,
"command": 16,
"doJumpId": 5,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.36245358940141,
149.16538711253594,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 6,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.36251302582901,
149.16544370014293,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 7,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.36256996559667,
149.16550402454794,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 8,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.362624252636444,
149.16556792040595,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 9,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.36267573815133,
149.16563521258288,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 10,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.36272428102312,
149.1657057166355,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 11,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.362769748199156,
149.16577923931715,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 12,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.36277219283575,
149.16578342801836,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 13,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.362986974212454,
149.16578342801836,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 14,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.36298485972606,
149.1657791389439,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 15,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.36293909346315,
149.16569181155742,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 16,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.362889662718516,
149.16560754091284,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 17,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.36283670297842,
149.16552655799012,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 18,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.36278035940181,
149.1654490847578,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 19,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.36272078642253,
149.1653753335646,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 20,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.36265814732595,
149.16530550655747,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 21,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.3625926138015,
149.16523979512738,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 22,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.36252436547201,
149.16517837938474,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 23,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.36245358940141,
149.16512142766587,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 24,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.36245358940141,
149.16486707783693,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 25,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.36253522132639,
149.16492437813338,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 26,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.36261429575511,
149.16498683865336,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 27,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.36269059595006,
149.16505428819696,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 28,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.362763912777716,
149.1651265418896,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 29,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.36283404528174,
149.165203401689,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 30,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.36290080123381,
149.16528465692778,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 31,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.36296399766052,
149.16537008489095,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 32,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.363023461344845,
149.16545945142641,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 33,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.363079029300955,
149.16555251158672,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 34,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.363130549220955,
149.16564901030043,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 35,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.363177879892326,
149.16574868307129,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 36,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.36319307226993,
149.16578342801836,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 37,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.363352909990994,
149.16568281045824,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 38,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.363351135204404,
149.16567866438558,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 39,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.363300578639084,
149.16556796886485,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 40,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.36324536678632,
149.16546066953018,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 41,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.36318565097796,
149.16535706048163,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 42,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.363121594890885,
149.16525742570434,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 43,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.363053374098364,
149.1651620382904,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 44,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.36298117558886,
149.16507115969,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 45,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.362905197253454,
149.1649850389951,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 46,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.363048795293054,
149.16484686501553,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 47,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.36313047420841,
149.16494239051738,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 48,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.36320796408074,
149.16504302687207,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 49,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.36328105251568,
149.16514849824236,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 50,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.36334953918292,
149.16525851553854,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 51,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.363352909990994,
149.16526425099372,
10
],
"type": "SimpleItem"
}
],
"Refly90Degrees": false,
"TurnAroundDistance": 10,
"VisualTransectPoints": [
[
-35.36245358940141,
149.16538711253594
],
[
-35.36251302582901,
149.16544370014293
],
[
-35.36256996559667,
149.16550402454794
],
[
-35.362624252636444,
149.16556792040595
],
[
-35.36267573815133,
149.16563521258288
],
[
-35.36272428102312,
149.1657057166355
],
[
-35.362769748199156,
149.16577923931715
],
[
-35.36277219283575,
149.16578342801836
],
[
-35.362986974212454,
149.16578342801836
],
[
-35.36298485972606,
149.1657791389439
],
[
-35.36293909346315,
149.16569181155742
],
[
-35.362889662718516,
149.16560754091284
],
[
-35.36283670297842,
149.16552655799012
],
[
-35.36278035940181,
149.1654490847578
],
[
-35.36272078642253,
149.1653753335646
],
[
-35.36265814732595,
149.16530550655747
],
[
-35.3625926138015,
149.16523979512738
],
[
-35.36252436547201,
149.16517837938474
],
[
-35.36245358940141,
149.16512142766587
],
[
-35.36245358940141,
149.16486707783693
],
[
-35.36253522132639,
149.16492437813338
],
[
-35.36261429575511,
149.16498683865336
],
[
-35.36269059595006,
149.16505428819696
],
[
-35.362763912777716,
149.1651265418896
],
[
-35.36283404528174,
149.165203401689
],
[
-35.36290080123381,
149.16528465692778
],
[
-35.36296399766052,
149.16537008489095
],
[
-35.363023461344845,
149.16545945142641
],
[
-35.363079029300955,
149.16555251158672
],
[
-35.363130549220955,
149.16564901030043
],
[
-35.363177879892326,
149.16574868307129
],
[
-35.36319307226993,
149.16578342801836
],
[
-35.363352909990994,
149.16568281045824
],
[
-35.363351135204404,
149.16567866438558
],
[
-35.363300578639084,
149.16556796886485
],
[
-35.36324536678632,
149.16546066953018
],
[
-35.36318565097796,
149.16535706048163
],
[
-35.363121594890885,
149.16525742570434
],
[
-35.363053374098364,
149.1651620382904
],
[
-35.36298117558886,
149.16507115969
],
[
-35.362905197253454,
149.1649850389951
],
[
-35.363048795293054,
149.16484686501553
],
[
-35.36313047420841,
149.16494239051738
],
[
-35.36320796408074,
149.16504302687207
],
[
-35.36328105251568,
149.16514849824236
],
[
-35.36334953918292,
149.16525851553854
],
[
-35.363352909990994,
149.16526425099372
]
],
"version": 1
},
"complexItemType": "circularSurvey",
"deltaAlpha": 3,
"deltaR": 20,
"isSnakePath": true,
"polygon": [
[
-35.36245358940141,
149.1646806473599
],
[
-35.36245358940141,
149.16578342801836
],
[
-35.363352909990994,
149.16578342801836
],
[
-35.363352909990994,
149.1646806473599
],
[
-35.36312807984359,
149.1646806473599
],
[
-35.36296398653496,
149.16502466400482
]
],
"referencePointAlt": 0,
"referencePointLat": -35.36160214540112,
"referencePointLong": 149.16680703205395,
"transectMinLength": 50,
"type": "ComplexItem",
"version": 1
},
{
"AMSLAltAboveTerrain": null,
"Altitude": 10,
"AltitudeMode": 1,
"autoContinue": true,
"command": 16,
"doJumpId": 59,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.363352999822524,
149.1649670306819,
10
],
"type": "SimpleItem"
},
{
"AMSLAltAboveTerrain": null,
"Altitude": 10,
"AltitudeMode": 1,
"autoContinue": true,
"command": 16,
"doJumpId": 60,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.36354379647366,
149.16482701262782,
10
],
"type": "SimpleItem"
},
{
"AMSLAltAboveTerrain": null,
"Altitude": 10,
"AltitudeMode": 1,
"autoContinue": true,
"command": 16,
"doJumpId": 61,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.36357429072291,
149.1642967611374,
10
],
"type": "SimpleItem"
},
{
"AMSLAltAboveTerrain": null,
"Altitude": 10,
"AltitudeMode": 1,
"autoContinue": true,
"command": 16,
"doJumpId": 62,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.36352927725748,
149.16378074428962,
10
],
"type": "SimpleItem"
},
{
"AMSLAltAboveTerrain": null,
"Altitude": 0,
"AltitudeMode": 1,
"autoContinue": true,
"command": 21,
"doJumpId": 63,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.362978993685076,
149.16326900199346,
0
],
"type": "SimpleItem"
}
],
"plannedHomePosition": [
-35.362978993685076,
149.16326900199346,
584
],
"vehicleType": 2,
"version": 2
},
"rallyPoints": {
"points": [
],
"version": 2
},
"version": 1
}
}
This source diff could not be displayed because it is too large. You can view the blob instead.
{
"fileType": "Plan",
"geoFence": {
"circles": [
],
"polygons": [
],
"version": 2
},
"groundStation": "QGroundControl",
"mission": {
"cruiseSpeed": 15,
"firmwareType": 3,
"hoverSpeed": 2,
"items": [
{
"autoContinue": true,
"command": 22,
"doJumpId": 1,
"frame": 3,
"params": [
15,
0,
0,
null,
0,
0,
15
],
"type": "SimpleItem"
},
{
"TransectStyleComplexItem": {
"CameraCalc": {
"AdjustedFootprintFrontal": 25,
"AdjustedFootprintSide": 25,
"CameraName": "Manual (no camera specs)",
"DistanceToSurface": 16,
"DistanceToSurfaceRelative": true,
"version": 1
},
"CameraShots": 6,
"CameraTriggerInTurnAround": true,
"FollowTerrain": false,
"HoverAndCapture": false,
"Items": [
{
"autoContinue": true,
"command": 16,
"doJumpId": 2,
"frame": 3,
"params": [
0,
0,
0,
null,
47.76823086287187,
16.53058942509675,
12
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 206,
"doJumpId": 3,
"frame": 2,
"params": [
25,
0,
1,
0,
0,
0,
0
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 206,
"doJumpId": 4,
"frame": 2,
"params": [
25,
0,
1,
0,
0,
0,
0
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 5,
"frame": 3,
"params": [
0,
0,
0,
null,
47.767777545528425,
16.530589422507354,
12
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 6,
"frame": 3,
"params": [
0,
0,
0,
null,
47.7678946477262,
16.53092392473375,
12
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 206,
"doJumpId": 7,
"frame": 2,
"params": [
25,
0,
1,
0,
0,
0,
0
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 8,
"frame": 3,
"params": [
0,
0,
0,
null,
47.76834255995745,
16.530923930172992,
12
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 206,
"doJumpId": 9,
"frame": 2,
"params": [
0,
0,
0,
0,
0,
0,
0
],
"type": "SimpleItem"
}
],
"Refly90Degrees": false,
"TurnAroundDistance": 0,
"VisualTransectPoints": [
[
47.76823086287187,
16.53058942509675
],
[
47.767777545528425,
16.530589422507354
],
[
47.7678946477262,
16.53092392473375
],
[
47.76834255995745,
16.530923930172992
]
],
"version": 1
},
"angle": 0,
"complexItemType": "survey",
"entryLocation": 0,
"flyAlternateTransects": false,
"polygon": [
[
47.76813165710231,
16.530292332060014
],
[
47.76836780779515,
16.530999541789157
],
[
47.767985395495465,
16.531183148525685
],
[
47.76771877171136,
16.530421536814117
]
],
"splitConcavePolygons": false,
"type": "ComplexItem",
"version": 5
}
],
"plannedHomePosition": [
47.7677909,
16.5305408,
0.01
],
"vehicleType": 2,
"version": 2
},
"rallyPoints": {
"points": [
],
"version": 2
},
"version": 1
}
{
"AreaItems": [
{
"AreaType": "Measurement Area",
"BorderPolygonOffset": 6,
"BottomLayerAltitude": 5,
"LayerDistance": 1,
"NumberOfLayers": 1,
"ShowBorderPolygon": 0,
"maxAltitude": 30,
"polygon": [
[
-35.3621610661112,
149.16497105526304
],
[
-35.36213375235144,
149.16517170689133
],
[
-35.36295448541686,
149.1652730399651
],
[
-35.36293663201281,
149.16507668791138
],
[
-35.3624178590449,
149.16489129146896
]
]
},
{
"AreaType": "Service Area",
"BorderPolygonOffset": 6,
"ShowBorderPolygon": 0,
"maxAltitude": 30,
"polygon": [
[
-35.36323921255457,
149.16512854712016
],
[
-35.36322713411004,
149.1653199279989
],
[
-35.36339046047408,
149.1653465947412
],
[
-35.36340978594097,
149.165143366255
]
]
},
{
"AreaType": "Corridor",
"BorderPolygonOffset": 6,
"ShowBorderPolygon": 0,
"maxAltitude": 30,
"polygon": [
[
-35.362911050453505,
149.16515300319546
],
[
-35.3629125170391,
149.16524945227013
],
[
-35.363078701914105,
149.1650480404527
],
[
-35.363253686135984,
149.16528902451972
],
[
-35.363268351716464,
149.16518538331297
],
[
-35.36309263422199,
149.1648418922889
]
]
}
],
"MissionItems": {
"fileType": "Plan",
"geoFence": {
"circles": [
],
"polygons": [
],
"version": 2
},
"groundStation": "QGroundControl",
"mission": {
"cruiseSpeed": 15,
"firmwareType": 3,
"hoverSpeed": 5,
"items": [
{
"autoContinue": true,
"command": 22,
"doJumpId": 1,
"frame": 3,
"params": [
15,
0,
0,
null,
-35.36331664831048,
149.16523460902775,
15
],
"type": "SimpleItem"
},
{
"AMSLAltAboveTerrain": null,
"Altitude": 10,
"AltitudeMode": 1,
"autoContinue": true,
"command": 16,
"doJumpId": 2,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.36307869775493,
149.16504820037292,
10
],
"type": "SimpleItem"
},
{
"AMSLAltAboveTerrain": null,
"Altitude": 10,
"AltitudeMode": 1,
"autoContinue": true,
"command": 16,
"doJumpId": 3,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.36293925099285,
149.16510449740943,
10
],
"type": "SimpleItem"
},
{
"TransectStyleComplexItem": {
"CameraCalc": {
"AdjustedFootprintFrontal": 25,
"AdjustedFootprintSide": 25,
"CameraName": "Manual (no camera specs)",
"DistanceToSurface": 15,
"DistanceToSurfaceRelative": true,
"version": 1
},
"CameraShots": 0,
"CameraTriggerInTurnAround": true,
"FollowTerrain": false,
"HoverAndCapture": false,
"Items": [
{
"autoContinue": true,
"command": 16,
"doJumpId": 4,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.36237813221649,
149.16520187962828,
15
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 5,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.36248150654672,
149.1652060855136,
15
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 6,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.36258395605599,
149.16522351845865,
15
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 7,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.362612634406396,
149.16523083280285,
15
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 8,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.36281728523062,
149.1652561003325,
15
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 9,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.36280901093997,
149.16525163598675,
15
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 10,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.362707725400796,
149.16520520239393,
15
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 11,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.36260303653957,
149.16517200553648,
15
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 12,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.36249609134935,
149.16515240912608,
15
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 13,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.36238806154404,
149.16514662786508,
15
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 14,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.362280130720784,
149.16515472509425,
15
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 15,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.36217348139226,
149.16517661209863,
15
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 16,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.362139455409434,
149.1651298112357,
15
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 17,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.36225028061817,
149.16510381929967,
15
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 18,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.362362714365624,
149.16509217487337,
15
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 19,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.36247552480412,
149.1650950055356,
15
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 20,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.36258747595889,
149.165112280273,
15
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 21,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.36269734126966,
149.16514380981994,
15
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 22,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.362803917029076,
149.16518924873213,
15
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 23,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.36290603557084,
149.16524809917132,
15
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 24,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.36293977978824,
149.16527122431197,
15
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 25,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.3629491462552,
149.1652143197706,
15
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 26,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.36294415605949,
149.16521088561058,
15
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 27,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.36283865646523,
149.16514735290244,
15
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 28,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.36272831904077,
149.16509769074077,
15
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 29,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.36261435266603,
149.1650624432346,
15
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 30,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.362498005980456,
149.16504199656302,
15
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 31,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.36238055370268,
149.16503657474402,
15
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 32,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.36226328266444,
149.16504623718018,
15
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 33,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.36214747771178,
149.16507087800784,
15
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 34,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.3621554459957,
149.1650123416087,
15
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 35,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.36227619716103,
149.1649890427917,
15
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 36,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.36239827291801,
149.16498134899987,
15
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 37,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.36252033577909,
149.164989344528,
15
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 38,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.362641048398025,
149.16501294177547,
15
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 39,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.3627590882221,
149.16505188220583,
15
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 40,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.3628731619823,
149.16510573917958,
15
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 41,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.36294306927446,
149.1651474850289,
15
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 42,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.362548139395244,
149.16493785039734,
15
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 43,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.362538113964206,
149.1649363592096,
15
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 44,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.3624114370437,
149.16492637520534,
15
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 45,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.36228460299838,
149.16493268282542,
15
],
"type": "SimpleItem"
}
],
"Refly90Degrees": false,
"TurnAroundDistance": 10,
"VisualTransectPoints": [
[
-35.36237813221649,
149.16520187962828
],
[
-35.36248150654672,
149.1652060855136
],
[
-35.36258395605599,
149.16522351845865
],
[
-35.362612634406396,
149.16523083280285
],
[
-35.36281728523062,
149.1652561003325
],
[
-35.36280901093997,
149.16525163598675
],
[
-35.362707725400796,
149.16520520239393
],
[
-35.36260303653957,
149.16517200553648
],
[
-35.36249609134935,
149.16515240912608
],
[
-35.36238806154404,
149.16514662786508
],
[
-35.362280130720784,
149.16515472509425
],
[
-35.36217348139226,
149.16517661209863
],
[
-35.362139455409434,
149.1651298112357
],
[
-35.36225028061817,
149.16510381929967
],
[
-35.362362714365624,
149.16509217487337
],
[
-35.36247552480412,
149.1650950055356
],
[
-35.36258747595889,
149.165112280273
],
[
-35.36269734126966,
149.16514380981994
],
[
-35.362803917029076,
149.16518924873213
],
[
-35.36290603557084,
149.16524809917132
],
[
-35.36293977978824,
149.16527122431197
],
[
-35.3629491462552,
149.1652143197706
],
[
-35.36294415605949,
149.16521088561058
],
[
-35.36283865646523,
149.16514735290244
],
[
-35.36272831904077,
149.16509769074077
],
[
-35.36261435266603,
149.1650624432346
],
[
-35.362498005980456,
149.16504199656302
],
[
-35.36238055370268,
149.16503657474402
],
[
-35.36226328266444,
149.16504623718018
],
[
-35.36214747771178,
149.16507087800784
],
[
-35.3621554459957,
149.1650123416087
],
[
-35.36227619716103,
149.1649890427917
],
[
-35.36239827291801,
149.16498134899987
],
[
-35.36252033577909,
149.164989344528
],
[
-35.362641048398025,
149.16501294177547
],
[
-35.3627590882221,
149.16505188220583
],
[
-35.3628731619823,
149.16510573917958
],
[
-35.36294306927446,
149.1651474850289
],
[
-35.362548139395244,
149.16493785039734
],
[
-35.362538113964206,
149.1649363592096
],
[
-35.3624114370437,
149.16492637520534
],
[
-35.36228460299838,
149.16493268282542
]
],
"version": 1
},
"complexItemType": "circularSurvey",
"deltaAlpha": 6,
"deltaR": 5,
"isSnakePath": true,
"polygon": [
[
-35.3621610661112,
149.16497105526304
],
[
-35.36213375235144,
149.16517170689133
],
[
-35.36295448541686,
149.1652730399651
],
[
-35.36293663201281,
149.16507668791138
],
[
-35.3624178590449,
149.16489129146896
]
],
"referencePointAlt": 0,
"referencePointLat": -35.36239709587817,
"referencePointLong": 149.16641335158414,
"transectMinLength": 5,
"type": "ComplexItem",
"version": 1
},
{
"AMSLAltAboveTerrain": null,
"Altitude": 10,
"AltitudeMode": 1,
"autoContinue": true,
"command": 16,
"doJumpId": 54,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.36293925099291,
149.1651044974102,
10
],
"type": "SimpleItem"
},
{
"AMSLAltAboveTerrain": null,
"Altitude": 10,
"AltitudeMode": 1,
"autoContinue": true,
"command": 16,
"doJumpId": 55,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.36307869775491,
149.16504820037198,
10
],
"type": "SimpleItem"
},
{
"AMSLAltAboveTerrain": null,
"Altitude": 0,
"AltitudeMode": 1,
"autoContinue": true,
"command": 21,
"doJumpId": 56,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.36331664831048,
149.16523460902775,
0
],
"type": "SimpleItem"
}
],
"plannedHomePosition": [
-35.36331664831048,
149.16523460902775,
585
],
"vehicleType": 2,
"version": 2
},
"rallyPoints": {
"points": [
],
"version": 2
},
"version": 1
}
}
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
{
"fileType": "Plan",
"geoFence": {
"circles": [
],
"polygons": [
],
"version": 2
},
"groundStation": "QGroundControl",
"mission": {
"cruiseSpeed": 15,
"firmwareType": 3,
"hoverSpeed": 5,
"items": [
{
"autoContinue": true,
"command": 22,
"doJumpId": 1,
"frame": 3,
"params": [
15,
0,
0,
null,
0,
0,
10
],
"type": "SimpleItem"
},
{
"TransectStyleComplexItem": {
"CameraCalc": {
"AdjustedFootprintFrontal": 25,
"AdjustedFootprintSide": 10,
"CameraName": "Manual (no camera specs)",
"DistanceToSurface": 10,
"DistanceToSurfaceRelative": true,
"version": 1
},
"CameraShots": 118,
"CameraTriggerInTurnAround": false,
"FollowTerrain": false,
"HoverAndCapture": false,
"Items": [
{
"autoContinue": true,
"command": 16,
"doJumpId": 2,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.36321701946384,
149.16388369079291,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 206,
"doJumpId": 3,
"frame": 2,
"params": [
25,
0,
1,
0,
0,
0,
0
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 4,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.3626965755547,
149.16387255113918,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 206,
"doJumpId": 5,
"frame": 2,
"params": [
0,
0,
0,
0,
0,
0,
0
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 6,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.36215774704804,
149.16397131210167,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 206,
"doJumpId": 7,
"frame": 2,
"params": [
25,
0,
1,
0,
0,
0,
0
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 8,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.36321702057544,
149.16399398623557,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 206,
"doJumpId": 9,
"frame": 2,
"params": [
0,
0,
0,
0,
0,
0,
0
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 10,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.363217021586834,
149.16410428167828,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 206,
"doJumpId": 11,
"frame": 2,
"params": [
25,
0,
1,
0,
0,
0,
0
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 12,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.36215774808001,
149.1640816060972,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 206,
"doJumpId": 13,
"frame": 2,
"params": [
0,
0,
0,
0,
0,
0,
0
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 14,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.36215774901179,
149.16419190009276,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 206,
"doJumpId": 15,
"frame": 2,
"params": [
25,
0,
1,
0,
0,
0,
0
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 16,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.363217022498006,
149.16421457712093,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 206,
"doJumpId": 17,
"frame": 2,
"params": [
0,
0,
0,
0,
0,
0,
0
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 18,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.363217023308984,
149.16432487256364,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 206,
"doJumpId": 19,
"frame": 2,
"params": [
25,
0,
1,
0,
0,
0,
0
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 20,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.36215774984336,
149.16430219408832,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 206,
"doJumpId": 21,
"frame": 2,
"params": [
0,
0,
0,
0,
0,
0,
0
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 22,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.36215775057474,
149.1644124880839,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 206,
"doJumpId": 23,
"frame": 2,
"params": [
25,
0,
1,
0,
0,
0,
0
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 24,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.36321702401976,
149.1644351680063,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 206,
"doJumpId": 25,
"frame": 2,
"params": [
0,
0,
0,
0,
0,
0,
0
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 26,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.363217024630316,
149.164545463449,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 206,
"doJumpId": 27,
"frame": 2,
"params": [
25,
0,
1,
0,
0,
0,
0
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 28,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.362157751205885,
149.1645227820795,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 206,
"doJumpId": 29,
"frame": 2,
"params": [
0,
0,
0,
0,
0,
0,
0
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 30,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.36215775173683,
149.16463307607506,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 206,
"doJumpId": 31,
"frame": 2,
"params": [
25,
0,
1,
0,
0,
0,
0
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 32,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.36321702514066,
149.16465575889168,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 206,
"doJumpId": 33,
"frame": 2,
"params": [
0,
0,
0,
0,
0,
0,
0
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 34,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.3632170255508,
149.1647660543344,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 206,
"doJumpId": 35,
"frame": 2,
"params": [
25,
0,
1,
0,
0,
0,
0
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 36,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.36215775216758,
149.16474337007062,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 206,
"doJumpId": 37,
"frame": 2,
"params": [
0,
0,
0,
0,
0,
0,
0
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 38,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.36215775249811,
149.1648536640662,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 206,
"doJumpId": 39,
"frame": 2,
"params": [
25,
0,
1,
0,
0,
0,
0
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 40,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.36321702586073,
149.16487634977705,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 206,
"doJumpId": 41,
"frame": 2,
"params": [
0,
0,
0,
0,
0,
0,
0
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 42,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.36321702607045,
149.16498664521976,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 206,
"doJumpId": 43,
"frame": 2,
"params": [
25,
0,
1,
0,
0,
0,
0
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 44,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.36215775272846,
149.16496395806178,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 206,
"doJumpId": 45,
"frame": 2,
"params": [
0,
0,
0,
0,
0,
0,
0
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 46,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.36215775285858,
149.16507425205737,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 206,
"doJumpId": 47,
"frame": 2,
"params": [
25,
0,
1,
0,
0,
0,
0
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 48,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.36321702617996,
149.16509694066244,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 206,
"doJumpId": 49,
"frame": 2,
"params": [
0,
0,
0,
0,
0,
0,
0
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 50,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.363217026189275,
149.16520723610512,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 206,
"doJumpId": 51,
"frame": 2,
"params": [
25,
0,
1,
0,
0,
0,
0
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 52,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.362157752888486,
149.16518454605296,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 206,
"doJumpId": 53,
"frame": 2,
"params": [
0,
0,
0,
0,
0,
0,
0
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 54,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.36215775281821,
149.16529484004852,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 206,
"doJumpId": 55,
"frame": 2,
"params": [
25,
0,
1,
0,
0,
0,
0
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 56,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.36321702609836,
149.16531753154783,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 206,
"doJumpId": 57,
"frame": 2,
"params": [
0,
0,
0,
0,
0,
0,
0
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 58,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.36321702590726,
149.1654278269905,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 206,
"doJumpId": 59,
"frame": 2,
"params": [
25,
0,
1,
0,
0,
0,
0
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 60,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.36215775264771,
149.16540513404408,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 206,
"doJumpId": 61,
"frame": 2,
"params": [
0,
0,
0,
0,
0,
0,
0
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 62,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.362157752377,
149.16551542803967,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 206,
"doJumpId": 63,
"frame": 2,
"params": [
25,
0,
1,
0,
0,
0,
0
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 64,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.36321702561593,
149.16553812243322,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 206,
"doJumpId": 65,
"frame": 2,
"params": [
0,
0,
0,
0,
0,
0,
0
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 66,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.36321702522441,
149.1656484178759,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 206,
"doJumpId": 67,
"frame": 2,
"params": [
25,
0,
1,
0,
0,
0,
0
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 68,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.362157752006105,
149.16562572203523,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 206,
"doJumpId": 69,
"frame": 2,
"params": [
0,
0,
0,
0,
0,
0,
0
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 70,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.36215775153499,
149.1657360160308,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 206,
"doJumpId": 71,
"frame": 2,
"params": [
25,
0,
1,
0,
0,
0,
0
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 72,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.36321702473266,
149.16575871331858,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 206,
"doJumpId": 73,
"frame": 2,
"params": [
0,
0,
0,
0,
0,
0,
0
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 74,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.36321702414072,
149.16586900876126,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 206,
"doJumpId": 75,
"frame": 2,
"params": [
25,
0,
1,
0,
0,
0,
0
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 76,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.362157750963675,
149.16584631002638,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 206,
"doJumpId": 77,
"frame": 2,
"params": [
0,
0,
0,
0,
0,
0,
0
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 78,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.36215775029214,
149.16595660402197,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 206,
"doJumpId": 79,
"frame": 2,
"params": [
25,
0,
1,
0,
0,
0,
0
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 80,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.36321702344857,
149.16597930420397,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 206,
"doJumpId": 81,
"frame": 2,
"params": [
0,
0,
0,
0,
0,
0,
0
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 82,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.363217022656194,
149.16608959964663,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 206,
"doJumpId": 83,
"frame": 2,
"params": [
25,
0,
1,
0,
0,
0,
0
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 84,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.362157749520414,
149.16606689801753,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 206,
"doJumpId": 85,
"frame": 2,
"params": [
0,
0,
0,
0,
0,
0,
0
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 86,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.36215774864847,
149.1661771920131,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 206,
"doJumpId": 87,
"frame": 2,
"params": [
25,
0,
1,
0,
0,
0,
0
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 88,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.36321702176362,
149.16619989508933,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 206,
"doJumpId": 89,
"frame": 2,
"params": [
0,
0,
0,
0,
0,
0,
0
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 90,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.36321702077084,
149.166310190532,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 206,
"doJumpId": 91,
"frame": 2,
"params": [
25,
0,
1,
0,
0,
0,
0
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 92,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.36215774767632,
149.16628748600863,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 206,
"doJumpId": 93,
"frame": 2,
"params": [
0,
0,
0,
0,
0,
0,
0
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 94,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.36215774660396,
149.1663977800042,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 206,
"doJumpId": 95,
"frame": 2,
"params": [
25,
0,
1,
0,
0,
0,
0
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 96,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.36321701967784,
149.16642048597467,
10
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 206,
"doJumpId": 97,
"frame": 2,
"params": [
0,
0,
0,
0,
0,
0,
0
],
"type": "SimpleItem"
}
],
"Refly90Degrees": false,
"TurnAroundDistance": 0,
"VisualTransectPoints": [
[
-35.36321701946384,
149.16388369079291
],
[
-35.3626965755547,
149.16387255113918
],
[
-35.36215774704804,
149.16397131210167
],
[
-35.36321702057544,
149.16399398623557
],
[
-35.363217021586834,
149.16410428167828
],
[
-35.36215774808001,
149.1640816060972
],
[
-35.36215774901179,
149.16419190009276
],
[
-35.363217022498006,
149.16421457712093
],
[
-35.363217023308984,
149.16432487256364
],
[
-35.36215774984336,
149.16430219408832
],
[
-35.36215775057474,
149.1644124880839
],
[
-35.36321702401976,
149.1644351680063
],
[
-35.363217024630316,
149.164545463449
],
[
-35.362157751205885,
149.1645227820795
],
[
-35.36215775173683,
149.16463307607506
],
[
-35.36321702514066,
149.16465575889168
],
[
-35.3632170255508,
149.1647660543344
],
[
-35.36215775216758,
149.16474337007062
],
[
-35.36215775249811,
149.1648536640662
],
[
-35.36321702586073,
149.16487634977705
],
[
-35.36321702607045,
149.16498664521976
],
[
-35.36215775272846,
149.16496395806178
],
[
-35.36215775285858,
149.16507425205737
],
[
-35.36321702617996,
149.16509694066244
],
[
-35.363217026189275,
149.16520723610512
],
[
-35.362157752888486,
149.16518454605296
],
[
-35.36215775281821,
149.16529484004852
],
[
-35.36321702609836,
149.16531753154783
],
[
-35.36321702590726,
149.1654278269905
],
[
-35.36215775264771,
149.16540513404408
],
[
-35.362157752377,
149.16551542803967
],
[
-35.36321702561593,
149.16553812243322
],
[
-35.36321702522441,
149.1656484178759
],
[
-35.362157752006105,
149.16562572203523
],
[
-35.36215775153499,
149.1657360160308
],
[
-35.36321702473266,
149.16575871331858
],
[
-35.36321702414072,
149.16586900876126
],
[
-35.362157750963675,
149.16584631002638
],
[
-35.36215775029214,
149.16595660402197
],
[
-35.36321702344857,
149.16597930420397
],
[
-35.363217022656194,
149.16608959964663
],
[
-35.362157749520414,
149.16606689801753
],
[
-35.36215774864847,
149.1661771920131
],
[
-35.36321702176362,
149.16619989508933
],
[
-35.36321702077084,
149.166310190532
],
[
-35.36215774767632,
149.16628748600863
],
[
-35.36215774660396,
149.1663977800042
],
[
-35.36321701967784,
149.16642048597467
]
],
"version": 1
},
"angle": 179,
"complexItemType": "survey",
"entryLocation": 0,
"flyAlternateTransects": false,
"polygon": [
[
-35.36215774603892,
149.16387255113918
],
[
-35.36215774603892,
149.16645210790682
],
[
-35.363217019345996,
149.16645210790682
],
[
-35.363217019345996,
149.16387255113918
]
],
"splitConcavePolygons": false,
"type": "ComplexItem",
"version": 5
},
{
"AMSLAltAboveTerrain": null,
"Altitude": 10,
"AltitudeMode": 1,
"autoContinue": true,
"command": 16,
"doJumpId": 98,
"frame": 3,
"params": [
0,
0,
0,
null,
-35.36328582,
149.16481473,
10
],
"type": "SimpleItem"
}
],
"plannedHomePosition": [
-35.36276926077962,
149.16409292839344,
583
],
"vehicleType": 2,
"version": 2
},
"rallyPoints": {
"points": [
],
"version": 2
},
"version": 1
}
{
"fileType": "Plan",
"geoFence": {
"circles": [
],
"polygons": [
],
"version": 2
},
"groundStation": "QGroundControl",
"mission": {
"cruiseSpeed": 15,
"firmwareType": 3,
"hoverSpeed": 1,
"items": [
{
"TransectStyleComplexItem": {
"CameraCalc": {
"AdjustedFootprintFrontal": 25,
"AdjustedFootprintSide": 25,
"CameraName": "Manual (no camera specs)",
"DistanceToSurface": 15,
"DistanceToSurfaceRelative": true,
"version": 1
},
"CameraShots": 0,
"CameraTriggerInTurnAround": true,
"FollowTerrain": false,
"HoverAndCapture": false,
"Items": [
{
"autoContinue": true,
"command": 16,
"doJumpId": 1,
"frame": 3,
"params": [
0,
0,
0,
null,
47.76830996168149,
16.531078080607077,
15
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 2,
"frame": 3,
"params": [
0,
0,
0,
null,
47.76829804974075,
16.53102392492446,
15
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 3,
"frame": 3,
"params": [
0,
0,
0,
null,
47.76828308011502,
16.530971475941232,
15
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 4,
"frame": 3,
"params": [
0,
0,
0,
null,
47.76826516164709,
16.530921115009285,
15
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 5,
"frame": 3,
"params": [
0,
0,
0,
null,
47.76824442462058,
16.530873208298473,
15
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 6,
"frame": 3,
"params": [
0,
0,
0,
null,
47.76822101981255,
16.53082810413424,
15
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 7,
"frame": 3,
"params": [
0,
0,
0,
null,
47.768195117397276,
16.530786130464946,
15
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 8,
"frame": 3,
"params": [
0,
0,
0,
null,
47.76816690570892,
16.53074759247741,
15
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 9,
"frame": 3,
"params": [
0,
0,
0,
null,
47.76813658987215,
16.53071277037791,
15
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 10,
"frame": 3,
"params": [
0,
0,
0,
null,
47.76810439031073,
16.53068191735484,
15
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 11,
"frame": 3,
"params": [
0,
0,
0,
null,
47.76807054114481,
16.530655257737784,
15
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 12,
"frame": 3,
"params": [
0,
0,
0,
null,
47.768035288488655,
16.530632985366445,
15
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 13,
"frame": 3,
"params": [
0,
0,
0,
null,
47.7679988886612,
16.530615262181257,
15
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 14,
"frame": 3,
"params": [
0,
0,
0,
null,
47.76796160632235,
16.530602217045924,
15
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 15,
"frame": 3,
"params": [
0,
0,
0,
null,
47.76792371254868,
16.530593944810462,
15
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 16,
"frame": 3,
"params": [
0,
0,
0,
null,
47.76788548286245,
16.53059050562156,
15
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 17,
"frame": 3,
"params": [
0,
0,
0,
null,
47.76789401336053,
16.530457125409807,
15
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 18,
"frame": 3,
"params": [
0,
0,
0,
null,
47.76794037215665,
16.530462221653437,
15
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 19,
"frame": 3,
"params": [
0,
0,
0,
null,
47.76798626339304,
16.530473241938182,
15
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 20,
"frame": 3,
"params": [
0,
0,
0,
null,
47.768031345720765,
16.530490104292777,
15
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 21,
"frame": 3,
"params": [
0,
0,
0,
null,
47.76807528380773,
16.530512683291395,
15
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 22,
"frame": 3,
"params": [
0,
0,
0,
null,
47.76811775083296,
16.530540810986558,
15
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 23,
"frame": 3,
"params": [
0,
0,
0,
null,
47.768158430917545,
16.530574278158397,
15
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 24,
"frame": 3,
"params": [
0,
0,
0,
null,
47.76819702147422,
16.53061283587086,
15
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 25,
"frame": 3,
"params": [
0,
0,
0,
null,
47.7682332354581,
16.53065619732335,
15
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 26,
"frame": 3,
"params": [
0,
0,
0,
null,
47.76826680350174,
16.530704039984016,
15
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 27,
"frame": 3,
"params": [
0,
0,
0,
null,
47.768297475918786,
16.530756007988817,
15
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 28,
"frame": 3,
"params": [
0,
0,
0,
null,
47.76832502456117,
16.530811714788502,
15
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 29,
"frame": 3,
"params": [
0,
0,
0,
null,
47.768349244516145,
16.530870746023865,
15
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 30,
"frame": 3,
"params": [
0,
0,
0,
null,
47.76836995563045,
16.530932662607825,
15
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 31,
"frame": 3,
"params": [
0,
0,
0,
null,
47.76838700385034,
16.530997003991452,
15
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 32,
"frame": 3,
"params": [
0,
0,
0,
null,
47.76840026236748,
16.531063291589636,
15
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 33,
"frame": 3,
"params": [
0,
0,
0,
null,
47.76843011128268,
16.530812190772934,
15
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 34,
"frame": 3,
"params": [
0,
0,
0,
null,
47.76840412057789,
16.53074736405803,
15
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 35,
"frame": 3,
"params": [
0,
0,
0,
null,
47.76837470177482,
16.53068586573183,
15
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 36,
"frame": 3,
"params": [
0,
0,
0,
null,
47.76834204638334,
16.530628096134794,
15
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 37,
"frame": 3,
"params": [
0,
0,
0,
null,
47.76830636698282,
16.530574431334184,
15
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 38,
"frame": 3,
"params": [
0,
0,
0,
null,
47.768267895838235,
16.530525220675944,
15
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 39,
"frame": 3,
"params": [
0,
0,
0,
null,
47.7682268833882,
16.530480784510544,
15
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 40,
"frame": 3,
"params": [
0,
0,
0,
null,
47.76818359661467,
16.53044141210756,
15
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 41,
"frame": 3,
"params": [
0,
0,
0,
null,
47.76813831730493,
16.530407359772603,
15
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 42,
"frame": 3,
"params": [
0,
0,
0,
null,
47.76809134021725,
16.530378849178813,
15
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 43,
"frame": 3,
"params": [
0,
0,
0,
null,
47.76804297116204,
16.530356065923836,
15
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 44,
"frame": 3,
"params": [
0,
0,
0,
null,
47.76799352501113,
16.530339158321603,
15
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 45,
"frame": 3,
"params": [
0,
0,
0,
null,
47.76794332364798,
16.53032823643686,
15
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 46,
"frame": 3,
"params": [
0,
0,
0,
null,
47.768111593768836,
16.530247756350924,
15
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 47,
"frame": 3,
"params": [
0,
0,
0,
null,
47.76816244597949,
16.530277077539925,
15
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 48,
"frame": 3,
"params": [
0,
0,
0,
null,
47.76821165723565,
16.530312051720227,
15
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 49,
"frame": 3,
"params": [
0,
0,
0,
null,
47.76825894412527,
16.530352477472384,
15
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 50,
"frame": 3,
"params": [
0,
0,
0,
null,
47.76830403431889,
16.530398121980845,
15
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 51,
"frame": 3,
"params": [
0,
0,
0,
null,
47.76834666813801,
16.530448722374775,
15
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 52,
"frame": 3,
"params": [
0,
0,
0,
null,
47.76838660005064,
16.53050398724195,
15
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 53,
"frame": 3,
"params": [
0,
0,
0,
null,
47.76835630723104,
16.53028941381972,
15
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 54,
"frame": 3,
"params": [
0,
0,
0,
null,
47.76830077310924,
16.530233806252745,
15
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"doJumpId": 55,
"frame": 3,
"params": [
0,
0,
0,
null,
47.7682423373786,
16.530185224411827,
15
],
"type": "SimpleItem"
}
],
"Refly90Degrees": false,
"TurnAroundDistance": 10,
"VisualTransectPoints": [
[
47.76830996168149,
16.531078080607077
],
[
47.76829804974075,
16.53102392492446
],
[
47.76828308011502,
16.530971475941232
],
[
47.76826516164709,
16.530921115009285
],
[
47.76824442462058,
16.530873208298473
],
[
47.76822101981255,
16.53082810413424
],
[
47.768195117397276,
16.530786130464946
],
[
47.76816690570892,
16.53074759247741
],
[
47.76813658987215,
16.53071277037791
],
[
47.76810439031073,
16.53068191735484
],
[
47.76807054114481,
16.530655257737784
],
[
47.768035288488655,
16.530632985366445
],
[
47.7679988886612,
16.530615262181257
],
[
47.76796160632235,
16.530602217045924
],
[
47.76792371254868,
16.530593944810462
],
[
47.76788548286245,
16.53059050562156
],
[
47.76789401336053,
16.530457125409807
],
[
47.76794037215665,
16.530462221653437
],
[
47.76798626339304,
16.530473241938182
],
[
47.768031345720765,
16.530490104292777
],
[
47.76807528380773,
16.530512683291395
],
[
47.76811775083296,
16.530540810986558
],
[
47.768158430917545,
16.530574278158397
],
[
47.76819702147422,
16.53061283587086
],
[
47.7682332354581,
16.53065619732335
],
[
47.76826680350174,
16.530704039984016
],
[
47.768297475918786,
16.530756007988817
],
[
47.76832502456117,
16.530811714788502
],
[
47.768349244516145,
16.530870746023865
],
[
47.76836995563045,
16.530932662607825
],
[
47.76838700385034,
16.530997003991452
],
[
47.76840026236748,
16.531063291589636
],
[
47.76843011128268,
16.530812190772934
],
[
47.76840412057789,
16.53074736405803
],
[
47.76837470177482,
16.53068586573183
],
[
47.76834204638334,
16.530628096134794
],
[
47.76830636698282,
16.530574431334184
],
[
47.768267895838235,
16.530525220675944
],
[
47.7682268833882,
16.530480784510544
],
[
47.76818359661467,
16.53044141210756
],
[
47.76813831730493,
16.530407359772603
],
[
47.76809134021725,
16.530378849178813
],
[
47.76804297116204,
16.530356065923836
],
[
47.76799352501113,
16.530339158321603
],
[
47.76794332364798,
16.53032823643686
],
[
47.768111593768836,
16.530247756350924
],
[
47.76816244597949,
16.530277077539925
],
[
47.76821165723565,
16.530312051720227
],
[
47.76825894412527,
16.530352477472384
],
[
47.76830403431889,
16.530398121980845
],
[
47.76834666813801,
16.530448722374775
],
[
47.76838660005064,
16.53050398724195
],
[
47.76835630723104,
16.53028941381972
],
[
47.76830077310924,
16.530233806252745
],
[
47.7682423373786,
16.530185224411827
]
],
"version": 1
},
"complexItemType": "circularSurvey",
"deltaAlpha": 5,
"deltaR": 10,
"isSnakePath": true,
"polygon": [
[
47.76833531973578,
16.530140752891526
],
[
47.76846408526058,
16.53105283897935
],
[
47.76784947606115,
16.53115349675477
],
[
47.76790096078066,
16.530348497711913
]
],
"referencePointAlt": 0,
"referencePointLat": 47.76787751303391,
"referencePointLong": 16.531258654708665,
"transectMinLength": 0.3,
"type": "ComplexItem",
"version": 1
}
],
"plannedHomePosition": [
47.76825152951995,
16.530647241895288,
178
],
"vehicleType": 2,
"version": 2
},
"rallyPoints": {
"points": [
],
"version": 2
},
"version": 1
}
......@@ -429,7 +429,19 @@ HEADERS += \
src/Snake/snake.h \
src/Snake/snake_geometry.h \
src/Snake/snake_global.h \
src/Wima/GeoPoint3D.h \
src/Wima/Polygon2D.h \
src/Wima/PolygonArray.h \
src/Wima/QtROSJsonFactory.h \
src/Wima/ROSCommunicator.h \
src/Wima/ROSJsonFactory.h \
src/Wima/ROSMessageGroups.h \
src/Wima/ROSMessageType.h \
src/Wima/SnakeTiles.h \
src/Wima/SnakeTilesLocal.h \
src/Wima/WimaControllerDetail.h \
src/Wima/WimaPolygonArray.h \
src/Wima/snaketile.h \
src/api/QGCCorePlugin.h \
src/api/QGCOptions.h \
src/api/QGCSettings.h \
......@@ -443,7 +455,6 @@ HEADERS += \
src/Wima/WimaVehicle.h \
src/Wima/WimaDataContainer.h \
src/Wima/WimaPlaner.h \
src/Wima/WimaPlaner.h \
src/Wima/WimaMeasurementArea.h \
src/Wima/WimaCorridor.h \
src/Wima/WimaAreaData.h \
......@@ -464,14 +475,19 @@ HEADERS += \
src/Wima/testplanimetrycalculus.h \
src/Settings/WimaSettings.h \
src/QmlControls/QmlObjectVectorModel.h \
src/comm/ros_bridge/include/jsongenerator.h \
src/comm/ros_bridge/include/ROSMessageTraits.h \
src/comm/ros_bridge/include/messages.h \
src/comm/utilities.h
SOURCES += \
src/Snake/clipper/clipper.cpp \
src/Snake/snake.cpp \
src/Snake/snake_geometry.cpp \
src/Wima/GeoPoint3D.cpp \
src/Wima/PolygonArray.cc \
src/Wima/ROSCommunicator.cpp \
src/Wima/ROSJsonFactory.cpp \
src/Wima/WimaControllerDetail.cc \
src/Wima/snaketile.cpp \
src/api/QGCCorePlugin.cc \
src/api/QGCOptions.cc \
src/api/QGCSettings.cc \
......@@ -503,8 +519,7 @@ SOURCES += \
src/Wima/TestPolygonCalculus.cpp \
src/Wima/testplanimetrycalculus.cpp \
src/Settings/WimaSettings.cc \
src/QmlControls/QmlObjectVectorModel.cc \
src/comm/ros_bridge/src/messages.cpp
src/QmlControls/QmlObjectVectorModel.cc
#
# Unit Test specific configuration goes here (requires full debug build with all plugins)
......
#include "GeoPoint3D.h"
GeoPoint3D *GeoPoint3D::Clone() const
{
return new GeoPoint3D(*this);
}
GeoPoint3D &GeoPoint3D::operator=(const GeoPoint3D &p)
{
this->setLatitude(p.latitude());
this->setLongitude(p.longitude());
this->setAltitude(p.altitude());
return *this;
}
#pragma once
#include "ros_bridge/include/messages.h"
#include "ROSMessageType.h"
#include "ROSMessageGroups.h"
#include <QObject>
typedef ROSMessageType<QString> ROSMsg;
typedef ros_bridge::GeoPoint::GeoPoint ROSGeoPoint;
class GeoPoint3D : public QObject, public ROSMsg, public ROSGeoPoint
{
Q_OBJECT
public:
typedef GeoPointGroup Group;
explicit GeoPoint3D(QObject *parent = nullptr)
: QObject(parent), ROSMsg(), ROSGeoPoint() {}
explicit GeoPoint3D(double latitude,
double longitude,
double altitude,
QObject *parent = nullptr)
: QObject(parent), ROSMsg(), ROSGeoPoint(latitude, longitude, altitude)
{}
explicit GeoPoint3D(const GeoPoint3D& p,
QObject *parent = nullptr)
: QObject(parent), ROSMsg(), ROSGeoPoint(p.latitude(), p.longitude(), p.altitude())
{}
explicit GeoPoint3D(const class ros_bridge::GeoPoint::GeoPoint& p,
QObject *parent = nullptr)
: QObject(parent), ROSMsg(), ROSGeoPoint(p.latitude(), p.longitude(), p.altitude())
{}
virtual GeoPoint3D *Clone() const override;
GeoPoint3D &operator=(const GeoPoint3D&p);
};
#pragma once
#include <QPolygonF>
#include <QPointF>
#include "ROSMessageGroups.h"
#include "ROSMessageType.h"
typedef ROSMessageType<QString> ROSMsg;
class Polygon2D : public QPolygonF, public ROSMsg{
public:
typedef PolygonGroup Group;
Polygon2D(){}
Polygon2D(const Polygon2D &other) : QPolygonF(other) , ROSMsg(){}
Polygon2D& operator=(const Polygon2D& other) {
QPolygonF::operator=(other);
return *this;
}
virtual Polygon2D*Clone() const { // ROSMsg
return new Polygon2D(*this);
}
const Polygon2D &points() const {return *this;} // ROSMsg
Polygon2D &points() {return *this;} // ROSMsg
};
#include "PolygonArray.h"
template <class PolygonType, template <class,class...> class ContainerType >
const char *PolygonArray<PolygonType, ContainerType>::typeName = "PolygonArray";
#pragma once
#include <QObject>
#include "ROSMessageType.h"
template <class PolygonType, template <class,class...> class ContainerType >
class PolygonArray : public ROSMessageType<QString>, public ContainerType<PolygonType> {
public:
explicit PolygonArray() : ROSMessageType<QString>(), ContainerType<PolygonType>() {}
PolygonArray(const PolygonArray &other) : ContainerType<PolygonType>(other) {}
QString type() const override {return typeName;}
static const char *typeName;
};
#pragma once
#include "ROSJsonFactory.h"
typedef ROSJsonFactory<> QtROSJsonFactory;
#include "ROSCommunicator.h"
void ROSCommunicator::send(const ROSMsg *msg)
{
}
#pragma once
#include "WimaAreaData.h"
#include "ROSMessageType.h"
typedef ROSMessageType<QString> ROSMsg;
class ROSCommunicator : public QObject
{
Q_OBJECT
public:
explicit ROSCommunicator(QObject *parent = 0) :
QObject(parent) {}
void send(const ROSMsg *msg);
public slots:
virtual void receive(ROSMsg *msg) = 0;
signals:
void readAsynkPolledChanged(int value);
};
#include "ROSJsonFactory.h"
#include "PolygonArray.h"
#ifndef ROSJSONFACTORY_H
#define ROSJSONFACTORY_H
#include "ros_bridge/rapidjson/include/rapidjson/document.h"
#include "ros_bridge/include/messages.h"
#include "ROSMessageType.h"
#include <QString>
#include "WimaAreaData.h"
#include "utilities.h"
#include "ros_bridge/include/ROSMessageTraits.h"
#include "ROSMessageGroups.h"
#include "boost/type_traits.hpp"
#include "boost/type_traits/is_base_of.hpp"
class StdHeaderPolicy;
//!
//! \brief The ROSJsonFactory class is used to create ROS messages.
//!
//! The ROSJsonFactory class is used to create \class rapidjson::Document documents containing ROS messages
//! from classes derived from \class ROSMessageType. Each class has a group mark (typedef ... Group) which allows the
//! ROSJsonFactory to determine the ROS message type it will create.
template <class HeaderPolicy = StdHeaderPolicy>
class ROSJsonFactory : public HeaderPolicy
{
typedef QString StringType;
typedef ROSMessageType<StringType> ROSMsg;
public:
ROSJsonFactory(){}
//!
//! \brief Creates a \class rapidjson::Document document containing a ROS mesage from \p msg.
//!
//! Creates a \class rapidjson::Document document containing a ROS message from \p msg.
//! A compile-time error will occur, if \p msg belongs to the \struct EmptyGroup or is
//! not derived from \class ROSMessageType.
//! \param msg Instance of a \class ROSMessageType subclass belonging to a ROSMessageGroup.
//! \return rapidjson::Document document containing a ROS message.
template <class T>
rapidjson::Document *create(const T &msg){
static_assert(boost::is_base_of<ROSMsg, T>::value, "Type of msg must be derived from ROSMessageType.");
static_assert(!::boost::is_same<typename T::Group, EmptyGroup>::value,
"msg belongs to group EmptyGroup (not allowed). Please specify Group (typedef MessageGroup Group)");
return _create(msg, Type2Type<typename T::Group>());
}
private:
// ===========================================================================
// EmptyGroup and not implemented Groups
// ===========================================================================
template<class U, class V>
rapidjson::Document *_create(const U &msg, Type2Type<V>){
(void)msg;
assert(false); // Implementation missing for group U::Group!
}
// ===========================================================================
// Point32Group
// ===========================================================================
template<class U>
rapidjson::Document *_create(const U &msg, Type2Type<Point32Group>){
using namespace ros_bridge;
rapidjson::Document *doc = new rapidjson::Document(rapidjson::kObjectType);
bool ret = Point32::toJson<_Float32>(msg, *doc, doc->GetAllocator());
assert(ret);
(void)ret;
return doc;
}
// ===========================================================================
// GeoPointGroup
// ===========================================================================
template<class U>
rapidjson::Document *_create(const U &msg, Type2Type<GeoPointGroup>){
using namespace ros_bridge;
rapidjson::Document *doc = new rapidjson::Document(rapidjson::kObjectType);
bool ret = GeoPoint::toJson(msg, *doc, doc->GetAllocator());
assert(ret);
(void)ret;
return doc;
}
// ===========================================================================
// PolygonGroup
// ===========================================================================
template<class U>
rapidjson::Document *_create(const U &msg, Type2Type<PolygonGroup>){
using namespace ros_bridge;
rapidjson::Document *doc = new rapidjson::Document(rapidjson::kObjectType);
bool ret = Polygon::toJson(msg, *doc, doc->GetAllocator());
assert(ret);
(void)ret;
return doc;
}
// ===========================================================================
// PolygonStampedGroup
// ===========================================================================
template<class U>
rapidjson::Document *_create(const U &msg, Type2Type<PolygonStampedGroup>){
using namespace ros_bridge;
using namespace ros_bridge::traits;
typedef HasMemberHeader<U> HasHeader;
return _createPolygonStamped(msg, Int2Type<HasHeader::value>());
}
template<class U, int k>
rapidjson::Document *_createPolygonStamped(const U &msg, Int2Type<k>){ // U has member header(), use integraded header.
using namespace ros_bridge;
rapidjson::Document *doc = new rapidjson::Document(rapidjson::kObjectType);
bool ret = PolygonStamped::toJson(msg, *doc, doc->GetAllocator());
assert(ret);
(void)ret;
return doc;
}
template<class U>
rapidjson::Document *_createPolygonStamped(const U &msg, Int2Type<0>){// U has no member header(), generate one on the fly.
using namespace ros_bridge;
Header::Header header(HeaderPolicy::header(msg));
rapidjson::Document *doc = new rapidjson::Document(rapidjson::kObjectType);
bool ret = PolygonStamped::toJson(msg, header, *doc, doc->GetAllocator());
assert(ret);
(void)ret;
return doc;
}
// ===========================================================================
// PolygonArrayGroup
// ===========================================================================
template<class U>
rapidjson::Document *_create(const U &msg, Type2Type<PolygonArrayGroup>){
using namespace ros_bridge;
using namespace ros_bridge::traits;
typedef HasMemberHeader<U> HasHeader;
return _createPolygonArray(msg, Int2Type<HasHeader::value>());
}
template<class U, int k>
rapidjson::Document *_createPolygonArray(const U &msg, Int2Type<k>){ // U has member header(), use integraded header.
using namespace ros_bridge;
rapidjson::Document *doc = new rapidjson::Document(rapidjson::kObjectType);
bool ret = PolygonArray::toJson(msg, *doc, doc->GetAllocator());
assert(ret);
(void)ret;
return doc;
}
template<class U>
rapidjson::Document *_createPolygonArray(const U &msg, Int2Type<0>){// U has no member header(), generate one on the fly.
using namespace ros_bridge;
Header::Header header(HeaderPolicy::header(msg));
rapidjson::Document *doc = new rapidjson::Document(rapidjson::kObjectType);
bool ret = PolygonArray::toJson(msg, header, *doc, doc->GetAllocator());
assert(ret);
(void)ret;
return doc;
}
};
class StdHeaderPolicy{
public:
StdHeaderPolicy():_seq(-1){};
//!
//! \brief header Returns the header belonging to msg.
//! \return Returns the header belonging to msg.
//!
template<typename T>
ros_bridge::Header::Header header(const T&msg) {
return ros_bridge::Header::Header(++_seq, time(msg), "/map");
}
//!
//! \brief time Returns the current time.
//! \return Returns the current time.
template<typename T>
ros_bridge::Time::Time time(const T&msg) {
(void)msg;
return ros_bridge::Time::Time(0,0);
}
private:
long _seq;
};
#endif // ROSJSONFACTORY_H
#pragma once
namespace detail {
}
//!
//! \note Each calls belonging to a ROS message group must derive from \class ROSMessageType.
//!
//! \brief The EmptyGroup struct is used by the \class ROSMessageType base class.
//!
//! The EmptyGroup struct is used by the \class ROSMessageType base class. Passing a class using this
//! group will to the \class ROSJsonFactory will lead to a compile-time error.
struct EmptyGroup {};
//!
//! \brief The Point32Group struct is used the mark a class as a ROS Point32 message.
//!
//! The Point32Group struct is used the mark a class as a ROS Point32 message.
struct Point32Group {};
//!
//! \brief The GeoPointGroup struct is used the mark a class as a ROS geographic_msgs/GeoPoint message.
//!
//! The GeoPointGroup struct is used the mark a class as a ROS geographic_msgs/GeoPoint message.
struct GeoPointGroup {};
//!
//! \brief The PolygonGroup struct is used the mark a class as a ROS Polygon message.
//!
//! The PolygonGroup struct is used the mark a class as a ROS Polygon message.
struct PolygonGroup {};
//!
//! \brief The PolygonStampedGroup struct is used the mark a class as a ROS PolygonStamped message.
//!
//! The PolygonStampedGroup struct is used the mark a class as a ROS PolygonStamped message.
struct PolygonStampedGroup {};
//!
//! \brief The PolygonArrayGroup struct is used the mark a class as a ROS PolygonArray message.
//!
//! The PolygonArrayGroup struct is used the mark a class as a ROS PolygonArray message.
struct PolygonArrayGroup {};
#pragma once
#include "ROSMessageGroups.h"
//! @brief Abstract base class for all ROS Messages Types.
//!
//! Abstract base class for all ROS Messages Types. This class defines a basic interface
//! every class must fullfill if it takes advantages of the \class ROSJsonFactory.
//! Every class must define the public typedef Group, which associates it to a message Group (\see ROSMessageGroups). The Group type
//! is used by the \class ROSJsonFactory to determine the type of the message it creates. The
//! ROSMessageType belongs to the \struct EmptyGroup. Passing a class belonging to the \struct EmptyGroup to the
//! \class ROSJsonFactory will yield an error.
template <typename StringType>
class ROSMessageType{
public:
typedef EmptyGroup Group;
ROSMessageType() {};
~ROSMessageType() {};
// Avoid sliceing (copy with ROSMessage::Clone)!
ROSMessageType(const ROSMessageType &) = delete;
ROSMessageType& operator=(const ROSMessageType &) = delete;
virtual ROSMessageType* Clone() const = 0;
};
#ifndef SNAKETILES_H
#define SNAKETILES_H
#endif // SNAKETILES_H
#ifndef SNAKETILELOCAL_H
#define SNAKETILELOCAL_H
#endif // SNAKETILELOCAL_H
......@@ -5,7 +5,6 @@
#include "Vehicle.h"
#include "qobject.h"
#include "WimaVehicle.h"
#include "WimaArea.h"
#include <QLineF>
#include <QPointF>
#include "QGCGeo.h"
......
......@@ -100,7 +100,7 @@ void WimaAreaData::assign(const WimaAreaData &other)
void WimaAreaData::assign(const WimaArea &other)
{
setMaxAltitude(other.maxAltitude());
setPath(other.path());
setPath(other.path());
setCenter(other.center());
}
......
......@@ -6,7 +6,7 @@
#include "WimaArea.h"
class WimaAreaData : public QObject // Abstract class for all WimaAreaData derived objects
class WimaAreaData : public QObject// Abstract class for all WimaAreaData derived objects
{
Q_OBJECT
......@@ -15,6 +15,7 @@ public:
Q_PROPERTY(QString type READ type CONSTANT)
WimaAreaData(QObject *parent = nullptr);
WimaAreaData(const WimaAreaData& otherData) = delete; // avoid slicing
WimaAreaData& operator=(const WimaAreaData& otherData) = delete; // avoid slicing
double maxAltitude() const;
......@@ -22,12 +23,11 @@ public:
QGeoCoordinate center() const;
QList<QGeoCoordinate> coordinateList() const;
bool containsCoordinate(const QGeoCoordinate &coordinate) const;
virtual QString type() const = 0;
void append(const QGeoCoordinate &c) {_path.push_back(QVariant::fromValue(c));}
void clear() {_path.clear();}
virtual QString type() const { return "Default";}
signals:
void maxAltitudeChanged (double maxAltitude);
void pathChanged (const QVariantList& coordinateList);
......@@ -36,7 +36,7 @@ signals:
public slots:
void setMaxAltitude(double maxAltitude);
void setPath(const QList<QGeoCoordinate> &coordinateList);
void setPath(const QVariantList &coordinateList);
void setPath(const QVariantList &coordinateList);
void setCenter(const QGeoCoordinate &center);
protected:
......
......@@ -5,10 +5,13 @@
#include "ros_bridge/rapidjson/include/rapidjson/writer.h"
#include "ros_bridge/rapidjson/include/rapidjson/ostreamwrapper.h"
#include "QtROSJsonFactory.h"
#include "time.h"
#include "assert.h"
#include "QVector3D"
#include <QScopedPointer>
const char* WimaController::wimaFileExtension = "wima";
......@@ -444,7 +447,8 @@ bool WimaController::_fetchContainerData()
_currentMissionItems.clearAndDeleteContents();
_waypointPath.clear();
_currentWaypointPath.clear();
_snakeTiles.clearAndDeleteContents();
_snakeTiles.polygons().clear();
_snakeTilesLocal.polygons().clear();
_snakeTileCenterPoints.clear();
emit visualItemsChanged();
......@@ -577,21 +581,57 @@ bool WimaController::_fetchContainerData()
if ( !_verifyScenarioDefinedWithErrorMessage() )
return false;
// Get tiles.
const auto &tiles = _scenario.getTiles();
const auto &cps = _scenario.getTileCenterPoints();
for ( int i=0; i < int(tiles.size()); ++i ) {
const auto &tile = tiles[i];
WimaAreaData *QTile = new WimaAreaData(this);
for ( const auto &vertex : tile) {
QGeoCoordinate QVertex(vertex[0], vertex[1], vertex[2]);
QTile->append(QVertex);
{
// Get tiles.
const auto &tiles = _scenario.getTiles();
const auto &cps = _scenario.getTileCenterPoints();
for ( int i=0; i < int(tiles.size()); ++i ) {
const auto &tile = tiles[i];
SnakeTile Tile;
for ( const auto &vertex : tile) {
QGeoCoordinate QVertex(vertex[0], vertex[1], vertex[2]);
Tile.append(QVertex);
}
const auto &centerPoint = cps[i];
QGeoCoordinate QCenterPoint(centerPoint[0], centerPoint[1], centerPoint[2]);
Tile.setCenter(QCenterPoint);
_snakeTiles.polygons().append(Tile);
_snakeTileCenterPoints.append(QVariant::fromValue(QCenterPoint));
}
const auto &centerPoint = cps[i];
QGeoCoordinate QCenterPoint(centerPoint[0], centerPoint[1], centerPoint[2]);
QTile->setCenter(QCenterPoint);
_snakeTiles.append(QTile);
_snakeTileCenterPoints.append(QVariant::fromValue(QCenterPoint));
}
{
// Get local tiles.
const auto &tiles = _scenario.getTilesENU();
for ( int i=0; i < int(tiles.size()); ++i ) {
const auto &tile = tiles[i];
Polygon2D Tile;
for ( const auto &vertex : tile.outer()) {
QPointF QVertex(vertex.get<0>(), vertex.get<1>());
Tile.append(QVertex);
}
_snakeTilesLocal.polygons().append(Tile);
}
QtROSJsonFactory factory;
QScopedPointer<rapidjson::Document> doc(factory.create(_snakeTilesLocal));
auto &temp = _scenario.getOrigin();
::GeoPoint3D origin(temp[0], temp[1], temp[2]);
QScopedPointer<rapidjson::Document> doc2(factory.create(origin));
cout << "Origin" << endl;
rapidjson::OStreamWrapper out(std::cout);
rapidjson::Writer<rapidjson::OStreamWrapper> writer(out);
doc2->Accept(writer);
std::cout << std::endl << std::endl;
cout << "Snake Tiles" << endl;
rapidjson::Writer<rapidjson::OStreamWrapper> writer2(out);
doc->Accept(writer2);
std::cout << std::endl << std::endl;
}
......@@ -996,97 +1036,112 @@ void WimaController::_eventTimerHandler()
}
if (rosBridgeTicker.ready()) {
using namespace ros_bridge;
// Time
class Time time(1, 2);
rapidjson::Document doc(rapidjson::kObjectType);
// Write to stdout
cout << "Time" << endl;
cout << "Return value : " << time.toJson(doc, doc.GetAllocator()) << std::endl;
rapidjson::OStreamWrapper out(std::cout);
rapidjson::Writer<rapidjson::OStreamWrapper> writer(out);
doc.Accept(writer);
std::cout << std::endl << std::endl;
// Header
Header header(1, &time, "/map");
// Write to stdout
cout << "Header" << endl;
rapidjson::Document doc2(rapidjson::kObjectType);
cout << "Return value : " << header.toJson(doc2, doc2.GetAllocator()) << std::endl;
rapidjson::Writer<rapidjson::OStreamWrapper> writer2(out);
doc2.Accept(writer2);
std::cout << std::endl << std::endl;
// Point
QVector3D p1(1, 2, 3);
typedef Point32<QVector3D> PointWrapper;
PointWrapper pw1(&p1);
// Write to stdout
cout << "Point" << endl;
rapidjson::Document doc3(rapidjson::kObjectType);
cout << "Return value : " << pw1.toJson(doc3, doc3.GetAllocator()) << std::endl;
rapidjson::Writer<rapidjson::OStreamWrapper> writer3(out);
doc3.Accept(writer3);
std::cout << std::endl << std::endl;
// Polygon
QVector3D p2(4, 5, 6);
QVector3D p3(7, 8, 9);
PointWrapper pw2(&p2);
PointWrapper pw3(&p3);
QVector<PointWrapper> pointList;
pointList.append(pw1);
pointList.append(pw2);
pointList.append(pw3);
typedef Polygon<PointWrapper, QVector> Poly;
Poly polyW(&pointList);
// Write to stdout
cout << "Polygon" << endl;
rapidjson::Document doc4(rapidjson::kObjectType);
cout << "Return value : " << polyW.toJson(doc4, doc4.GetAllocator()) << std::endl;
rapidjson::Writer<rapidjson::OStreamWrapper> writer4(out);
doc4.Accept(writer4);
std::cout << std::endl << std::endl;
// PolygonStamped
typedef PolygonStamped<PointWrapper, Poly> PolyWrapper;
PolyWrapper polyStamped(&header, &polyW);
// Write to stdout
cout << "PolygonStamped" << endl;
rapidjson::Document doc5(rapidjson::kObjectType);
cout << "Return value : " << polyStamped.toJson(doc5, doc5.GetAllocator()) << std::endl;
rapidjson::Writer<rapidjson::OStreamWrapper> writer5(out);
doc5.Accept(writer5);
std::cout << std::endl << std::endl;
// PolygonArray
// Define second Polygon
QVector3D p4(10, 11, 12);
QVector3D p5(13, 14, 15);
QVector3D p6(16, 17, 18);
PointWrapper pw4(&p4);
PointWrapper pw5(&p5);
PointWrapper pw6(&p6);
QVector<PointWrapper> pointList2{pw4, pw5, pw6};
Poly polyW2(&pointList2);
typedef PolygonArray<PointWrapper, Poly, QVector> PolyArray;
QVector<Poly*> polygons{&polyW, &polyW2};
PolyArray polyArray{};
// Write to stdout
cout << "PolygonStamped" << endl;
rapidjson::Document doc5(rapidjson::kObjectType);
cout << "Return value : " << polyStamped.toJson(doc5, doc5.GetAllocator()) << std::endl;
rapidjson::Writer<rapidjson::OStreamWrapper> writer5(out);
doc5.Accept(writer5);
std::cout << std::endl << std::endl;
// using namespace ros_bridge;
// // Time
// class Time time(1, 2);
// rapidjson::Document doc(rapidjson::kObjectType);
// // Write to stdout
// cout << "Time" << endl;
// cout << "Return value : " << time.toJson(doc, doc.GetAllocator()) << std::endl;
// rapidjson::OStreamWrapper out(std::cout);
// rapidjson::Writer<rapidjson::OStreamWrapper> writer(out);
// doc.Accept(writer);
// std::cout << std::endl << std::endl;
// // Header
// Header header(1, &time, "/map");
// // Write to stdout
// cout << "Header" << endl;
// rapidjson::Document doc2(rapidjson::kObjectType);
// cout << "Return value : " << header.toJson(doc2, doc2.GetAllocator()) << std::endl;
// rapidjson::Writer<rapidjson::OStreamWrapper> writer2(out);
// doc2.Accept(writer2);
// std::cout << std::endl << std::endl;
// // Point 3D
// QVector3D p1(1, 2, 3);
// typedef Point32<QVector3D> PointWrapper;
// PointWrapper pw1(&p1);
// // Write to stdout
// cout << "Point 3D" << endl;
// rapidjson::Document doc3(rapidjson::kObjectType);
// cout << "Return value : " << pw1.toJson(doc3, doc3.GetAllocator()) << std::endl;
// rapidjson::Writer<rapidjson::OStreamWrapper> writer3(out);
// doc3.Accept(writer3);
// std::cout << std::endl << std::endl;
// // Point 2D
// QPoint p2D(1, 2);
// p2D.x();
// Point32<QPoint> pw2D(&p2D);
// // Write to stdout
// cout << "Point 2D" << endl;
// rapidjson::Document docI(rapidjson::kObjectType);
// cout << "Return value : " << pw2D.toJson(docI, docI.GetAllocator()) << std::endl;
// rapidjson::Writer<rapidjson::OStreamWrapper> writerI(out);
// docI.Accept(writerI);
// std::cout << std::endl << std::endl;
// // Polygon
// QVector3D p2(4, 5, 6);
// QVector3D p3(7, 8, 9);
// PointWrapper pw2(&p2);
// PointWrapper pw3(&p3);
// QVector<PointWrapper> pointList;
// pointList.append(pw1);
// pointList.append(pw2);
// pointList.append(pw3);
// typedef Polygon<PointWrapper, QVector> Poly;
// Poly polyW(&pointList);
// // Write to stdout
// cout << "Polygon" << endl;
// rapidjson::Document doc4(rapidjson::kObjectType);
// cout << "Return value : " << polyW.toJson(doc4, doc4.GetAllocator()) << std::endl;
// rapidjson::Writer<rapidjson::OStreamWrapper> writer4(out);
// doc4.Accept(writer4);
// std::cout << std::endl << std::endl;
// // PolygonStamped
// typedef PolygonStamped<PointWrapper, Poly> PolyWrapper;
// PolyWrapper polyStamped(&header, &polyW);
// // Write to stdout
// cout << "PolygonStamped" << endl;
// rapidjson::Document doc5(rapidjson::kObjectType);
// cout << "Return value : " << polyStamped.toJson(doc5, doc5.GetAllocator()) << std::endl;
// rapidjson::Writer<rapidjson::OStreamWrapper> writer5(out);
// doc5.Accept(writer5);
// std::cout << std::endl << std::endl;
// // PolygonArray
// // Define second Polygon
// QVector3D p4(10, 11, 12);
// QVector3D p5(13, 14, 15);
// QVector3D p6(16, 17, 18);
// PointWrapper pw4(&p4);
// PointWrapper pw5(&p5);
// PointWrapper pw6(&p6);
// QVector<PointWrapper> pointList2{pw4, pw5, pw6};
// Poly polyW2(&pointList2);
// typedef PolygonArray<PointWrapper, Poly, QVector> PolyArray;
// QVector<Poly*> polygons{&polyW, &polyW2};
// PolyArray polyArray{};
// polyArray.setHeader(&header);
// polyArray.setPolygons(&polygons);
// // Write to stdout
// cout << "PolygonStamped" << endl;
// rapidjson::Document doc6(rapidjson::kObjectType);
// cout << "Return value : " << polyArray.toJson(doc6, doc6.GetAllocator()) << std::endl;
// rapidjson::Writer<rapidjson::OStreamWrapper> writer6(out);
// doc6.Accept(writer6);
// std::cout << std::endl << std::endl;
}
}
......@@ -1363,6 +1418,7 @@ bool WimaController::_verifyScenarioDefinedWithErrorMessage()
void WimaController::_snakeStoreWorkerResults()
{
auto start = std::chrono::high_resolution_clock::now();
_missionItems.clearAndDeleteContents();
const WorkerResult_t &r = _snakeWorker.getResult();
_setSnakeCalcInProgress(false);
......@@ -1403,7 +1459,6 @@ void WimaController::_snakeStoreWorkerResults()
takeOffItem->setCoordinate(waypoints[0]);
// copy mission items from _missionController to _missionItems
cout.precision(10);
for ( int i = 1; i < missionControllerVisualItems->count(); i++) {
SimpleMissionItem *visualItem = qobject_cast<SimpleMissionItem *>((*missionControllerVisualItems)[i]);
if (visualItem == nullptr) {
......@@ -1424,6 +1479,11 @@ void WimaController::_snakeStoreWorkerResults()
_calcNextPhase();
emit missionItemsChanged();
auto end = std::chrono::high_resolution_clock::now();
double duration = std::chrono::duration_cast<std::chrono::milliseconds>(end-start).count();
qWarning() << "WimaController::_snakeStoreWorkerResults execution time: " << duration << " ms.";
}
void WimaController::_loadCurrentMissionItemsFromBuffer()
......
......@@ -26,6 +26,11 @@
#include "snake.h"
#include "WimaControllerDetail.h"
#include "WimaPolygonArray.h"
#include "snaketile.h"
#include "ROSMessageGroups.h"
#include "Polygon2D.h"
#include "GeoPoint3D.h"
#define CHECK_BATTERY_INTERVAL 1000 // ms
#define SMART_RTL_MAX_ATTEMPTS 3 // times
......@@ -123,7 +128,7 @@ public:
Fact* snakeMinTileArea (void) { return &_snakeMinTileArea;}
Fact* snakeLineDistance (void) { return &_snakeLineDistance;}
Fact* snakeMinTransectLength (void) { return &_snakeMinTransectLength;}
QmlObjectListModel* snakeTiles (void) { return &_snakeTiles;}
QmlObjectListModel* snakeTiles (void) { return _snakeTiles.QmlObjectListModel();}
QVariantList snakeTileCenterPoints (void) { return _snakeTileCenterPoints;}
QList<int> snakeProgress (void) { return _snakeProgress;}
......@@ -322,7 +327,12 @@ private:
SettingsFact _snakeMinTileArea;
SettingsFact _snakeLineDistance;
SettingsFact _snakeMinTransectLength;
QmlObjectListModel _snakeTiles; // tiles
typedef WimaPolygonArray<SnakeTile, QVector> SnakeTiles;
SnakeTiles _snakeTiles; // tiles
typedef WimaPolygonArray<Polygon2D, QVector, PolygonArrayGroup> SnakeTilesLocal;
SnakeTilesLocal _snakeTilesLocal; // tiles local coordinate system
QVariantList _snakeTileCenterPoints;
QList<int> _snakeProgress; // measurement progress
......
......@@ -19,6 +19,7 @@ public:
WimaCorridorData &operator=(const WimaCorridor &other);
QString type() const;
WimaCorridorData *Clone() const {return new WimaCorridorData(*this);}
static const char* typeString;
......
......@@ -19,6 +19,7 @@ public:
WimaJoinedAreaData &operator=(const WimaJoinedArea &other);
QString type() const;
WimaJoinedAreaData *Clone() const {return new WimaJoinedAreaData(*this);}
static const char* typeString;
......
......@@ -21,6 +21,7 @@ public:
WimaMeasurementAreaData& operator=(const WimaMeasurementArea &other);
QString type() const;
WimaMeasurementAreaData *Clone() const {return new WimaMeasurementAreaData(*this);}
static const char* typeString;
......
#pragma once
#include "ROSMessageType.h"
#include "ROSMessageGroups.h"
#include "QmlObjectListModel.h"
#include <QVector>
#include <QString>
typedef ROSMessageType<QString> ROSMsg;
template <class PolygonType, template <class, class...> class ContainerType = QVector, typename GroupType = EmptyGroup>
class WimaPolygonArray : public ROSMsg
{
public:
typedef GroupType Group;
WimaPolygonArray() {}
WimaPolygonArray(const WimaPolygonArray &other) :
ROSMsg()
, _polygons(other._polygons), _dirty(true)
{}
virtual ROSMessageType<QString> * Clone() const override{
return new WimaPolygonArray(*this);
}
class QmlObjectListModel *QmlObjectListModel(){
if (_dirty)
_updateObjects();
_dirty = false;
return &_objs;
}
const ContainerType<PolygonType> &polygons() const {
return _polygons;
}
ContainerType<PolygonType> &polygons(){
_dirty = true;
return _polygons;
}
private:
void _updateObjects(void){
_objs.clear();
for (long i=0; i<_polygons.size(); ++i){
_objs.append(&_polygons[i]);
}
}
ContainerType<PolygonType> _polygons;
class QmlObjectListModel _objs;
bool _dirty;
};
......@@ -23,7 +23,7 @@ public:
const QGeoCoordinate &landPosition() const;
QString type() const;
WimaServiceAreaData *Clone() const {return new WimaServiceAreaData();}
static const char* typeString;
signals:
......
#include "snaketile.h"
SnakeTile::SnakeTile() : WimaAreaData()
{
}
SnakeTile::SnakeTile(const SnakeTile &other) : WimaAreaData()
{
*this = other;
}
SnakeTile &SnakeTile::operator=(const SnakeTile &other)
{
this->assign(other);
return *this;
}
void SnakeTile::assign(const SnakeTile &other)
{
WimaAreaData::assign(other);
}
#pragma once
#include "WimaAreaData.h"
class SnakeTile : public WimaAreaData
{
public:
SnakeTile();
SnakeTile(const SnakeTile&other);
QString type() const {return "SnakeTile";}
SnakeTile* Clone() const {return new SnakeTile(*this);}
SnakeTile& operator=(const SnakeTile &other);
protected:
void assign(const SnakeTile &other);
};
#pragma once
namespace ros_bridge {
namespace traits {
//! @brief Checks if class T has a member function z.
//!
//! Checks if class T has a member function z. E.g if the class Point has a member function
//! z than HasMemberZ<Point>::value is equal to 1 and 0 either.
template <typename T>
class HasMemberZ
{
typedef char Small;
struct Big { char x[2]; };
template <typename C> static Small test( typeof(&C::z) ) ;
template <typename C> static Big test(...);
public:
enum { value = sizeof(test<T>(0)) == sizeof(Small) };
};
//! @brief Checks if class T has a member function labels.
//!
//! Checks if class T has a member function labels. E.g if the class T has a member function
//! labels than HasMemberLabels<T>::value is equal to 1 and 0 either.
template <typename T>
class HasMemberLabels
{
typedef char Small;
struct Big { char x[2]; };
template <typename C> static Small test( typeof(&C::labels) ) ;
template <typename C> static Big test(...);
public:
enum { value = sizeof(test<T>(0)) == sizeof(Small) };
};
//! @brief Checks if class T has a member function labels.
//!
//! Checks if class T has a member function likelihood. E.g if the class T has a member function
//! likelihood than HasMemberLikelihood<T>::value is equal to 1 and 0 either.
template <typename T>
class HasMemberLikelihood
{
typedef char Small;
struct Big { char x[2]; };
template <typename C> static Small test( typeof(&C::likelihood) ) ;
template <typename C> static Big test(...);
public:
enum { value = sizeof(test<T>(0)) == sizeof(Small) };
};
//! @brief Checks if class T has a member function labels.
//!
//! Checks if class T has a member function header. E.g if the class T has a member function
//! header than HasMemberHeader<T>::value is equal to 1 and 0 either.
template <typename T>
class HasMemberHeader
{
typedef char Small;
struct Big { char x[2]; };
template <typename C> static Small test( typeof(&C::header) ) ;
template <typename C> static Big test(...);
public:
enum { value = sizeof(test<T>(0)) == sizeof(Small) };
};
//! @brief Checks if class T has a member function altitude.
//!
//! Checks if class T has a member function altitude. E.g if the class T has a member function
//! altitude than HasMemberAltitude<T>::value is equal to 1 and 0 either.
template <typename T>
class HasMemberAltitude
{
typedef char Small;
struct Big { char x[2]; };
template <typename C> static Small test( typeof(&C::altitude) ) ;
template <typename C> static Big test(...);
public:
enum { value = sizeof(test<T>(0)) == sizeof(Small) };
};
//! @brief Selects the Type T or U depending on flag and stores it inside Result.
template <int flag, typename T, typename U>
struct Select {typedef T Result;};
template <typename T, typename U>
struct Select<0, T, U> {typedef U Result;};
struct HasComponents {};
struct Has3Components : public HasComponents {};
struct Has2Components : public HasComponents {};
}
}
#ifndef JSONGENERATOR_H
#define JSONGENERATOR_H
#endif // JSONGENERATOR_H
......@@ -3,207 +3,498 @@
#include <iostream>
#include <vector>
#include <boost/type_traits/remove_cv.hpp>
#include <boost/type_traits/remove_reference.hpp>
#include "ros_bridge/rapidjson/include/rapidjson/rapidjson.h"
#include "ros_bridge/rapidjson/include/rapidjson/document.h"
#include "utilities.h"
#include "ROSMessageTraits.h"
namespace ros_bridge {
//! @brief C++ representation of ros::Time
namespace Time {
//! @brief C++ representation of std_msgs/Time
class Time{
public:
Time(): _secs(0), _nsecs(0) {}
Time(uint32_t secs, uint32_t nsecs): _secs(secs), _nsecs(nsecs) {}
uint32_t getSecs() const {return _secs;}
uint32_t getNSecs() const {return _nsecs;}
uint32_t secs() const {return _secs;}
uint32_t nSecs() const {return _nsecs;}
void setSecs(uint32_t secs) {_secs = secs;}
void setNSecs(uint32_t nsecs) {_nsecs = nsecs;}
bool toJson(rapidjson::Document &doc,
rapidjson::Document::AllocatorType &allocator) const
{
doc.AddMember("secs", rapidjson::Value().SetUint(this->_secs), allocator);
doc.AddMember("nsecs", rapidjson::Value().SetUint(this->_nsecs), allocator);
return true;
}
private:
uint32_t _secs;
uint32_t _nsecs;
};
template<class TimeType>
bool toJson(const TimeType &time,
rapidjson::Document &doc,
rapidjson::Document::AllocatorType &allocator)
{
doc.AddMember("secs", rapidjson::Value().SetUint((uint32_t)time.secs()), allocator);
doc.AddMember("nsecs", rapidjson::Value().SetUint((uint32_t)time.nSecs()), allocator);
return true;
}
}
namespace Header {
//! @brief C++ representation of std_msgs/Header
class Header{
public:
Header() : _seq(0), _frameId("") {}
Header(uint32_t seq, const Time *stamp, const std::string &frame_id) :
Header() : _seq(0), _stamp(Time::Time()), _frameId("") {}
Header(uint32_t seq, const Time::Time &stamp, const std::string &frame_id) :
_seq(seq)
, _stamp(stamp)
, _frameId(frame_id) {}
uint32_t getSeq() const {return _seq;};
const Time *getStamp() const {return _stamp;};
const std::string &getFrameId() const {return _frameId;};
uint32_t seq() const {return _seq;};
const Time::Time &stamp() const {return _stamp;};
const std::string &frameId() const {return _frameId;};
Time::Time &stamp() {return _stamp;};
std::string &frameId() {return _frameId;};
void setSeq (uint32_t seq) {_seq = seq;}
void setStamp (const Time *stamp) {_stamp = stamp;}
void setStamp (const Time::Time &stamp) {_stamp = stamp;}
void setFrameId (const std::string &frameId) {_frameId = frameId;}
bool toJson(rapidjson::Document &doc,
rapidjson::Document::AllocatorType &allocator) const
{
doc.AddMember("seq", rapidjson::Value().SetUint(this->_seq), allocator);
rapidjson::Document stamp(rapidjson::kObjectType);
if (!this->_stamp->toJson(stamp, allocator))
return false;
doc.AddMember("stamp", stamp, allocator);
doc.AddMember("frame_id",
rapidjson::Value().SetString(this->_frameId.data(),
this->_frameId.length(),
allocator),
allocator);
return true;
}
private:
uint32_t _seq;
const Time *_stamp;
Time::Time _stamp;
std::string _frameId;
};
//! @brief C++ representation of geometry_msgs/Point32
template <class PointType>
class Point32{
public:
Point32() {}
Point32(const PointType* p): _point(p) {}
const PointType *getPoint() const {return _point;}
void setPoint(const PointType *point) {point;}
template <class HeaderType>
bool toJson(const HeaderType &header,
rapidjson::Document &doc,
rapidjson::Document::AllocatorType &allocator) {
doc.AddMember("seq", rapidjson::Value().SetUint((uint32_t)header.seq()), allocator);
rapidjson::Document stamp(rapidjson::kObjectType);
if (!Time::toJson(header.stamp(), doc, allocator))
return false;
doc.AddMember("stamp", stamp, allocator);
doc.AddMember("frame_id",
rapidjson::Value().SetString(header.frameId().data(),
header.frameId().length(),
allocator),
allocator);
return true;
}
}
namespace Point32 {
using namespace ros_bridge::traits;
//! @brief C++ representation of geometry_msgs/Point32.
template<typename FloatType = _Float64>
class Point{
public:
Point(FloatType x, FloatType y, FloatType z) : _x(x), _y(y), _z(z){}
bool toJson(rapidjson::Document &doc, rapidjson::Document::AllocatorType &allocator) const
FloatType x() const {return _x;}
FloatType y() const {return _y;}
FloatType z() const {return _z;}
void setX(FloatType x) {_x = x;}
void setY(FloatType y) {_y = y;}
void setZ(FloatType z) {_z = z;}
private:
FloatType _x;
FloatType _y;
FloatType _z;
};
typedef Point<> Point64;
typedef Point<_Float32> Point32;
namespace det { //detail
template <typename FloatType, class T, typename V>
bool toJson(const T &p, rapidjson::Document &doc, rapidjson::Document::AllocatorType &allocator, Type2Type<V>)
{
doc.AddMember("x", rapidjson::Value().SetFloat((FloatType)p.x()), allocator);
doc.AddMember("y", rapidjson::Value().SetFloat((FloatType)p.y()), allocator);
doc.AddMember("z", rapidjson::Value().SetFloat((FloatType)p.z()), allocator);
return true;
}
template <typename FloatType, class T>
bool toJson(const T &p, rapidjson::Document &doc, rapidjson::Document::AllocatorType &allocator, Type2Type<Has2Components>)
{
doc.AddMember("x", rapidjson::Value().SetFloat((FloatType)p.x()), allocator);
doc.AddMember("y", rapidjson::Value().SetFloat((FloatType)p.y()), allocator);
doc.AddMember("z", rapidjson::Value().SetFloat((FloatType)0.0), allocator); // _point has no member z() -> add 0.
return true;
}
}
template <typename FloatType = _Float32, class T>
bool toJson(const T&p, rapidjson::Document &doc, rapidjson::Document::AllocatorType &allocator)
{
typedef typename Select<HasMemberZ<T>::value, Has3Components, Has2Components>::Result
Components; // Check if PointType has 2 or 3 dimensions.
return det::toJson<FloatType>(p, doc, allocator, Type2Type<Components>());
}
}
namespace GeoPoint {
using namespace ros_bridge::traits;
//! @brief C++ representation of geographic_msgs/GeoPoint.
class GeoPoint{
public:
GeoPoint()
: _latitude(0)
, _longitude(0)
, _altitude(0)
{}
GeoPoint(_Float64 latitude, _Float64 longitude, _Float64 altitude)
: _latitude(latitude)
, _longitude(longitude)
, _altitude(altitude)
{}
_Float64 latitude() const {return _latitude;}
_Float64 longitude() const {return _longitude;}
_Float64 altitude() const {return _altitude;}
void setLatitude (_Float64 latitude) {_latitude = latitude;}
void setLongitude (_Float64 longitude) {_longitude = longitude;}
void setAltitude (_Float64 altitude) {_altitude = altitude;}
private:
_Float64 _latitude;
_Float64 _longitude;
_Float64 _altitude;
};
namespace det { //detail
template <class T, typename V>
bool toJson(const T &p, rapidjson::Document &doc, rapidjson::Document::AllocatorType &allocator, Type2Type<V>)
{
doc.AddMember("latitude", rapidjson::Value().SetFloat((_Float64)p.latitude()), allocator);
doc.AddMember("longitude", rapidjson::Value().SetFloat((_Float64)p.longitude()), allocator);
doc.AddMember("altitude", rapidjson::Value().SetFloat((_Float64)p.altitude()), allocator);
return true;
}
doc.AddMember("x", rapidjson::Value().SetFloat(_point->x()), allocator);
doc.AddMember("y", rapidjson::Value().SetFloat(_point->y()), allocator);
doc.AddMember("z", rapidjson::Value().SetFloat(_point->z()), allocator);
template <class T>
bool toJson(const T &p, rapidjson::Document &doc, rapidjson::Document::AllocatorType &allocator, Type2Type<Has2Components>)
{
doc.AddMember("latitudex", rapidjson::Value().SetFloat((_Float64)p.latitude()), allocator);
doc.AddMember("longitude", rapidjson::Value().SetFloat((_Float64)p.longitude()), allocator);
doc.AddMember("altitude", rapidjson::Value().SetFloat((_Float64)0.0), allocator); // _point has no member altitude() -> add 0.
return true;
return true;
}
}
private:
const PointType *_point;
};
template <class T>
bool toJson(const T&p, rapidjson::Document &doc, rapidjson::Document::AllocatorType &allocator)
{
typedef typename Select<HasMemberAltitude<T>::value, Has3Components, Has2Components>::Result
Components; // Check if PointType has 2 or 3 dimensions.
return det::toJson(p, doc, allocator, Type2Type<Components>());
}
}
namespace Polygon {
//! @brief C++ representation of geometry_msgs/Polygon
template <class PointType,
template <class, class...> class ContainerType = std::vector,
class PointWrapper = class Point32<PointType> >
template <class PointTypeCVR,
template <class, class...> class ContainerType = std::vector>
class Polygon{
typedef typename boost::remove_cv<typename boost::remove_reference<PointTypeCVR>::type>::type PointType;
public:
Polygon(){}
Polygon(const ContainerType<PointType> *points) : _points(points) {}
Polygon(const Polygon &poly) : _points(poly.points()){}
const ContainerType<PointType> *getPoints() const {return _points;}
const ContainerType<PointType> &points() const {return _points;}
ContainerType<PointType> &points() {return _points;}
void setPoints(const ContainerType<PointType> *points) {_points = points;}
private:
ContainerType<PointType> _points;
};
bool toJson(rapidjson::Document &doc, rapidjson::Document::AllocatorType &allocator)
{
rapidjson::Value points(rapidjson::kArrayType);
template <class PolygonType>
bool toJson(const PolygonType &poly, rapidjson::Document &doc, rapidjson::Document::AllocatorType &allocator)
{
rapidjson::Value points(rapidjson::kArrayType);
for(long i=0; i < _points->size(); ++i) {
rapidjson::Document point(rapidjson::kObjectType);
if ( !( (*_points)[i].toJson(point, allocator) ) )
return false;
points.PushBack(point, allocator);
}
for(unsigned long i=0; i < (unsigned long)poly.points().size(); ++i) {
rapidjson::Document point(rapidjson::kObjectType);
if ( !Point32::toJson<_Float32>(poly.points()[i], point, allocator) )
return false;
points.PushBack(point, allocator);
}
doc.AddMember("points", points, allocator);
doc.AddMember("points", points, allocator);
return true;
}
return true;
}
}
namespace PolygonStamped {
private:
const ContainerType<PointType> *_points;
};
//! @brief C++ representation of geometry_msgs/PolygonStamped
template <class PointType, class PolygonType = Polygon<PointType>, class HeaderType = Header>
class PolygonStamped : public PolygonType{
template <class PointTypeCVR,
template<class,class...> class PolygonType = Polygon::Polygon, class HeaderType = Header::Header>
class PolygonStamped {
typedef typename boost::remove_cv<typename boost::remove_reference<PointTypeCVR>::type>::type PointType;
typedef PolygonType<PointType> Polygon;
public:
PolygonStamped();
PolygonStamped(const Header *header, const PolygonType *polygon) :
PolygonStamped(){};
PolygonStamped(const HeaderType &header, Polygon &polygon) :
_header(header)
, _polygon(polygon) {}
, _polygon(polygon)
{}
const HeaderType *getHeader() const {return _header;}
const PolygonType *getPolygon() const {return _polygon;}
const HeaderType &header() const {return _header;}
const Polygon &polygon() const {return _polygon;}
void setHeader(const HeaderType *header) {_header = header;}
void setPolygon(const PolygonType *polygon) {_polygon = polygon;}
HeaderType &header() {return _header;}
Polygon &polygon() {return _polygon;}
bool toJson(rapidjson::Document &doc, rapidjson::Document::AllocatorType &allocator)
void setHeader(const HeaderType &header) {_header = header;}
void setPolygon(const Polygon &polygon)
{
rapidjson::Document header(rapidjson::kObjectType);
if (!this->_header->toJson(header, allocator))
return false;
rapidjson::Document polygon(rapidjson::kObjectType);
if (!this->_polygon->toJson(polygon, allocator))
return false;
doc.AddMember("header", header, allocator);
doc.AddMember("polygon", polygon, allocator);
return true;
_polygon = polygon;
}
private:
HeaderType *_header;
PolygonType *_polygon;
HeaderType _header;
Polygon _polygon;
};
template <class PolyStamped>
bool toJson(const PolyStamped &polyStamped, rapidjson::Document &doc, rapidjson::Document::AllocatorType &allocator)
{
return toJson(polyStamped.polygon(), polyStamped.header(), doc, allocator);
}
template <class PolygonType, class HeaderType>
bool toJson(const PolygonType &poly, const HeaderType &h, rapidjson::Document &doc, rapidjson::Document::AllocatorType &allocator)
{
rapidjson::Document header(rapidjson::kObjectType);
if (!Header::toJson(h, header, allocator))
return false;
rapidjson::Document polygon(rapidjson::kObjectType);
if (!Polygon::toJson(poly, polygon, allocator))
return false;
doc.AddMember("header", header, allocator);
doc.AddMember("polygon", polygon, allocator);
return true;
}
}
namespace PolygonArray {
using namespace ros_bridge::traits;
//! @brief C++ representation of jsk_recognition_msgs/PolygonArray
template <class PointType,
class PolygonType = Polygon<PointType>,
template <class PointTypeCVR,
template <class, class...> class Polygon = Polygon::Polygon,
template <class, class...> class ContainerType = std::vector,
class HeaderType = Header >
class HeaderType = Header::Header>
class PolygonArray{
typedef typename boost::remove_cv<typename boost::remove_reference<PointTypeCVR>::type>::type PointType;
typedef Polygon<PointType> PolygonType;
public:
PolygonArray() {}
PolygonArray(const HeaderType *header,
const ContainerType<PolygonType> *polygons,
const ContainerType<uint32_t> *labels,
const ContainerType<_Float32> *likelihood)
PolygonArray(){}
//!
//! \brief PolygonArray
//! \param header Header
//! \param polygons Polygons
//! \param labels Labels
//! \param likelihood Header
PolygonArray(const HeaderType &header,
const ContainerType<PolygonType> &polygons,
const ContainerType<uint32_t> &labels,
const ContainerType<_Float32> &likelihood)
: _header(header)
, _polygons(polygons)
, _labels(labels)
, _likelihood(likelihood)
{}
const HeaderType *getHeader() const {return _header;}
const ContainerType<PolygonType> *getPolygons() const {return _polygons;}
const ContainerType<uint32_t> *getLabels() const {return _labels;}
const ContainerType<_Float32> *getLikelihood() const {return _likelihood;}
const HeaderType &header() const {return _header;}
HeaderType &header() {return _header;}
const ContainerType<PolygonType> &polygons() const {return _polygons;}
ContainerType<PolygonType> &polygons() {return _polygons;}
const ContainerType<uint32_t> &labels() const {return _labels;}
ContainerType<uint32_t> &labels() {return _labels;}
const ContainerType<_Float32> &likelyhood() const {return _likelihood;}
ContainerType<_Float32> &likelyhood() {return _likelihood;}
void *setHeader (const HeaderType *header) {_header = header;}
void *setPolygons (const ContainerType<PolygonType> *polygon) {_polygons = polygon;}
void *setLabels (const ContainerType<uint32_t> *labels) {_labels = labels;}
void *setLikelihood (const ContainerType<_Float32> *likelihood) {_likelihood = likelihood;}
void setHeader (const HeaderType &header) {_header = &header;}
void setPolygons (ContainerType<PolygonType> &polygon) { _polygons = polygon; }
void setLabels (const ContainerType<uint32_t> &labels) {_labels = labels;}
void setLikelihood (const ContainerType<_Float32> &likelihood) {_likelihood = likelihood;}
private:
HeaderType *_header;
ContainerType<PolygonType> *_polygons;
ContainerType<uint32_t> *_labels;
ContainerType<_Float32> *_likelihood;
HeaderType _header;
ContainerType<PolygonType> _polygons;
ContainerType<uint32_t> _labels;
ContainerType<_Float32> _likelihood;
};
namespace PAdetail {
//! Helper functions to generate Json entries for labels and likelihood.
//! \note \p p has member \fn labels().
template <class PolygonArrayType, int k>
void labelsToJson(const PolygonArrayType &p, rapidjson::Value &labels, rapidjson::Document::AllocatorType &allocator, Int2Type<k>){
for(unsigned long i=0; i < (unsigned long)p.labels().size(); ++i)
labels.PushBack(rapidjson::Value().SetUint(p.labels()[i]), allocator);
}
//! \note \p p has no member \fn labels().
template <class PolygonArrayType>
void labelsToJson(const PolygonArrayType &p, rapidjson::Value &labels, rapidjson::Document::AllocatorType &allocator, Int2Type<0>){
for(unsigned long i=0; i < (unsigned long)(p.polygons().size()); ++i)
labels.PushBack(rapidjson::Value().SetUint(0), allocator); // use zero!
}
//! \note \p p has member \fn likelihood().
template <class PolygonArrayType, int k>
void likelihoodToJson(const PolygonArrayType &p, rapidjson::Value &likelyhood, rapidjson::Document::AllocatorType &allocator, Int2Type<k>){
for(unsigned long i=0; i < (unsigned long)p.likelyhood().size(); ++i)
likelyhood.PushBack(rapidjson::Value().SetFloat(p.likelyhood()[i]), allocator);
}
//! \note \p p has no member \fn likelihood().
template <class PolygonArrayType>
void likelihoodToJson(const PolygonArrayType &p, rapidjson::Value &likelyhood, rapidjson::Document::AllocatorType &allocator, Int2Type<0>){
for(unsigned long i=0; i < (unsigned long)p.polygons().size(); ++i)
likelyhood.PushBack(rapidjson::Value().SetFloat(0), allocator); // use zero!
}
}
//!
//! Create PolygonArray message from \p p. \p p contains a header.
//! \param p Class implementing the PolygonArrayType interface.
//! \param doc Rapidjson document used to store the PolygonArray message.
//! \param allocator Allocator used by doc. Can be obtained e.g. by calling doc.getAllocator().
//!
//! \note The \fn labels() and \fn likelihood() members are optinal. If any of them is missing they
//! will be replaced by arrays filled with zero and size p.polygons.size().
//!
//! \note If this function is called p.polygons[i] (entries implement the the PolygonStampedGroup interface)
//! must contain a header.
template <class PolygonArrayType>
bool toJson(const PolygonArrayType &p, rapidjson::Document &doc, rapidjson::Document::AllocatorType &allocator)
{
rapidjson::Document header(rapidjson::kObjectType);
if (Header::toJson(p.header(), header, allocator))
return false;
doc.AddMember("header", header, allocator);
rapidjson::Value polygons(rapidjson::kArrayType);
for(unsigned long i=0; i < p.polygons().size(); ++i){
rapidjson::Document polygon(rapidjson::kObjectType);
if (!PolygonStamped::toJson(p.polygons[i], polygon, allocator))
return false;
polygons.PushBack(polygon, allocator);
}
doc.AddMember("polygons", polygons, allocator);
rapidjson::Value labels(rapidjson::kArrayType);
typedef HasMemberLabels<PolygonArrayType> HasLabels;
PAdetail::labelsToJson(p, labels, allocator, Int2Type<HasLabels::value>());
doc.AddMember("labels", labels, allocator);
rapidjson::Value likelihood(rapidjson::kArrayType);
typedef HasMemberLikelihood<PolygonArrayType> HasLikelihood;
PAdetail::likelihoodToJson(p, likelihood, allocator, Int2Type<HasLikelihood::value>());
doc.AddMember("likelihood", likelihood, allocator);
return true;
}
//!
//! Create PolygonArray message from \p p and \p h. \p p doesn't have it's own header.
//! \param p Class implementing the PolygonArrayType interface.
//! \param h Class implementing the HeaderType interface.
//! \param doc Rapidjson document used to store the PolygonArray message.
//! \param allocator Allocator used by doc. Can be obtained e.g. by calling doc.getAllocator().
//!
//! \note The \fn labels() and \fn likelihood() members are optinal. If any of them is missing they
//! will be replaced by arrays filled with zero and size p.polygons.size().
//!
//! \note If this function is called the headers in p.polygons[i] (entries implement the the PolygonStampedGroup interface)
//! are ignored.
template <class PolygonArrayType, class HeaderType>
bool toJson(const PolygonArrayType &p, const HeaderType &h, rapidjson::Document &doc, rapidjson::Document::AllocatorType &allocator)
{
rapidjson::Document header(rapidjson::kObjectType);
if (!Header::toJson(h, header, allocator))
return false;
doc.AddMember("header", header, allocator);
rapidjson::Value polygons(rapidjson::kArrayType);
for(unsigned long i=0; i < (unsigned long)(p.polygons().size()); ++i){
rapidjson::Document polygon(rapidjson::kObjectType);
if (!PolygonStamped::toJson(p.polygons()[i], h, polygon, allocator))
return false;
polygons.PushBack(polygon, allocator);
}
doc.AddMember("polygons", polygons, allocator);
rapidjson::Value labels(rapidjson::kArrayType);
typedef HasMemberLabels<PolygonArrayType> HasLabels;
PAdetail::labelsToJson(p, labels, allocator, Int2Type<HasLabels::value>());
doc.AddMember("labels", labels, allocator);
rapidjson::Value likelihood(rapidjson::kArrayType);
typedef HasMemberLikelihood<PolygonArrayType> HasLikelihood;
PAdetail::likelihoodToJson(p, likelihood, allocator, Int2Type<HasLikelihood::value>());
doc.AddMember("likelihood", likelihood, allocator);
return true;
}
}
}
#endif // MESSAGES_H
......@@ -67,4 +67,15 @@ private:
bool _isInitialized;
};
template <typename T>
struct Type2Type{
typedef T OriginalType;
};
template <int k>
struct Int2Type{
enum {value = k};
};
#endif // UTILITIES_H
......@@ -58,9 +58,6 @@
#include <iostream>
#include "QGCMapEngine.h"
// Snake
#include "Wima/WimaControllerDetail.h"
/* SDL does ugly things to main() */
#ifdef main
#undef main
......@@ -253,9 +250,6 @@ int main(int argc, char *argv[])
// on in the code.
qRegisterMetaType<QList<QPair<QByteArray,QByteArray> > >();
// Snake (Is this the right place for the following statement?)
//qRegisterMetaType<WorkerResult_t>("WorkerResult");
app->_initCommon();
//-- Initialize Cache System
getQGCMapEngine()->init();
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment