mwp and Geozones#
+Introduction#
+Since mwp 7.32.?, mwp provides a UI for the Geozones function that will / may appear in INAV 8.0.0 (or later). As the technical details for this feature has not yet been made publicly available, the implementation described below should be considered experimental.
+Geozones provides a set of geographical shapes that the FC can navigate around, characterised by:
+-
+
-
+
Shape
+-
+
- Circular +
- Polygon +
+ -
+
Type
+-
+
- Exclusive +
- Inclusive +
+ -
+
Action
+-
+
- None +
- Avoid +
- Poshold +
- RTH +
+
The effect these parameters have an FC behaviour will, presumably, be made available once the Geozones function is publicly available.
+mwp User interface#
+Menu options#
+mwp adds a Geozones menu option, with suboptions:
+ +Note that the Save, Export, Clear, Downlaod and Upload options are not sensitive if no geozone is loaded. Once a geozone is loaded, some or all of these options will be enabled. The MSP options are only enabled if the FC offers feature GEOZONE
.
Note that if feature GEOZONE
is present, nwp will attempt to load Geozones from the FC unless the setting autoload-geozones
is false, e.g.:
gsettings set org.mwptools.planner autoload-geozones false
+
+User Interface#
+-
+
- Open, Save: Expects a textual definition in INAV CLI format +
- Export: Exports a loaded Geozone to KML. Geozone specific parameters are stored in the KML such that the original Geozone could be reproduced. +
Editor#
+ +The icons along the top are:
+-
+
- "+": Create a new zone +
- "<" : Move to previous zone +
- ">" : Move to next zone +
- "-" : Delete current zone +
- Refresh : Refresh display / Start editing new zone +
If there is no Geozone loaded, the editor is as shown at the "new zone" state: the "Shape" item is enabled and a note explains how to proceed. Note that to create a circular zone, the radius must be non-zero. If the "Shape" item is set to "Polygon", then no radius is required to proceed.
+ +Once the required details have been entered, pressing refresh draws the template shape. circle has a dragable centre and editable radius.
+ +A polygon has 3 points (the mimimum), each of which can be dragged.
+ +Additional points can be added by clicking on the map, or immediately in front of an existing point from the right mouse menu.
+ +With multiple zones loaded (or created), the user can switch between zones using the <
and >
icons.
Zone Colours#
+mwp sets line and fill characteristics for GeoZones according to the zone's type
and action
.
The default values are set as:
+Type | +Action | +Line | +Fill | +
---|---|---|---|
Exclusive | +None | +red 4 4 | ++ |
Exclusive | +Avoid | +red 4 | +red | +
Exclusive | +PosHold | +red 10 | +red | +
Exclusive | +RTH | +red 10 | +red | +
Inclusive | +None | +green 4 4 | ++ |
Inclusive | +Avoid | +green 4 | ++ |
Inclusive | +PosHold | +green 10 | ++ |
Inclusive | +RTH | +green 10 | +green | +
The values after the line colour are line width and optional dash width.
+The default colours are those suggested by the user who requested that mwp support GeoZones.
+The default "red" and "green" colours have some opacity set:
+Type | +Value | +
---|---|
Line red | +rgba(255,0,0,0.625) |
+
Fill red | +rgba(255,0,0,0.125) |
+
Line green | +rgba(0,255,0,0.625) |
+
Fill green | +rgba(0,255,0,0.125) |
+
Where line width is greater than 10, the opacity is further reduced by 20% to satisfy the author's aesthetic opinion.
+User definition#
+The user may specify their own colours by creating a pipe separated file, $HOME/.config/mwp/zone_colours
. This is a text file of the format:
type|action|line_colour|line_width|line_dash|fill_colour
+
+User definition fields:#
+Type: The zone type as an integer (0-1 : Exclusive / Inclusive)
+Action: The zone action as an integer (0-3 : None / Avoid / Poshold / RTH).
+Line Colour: see below for colour formats
+Line Width: In pixels, as an integer
+Line Dash: In pixels, as an integer; the line will alternate on/off using this value.
+Fill Colour: see below for colour formats
+Colour defintion#
+Colours may be defined as:
+-
+
-
+
A standard name (taken from the X11 "rgb.txt" file) ; or
+
+ -
+
A hexadecimal value in the form
+#rrggbb
or#rrggbbaa
; or
+ - A RGB colour in the form
rgb(r,g,b)
); orrgba(r,g,b,a)
+
Where r
, g
, b
and a
are respectively the red, green, blue and alpha colour values. In the "rgb()
" format, r
, g
, and b
are either integers in the range 0 to 255 or percentage values in the range 0% to 100%, and a
is a floating point value in the range 0 to 1.
If the alpha component is not specified then it is set to be fully opaque.
+For "standard X11 names", an opacity may be defined by appending a floating point value in the range 0 to 1.0 to the name, separated by a semi-colon, for example steelblue;0.8
Example: default settings as zone_colours
file#
+The default settings can bee represented in a zone_colours
file as:
0|0|rgba(255,0,0,0.625)|4|4|
+0|1|rgba(255,0,0,0.625)|4|0|rgba(255,0,0,0.125)
+0|2|rgba(255,0,0,0.625)|10|0|rgba(255,0,0,0.125)
+0|3|rgba(255,0,0,0.625)|10|0|rgba(255,0,0,0.125)
+1|0|rgba(0,255,0,0.625)|4|4|
+1|1|rgba(0,255,0,0.625)|4|0|
+1|2|rgba(0,255,0,0.625)|10|0|
+1|3|rgba(0,255,0,0.625)|10|0|rgba(0,255,0,0.125)
+
+Where fill is not required, it is left blank.
+If a line cannot be parsed, an error will the logged, giving the offending line number(s).
+Blank lines and comment lines (starting with #
or ;
) are ignored.
Please also note that floating point values must be specified with a point (.
), even when the locale customary format would use comma (,
).
Alternate colour expressions for the first line above are therefore:
+0|0|red;0.625|4|4|
+0|0|#ff0000a0|4|4|
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+