Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Q
qgroundcontrol
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Valentin Platzgummer
qgroundcontrol
Commits
8bab7d7a
Unverified
Commit
8bab7d7a
authored
Aug 15, 2019
by
Don Gagne
Committed by
GitHub
Aug 15, 2019
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master' into LogReplay
parents
03202ab6
da6b87e1
Changes
20
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
20 changed files
with
1000 additions
and
616 deletions
+1000
-616
ChangeLog.md
ChangeLog.md
+1
-0
CustomFlyView.qml
custom-example/res/CustomFlyView.qml
+20
-0
qgcimages.qrc
qgcimages.qrc
+3
-1
qgroundcontrol.pro
qgroundcontrol.pro
+2
-0
HITL.svg
src/AutoPilotPlugins/PX4/Images/HITL.svg
+47
-0
LandMode.svg
src/AutoPilotPlugins/PX4/Images/LandMode.svg
+11
-13
LandModeCopter.svg
src/AutoPilotPlugins/PX4/Images/LandModeCopter.svg
+28
-59
ObjectAvoidance.svg
src/AutoPilotPlugins/PX4/Images/ObjectAvoidance.svg
+78
-0
ReturnToHomeAltitude.svg
src/AutoPilotPlugins/PX4/Images/ReturnToHomeAltitude.svg
+1
-1
ReturnToHomeAltitudeCopter.svg
...utoPilotPlugins/PX4/Images/ReturnToHomeAltitudeCopter.svg
+22
-46
SafetyComponent.cc
src/AutoPilotPlugins/PX4/SafetyComponent.cc
+1
-1
SafetyComponent.qml
src/AutoPilotPlugins/PX4/SafetyComponent.qml
+547
-460
Fact.h
src/FactSystem/Fact.h
+5
-5
FlightDisplayViewMap.qml
src/FlightDisplay/FlightDisplayViewMap.qml
+1
-1
QGCApplication.cc
src/QGCApplication.cc
+14
-12
QGCColoredImage.qml
src/QmlControls/QGCColoredImage.qml
+11
-10
Vehicle.cc
src/Vehicle/Vehicle.cc
+14
-2
Vehicle.h
src/Vehicle/Vehicle.h
+10
-5
VehicleObjectAvoidance.cc
src/Vehicle/VehicleObjectAvoidance.cc
+117
-0
VehicleObjectAvoidance.h
src/Vehicle/VehicleObjectAvoidance.h
+67
-0
No files found.
ChangeLog.md
View file @
8bab7d7a
...
...
@@ -7,6 +7,7 @@ Note: This file only contains high level features or important fixes.
### 3.6.0 - Daily Build
*
Log Replay: Support changing speed of playback
*
Basic object avoidance added to vehicles.
*
Added ability to set a joystick button to be single action or repeated action while the button is held down.
*
Rework joysticks. Fixed several issues and updated setup UI.
*
Adding support for UDP RTP h.265 video streams
...
...
custom-example/res/CustomFlyView.qml
View file @
8bab7d7a
...
...
@@ -604,6 +604,26 @@ Item {
}
}
//-------------------------------------------------------------------------
//-- Object Avoidance
Item
{
visible
:
activeVehicle
&&
activeVehicle
.
objectAvoidance
.
available
&&
activeVehicle
.
objectAvoidance
.
enabled
anchors.centerIn
:
parent
width
:
parent
.
width
*
0.5
height
:
parent
.
height
*
0.5
Repeater
{
model
:
activeVehicle
&&
activeVehicle
.
objectAvoidance
.
gridSize
>
0
?
activeVehicle
.
objectAvoidance
.
gridSize
:
[]
Rectangle
{
width
:
ScreenTools
.
defaultFontPixelWidth
height
:
width
radius
:
width
*
0.5
color
:
distance
<
0.25
?
"
red
"
:
"
orange
"
x
:
(
parent
.
width
*
activeVehicle
.
objectAvoidance
.
grid
(
modelData
).
x
)
+
(
parent
.
width
*
0.5
)
y
:
(
parent
.
height
*
activeVehicle
.
objectAvoidance
.
grid
(
modelData
).
y
)
+
(
parent
.
height
*
0.5
)
property
real
distance
:
activeVehicle
.
objectAvoidance
.
distance
(
modelData
)
}
}
}
//-------------------------------------------------------------------------
//-- Connection Lost While Armed
Popup
{
id
:
connectionLostArmed
...
...
qgcimages.qrc
View file @
8bab7d7a
<RCC>
<qresource prefix="/qmlimages">
<file alias="camera.svg">resources/camera.svg</file>
<file alias="adsbVehicle.svg">src/FlightMap/Images/adsbVehicle.svg</file>
<file alias="Airframe/AirframeSimulation">src/AutoPilotPlugins/Common/Images/AirframeSimulation.svg</file>
<file alias="Airframe/AirframeUnknown">src/AutoPilotPlugins/Common/Images/AirframeUnknown.svg</file>
...
...
@@ -59,6 +58,7 @@
<file alias="attitudePointer.svg">src/FlightMap/Images/attitudePointer.svg</file>
<file alias="AwarenessAircraft.svg">src/FlightMap/Images/AwarenessAircraft.svg</file>
<file alias="Battery.svg">src/ui/toolbar/Images/Battery.svg</file>
<file alias="camera.svg">resources/camera.svg</file>
<file alias="camera_photo.svg">src/Camera/images/camera_photo.svg</file>
<file alias="camera_video.svg">src/Camera/images/camera_video.svg</file>
<file alias="CameraComponentIcon.png">src/AutoPilotPlugins/PX4/Images/CameraComponentIcon.png</file>
...
...
@@ -91,6 +91,7 @@
<file alias="Hamburger.svg">src/ui/toolbar/Images/Hamburger.svg</file>
<file alias="Help.svg">src/FlightMap/Images/Help.svg</file>
<file alias="HelpBlack.svg">src/FlightMap/Images/HelpBlack.svg</file>
<file alias="HITL.svg">src/AutoPilotPlugins/PX4/Images/HITL.svg</file>
<file alias="Home.svg">src/FlightMap/Images/Home.svg</file>
<file alias="Joystick.png">src/ui/toolbar/Images/Joystick.png</file>
<file alias="LandMode.svg">src/AutoPilotPlugins/PX4/Images/LandMode.svg</file>
...
...
@@ -117,6 +118,7 @@
<file alias="MotorComponentIcon.svg">src/AutoPilotPlugins/Common/Images/MotorComponentIcon.svg</file>
<file alias="no-logging-light.svg">src/AutoPilotPlugins/PX4/Images/no-logging-light.svg</file>
<file alias="no-logging.svg">src/AutoPilotPlugins/PX4/Images/no-logging.svg</file>
<file alias="ObjectAvoidance.svg">src/AutoPilotPlugins/PX4/Images/ObjectAvoidance.svg</file>
<file alias="PaperPlane.svg">src/ui/toolbar/Images/PaperPlane.svg</file>
<file alias="PiP.svg">src/FlightMap/Images/PiP.svg</file>
<file alias="pipHide.svg">src/FlightMap/Images/pipHide.svg</file>
...
...
qgroundcontrol.pro
View file @
8bab7d7a
...
...
@@ -855,6 +855,7 @@ HEADERS+= \
src
/
Vehicle
/
MultiVehicleManager
.
h
\
src
/
Vehicle
/
GPSRTKFactGroup
.
h
\
src
/
Vehicle
/
Vehicle
.
h
\
src
/
Vehicle
/
VehicleObjectAvoidance
.
h
\
src
/
VehicleSetup
/
VehicleComponent
.
h
\
!
MobileBuild
{
!
NoSerialBuild
{
...
...
@@ -881,6 +882,7 @@ SOURCES += \
src
/
Vehicle
/
MultiVehicleManager
.
cc
\
src
/
Vehicle
/
GPSRTKFactGroup
.
cc
\
src
/
Vehicle
/
Vehicle
.
cc
\
src
/
Vehicle
/
VehicleObjectAvoidance
.
cc
\
src
/
VehicleSetup
/
VehicleComponent
.
cc
\
!
MobileBuild
{
!
NoSerialBuild
{
...
...
src/AutoPilotPlugins/PX4/Images/HITL.svg
0 → 100644
View file @
8bab7d7a
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 23.0.4, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg
version=
"1.1"
id=
"Layer_1"
xmlns=
"http://www.w3.org/2000/svg"
xmlns:xlink=
"http://www.w3.org/1999/xlink"
x=
"0px"
y=
"0px"
viewBox=
"0 0 288 288"
style=
"enable-background:new 0 0 288 288;"
xml:space=
"preserve"
>
<style
type=
"text/css"
>
.st0{fill:#FFFFFF;}
.st1{fill:#FFFFFF;stroke:#FFFFFF;}
.st2{fill:none;stroke:#FFFFFF;stroke-width:3;stroke-linecap:round;}
.st3{fill:none;stroke:#FFFFFF;stroke-width:3;}
.st4{fill:#FFFFFF;stroke:#FFFFFF;stroke-width:3;}
</style>
<g>
<path
class=
"st0"
d=
"M274.534,5.498H13.465C6.043,5.498,0,11.545,0,18.963v200.232c0,7.418,6.042,13.465,13.465,13.465h94.671
l-6.086,39.603H85.606c-2.825,0-5.12,2.294-5.12,5.115c0,2.83,2.294,5.124,5.12,5.124h116.789c2.83,0,5.124-2.294,5.124-5.124
c0-2.821-2.294-5.115-5.124-5.115h-16.594l-6.091-39.603h94.825c7.427,0,13.465-6.047,13.465-13.465V18.963
C287.999,11.545,281.961,5.498,274.534,5.498z M112.417,272.262l6.086-39.603h50.836l6.1,39.603H112.417z M277.76,222.411H10.244
v-39.814H277.76V222.411z M277.76,172.349H10.244V15.746H277.76V172.349z"
/>
<path
class=
"st0"
d=
"M144,209.843c4.447,0,8.068-3.621,8.068-8.068c0-4.447-3.621-8.068-8.068-8.068s-8.064,3.621-8.064,8.068
C135.936,206.222,139.553,209.843,144,209.843z"
/>
</g>
<g>
<g>
<g>
<path
id=
"path2991_3_"
class=
"st1"
d=
"M103.117,52.265c-0.629,3.062-4.237,4.993-8.034,4.185c-3.8-0.811-6.185-4.017-5.35-7.037
c0.835-3.02,4.405-4.745,7.999-3.982C101.323,46.2,103.746,49.204,103.117,52.265z"
/>
<path
id=
"path3761_3_"
class=
"st2"
d=
"M96.75,68.016c-12.195-0.512-21.83-9.625-20.95-19.012
c0.88-9.387,10.501-15.603,20.916-15.067c10.415,0.536,19.077,7.687,19.974,17.05c0.216,2.264-0.089,4.532-0.952,6.663"
/>
<path
id=
"path2991-6_3_"
class=
"st1"
d=
"M192.972,56.45c-3.8,0.811-7.408-1.12-8.034-4.185c-0.629-3.062,1.794-6.068,5.388-6.834
c3.594-0.766,7.164,0.962,7.999,3.982C199.157,52.434,196.772,55.643,192.972,56.45z"
/>
<path
id=
"path3761-1_3_"
class=
"st2"
d=
"M172.269,57.533c-3.477-8.831,2.261-18.332,11.889-22.067
c9.625-3.735,20.802-0.814,25.919,7.267c5.116,8.082,0.962,18.995-10.305,23.482c-2.725,1.086-5.676,1.704-8.625,1.807"
/>
<path
id=
"path2991-9_3_"
class=
"st1"
d=
"M200.916,130.179c-0.629-3.062,2.969-6.278,8.01-7.35
c5.037-1.072,9.772,0.368,10.604,3.385c0.835,3.02-2.715,6.515-7.958,7.632S201.545,133.244,200.916,130.179z"
/>
<path
id=
"path3761-2_3_"
class=
"st2"
d=
"M201.225,113.174c13.889-4.567,29.125-2.852,35.069,4.972
c5.945,7.824-0.904,19.658-16.404,25.125s-32.437,1.68-36.77-7.047c-1.048-2.11-1.33-4.381-0.88-6.673"
/>
<path
id=
"path2991-6-9_3_"
class=
"st1"
d=
"M79.13,122.829c5.037,1.072,8.635,4.288,8.01,7.35
c-0.629,3.062-5.412,4.783-10.655,3.666c-5.244-1.117-8.79-4.615-7.958-7.632C69.357,123.197,74.092,121.757,79.13,122.829z"
/>
<path
id=
"path3761-1-5_3_"
class=
"st2"
d=
"M105.835,129.678c1.752,9.47-9.7,17.39-26.156,16.047
c-16.456-1.344-30.155-11.662-30.1-21.304c0.052-9.642,12.363-14.94,27.015-13.425c3.546,0.368,7.072,1.124,10.425,2.244"
/>
</g>
<path
class=
"st3"
d=
"M77.803,128.338c44.532-18.558,83.381-38.595,113.846-77.395"
/>
<path
class=
"st3"
d=
"M210.262,128.338c-44.532-18.558-83.381-38.595-113.849-77.395"
/>
<path
class=
"st4"
d=
"M176.661,93.677c1.68,12.408-12.889,24.599-32.633,24.599s-34.313-12.191-32.633-24.599
c1.68-12.408,16.256-20.699,32.633-20.699S174.977,81.266,176.661,93.677z"
/>
</g>
</g>
</svg>
src/AutoPilotPlugins/PX4/Images/LandMode.svg
View file @
8bab7d7a
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator
19.2.1
, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!-- Generator: Adobe Illustrator
23.0.4
, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg
version=
"1.1"
id=
"Layer_1"
xmlns=
"http://www.w3.org/2000/svg"
xmlns:xlink=
"http://www.w3.org/1999/xlink"
x=
"0px"
y=
"0px"
viewBox=
"0 0
39.07 60.197"
style=
"enable-background:new 0 0 39.07 60.197
;"
xml:space=
"preserve"
>
viewBox=
"0 0
72 72"
style=
"enable-background:new 0 0 72 72
;"
xml:space=
"preserve"
>
<style
type=
"text/css"
>
.st0{fill:#FFFFFF;}
.st1{fill:none;stroke:#FFFFFF;stroke-miterlimit:10;}
.st2{fill:none;stroke:#FFFFFF;stroke-miterlimit:10;stroke-dasharray:3.0018,3.0018;}
</style>
<path
class=
"st0"
d=
"M39.022,8.423c0.114,0.401,0.022,0.755-0.277,1.064l-6.363,6.092l-1.061,7.694
c-0.072,0.405-0.29,0.681-0.654,0.828c-0.364,0.147-0.713,0.099-1.045-0.143l-3.348-2.531l-7.891,7.554
c-0.105,0.089-0.218,0.159-0.34,0.207c-0.162,0.065-0.34,0.09-0.534,0.074c-0.308-0.064-0.56-0.221-0.755-0.472L0.157,1.617
c-0.22-0.429-0.209-0.81,0.033-1.142c0.113-0.187,0.271-0.321,0.473-0.402s0.409-0.094,0.62-0.038l36.96,7.68
C38.648,7.786,38.908,8.023,39.022,8.423L39.022,8.423z M7.294,3.397L30.75,14.332l0.067-0.097c0.044-0.065,0.079-0.126,0.103-0.183
l4.933-4.74L7.294,3.397z M3.952,2.98l25.516,18.148l0.823-5.835L3.952,2.98z M4.649,4.886l13.253,21.679l6.909-6.665
c0.146-0.106,0.332-0.228,0.558-0.366L4.649,4.886z"
/>
<path
class=
"st0"
d=
"M59.2,10.2c0.1,0.5,0,0.9-0.3,1.3l-7.6,7.3L50,27.9c-0.1,0.5-0.3,0.8-0.8,1C48.8,29,48.4,29,48,28.7l-4-3
l-9.4,9c-0.1,0.1-0.3,0.2-0.4,0.2C34,35,33.8,35,33.6,35c-0.4-0.1-0.7-0.3-0.9-0.6L12.9,2.1c-0.3-0.5-0.2-1,0-1.4
c0.1-0.2,0.3-0.4,0.6-0.5s0.5-0.1,0.7,0l44,9.1C58.7,9.4,59.1,9.7,59.2,10.2L59.2,10.2z M21.4,4.2l27.9,13l0.1-0.1
c0.1-0.1,0.1-0.1,0.1-0.2l5.9-5.6L21.4,4.2z M17.5,3.7l30.4,21.6l1-6.9L17.5,3.7z M18.3,6l15.8,25.8l8.2-7.9
c0.2-0.1,0.4-0.3,0.7-0.4L18.3,6z"
/>
<g>
<g>
<line
class=
"st1"
x1=
"
19.535"
y1=
"54.901"
x2=
"19.535"
y2=
"53.401
"
/>
<line
class=
"st2"
x1=
"
19.535"
y1=
"50.4"
x2=
"19.535"
y2=
"33.89
"
/>
<line
class=
"st1"
x1=
"
19.535"
y1=
"32.389"
x2=
"19.535"
y2=
"30.88
9"
/>
<line
class=
"st1"
x1=
"
36"
y1=
"65.5"
x2=
"36"
y2=
"63.7
"
/>
<line
class=
"st2"
x1=
"
36"
y1=
"60.2"
x2=
"36"
y2=
"40.5
"
/>
<line
class=
"st1"
x1=
"
36"
y1=
"38.7"
x2=
"36"
y2=
"36.
9"
/>
<g>
<polygon
class=
"st0"
points=
"
19.535,60.197 22.584,52.735 19.535,54.506 16.486,52.735
"
/>
<polygon
class=
"st0"
points=
"
36,71.8 39.6,62.9 36,65 32.4,62.9
"
/>
</g>
</g>
</g>
...
...
src/AutoPilotPlugins/PX4/Images/LandModeCopter.svg
View file @
8bab7d7a
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator
19.2.1
, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!-- Generator: Adobe Illustrator
23.0.4
, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg
version=
"1.1"
id=
"Layer_1"
xmlns=
"http://www.w3.org/2000/svg"
xmlns:xlink=
"http://www.w3.org/1999/xlink"
x=
"0px"
y=
"0px"
viewBox=
"0 0
59.671 87.808"
style=
"enable-background:new 0 0 59.671 87.808
;"
xml:space=
"preserve"
>
viewBox=
"0 0
72 72"
style=
"enable-background:new 0 0 72 72
;"
xml:space=
"preserve"
>
<style
type=
"text/css"
>
.st0{fill:none;stroke:#FFFFFF;stroke-
width:2;stroke-
miterlimit:10;}
.st1{fill:none;stroke:#FFFFFF;stroke-
width:2;stroke-miterlimit:10;stroke-dasharray:2.8321,2.8321
;}
.st0{fill:none;stroke:#FFFFFF;stroke-miterlimit:10;}
.st1{fill:none;stroke:#FFFFFF;stroke-
miterlimit:10;stroke-dasharray:3.0018,3.0018
;}
.st2{fill:#FFFFFF;}
.st3{fill:#FFFFFF;stroke:#FFFFFF;}
.st4{fill:none;stroke:#FFFFFF;stroke-width:3;stroke-linecap:round;}
...
...
@@ -13,69 +13,38 @@
</style>
<g>
<g>
<line
class=
"st0"
x1=
"
29.835"
y1=
"77.217"
x2=
"29.835"
y2=
"75.71
7"
/>
<line
class=
"st1"
x1=
"
29.835"
y1=
"72.885"
x2=
"29.835"
y2=
"40.31
5"
/>
<line
class=
"st0"
x1=
"
29.835"
y1=
"38.899"
x2=
"29.835"
y2=
"37.39
9"
/>
<line
class=
"st0"
x1=
"
36"
y1=
"65.5"
x2=
"36"
y2=
"63.
7"
/>
<line
class=
"st1"
x1=
"
36"
y1=
"60.2"
x2=
"36"
y2=
"40.
5"
/>
<line
class=
"st0"
x1=
"
36"
y1=
"38.7"
x2=
"36"
y2=
"36.
9"
/>
<g>
<polygon
class=
"st2"
points=
"
29.835,87.808 35.934,72.884 29.835,76.425 23.739,72.884
"
/>
<polygon
class=
"st2"
points=
"
36,71.8 39.6,62.9 36,65 32.4,62.9
"
/>
</g>
</g>
</g>
<sodipodi:namedview
bordercolor=
"#666666"
borderopacity=
"1.0"
id=
"base"
inkscape:current-layer=
"layer1"
inkscape:cx=
"282.69484"
inkscape:cy=
"221.0125"
inkscape:document-units=
"px"
inkscape:guide-bbox=
"true"
inkscape:pageopacity=
"0.0"
inkscape:pageshadow=
"2"
inkscape:window-height=
"1017"
inkscape:window-maximized=
"1"
inkscape:window-width=
"1920"
inkscape:window-x=
"-8"
inkscape:window-y=
"-8"
inkscape:zoom=
"2.8"
pagecolor=
"#ffffff"
showgrid=
"true"
showguides=
"true"
>
<sodipodi:guide
id=
"guide2985"
orientation=
"1,0"
position=
"250,420"
></sodipodi:guide>
<inkscape:grid
empspacing=
"10"
enabled=
"true"
id=
"grid2987"
snapvisiblegridlinesonly=
"true"
type=
"xygrid"
visible=
"true"
>
</inkscape:grid>
<sodipodi:guide
id=
"guide2989"
orientation=
"0,1"
position=
"270,250"
></sodipodi:guide>
</sodipodi:namedview>
<g>
<defs>
<inkscape:path-effect
copytype=
"repeated"
effect=
"skeletal"
fuse_tolerance=
"0"
id=
"path-effect4881"
is_visible=
"true"
normal_offset=
"0"
pattern=
"M 0,0 1,0"
prop_scale=
"1"
prop_units=
"false"
scale_y_rel=
"false"
spacing=
"0"
tang_offset=
"0"
vertical_pattern=
"false"
>
</inkscape:path-effect>
<inkscape:path-effect
bendpath=
"m 110,180 140,0"
effect=
"bend_path"
id=
"path-effect3765"
is_visible=
"true"
prop_scale=
"1"
scale_y_rel=
"false"
vertical=
"false"
>
</inkscape:path-effect>
</defs>
<g>
<g>
<path
id=
"path2991_3_"
sodipodi:cx=
"110"
sodipodi:cy=
"110"
sodipodi:rx=
"20"
sodipodi:ry=
"20"
sodipodi:type=
"arc"
class=
"st3"
d=
"
M18.734,7.918c-0.169,0.83-1.147,1.355-2.178,1.136c-1.031-0.218-1.679-1.087-1.455-1.906c0.225-0.819,1.193-1.288,2.168-1.081
C18.245,6.273,18.903,7.087,18.734,7.918z"
/>
<path
id=
"path3761_3_"
sodipodi:cx=
"110"
sodipodi:cy=
"110"
sodipodi:end=
"6.4866523"
sodipodi:open=
"true"
sodipodi:rx=
"50"
sodipodi:ry=
"50"
sodipodi:start=
"1.374765"
sodipodi:type=
"arc"
class=
"st4"
d=
"
M17.012,12.188c-3.308-0.136-5.924-2.602-5.69-5.147c0.234-2.545,2.84-4.234,5.668-4.091s5.181,2.08,5.427,4.618
c0.059,0.614-0.023,1.229-0.256,1.807"
/>
<path
id=
"path2991-6_3_"
inkscape:transform-center-x=
"-140.5"
inkscape:transform-center-y=
"-140.5"
sodipodi:cx=
"110"
sodipodi:cy=
"110"
sodipodi:rx=
"20"
sodipodi:ry=
"20"
sodipodi:type=
"arc"
class=
"st3"
d=
"
M43.115,9.054c-1.031,0.218-2.009-0.306-2.178-1.136c-0.169-0.83,0.489-1.644,1.464-1.851c0.976-0.207,1.944,0.263,2.168,1.081
C44.794,7.967,44.146,8.835,43.115,9.054z"
/>
<path
id=
"path3761-1_3_"
inkscape:transform-center-x=
"-140.5"
inkscape:transform-center-y=
"-140.50478"
sodipodi:cx=
"110"
sodipodi:cy=
"110"
sodipodi:end=
"6.4866523"
sodipodi:open=
"true"
sodipodi:rx=
"50"
sodipodi:ry=
"50"
sodipodi:start=
"1.374765"
sodipodi:type=
"arc"
class=
"st4"
d=
"
M37.498,9.343c-0.942-2.394,0.618-4.969,3.233-5.979c2.615-1.011,5.647-0.216,7.03,1.977c1.384,2.192,0.25,5.149-2.807,6.362
c-0.74,0.293-1.54,0.46-2.34,0.488"
/>
<path
id=
"path2991-9_3_"
sodipodi:cx=
"110"
sodipodi:cy=
"110"
sodipodi:rx=
"20"
sodipodi:ry=
"20"
sodipodi:type=
"arc"
class=
"st3"
d=
"
M45.245,29.041c-0.169-0.83,0.806-1.701,2.171-1.99s2.647,0.103,2.872,0.921s-0.737,1.765-2.158,2.066
C46.71,30.34,45.415,29.872,45.245,29.041z"
/>
<path
id=
"path3761-2_3_"
sodipodi:cx=
"110"
sodipodi:cy=
"110"
sodipodi:end=
"6.4866523"
sodipodi:open=
"true"
sodipodi:rx=
"50"
sodipodi:ry=
"50"
sodipodi:start=
"1.374765"
sodipodi:type=
"arc"
class=
"st4"
d=
"
M45.334,24.432c3.764-1.233,7.892-0.762,9.499,1.362c1.607,2.124-0.252,5.327-4.451,6.802c-4.199,1.475-8.784,0.445-9.957-1.921
c-0.284-0.572-0.359-1.188-0.237-1.809"
/>
<path
id=
"path2991-6-9_3_"
inkscape:transform-center-x=
"140.5"
inkscape:transform-center-y=
"140.50002"
sodipodi:cx=
"110"
sodipodi:cy=
"110"
sodipodi:rx=
"20"
sodipodi:ry=
"20"
sodipodi:type=
"arc"
class=
"st3"
d=
"
M12.254,27.051c1.365,0.289,2.341,1.159,2.171,1.99c-0.169,0.83-1.465,1.298-2.885,0.997c-1.42-0.301-2.382-1.247-2.158-2.066
C9.608,27.154,10.889,26.762,12.254,27.051z"
/>
<path
id=
"path3761-1-5_3_"
inkscape:transform-center-x=
"140.5"
inkscape:transform-center-y=
"140.50476"
sodipodi:cx=
"110"
sodipodi:cy=
"110"
sodipodi:end=
"6.4866523"
sodipodi:open=
"true"
sodipodi:rx=
"50"
sodipodi:ry=
"50"
sodipodi:start=
"1.374765"
sodipodi:type=
"arc"
class=
"st4"
d=
"
M19.49,28.9c0.476,2.566-2.624,4.715-7.081,4.356c-4.457-0.359-8.169-3.149-8.159-5.762c0.01-2.613,3.343-4.056,7.313-3.651
c0.96,0.098,1.916,0.303,2.825,0.604"
/>
<path
id=
"path2991_3_"
class=
"st3"
d=
"M24.094,8.095c-0.183,0.891-1.233,1.453-2.338,1.218c-1.106-0.236-1.8-1.169-1.557-2.048
c0.243-0.879,1.282-1.381,2.328-1.159C23.572,6.33,24.277,7.204,24.094,8.095z"
/>
<path
id=
"path3761_3_"
class=
"st4"
d=
"M22.241,12.679c-3.549-0.149-6.353-2.801-6.097-5.533C16.4,4.414,19.2,2.605,22.231,2.761
s5.552,2.237,5.813,4.962c0.063,0.659-0.026,1.319-0.277,1.939"
/>
<path
id=
"path2991-6_3_"
class=
"st3"
d=
"M50.244,9.313c-1.106,0.236-2.156-0.326-2.338-1.218
c-0.183-0.891,0.522-1.766,1.568-1.989c1.046-0.223,2.085,0.28,2.328,1.159C52.044,8.144,51.35,9.078,50.244,9.313z"
/>
<path
id=
"path3761-1_3_"
class=
"st4"
d=
"M44.219,9.628c-1.012-2.57,0.658-5.335,3.46-6.422c2.801-1.087,6.054-0.237,7.543,2.115
c1.489,2.352,0.28,5.528-2.999,6.834c-0.793,0.316-1.652,0.496-2.51,0.526"
/>
<path
id=
"path2991-9_3_"
class=
"st3"
d=
"M52.556,30.77c-0.183-0.891,0.864-1.827,2.331-2.139
c1.466-0.312,2.844,0.107,3.086,0.985c0.243,0.879-0.79,1.896-2.316,2.221S52.739,31.662,52.556,30.77z"
/>
<path
id=
"path3761-2_3_"
class=
"st4"
d=
"M52.646,25.821c4.042-1.329,8.476-0.83,10.206,1.447c1.73,2.277-0.263,5.721-4.774,7.312
c-4.511,1.591-9.44,0.489-10.701-2.051c-0.305-0.614-0.387-1.275-0.256-1.942"
/>
<path
id=
"path2991-6-9_3_"
class=
"st3"
d=
"M17.113,28.631c1.466,0.312,2.513,1.248,2.331,2.139
c-0.183,0.891-1.575,1.392-3.101,1.067c-1.526-0.325-2.558-1.343-2.316-2.221C14.269,28.738,15.647,28.319,17.113,28.631z"
/>
<path
id=
"path3761-1-5_3_"
class=
"st4"
d=
"M24.885,30.624c0.51,2.756-2.823,5.061-7.612,4.67c-4.789-0.391-8.776-3.394-8.76-6.2
c0.015-2.806,3.598-4.348,7.862-3.907c1.032,0.107,2.058,0.327,3.034,0.653"
/>
</g>
<path
class=
"st5"
d=
"M1
1.897,28.545C23.883,24.596,34.911,17.522,42.758,7.56
"
/>
<path
class=
"st5"
d=
"M
47.777,28.545C35.791,24.596,24.763,17.522,16.915,7.56
"
/>
<path
class=
"st6"
d=
"M
38.681,19.141c0.453,3.364-3.496,6.665-8.845,6.665s-9.299-3.302-8.845-6.665
c0.4
53-3.364,4.404-5.613,8.845-5.613C34.276,13.527,38.228,15.777,38.681,19.141
z"
/>
<path
class=
"st5"
d=
"M1
6.727,30.234c12.96-5.401,24.266-11.232,33.132-22.524
"
/>
<path
class=
"st5"
d=
"M
55.276,30.234C42.316,24.833,31.01,19.002,22.143,7.71
"
/>
<path
class=
"st6"
d=
"M
45.497,20.147c0.489,3.611-3.751,7.159-9.497,7.159s-9.986-3.548-9.497-7.159
c0.4
89-3.611,4.731-6.024,9.497-6.024S45.007,16.535,45.497,20.147
z"
/>
</g>
</g>
</svg>
src/AutoPilotPlugins/PX4/Images/ObjectAvoidance.svg
0 → 100644
View file @
8bab7d7a
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 23.0.4, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg
version=
"1.1"
id=
"Layer_1"
xmlns=
"http://www.w3.org/2000/svg"
xmlns:xlink=
"http://www.w3.org/1999/xlink"
x=
"0px"
y=
"0px"
viewBox=
"0 0 288 144.29"
style=
"enable-background:new 0 0 288 144.29;"
xml:space=
"preserve"
>
<style
type=
"text/css"
>
.st0{opacity:0.5;}
.st1{fill:#FFFFFF;}
.st2{fill:none;stroke:#FFFFFF;stroke-width:4;stroke-miterlimit:10;}
.st3{fill:none;stroke:#FFFFFF;stroke-width:4;stroke-miterlimit:10;stroke-dasharray:3.0529,3.0529;}
.st4{fill:#FFFFFF;stroke:#FFFFFF;}
.st5{fill:none;stroke:#FFFFFF;stroke-width:3;stroke-linecap:round;}
.st6{fill:none;stroke:#FFFFFF;stroke-width:3;}
.st7{fill:#FFFFFF;stroke:#FFFFFF;stroke-width:3;}
</style>
<g>
<g
class=
"st0"
>
<title>
Layer 1
</title>
<g
id=
"layer1_1_"
>
<g
id=
"g4623_1_"
>
<path
id=
"rect2192_1_"
class=
"st1"
d=
"M57.675,110.412h9.17v19.439c-2.699,1.274-5.921,1.649-9.17,0V110.412z"
/>
<path
id=
"path1307_1_"
class=
"st1"
d=
"M94.904,112.711c-20.813-4.223-43.151,4.622-65.289,0
c15.091-13.843,19.439-41.726,32.631-56.543C72.941,70.585,79.588,98.868,94.904,112.711z"
/>
<path
id=
"path2183_1_"
class=
"st1"
d=
"M88.358,76.431c-16.641-3.373-34.506,3.699-52.196,0
c12.068-11.069,15.541-33.356,26.085-45.2C70.792,42.751,76.114,65.362,88.358,76.431z"
/>
<path
id=
"path2185_1_"
class=
"st1"
d=
"M82.386,47.572c-12.818-2.599-26.61,2.849-40.253,0
c9.32-8.545,11.993-25.736,20.139-34.855C68.844,21.611,72.941,39.052,82.386,47.572z"
/>
</g>
</g>
</g>
<g>
<title>
Layer 1
</title>
<g
id=
"layer1"
>
<g
id=
"g4623"
>
<path
id=
"rect2192"
class=
"st1"
d=
"M35.528,116.618h10.617v22.506c-3.124,1.476-6.856,1.909-10.617,0V116.618z"
/>
<path
id=
"path1307"
class=
"st1"
d=
"M78.63,119.28c-24.097-4.889-49.958,5.351-75.588,0c17.473-16.027,22.506-48.31,37.78-65.464
C53.203,70.507,60.897,103.253,78.63,119.28z"
/>
<path
id=
"path2183"
class=
"st1"
d=
"M71.051,77.277c-19.266-3.905-39.949,4.282-60.43,0
c13.973-12.815,17.994-38.619,30.201-52.331C50.715,38.281,56.876,64.462,71.051,77.277z"
/>
<path
id=
"path2185"
class=
"st1"
d=
"M64.138,43.864c-14.84-3.008-30.809,3.298-46.602,0c10.79-9.894,13.886-29.796,23.315-40.355
C48.458,13.809,53.203,34,64.138,43.864z"
/>
</g>
</g>
</g>
</g>
<g>
<line
class=
"st2"
x1=
"119.918"
y1=
"77.051"
x2=
"121.418"
y2=
"77.051"
/>
<line
class=
"st3"
x1=
"124.471"
y1=
"76.933"
x2=
"189.263"
y2=
"76.933"
/>
<g>
<polygon
class=
"st1"
points=
"98.737,77.051 128.584,89.248 121.502,77.051 128.584,64.858 "
/>
</g>
</g>
<g>
<g>
<g>
<path
id=
"path2991_3_"
class=
"st4"
d=
"M209.253,58.856c-0.317,1.544-2.136,2.517-4.051,2.11
c-1.916-0.409-3.119-2.025-2.698-3.548c0.421-1.523,2.221-2.393,4.034-2.008C208.348,55.797,209.57,57.312,209.253,58.856z"
/>
<path
id=
"path3761_3_"
class=
"st5"
d=
"M206.042,66.798c-6.149-0.258-11.007-4.853-10.564-9.587
c0.444-4.734,5.295-7.868,10.546-7.598c5.252,0.27,9.619,3.876,10.072,8.597c0.109,1.142-0.045,2.285-0.48,3.36"
/>
<path
id=
"path2991-6_3_"
class=
"st4"
d=
"M254.561,60.966c-1.916,0.409-3.736-0.565-4.051-2.11
c-0.317-1.544,0.904-3.06,2.717-3.446c1.812-0.386,3.613,0.485,4.034,2.008C257.679,58.94,256.477,60.559,254.561,60.966z"
/>
<path
id=
"path3761-1_3_"
class=
"st5"
d=
"M244.122,61.512c-1.753-4.453,1.14-9.244,5.995-11.127
c4.853-1.883,10.489-0.411,13.069,3.664s0.485,9.578-5.196,11.841c-1.374,0.548-2.862,0.859-4.349,0.911"
/>
<path
id=
"path2991-9_3_"
class=
"st4"
d=
"M258.566,98.143c-0.317-1.544,1.497-3.165,4.039-3.706
c2.54-0.541,4.928,0.185,5.347,1.707c0.421,1.523-1.369,3.285-4.013,3.848C261.295,100.554,258.883,99.688,258.566,98.143z"
/>
<path
id=
"path3761-2_3_"
class=
"st5"
d=
"M258.722,89.568c7.003-2.303,14.686-1.438,17.683,2.507
c2.997,3.945-0.456,9.912-8.271,12.669s-16.356,0.847-18.541-3.554c-0.528-1.064-0.671-2.209-0.444-3.365"
/>
<path
id=
"path2991-6-9_3_"
class=
"st4"
d=
"M197.157,94.437c2.54,0.541,4.354,2.162,4.039,3.706
c-0.317,1.544-2.729,2.412-5.373,1.849c-2.644-0.563-4.432-2.327-4.013-3.848C192.23,94.622,194.617,93.896,197.157,94.437z"
/>
<path
id=
"path3761-1-5_3_"
class=
"st5"
d=
"M210.623,97.89c0.884,4.775-4.891,8.769-13.189,8.091s-15.205-5.881-15.178-10.742
c0.026-4.862,6.234-7.533,13.622-6.769c1.788,0.185,3.566,0.567,5.257,1.131"
/>
</g>
<path
class=
"st6"
d=
"M196.489,97.214c22.455-9.358,42.044-19.461,57.405-39.025"
/>
<path
class=
"st6"
d=
"M263.279,97.214c-22.455-9.358-42.044-19.461-57.407-39.025"
/>
<path
class=
"st7"
d=
"M246.336,79.737c0.847,6.256-6.499,12.404-16.455,12.404s-17.302-6.147-16.455-12.404
c0.847-6.256,8.197-10.437,16.455-10.437S245.487,73.479,246.336,79.737z"
/>
</g>
</g>
</svg>
src/AutoPilotPlugins/PX4/Images/ReturnToHomeAltitude.svg
View file @
8bab7d7a
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator
19.2.1
, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!-- Generator: Adobe Illustrator
23.0.4
, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg
version=
"1.1"
id=
"Layer_1"
xmlns=
"http://www.w3.org/2000/svg"
xmlns:xlink=
"http://www.w3.org/1999/xlink"
x=
"0px"
y=
"0px"
viewBox=
"0 0 288 144.29"
style=
"enable-background:new 0 0 288 144.29;"
xml:space=
"preserve"
>
<style
type=
"text/css"
>
...
...
src/AutoPilotPlugins/PX4/Images/ReturnToHomeAltitudeCopter.svg
View file @
8bab7d7a
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator
19.2.1
, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!-- Generator: Adobe Illustrator
23.0.4
, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg
version=
"1.1"
id=
"Layer_1"
xmlns=
"http://www.w3.org/2000/svg"
xmlns:xlink=
"http://www.w3.org/1999/xlink"
x=
"0px"
y=
"0px"
viewBox=
"0 0 288 144.29"
style=
"enable-background:new 0 0 288 144.29;"
xml:space=
"preserve"
>
<style
type=
"text/css"
>
...
...
@@ -76,54 +76,30 @@
</g>
</g>
<g>
<defs>
<inkscape:path-effect
copytype=
"repeated"
effect=
"skeletal"
fuse_tolerance=
"0"
id=
"path-effect4881"
is_visible=
"true"
normal_offset=
"0"
pattern=
"M 0,0 1,0"
prop_scale=
"1"
prop_units=
"false"
scale_y_rel=
"false"
spacing=
"0"
tang_offset=
"0"
vertical_pattern=
"false"
>
</inkscape:path-effect>
<inkscape:path-effect
bendpath=
"m 110,180 140,0"
effect=
"bend_path"
id=
"path-effect3765"
is_visible=
"true"
prop_scale=
"1"
scale_y_rel=
"false"
vertical=
"false"
>
</inkscape:path-effect>
</defs>
<g>
<g>
<path
id=
"path2991_3_"
sodipodi:cx=
"110"
sodipodi:cy=
"110"
sodipodi:rx=
"20"
sodipodi:ry=
"20"
sodipodi:type=
"arc"
class=
"st7"
d=
"
M238.687,69.157c-0.209,1.011-1.4,1.647-2.652,1.378c-1.252-0.269-2.036-1.329-1.758-2.326c0.278-0.996,1.456-1.565,2.64-1.31
C238.1,67.153,238.896,68.146,238.687,69.157z"
/>
<path
id=
"path3761_3_"
sodipodi:cx=
"110"
sodipodi:cy=
"110"
sodipodi:end=
"6.4866523"
sodipodi:open=
"true"
sodipodi:rx=
"50"
sodipodi:ry=
"50"
sodipodi:start=
"1.374765"
sodipodi:type=
"arc"
class=
"st8"
d=
"
M236.576,74.353c-4.023-0.176-7.193-3.191-6.892-6.289c0.301-3.098,3.479-5.143,6.909-4.961s6.277,2.544,6.568,5.636
c0.07,0.748-0.031,1.497-0.316,2.2"
/>
<path
id=
"path2991-6_3_"
inkscape:transform-center-x=
"-140.5"
inkscape:transform-center-y=
"-140.5"
sodipodi:cx=
"110"
sodipodi:cy=
"110"
sodipodi:rx=
"20"
sodipodi:ry=
"20"
sodipodi:type=
"arc"
class=
"st7"
d=
"
M268.303,70.535c-1.252,0.269-2.443-0.367-2.652-1.378c-0.209-1.011,0.587-2.004,1.77-2.258c1.184-0.254,2.362,0.314,2.64,1.31
C270.338,69.205,269.555,70.266,268.303,70.535z"
/>
<path
id=
"path3761-1_3_"
inkscape:transform-center-x=
"-140.5"
inkscape:transform-center-y=
"-140.50478"
sodipodi:cx=
"110"
sodipodi:cy=
"110"
sodipodi:end=
"6.4866523"
sodipodi:open=
"true"
sodipodi:rx=
"50"
sodipodi:ry=
"50"
sodipodi:start=
"1.374765"
sodipodi:type=
"arc"
class=
"st8"
d=
"
M261.478,70.9c-1.151-2.914,0.736-6.052,3.903-7.288c3.167-1.237,6.851-0.28,8.547,2.384c1.696,2.664,0.337,6.271-3.376,7.758
c-0.898,0.36-1.871,0.566-2.844,0.602"
/>
<path
id=
"path2991-9_3_"
sodipodi:cx=
"110"
sodipodi:cy=
"110"
sodipodi:rx=
"20"
sodipodi:ry=
"20"
sodipodi:type=
"arc"
class=
"st7"
d=
"
M270.972,94.871c-0.209-1.011,0.979-2.074,2.643-2.432c1.664-0.358,3.23,0.114,3.508,1.11s-0.893,2.154-2.626,2.526
C272.764,96.448,271.181,95.882,270.972,94.871z"
/>
<path
id=
"path3761-2_3_"
sodipodi:cx=
"110"
sodipodi:cy=
"110"
sodipodi:end=
"6.4866523"
sodipodi:open=
"true"
sodipodi:rx=
"50"
sodipodi:ry=
"50"
sodipodi:start=
"1.374765"
sodipodi:type=
"arc"
class=
"st8"
d=
"
M271.065,89.257c4.586-1.516,9.622-0.965,11.594,1.613c1.971,2.578-0.283,6.493-5.405,8.31
c-5.123,1.817-10.726,0.574-12.161-2.305c-0.347-0.697-0.441-1.446-0.293-2.203"
/>
<path
id=
"path2991-6-9_3_"
inkscape:transform-center-x=
"140.5"
inkscape:transform-center-y=
"140.50002"
sodipodi:cx=
"110"
sodipodi:cy=
"110"
sodipodi:rx=
"20"
sodipodi:ry=
"20"
sodipodi:type=
"arc"
class=
"st7"
d=
"
M230.723,92.439c1.664,0.358,2.852,1.421,2.643,2.432c-0.209,1.011-1.792,1.576-3.525,1.204c-1.733-0.372-2.903-1.53-2.626-2.526
S229.058,92.082,230.723,92.439z"
/>
<path
id=
"path3761-1-5_3_"
inkscape:transform-center-x=
"140.5"
inkscape:transform-center-y=
"140.50476"
sodipodi:cx=
"110"
sodipodi:cy=
"110"
sodipodi:end=
"6.4866523"
sodipodi:open=
"true"
sodipodi:rx=
"50"
sodipodi:ry=
"50"
sodipodi:start=
"1.374765"
sodipodi:type=
"arc"
class=
"st8"
d=
"
M239.546,94.715c0.575,3.127-3.213,5.738-8.655,5.284s-9.964-3.876-9.939-7.059c0.025-3.183,4.098-4.92,8.939-4.409
c1.171,0.124,2.336,0.376,3.443,0.747"
/>
<path
id=
"path2991_3_"
class=
"st7"
d=
"M238.126,78.582c-0.222,1.081-1.496,1.763-2.838,1.478
c-1.342-0.286-2.185-1.419-1.89-2.486s1.556-1.676,2.825-1.407C237.492,76.44,238.348,77.5,238.126,78.582z"
/>
<path
id=
"path3761_3_"
class=
"st8"
d=
"M235.877,84.145c-4.307-0.181-7.71-3.4-7.4-6.715c0.311-3.316,3.709-5.511,7.388-5.322
c3.679,0.189,6.738,2.715,7.055,6.022c0.076,0.8-0.032,1.601-0.336,2.353"
/>
<path
id=
"path2991-6_3_"
class=
"st7"
d=
"M269.863,80.06c-1.342,0.286-2.617-0.396-2.838-1.478
c-0.222-1.081,0.634-2.143,1.903-2.414c1.27-0.271,2.531,0.34,2.825,1.407C272.048,78.641,271.206,79.775,269.863,80.06z"
/>
<path
id=
"path3761-1_3_"
class=
"st8"
d=
"M262.551,80.442c-1.228-3.119,0.799-6.475,4.199-7.794
c3.4-1.319,7.348-0.288,9.155,2.567c1.807,2.855,0.34,6.709-3.64,8.294c-0.962,0.384-2.005,0.602-3.046,0.638"
/>
<path
id=
"path2991-9_3_"
class=
"st7"
d=
"M272.669,106.102c-0.222-1.081,1.049-2.217,2.829-2.596
c1.779-0.379,3.452,0.13,3.745,1.195c0.295,1.067-0.959,2.301-2.811,2.696S272.892,107.185,272.669,106.102z"
/>
<path
id=
"path3761-2_3_"
class=
"st8"
d=
"M272.779,100.095c4.906-1.613,10.287-1.007,12.387,1.756
c2.1,2.764-0.319,6.943-5.794,8.874s-11.457,0.593-12.988-2.489c-0.37-0.745-0.47-1.547-0.311-2.357"
/>
<path
id=
"path2991-6-9_3_"
class=
"st7"
d=
"M229.653,103.506c1.779,0.379,3.05,1.515,2.829,2.596
c-0.222,1.081-1.912,1.689-3.764,1.295c-1.852-0.394-3.105-1.63-2.811-2.696C226.201,103.636,227.874,103.127,229.653,103.506z"
/>
<path
id=
"path3761-1-5_3_"
class=
"st8"
d=
"M239.086,105.925c0.619,3.345-3.426,6.142-9.239,5.668s-10.651-4.119-10.632-7.525
c0.018-3.406,4.367-5.277,9.542-4.742c1.253,0.13,2.498,0.397,3.682,0.793"
/>
</g>
<path
class=
"st9"
d=
"M2
30.281,94.257c15.501-6.427,26.238-13.176,37.581-25.54
"
/>
<path
class=
"st9"
d=
"M27
4.06,94.257c-15.501-6.427-26.238-13.175-37.581-25.54
"
/>
<path
class=
"st10"
d=
"M26
2.941,82.831c0.56,4.096-4.25,8.127-10.773,8.127s-11.332-4.031-10.773-8.127
c0.5
6-4.096,5.372-6.828,10.773-6.828C257.57,76.003,262.382,78.735,262.941,82.831
z"
/>
<path
class=
"st9"
d=
"M2
29.185,105.451c15.729-6.555,29.451-13.632,40.212-27.337
"
/>
<path
class=
"st9"
d=
"M27
5.971,105.451c-15.729-6.555-29.451-13.632-40.213-27.337
"
/>
<path
class=
"st10"
d=
"M26
4.102,93.209c0.594,4.383-4.552,8.689-11.526,8.689s-12.12-4.306-11.526-8.689
c0.5
93-4.383,5.742-7.311,11.526-7.311C258.36,85.898,263.507,88.825,264.102,93.209
z"
/>
</g>
</g>
</svg>
src/AutoPilotPlugins/PX4/SafetyComponent.cc
View file @
8bab7d7a
...
...
@@ -27,7 +27,7 @@ QString SafetyComponent::name(void) const
QString
SafetyComponent
::
description
(
void
)
const
{
return
tr
(
"Safety Setup is used to setup triggers for Return to Land as well as the settings for Return to Land itself."
);
return
QString
(
);
}
QString
SafetyComponent
::
iconResource
(
void
)
const
...
...
src/AutoPilotPlugins/PX4/SafetyComponent.qml
View file @
8bab7d7a
This diff is collapsed.
Click to expand it.
src/FactSystem/Fact.h
View file @
8bab7d7a
...
...
@@ -30,13 +30,13 @@ class Fact : public QObject
Q_OBJECT
public:
Fact
(
QObject
*
parent
=
NULL
);
Fact
(
int
componentId
,
QString
name
,
FactMetaData
::
ValueType_t
type
,
QObject
*
parent
=
NULL
);
Fact
(
const
Fact
&
other
,
QObject
*
parent
=
NULL
);
Fact
(
QObject
*
parent
=
nullptr
);
Fact
(
int
componentId
,
QString
name
,
FactMetaData
::
ValueType_t
type
,
QObject
*
parent
=
nullptr
);
Fact
(
const
Fact
&
other
,
QObject
*
parent
=
nullptr
);
/// Creates a Fact using the name and type from metaData. Also calls QGCCorePlugin::adjustSettingsMetaData allowing
/// custom builds to override the metadata.
Fact
(
const
QString
&
settingsGroup
,
FactMetaData
*
metaData
,
QObject
*
parent
=
NULL
);
Fact
(
const
QString
&
settingsGroup
,
FactMetaData
*
metaData
,
QObject
*
parent
=
nullptr
);
const
Fact
&
operator
=
(
const
Fact
&
other
);
...
...
@@ -51,7 +51,7 @@ public:
Q_PROPERTY
(
QStringList
enumStrings
READ
enumStrings
NOTIFY
enumsChanged
)
Q_PROPERTY
(
QString
enumStringValue
READ
enumStringValue
WRITE
setEnumStringValue
NOTIFY
valueChanged
)
Q_PROPERTY
(
QVariantList
enumValues
READ
enumValues
NOTIFY
enumsChanged
)
Q_PROPERTY
(
QString
category
READ
category
CONSTANT
)
Q_PROPERTY
(
QString
category
READ
category
CONSTANT
)
Q_PROPERTY
(
QString
group
READ
group
CONSTANT
)
Q_PROPERTY
(
QString
longDescription
READ
longDescription
CONSTANT
)
Q_PROPERTY
(
QVariant
max
READ
cookedMax
CONSTANT
)
...
...
src/FlightDisplay/FlightDisplayViewMap.qml
View file @
8bab7d7a
...
...
@@ -296,7 +296,7 @@ FlightMap {
sourceItem
:
MissionItemIndexLabel
{
checked
:
true
index
:
-
1
label
:
qsTr
(
"
Go
to here
"
,
"
Goto here
waypoint
"
)
label
:
qsTr
(
"
Go
here
"
,
"
Go to location
waypoint
"
)
}
property
bool
inGotoFlightMode
:
activeVehicle
?
activeVehicle
.
flightMode
===
activeVehicle
.
gotoFlightMode
:
false
...
...
src/QGCApplication.cc
View file @
8bab7d7a
...
...
@@ -95,6 +95,7 @@
#include "MAVLinkInspectorController.h"
#include "GeoTagController.h"
#include "LogReplayLink.h"
#include "VehicleObjectAvoidance.h"
#ifndef __mobile__
#include "FirmwareUpgradeController.h"
...
...
@@ -466,18 +467,19 @@ void QGCApplication::_initCommon()
qmlRegisterType
<
QGCPalette
>
(
"QGroundControl.Palette"
,
1
,
0
,
"QGCPalette"
);
qmlRegisterType
<
QGCMapPalette
>
(
"QGroundControl.Palette"
,
1
,
0
,
"QGCMapPalette"
);
qmlRegisterUncreatableType
<
Vehicle
>
(
kQGCVehicle
,
1
,
0
,
"Vehicle"
,
kRefOnly
);
qmlRegisterUncreatableType
<
MissionItem
>
(
kQGCVehicle
,
1
,
0
,
"MissionItem"
,
kRefOnly
);
qmlRegisterUncreatableType
<
MissionManager
>
(
kQGCVehicle
,
1
,
0
,
"MissionManager"
,
kRefOnly
);
qmlRegisterUncreatableType
<
ParameterManager
>
(
kQGCVehicle
,
1
,
0
,
"ParameterManager"
,
kRefOnly
);
qmlRegisterUncreatableType
<
QGCCameraManager
>
(
kQGCVehicle
,
1
,
0
,
"QGCCameraManager"
,
kRefOnly
);
qmlRegisterUncreatableType
<
QGCCameraControl
>
(
kQGCVehicle
,
1
,
0
,
"QGCCameraControl"
,
kRefOnly
);
qmlRegisterUncreatableType
<
QGCVideoStreamInfo
>
(
kQGCVehicle
,
1
,
0
,
"QGCVideoStreamInfo"
,
kRefOnly
);
qmlRegisterUncreatableType
<
LinkInterface
>
(
kQGCVehicle
,
1
,
0
,
"LinkInterface"
,
kRefOnly
);
qmlRegisterUncreatableType
<
MissionController
>
(
kQGCControllers
,
1
,
0
,
"MissionController"
,
kRefOnly
);
qmlRegisterUncreatableType
<
GeoFenceController
>
(
kQGCControllers
,
1
,
0
,
"GeoFenceController"
,
kRefOnly
);
qmlRegisterUncreatableType
<
RallyPointController
>
(
kQGCControllers
,
1
,
0
,
"RallyPointController"
,
kRefOnly
);
qmlRegisterUncreatableType
<
VisualMissionItem
>
(
kQGCControllers
,
1
,
0
,
"VisualMissionItem"
,
kRefOnly
);
qmlRegisterUncreatableType
<
Vehicle
>
(
kQGCVehicle
,
1
,
0
,
"Vehicle"
,
kRefOnly
);
qmlRegisterUncreatableType
<
MissionItem
>
(
kQGCVehicle
,
1
,
0
,
"MissionItem"
,
kRefOnly
);
qmlRegisterUncreatableType
<
MissionManager
>
(
kQGCVehicle
,
1
,
0
,
"MissionManager"
,
kRefOnly
);
qmlRegisterUncreatableType
<
ParameterManager
>
(
kQGCVehicle
,
1
,
0
,
"ParameterManager"
,
kRefOnly
);
qmlRegisterUncreatableType
<
VehicleObjectAvoidance
>
(
kQGCVehicle
,
1
,
0
,
"VehicleObjectAvoidance"
,
kRefOnly
);
qmlRegisterUncreatableType
<
QGCCameraManager
>
(
kQGCVehicle
,
1
,
0
,
"QGCCameraManager"
,
kRefOnly
);
qmlRegisterUncreatableType
<
QGCCameraControl
>
(
kQGCVehicle
,
1
,
0
,
"QGCCameraControl"
,
kRefOnly
);
qmlRegisterUncreatableType
<
QGCVideoStreamInfo
>
(
kQGCVehicle
,
1
,
0
,
"QGCVideoStreamInfo"
,
kRefOnly
);
qmlRegisterUncreatableType
<
LinkInterface
>
(
kQGCVehicle
,
1
,
0
,
"LinkInterface"
,
kRefOnly
);
qmlRegisterUncreatableType
<
MissionController
>
(
kQGCControllers
,
1
,
0
,
"MissionController"
,
kRefOnly
);
qmlRegisterUncreatableType
<
GeoFenceController
>
(
kQGCControllers
,
1
,
0
,
"GeoFenceController"
,
kRefOnly
);
qmlRegisterUncreatableType
<
RallyPointController
>
(
kQGCControllers
,
1
,
0
,
"RallyPointController"
,
kRefOnly
);
qmlRegisterUncreatableType
<
VisualMissionItem
>
(
kQGCControllers
,
1
,
0
,
"VisualMissionItem"
,
kRefOnly
);
qmlRegisterUncreatableType
<
CoordinateVector
>
(
"QGroundControl"
,
1
,
0
,
"CoordinateVector"
,
kRefOnly
);
qmlRegisterUncreatableType
<
QmlObjectListModel
>
(
"QGroundControl"
,
1
,
0
,
"QmlObjectListModel"
,
kRefOnly
);
...
...
src/QmlControls/QGCColoredImage.qml
View file @
8bab7d7a
...
...
@@ -27,18 +27,19 @@ Item {
height
:
image
.
height
Image
{
id
:
image
smooth
:
true
mipmap
:
true
antialiasing
:
true
visible
:
false
fillMode
:
Image
.
PreserveAspectFit
anchors.fill
:
parent
id
:
image
smooth
:
true
mipmap
:
true
antialiasing
:
true
visible
:
false
fillMode
:
Image
.
PreserveAspectFit
anchors.fill
:
parent
sourceSize.height
:
height
}
ColorOverlay
{
anchors.fill
:
image
source
:
image
color
:
parent
.
color
anchors.fill
:
image
source
:
image
color
:
parent
.
color
}
}
src/Vehicle/Vehicle.cc
View file @
8bab7d7a
...
...
@@ -41,6 +41,8 @@
#include "VideoManager.h"
#include "VideoSettings.h"
#include "PositionManager.h"
#include "VehicleObjectAvoidance.h"
#if defined(QGC_AIRMAP_ENABLED)
#include "AirspaceVehicleManager.h"
#endif
...
...
@@ -156,7 +158,6 @@ Vehicle::Vehicle(LinkInterface* link,
,
_geoFenceManagerInitialRequestSent
(
false
)
,
_rallyPointManager
(
nullptr
)
,
_rallyPointManagerInitialRequestSent
(
false
)
,
_parameterManager
(
nullptr
)
#if defined(QGC_AIRMAP_ENABLED)
,
_airspaceVehicleManager
(
nullptr
)
#endif
...
...
@@ -359,7 +360,6 @@ Vehicle::Vehicle(MAV_AUTOPILOT firmwareType,
,
_geoFenceManagerInitialRequestSent
(
false
)
,
_rallyPointManager
(
nullptr
)
,
_rallyPointManagerInitialRequestSent
(
false
)
,
_parameterManager
(
nullptr
)
#if defined(QGC_AIRMAP_ENABLED)
,
_airspaceVehicleManager
(
nullptr
)
#endif
...
...
@@ -451,6 +451,8 @@ void Vehicle::_commonInit(void)
_parameterManager
=
new
ParameterManager
(
this
);
connect
(
_parameterManager
,
&
ParameterManager
::
parametersReadyChanged
,
this
,
&
Vehicle
::
_parametersReady
);
_objectAvoidance
=
new
VehicleObjectAvoidance
(
this
,
this
);
// GeoFenceManager needs to access ParameterManager so make sure to create after
_geoFenceManager
=
new
GeoFenceManager
(
this
);
connect
(
_geoFenceManager
,
&
GeoFenceManager
::
error
,
this
,
&
Vehicle
::
_geoFenceManagerError
);
...
...
@@ -812,6 +814,9 @@ void Vehicle::_mavlinkMessageReceived(LinkInterface* link, mavlink_message_t mes
case
MAVLINK_MSG_ID_MOUNT_ORIENTATION
:
_handleGimbalOrientation
(
message
);
break
;
case
MAVLINK_MSG_ID_OBSTACLE_DISTANCE
:
_handleObstacleDistance
(
message
);
break
;
case
MAVLINK_MSG_ID_SERIAL_CONTROL
:
{
...
...
@@ -4057,6 +4062,13 @@ void Vehicle::_handleGimbalOrientation(const mavlink_message_t& message)
}
}
void
Vehicle
::
_handleObstacleDistance
(
const
mavlink_message_t
&
message
)
{
mavlink_obstacle_distance_t
o
;
mavlink_msg_obstacle_distance_decode
(
&
message
,
&
o
);
_objectAvoidance
->
update
(
&
o
);
}
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
...
...
src/Vehicle/Vehicle.h
View file @
8bab7d7a
...
...
@@ -37,6 +37,8 @@ class SettingsManager;
class
ADSBVehicle
;
class
QGCCameraManager
;
class
Joystick
;
class
VehicleObjectAvoidance
;
#if defined(QGC_AIRMAP_ENABLED)
class
AirspaceVehicleManager
;
#endif
...
...
@@ -484,7 +486,6 @@ private:
#endif
};
class
Vehicle
:
public
FactGroup
{
Q_OBJECT
...
...
@@ -652,7 +653,8 @@ public:
Q_PROPERTY
(
bool
takeoffVehicleSupported
READ
takeoffVehicleSupported
CONSTANT
)
///< Guided takeoff supported
Q_PROPERTY
(
QString
gotoFlightMode
READ
gotoFlightMode
CONSTANT
)
///< Flight mode vehicle is in while performing goto
Q_PROPERTY
(
ParameterManager
*
parameterManager
READ
parameterManager
CONSTANT
)
Q_PROPERTY
(
ParameterManager
*
parameterManager
READ
parameterManager
CONSTANT
)
Q_PROPERTY
(
VehicleObjectAvoidance
*
objectAvoidance
READ
objectAvoidance
CONSTANT
)
// FactGroup object model properties
...
...
@@ -989,8 +991,9 @@ public:
void
setConnectionLostEnabled
(
bool
connectionLostEnabled
);
ParameterManager
*
parameterManager
(
void
)
{
return
_parameterManager
;
}
ParameterManager
*
parameterManager
(
void
)
const
{
return
_parameterManager
;
}
ParameterManager
*
parameterManager
()
{
return
_parameterManager
;
}
ParameterManager
*
parameterManager
()
const
{
return
_parameterManager
;
}
VehicleObjectAvoidance
*
objectAvoidance
()
{
return
_objectAvoidance
;
}
static
const
int
cMaxRcChannels
=
18
;
...
...
@@ -1295,6 +1298,7 @@ private:
void
_handleOrbitExecutionStatus
(
const
mavlink_message_t
&
message
);
void
_handleMessageInterval
(
const
mavlink_message_t
&
message
);
void
_handleGimbalOrientation
(
const
mavlink_message_t
&
message
);
void
_handleObstacleDistance
(
const
mavlink_message_t
&
message
);
// ArduPilot dialect messages
#if !defined(NO_ARDUPILOT_DIALECT)
void
_handleCameraFeedback
(
const
mavlink_message_t
&
message
);
...
...
@@ -1425,7 +1429,8 @@ private:
RallyPointManager
*
_rallyPointManager
;
bool
_rallyPointManagerInitialRequestSent
;
ParameterManager
*
_parameterManager
;
ParameterManager
*
_parameterManager
=
nullptr
;
VehicleObjectAvoidance
*
_objectAvoidance
=
nullptr
;
#if defined(QGC_AIRMAP_ENABLED)
AirspaceVehicleManager
*
_airspaceVehicleManager
;
...
...
src/Vehicle/VehicleObjectAvoidance.cc
0 → 100644
View file @
8bab7d7a
/****************************************************************************
*
* (c) 2009-2019 QGROUNDCONTROL PROJECT <http://www.qgroundcontrol.org>
*
* QGroundControl is licensed according to the terms in the file
* COPYING.md in the root of the source code directory.
*
****************************************************************************/
#include "Vehicle.h"
#include "VehicleObjectAvoidance.h"
#include "ParameterManager.h"
#include <cmath>
static
const
char
*
kColPrevParam
=
"MPC_COL_PREV_D"
;
//-----------------------------------------------------------------------------
VehicleObjectAvoidance
::
VehicleObjectAvoidance
(
Vehicle
*
vehicle
,
QObject
*
parent
)
:
QObject
(
parent
)
,
_vehicle
(
vehicle
)
{
}
//-----------------------------------------------------------------------------
void
VehicleObjectAvoidance
::
update
(
mavlink_obstacle_distance_t
*
message
)
{
//-- Collect raw data
if
(
std
::
isfinite
(
message
->
increment_f
)
&&
message
->
increment_f
>
0
)
{
_increment
=
static_cast
<
qreal
>
(
message
->
increment_f
);
}
else
{
_increment
=
static_cast
<
qreal
>
(
message
->
increment
);
}
_minDistance
=
message
->
min_distance
;
_maxDistance
=
message
->
max_distance
;
_angleOffset
=
static_cast
<
qreal
>
(
message
->
angle_offset
);
if
(
_distances
.
count
()
==
0
)
{
for
(
int
i
=
0
;
i
<
MAVLINK_MSG_OBSTACLE_DISTANCE_FIELD_DISTANCES_LEN
;
i
++
)
{
_distances
.
append
(
static_cast
<
int
>
(
message
->
distances
[
i
]));
}
}
else
{
for
(
int
i
=
0
;
i
<
MAVLINK_MSG_OBSTACLE_DISTANCE_FIELD_DISTANCES_LEN
;
i
++
)
{
_distances
[
i
]
=
static_cast
<
int
>
(
message
->
distances
[
i
]);
}
}
//-- Create a plottable grid with found objects
_objGrid
.
clear
();
_objDistance
.
clear
();
VehicleSetpointFactGroup
*
sp
=
dynamic_cast
<
VehicleSetpointFactGroup
*>
(
_vehicle
->
setpointFactGroup
());
qreal
startAngle
=
sp
->
yaw
()
->
rawValue
().
toDouble
()
+
_angleOffset
;
for
(
int
i
=
0
;
i
<
MAVLINK_MSG_OBSTACLE_DISTANCE_FIELD_DISTANCES_LEN
;
i
++
)
{
if
(
_distances
[
i
]
<
_maxDistance
&&
message
->
distances
[
i
]
!=
UINT16_MAX
)
{
qreal
d
=
static_cast
<
qreal
>
(
_distances
[
i
]);
d
=
d
/
static_cast
<
qreal
>
(
_maxDistance
);
qreal
a
=
(
_increment
*
i
)
-
startAngle
;
if
(
a
<
0
)
a
=
a
+
360
;
qreal
rd
=
(
M_PI
/
180.0
)
*
a
;
QPointF
p
=
QPointF
(
d
*
cos
(
rd
),
d
*
sin
(
rd
));
_objGrid
.
append
(
p
);
_objDistance
.
append
(
d
);
}
}
emit
objectAvoidanceChanged
();
}
//-----------------------------------------------------------------------------
bool
VehicleObjectAvoidance
::
enabled
()
{
uint8_t
id
=
static_cast
<
uint8_t
>
(
_vehicle
->
id
());
if
(
_vehicle
->
parameterManager
()
->
parameterExists
(
id
,
kColPrevParam
))
{
return
_vehicle
->
parameterManager
()
->
getParameter
(
id
,
kColPrevParam
)
->
rawValue
().
toInt
()
>=
0
;
}
return
false
;
}
//-----------------------------------------------------------------------------
void
VehicleObjectAvoidance
::
start
(
int
minDistance
)
{
uint8_t
id
=
static_cast
<
uint8_t
>
(
_vehicle
->
id
());
if
(
_vehicle
->
parameterManager
()
->
parameterExists
(
id
,
kColPrevParam
))
{
_vehicle
->
parameterManager
()
->
getParameter
(
id
,
kColPrevParam
)
->
setRawValue
(
minDistance
);
emit
objectAvoidanceChanged
();
}
}
//-----------------------------------------------------------------------------
void
VehicleObjectAvoidance
::
stop
()
{
uint8_t
id
=
static_cast
<
uint8_t
>
(
_vehicle
->
id
());
if
(
_vehicle
->
parameterManager
()
->
parameterExists
(
id
,
kColPrevParam
))
{
_vehicle
->
parameterManager
()
->
getParameter
(
id
,
kColPrevParam
)
->
setRawValue
(
-
1
);
emit
objectAvoidanceChanged
();
}
}
//-----------------------------------------------------------------------------
QPointF
VehicleObjectAvoidance
::
grid
(
int
i
)
{
if
(
i
<
_objGrid
.
count
()
&&
i
>=
0
)
{
return
_objGrid
[
i
];
}
return
QPointF
(
0
,
0
);
}
//-----------------------------------------------------------------------------
qreal
VehicleObjectAvoidance
::
distance
(
int
i
)
{
if
(
i
<
_objDistance
.
count
()
&&
i
>=
0
)
{
return
_objDistance
[
i
];
}
return
0
;
}
src/Vehicle/VehicleObjectAvoidance.h
0 → 100644
View file @
8bab7d7a
/****************************************************************************
*
* (c) 2009-2019 QGROUNDCONTROL PROJECT <http://www.qgroundcontrol.org>
*
* QGroundControl is licensed according to the terms in the file
* COPYING.md in the root of the source code directory.
*
****************************************************************************/
#pragma once
#include <QObject>
#include <QVector>
#include <QPointF>
#include "QGCMAVLink.h"
class
Vehicle
;
class
VehicleObjectAvoidance
:
public
QObject
{
Q_OBJECT
public:
VehicleObjectAvoidance
(
Vehicle
*
vehicle
,
QObject
*
parent
=
nullptr
);
Q_PROPERTY
(
bool
available
READ
available
NOTIFY
objectAvoidanceChanged
)
Q_PROPERTY
(
bool
enabled
READ
enabled
NOTIFY
objectAvoidanceChanged
)
Q_PROPERTY
(
QList
<
int
>
distances
READ
distances
NOTIFY
objectAvoidanceChanged
)
Q_PROPERTY
(
qreal
increment
READ
increment
NOTIFY
objectAvoidanceChanged
)
Q_PROPERTY
(
int
minDistance
READ
minDistance
NOTIFY
objectAvoidanceChanged
)
Q_PROPERTY
(
int
maxDistance
READ
maxDistance
NOTIFY
objectAvoidanceChanged
)
Q_PROPERTY
(
qreal
angleOffset
READ
angleOffset
NOTIFY
objectAvoidanceChanged
)
Q_PROPERTY
(
int
gridSize
READ
gridSize
NOTIFY
objectAvoidanceChanged
)
//-- Start collision avoidance. Argument is minimum distance the vehicle should keep to all obstacles
Q_INVOKABLE
void
start
(
int
minDistance
);
//-- Stop collision avoidance.
Q_INVOKABLE
void
stop
();
//-- Object locations (in relationship to vehicle)
Q_INVOKABLE
QPointF
grid
(
int
i
);
Q_INVOKABLE
qreal
distance
(
int
i
);
bool
available
()
{
return
_distances
.
count
()
>
0
;
}
bool
enabled
();
QList
<
int
>
distances
()
{
return
_distances
;
}
qreal
increment
()
{
return
_increment
;
}
int
minDistance
()
{
return
_minDistance
;
}
int
maxDistance
()
{
return
_maxDistance
;
}
qreal
angleOffset
()
{
return
_angleOffset
;
}
int
gridSize
()
{
return
_objGrid
.
count
();
}
void
update
(
mavlink_obstacle_distance_t
*
message
);
signals:
void
objectAvoidanceChanged
();
private:
QList
<
int
>
_distances
;
QVector
<
QPointF
>
_objGrid
;
QVector
<
qreal
>
_objDistance
;
qreal
_increment
=
0
;
int
_minDistance
=
0
;
int
_maxDistance
=
0
;
qreal
_angleOffset
=
0
;
Vehicle
*
_vehicle
=
nullptr
;
};
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment