SlideShare a Scribd company logo
1 of 32
QGroundControl
Drone Software July 22 Meetup
Godfrey Nolan
Open Source Cross Platform Ground Control System
QGC
Run’s on Android, Linux or Windows
Built on Qt platform
Pixhawk controller
Mavlink drones
Runs on Ardupilot or PX4 firmware
Quadcopters, Rovers, Tractors, VTOL planes etc.
Blue UAS
Today’s goal
Add some customizations to QGC
- 3 out of the box examples
- Hide settings (flight modes) from newbies
Working with Windows/PX4
Setup (Windows & Android)
1. Install Visual Studio 2019
a. Community Edition & Desktop development with C++
2. Install Qt Creator
a. Custom Installation 5.15.2
3. Install Android Studio
a. Install Android command line tools (latest)
b. Install CMake
c. Add Tablet Emulator
Qt Install
Download QGC code
git clone https://github.com/mavlink/qgroundcontrol --single-branch --branch Stable_V4.2
git submodule update –recursive
(or git module init/git module update if that doesn’t work)
Qt Creator
Orange Cube or NXP
Ardupilot PX4
QGC setup
Custom Project
1. Clean previous build
2. Change custom-example to custom
3. ‘python updateqrc.py’
4. Build
| custom.pri
| custom.qrc
| custom_deploy.pri
| InstrumentValueIcons.qrc
| qgcresources.exclusion
| qgcresources.qrc
| qgroundcontrol.exclusion
| qgroundcontrol.qrc
| README.jpg
| README.md
| updateinstrumentqrc.py
| updateqrc.py
|
+---android
| ---res
| +---drawable-hdpi
| | icon.png
...
|
+---deploy
| qgroundcontrol-start.sh
| qgroundcontrol.desktop
+---res
| | CustomFlyViewOverlay.qml
| |
| +---Custom
| | +---Camera
| | | qmldir
| | | ZoomControl.qml
| | |
| | ---Widgets
| | CustomArtificialHorizon.qml
| | CustomAttitudeWidget.qml
| | CustomIconButton.qml
| | CustomOnOffSwitch.qml
| | CustomQuickButton.qml
| | CustomSignalStrength.qml
| | CustomToolBarButton.qml
| | CustomVehicleButton.qml
| | qmldir
| |
| ---Images
| altitude.svg
| attitude_crosshair.svg
| attitude_dial.svg
| attitude_pointer.svg
| chronometer.svg
| compass_needle.svg
| compass_pointer.svg
| CustomAppIcon.png
| CustomVehicleIcon.svg
| distance.svg
| horizontal_speed.svg
| microSD.svg
| odometer.svg
| vertical_speed.svg
| void.png
|
---src
| CustomPlugin.cc
| CustomPlugin.h
|
+---AutoPilotPlugin
|
CustomAutoPilotPlugin.cc
|
CustomAutoPilotPlugin.h
|
---FirmwarePlugin
CustomFirmwarePlugin.cc
CustomFirmwarePlugin.h
CustomFirmwarePluginFactory.cc
CustomFirmwarePluginFactory.h
| custom.pri
| custom.qrc
| custom_deploy.pri
| InstrumentValueIcons.qrc
| qgcresources.exclusion
| qgcresources.qrc
| qgroundcontrol.exclusion
| qgroundcontrol.qrc
| README.jpg
| README.md
| updateinstrumentqrc.py
| updateqrc.py
|
+---android
| ---res
| +---drawable-hdpi
| | icon.png
...
|
+---deploy
| qgroundcontrol-start.sh
| qgroundcontrol.desktop
+---res
| | CustomFlyViewOverlay.qml
| |
| +---Custom
| | +---Camera
| | | qmldir
| | | ZoomControl.qml
| | |
| | ---Widgets
| | CustomArtificialHorizon.qml
| | CustomAttitudeWidget.qml
| | CustomIconButton.qml
| | CustomOnOffSwitch.qml
| | CustomQuickButton.qml
| | CustomSignalStrength.qml
| | CustomToolBarButton.qml
| | CustomVehicleButton.qml
| | qmldir
| |
| ---Images
| altitude.svg
| attitude_crosshair.svg
| attitude_dial.svg
| attitude_pointer.svg
| chronometer.svg
| compass_needle.svg
| compass_pointer.svg
| CustomAppIcon.png
| CustomVehicleIcon.svg
| distance.svg
| horizontal_speed.svg
| microSD.svg
| odometer.svg
| vertical_speed.svg
| void.png
|
---src
| CustomPlugin.cc
| CustomPlugin.h
|
+---AutoPilotPlugin
|
CustomAutoPilotPlugin.cc
|
CustomAutoPilotPlugin.h
|
---FirmwarePlugin
CustomFirmwarePlugin.cc
CustomFirmwarePlugin.h
CustomFirmwarePluginFactory.cc
CustomFirmwarePluginFactory.h
Out of the box
1. custom-example
2. First Run Prompts
3. Toolbar customization
4. Fly View customization
custom-example
1. rename custom-example to custom
2. clean build
3. cd custom
4. python updateqrc.py
Excluded: <file
alias="QGroundControl/FlightDisplay/FlyViewCustomLayer.qml">src/FlightDisplay/FlyViewCustomLayer.
qml</file>
5. build and run
custom-example
custom-example
custom-example
custom-example
Custom Toolbar
● Exclude the existing Toolbar in qgroundcontrol.qrc
<file alias="QGroundControl/Controls/MainToolBar.qml">src/ui/toolbar/MainToolBar.qml</file>
● Add the new Toolbar in custom.qrc
<qresource prefix="/qml">
<file alias="QGroundControl/FlightDisplay/FlyViewCustomLayer.qml">res/CustomFlyViewOverlay.qml</file>
<file alias="QGroundControl/Controls/MainToolBar.qml">res/CustomMainToolbar.qml</file>
</qresource>
● Create CustomMainToolbar.qml and please in custom/res folder
Custom Toolbar
Custom Toolbar
1. clean build
2. cd custom
3. Run python updateqrc.py
$ python updateqrc.py
Excluded: <file
alias="QGroundControl/Controls/MainToolBar.qml">src/ui/toolbar/MainToolBar.qml</file>
Excluded: <file
alias="QGroundControl/FlightDisplay/FlyViewCustomLayer.qml">src/FlightDisplay/FlyViewCust
omLayer.qml</file>
4. build and run
Custom Toolbar - Befor
Custom Toolbar - After
Custom Toolbar – Before and After
Fly View Customization
1. clean build
2. cd custom
3. Add FlyViewWidgetLayer.qml to qgroundcontrol.exclusion
4. Add CustomFlyViewWidgetLayer.qml to custom.qrc
3. python updateqrc.py
python updateqrc.py
Excluded: <file
alias="QGroundControl/Controls/MainToolBar.qml">src/ui/toolbar/MainToolBar.qml</file>
Excluded: <file
alias="QGroundControl/FlightDisplay/FlyViewCustomLayer.qml">src/FlightDisplay/FlyViewCustomLayer.
qml</file>
Excluded: <file
alias="QGroundControl/FlightDisplay/FlyViewWidgetLayer.qml">src/FlightDisplay/FlyViewWidgetLayer.
qml</file>
4. build and run
Fly View Customization - Before
Fly View Customization - After
Fly View Customization
Resources
https://dev.qgroundcontrol.com/master/en/index.html
https://doc.qt.io/qt-5/android-getting-started.html
https://www.youtube.com/watch?v=6SGl5S6GpNk (install walkthrough)
https://www.youtube.com/watch?v=b_8E8ckPdPA (adding a button)
https://px4.slack.com
https://dev.qgroundcontrol.com/master/en/custom_build/custom_build.html
Resources

More Related Content

What's hot

unmanned aerial vehicle (UAV)
unmanned aerial vehicle (UAV)unmanned aerial vehicle (UAV)
unmanned aerial vehicle (UAV)UDIT PATEL
 
Avionics-Embedded systems-basic
Avionics-Embedded systems-basicAvionics-Embedded systems-basic
Avionics-Embedded systems-basicSejj Lingayat
 
UAV (Unmanned Aerial Vehicle)
UAV (Unmanned Aerial Vehicle)UAV (Unmanned Aerial Vehicle)
UAV (Unmanned Aerial Vehicle)UDIT PATEL
 
Unmanned aerial vehicle (uav)
Unmanned aerial vehicle (uav)Unmanned aerial vehicle (uav)
Unmanned aerial vehicle (uav)vikramsingh1358
 
Towards An Open Instrumentation Platform: Getting The Most From MAVLink, Ardu...
Towards An Open Instrumentation Platform: Getting The Most From MAVLink, Ardu...Towards An Open Instrumentation Platform: Getting The Most From MAVLink, Ardu...
Towards An Open Instrumentation Platform: Getting The Most From MAVLink, Ardu...Steve Arnold
 
“Making Edge AI Inference Programming Easier and Flexible,” a Presentation fr...
“Making Edge AI Inference Programming Easier and Flexible,” a Presentation fr...“Making Edge AI Inference Programming Easier and Flexible,” a Presentation fr...
“Making Edge AI Inference Programming Easier and Flexible,” a Presentation fr...Edge AI and Vision Alliance
 
3. Types and applications of drones
3. Types and applications of drones3. Types and applications of drones
3. Types and applications of dronesDevender Singh Bohra
 
Unmanned Aerial Systems and its history
Unmanned Aerial Systems and its historyUnmanned Aerial Systems and its history
Unmanned Aerial Systems and its historyAmr Emad
 
Sonar based obstacle avoidance for UAVs
Sonar based obstacle avoidance for UAVsSonar based obstacle avoidance for UAVs
Sonar based obstacle avoidance for UAVsgaurav dhir
 
UNMANNED AERIAL VEHICLE
UNMANNED AERIAL VEHICLEUNMANNED AERIAL VEHICLE
UNMANNED AERIAL VEHICLEThirumal Aero
 
An introduction to drones: hardware, protocols and auto-pilot systems
An introduction to drones: hardware, protocols and auto-pilot systemsAn introduction to drones: hardware, protocols and auto-pilot systems
An introduction to drones: hardware, protocols and auto-pilot systemsUniversity of Oklahoma
 
Uav presentation
Uav presentationUav presentation
Uav presentationMeshut
 
Unmanned Aerial Vehicle-UAVs
Unmanned Aerial Vehicle-UAVsUnmanned Aerial Vehicle-UAVs
Unmanned Aerial Vehicle-UAVsHimanshu Rathore
 
Docker Swarm 0.2.0
Docker Swarm 0.2.0Docker Swarm 0.2.0
Docker Swarm 0.2.0Docker, Inc.
 

What's hot (20)

unmanned aerial vehicle (UAV)
unmanned aerial vehicle (UAV)unmanned aerial vehicle (UAV)
unmanned aerial vehicle (UAV)
 
Avionics-Embedded systems-basic
Avionics-Embedded systems-basicAvionics-Embedded systems-basic
Avionics-Embedded systems-basic
 
UAV (Unmanned Aerial Vehicle)
UAV (Unmanned Aerial Vehicle)UAV (Unmanned Aerial Vehicle)
UAV (Unmanned Aerial Vehicle)
 
Unmanned aerial vehicle (uav)
Unmanned aerial vehicle (uav)Unmanned aerial vehicle (uav)
Unmanned aerial vehicle (uav)
 
Drones
DronesDrones
Drones
 
Towards An Open Instrumentation Platform: Getting The Most From MAVLink, Ardu...
Towards An Open Instrumentation Platform: Getting The Most From MAVLink, Ardu...Towards An Open Instrumentation Platform: Getting The Most From MAVLink, Ardu...
Towards An Open Instrumentation Platform: Getting The Most From MAVLink, Ardu...
 
“Making Edge AI Inference Programming Easier and Flexible,” a Presentation fr...
“Making Edge AI Inference Programming Easier and Flexible,” a Presentation fr...“Making Edge AI Inference Programming Easier and Flexible,” a Presentation fr...
“Making Edge AI Inference Programming Easier and Flexible,” a Presentation fr...
 
3. Types and applications of drones
3. Types and applications of drones3. Types and applications of drones
3. Types and applications of drones
 
Flutter
FlutterFlutter
Flutter
 
Drone
DroneDrone
Drone
 
Drone’s
Drone’sDrone’s
Drone’s
 
Unmanned Aerial Systems and its history
Unmanned Aerial Systems and its historyUnmanned Aerial Systems and its history
Unmanned Aerial Systems and its history
 
Sonar based obstacle avoidance for UAVs
Sonar based obstacle avoidance for UAVsSonar based obstacle avoidance for UAVs
Sonar based obstacle avoidance for UAVs
 
UAV
UAVUAV
UAV
 
UNMANNED AERIAL VEHICLE
UNMANNED AERIAL VEHICLEUNMANNED AERIAL VEHICLE
UNMANNED AERIAL VEHICLE
 
An introduction to drones: hardware, protocols and auto-pilot systems
An introduction to drones: hardware, protocols and auto-pilot systemsAn introduction to drones: hardware, protocols and auto-pilot systems
An introduction to drones: hardware, protocols and auto-pilot systems
 
Uav presentation
Uav presentationUav presentation
Uav presentation
 
Unmanned Aerial Vehicle-UAVs
Unmanned Aerial Vehicle-UAVsUnmanned Aerial Vehicle-UAVs
Unmanned Aerial Vehicle-UAVs
 
Docker Swarm 0.2.0
Docker Swarm 0.2.0Docker Swarm 0.2.0
Docker Swarm 0.2.0
 
Seminar on uav
Seminar on uavSeminar on uav
Seminar on uav
 

Similar to Customising QGroundControl

Extended and embedding: containerd update & project use cases
Extended and embedding: containerd update & project use casesExtended and embedding: containerd update & project use cases
Extended and embedding: containerd update & project use casesPhil Estes
 
Getting started with open cv in raspberry pi
Getting started with open cv in raspberry piGetting started with open cv in raspberry pi
Getting started with open cv in raspberry piJayaprakash Nagaruru
 
Delivering Container-based Apps to IoT Edge devices
Delivering Container-based Apps to IoT Edge devicesDelivering Container-based Apps to IoT Edge devices
Delivering Container-based Apps to IoT Edge devicesAjeet Singh Raina
 
Developing and Benchmarking Qt applications on Hawkboard with Xgxperf
Developing and Benchmarking Qt applications on Hawkboard with XgxperfDeveloping and Benchmarking Qt applications on Hawkboard with Xgxperf
Developing and Benchmarking Qt applications on Hawkboard with XgxperfPrabindh Sundareson
 
DevOps Workflow: A Tutorial on Linux Containers
DevOps Workflow: A Tutorial on Linux ContainersDevOps Workflow: A Tutorial on Linux Containers
DevOps Workflow: A Tutorial on Linux Containersinside-BigData.com
 
GE Predix 新手入门 赵锴 物联网_IoT
GE Predix 新手入门 赵锴 物联网_IoTGE Predix 新手入门 赵锴 物联网_IoT
GE Predix 新手入门 赵锴 物联网_IoTKai Zhao
 
Native Application Development With Qt
Native Application Development With QtNative Application Development With Qt
Native Application Development With Qtrahulnimbalkar
 
Semi-Automatic Code Cleanup with Clang-Tidy
Semi-Automatic Code Cleanup with Clang-TidySemi-Automatic Code Cleanup with Clang-Tidy
Semi-Automatic Code Cleanup with Clang-TidyMarkus Werle
 
如何透過 Go-kit 快速搭建微服務架構應用程式實戰
如何透過 Go-kit 快速搭建微服務架構應用程式實戰如何透過 Go-kit 快速搭建微服務架構應用程式實戰
如何透過 Go-kit 快速搭建微服務架構應用程式實戰KAI CHU CHUNG
 
Build and run embedded apps faster from qt creator with docker
Build and run embedded apps faster from qt creator with dockerBuild and run embedded apps faster from qt creator with docker
Build and run embedded apps faster from qt creator with dockerQt
 
Webinar: Building Embedded Applications from QtCreator with Docker
Webinar: Building Embedded Applications from QtCreator with DockerWebinar: Building Embedded Applications from QtCreator with Docker
Webinar: Building Embedded Applications from QtCreator with DockerBurkhard Stubert
 
Qt for beginners part 4 doing more
Qt for beginners part 4   doing moreQt for beginners part 4   doing more
Qt for beginners part 4 doing moreICS
 
Essential parts to implement own Ozone backend
Essential parts to implement own Ozone backendEssential parts to implement own Ozone backend
Essential parts to implement own Ozone backendIgalia
 
Gitlab ci e kubernetes, build test and deploy your projects like a pro
Gitlab ci e kubernetes, build test and deploy your projects like a proGitlab ci e kubernetes, build test and deploy your projects like a pro
Gitlab ci e kubernetes, build test and deploy your projects like a prosparkfabrik
 
KSS Session and Tech Talk-2019 on IOT.pptx
KSS Session and Tech Talk-2019 on IOT.pptxKSS Session and Tech Talk-2019 on IOT.pptx
KSS Session and Tech Talk-2019 on IOT.pptxNashet Ali
 
Using Docker for GPU-accelerated Applications by Felix Abecassis and Jonathan...
Using Docker for GPU-accelerated Applications by Felix Abecassis and Jonathan...Using Docker for GPU-accelerated Applications by Felix Abecassis and Jonathan...
Using Docker for GPU-accelerated Applications by Felix Abecassis and Jonathan...Docker, Inc.
 

Similar to Customising QGroundControl (20)

Extended and embedding: containerd update & project use cases
Extended and embedding: containerd update & project use casesExtended and embedding: containerd update & project use cases
Extended and embedding: containerd update & project use cases
 
Getting started with open cv in raspberry pi
Getting started with open cv in raspberry piGetting started with open cv in raspberry pi
Getting started with open cv in raspberry pi
 
Qt Programming on TI Processors
Qt Programming on TI ProcessorsQt Programming on TI Processors
Qt Programming on TI Processors
 
Delivering Container-based Apps to IoT Edge devices
Delivering Container-based Apps to IoT Edge devicesDelivering Container-based Apps to IoT Edge devices
Delivering Container-based Apps to IoT Edge devices
 
Developing and Benchmarking Qt applications on Hawkboard with Xgxperf
Developing and Benchmarking Qt applications on Hawkboard with XgxperfDeveloping and Benchmarking Qt applications on Hawkboard with Xgxperf
Developing and Benchmarking Qt applications on Hawkboard with Xgxperf
 
DevOps Workflow: A Tutorial on Linux Containers
DevOps Workflow: A Tutorial on Linux ContainersDevOps Workflow: A Tutorial on Linux Containers
DevOps Workflow: A Tutorial on Linux Containers
 
GE Predix 新手入门 赵锴 物联网_IoT
GE Predix 新手入门 赵锴 物联网_IoTGE Predix 新手入门 赵锴 物联网_IoT
GE Predix 新手入门 赵锴 物联网_IoT
 
groovy & grails - lecture 9
groovy & grails - lecture 9groovy & grails - lecture 9
groovy & grails - lecture 9
 
Native Application Development With Qt
Native Application Development With QtNative Application Development With Qt
Native Application Development With Qt
 
Semi-Automatic Code Cleanup with Clang-Tidy
Semi-Automatic Code Cleanup with Clang-TidySemi-Automatic Code Cleanup with Clang-Tidy
Semi-Automatic Code Cleanup with Clang-Tidy
 
CI-CD WITH GITLAB WORKFLOW
CI-CD WITH GITLAB WORKFLOWCI-CD WITH GITLAB WORKFLOW
CI-CD WITH GITLAB WORKFLOW
 
如何透過 Go-kit 快速搭建微服務架構應用程式實戰
如何透過 Go-kit 快速搭建微服務架構應用程式實戰如何透過 Go-kit 快速搭建微服務架構應用程式實戰
如何透過 Go-kit 快速搭建微服務架構應用程式實戰
 
Build and run embedded apps faster from qt creator with docker
Build and run embedded apps faster from qt creator with dockerBuild and run embedded apps faster from qt creator with docker
Build and run embedded apps faster from qt creator with docker
 
Webinar: Building Embedded Applications from QtCreator with Docker
Webinar: Building Embedded Applications from QtCreator with DockerWebinar: Building Embedded Applications from QtCreator with Docker
Webinar: Building Embedded Applications from QtCreator with Docker
 
Qt for beginners part 4 doing more
Qt for beginners part 4   doing moreQt for beginners part 4   doing more
Qt for beginners part 4 doing more
 
Essential parts to implement own Ozone backend
Essential parts to implement own Ozone backendEssential parts to implement own Ozone backend
Essential parts to implement own Ozone backend
 
Android tips and tricks
Android tips and tricksAndroid tips and tricks
Android tips and tricks
 
Gitlab ci e kubernetes, build test and deploy your projects like a pro
Gitlab ci e kubernetes, build test and deploy your projects like a proGitlab ci e kubernetes, build test and deploy your projects like a pro
Gitlab ci e kubernetes, build test and deploy your projects like a pro
 
KSS Session and Tech Talk-2019 on IOT.pptx
KSS Session and Tech Talk-2019 on IOT.pptxKSS Session and Tech Talk-2019 on IOT.pptx
KSS Session and Tech Talk-2019 on IOT.pptx
 
Using Docker for GPU-accelerated Applications by Felix Abecassis and Jonathan...
Using Docker for GPU-accelerated Applications by Felix Abecassis and Jonathan...Using Docker for GPU-accelerated Applications by Felix Abecassis and Jonathan...
Using Docker for GPU-accelerated Applications by Felix Abecassis and Jonathan...
 

More from Godfrey Nolan

Counting Cars with Drones
Counting Cars with DronesCounting Cars with Drones
Counting Cars with DronesGodfrey Nolan
 
Parrot Tutorials in Kotlin
Parrot Tutorials in KotlinParrot Tutorials in Kotlin
Parrot Tutorials in KotlinGodfrey Nolan
 
DJI Mobile SDK Tutorials in kotlin
DJI Mobile SDK Tutorials in kotlinDJI Mobile SDK Tutorials in kotlin
DJI Mobile SDK Tutorials in kotlinGodfrey Nolan
 
Getting started with tensor flow datasets
Getting started with tensor flow datasets Getting started with tensor flow datasets
Getting started with tensor flow datasets Godfrey Nolan
 
Using ML to make your UI tests more robust
Using ML to make your UI tests more robustUsing ML to make your UI tests more robust
Using ML to make your UI tests more robustGodfrey Nolan
 
Counting sheep with Drones and AI
Counting sheep with Drones and AICounting sheep with Drones and AI
Counting sheep with Drones and AIGodfrey Nolan
 
Writing Secure Mobile Apps for Drones
Writing Secure Mobile Apps for DronesWriting Secure Mobile Apps for Drones
Writing Secure Mobile Apps for DronesGodfrey Nolan
 
The Day We Infected Ourselves with Ransomware
The Day We Infected Ourselves with RansomwareThe Day We Infected Ourselves with Ransomware
The Day We Infected Ourselves with RansomwareGodfrey Nolan
 
From Maps to Apps the Future of Drone Technology
From Maps to Apps the Future of Drone TechnologyFrom Maps to Apps the Future of Drone Technology
From Maps to Apps the Future of Drone TechnologyGodfrey Nolan
 
Tableau 10 and quickbooks
Tableau 10 and quickbooksTableau 10 and quickbooks
Tableau 10 and quickbooksGodfrey Nolan
 
Network graphs in tableau
Network graphs in tableauNetwork graphs in tableau
Network graphs in tableauGodfrey Nolan
 

More from Godfrey Nolan (20)

Counting Cars with Drones
Counting Cars with DronesCounting Cars with Drones
Counting Cars with Drones
 
DJI Payload SDK
DJI Payload SDKDJI Payload SDK
DJI Payload SDK
 
Parrot Tutorials in Kotlin
Parrot Tutorials in KotlinParrot Tutorials in Kotlin
Parrot Tutorials in Kotlin
 
DJI Mobile SDK Tutorials in kotlin
DJI Mobile SDK Tutorials in kotlinDJI Mobile SDK Tutorials in kotlin
DJI Mobile SDK Tutorials in kotlin
 
Drone sdk showdown
Drone sdk showdownDrone sdk showdown
Drone sdk showdown
 
AI/ML in drones
AI/ML in dronesAI/ML in drones
AI/ML in drones
 
Getting started with tensor flow datasets
Getting started with tensor flow datasets Getting started with tensor flow datasets
Getting started with tensor flow datasets
 
Using ML to make your UI tests more robust
Using ML to make your UI tests more robustUsing ML to make your UI tests more robust
Using ML to make your UI tests more robust
 
Java best practices
Java best practicesJava best practices
Java best practices
 
Counting sheep with Drones and AI
Counting sheep with Drones and AICounting sheep with Drones and AI
Counting sheep with Drones and AI
 
Writing Secure Mobile Apps for Drones
Writing Secure Mobile Apps for DronesWriting Secure Mobile Apps for Drones
Writing Secure Mobile Apps for Drones
 
Android Device Labs
Android Device LabsAndroid Device Labs
Android Device Labs
 
The Day We Infected Ourselves with Ransomware
The Day We Infected Ourselves with RansomwareThe Day We Infected Ourselves with Ransomware
The Day We Infected Ourselves with Ransomware
 
Agile Android
Agile AndroidAgile Android
Agile Android
 
Agile Swift
Agile SwiftAgile Swift
Agile Swift
 
Android Refactoring
Android RefactoringAndroid Refactoring
Android Refactoring
 
Agile mobile
Agile mobileAgile mobile
Agile mobile
 
From Maps to Apps the Future of Drone Technology
From Maps to Apps the Future of Drone TechnologyFrom Maps to Apps the Future of Drone Technology
From Maps to Apps the Future of Drone Technology
 
Tableau 10 and quickbooks
Tableau 10 and quickbooksTableau 10 and quickbooks
Tableau 10 and quickbooks
 
Network graphs in tableau
Network graphs in tableauNetwork graphs in tableau
Network graphs in tableau
 

Recently uploaded

Call Girls in Uttam Nagar Delhi 💯Call Us 🔝8264348440🔝
Call Girls in Uttam Nagar Delhi 💯Call Us 🔝8264348440🔝Call Girls in Uttam Nagar Delhi 💯Call Us 🔝8264348440🔝
Call Girls in Uttam Nagar Delhi 💯Call Us 🔝8264348440🔝soniya singh
 
VIP Kolkata Call Girl Kestopur 👉 8250192130 Available With Room
VIP Kolkata Call Girl Kestopur 👉 8250192130  Available With RoomVIP Kolkata Call Girl Kestopur 👉 8250192130  Available With Room
VIP Kolkata Call Girl Kestopur 👉 8250192130 Available With Roomdivyansh0kumar0
 
Sushant Golf City / best call girls in Lucknow | Service-oriented sexy call g...
Sushant Golf City / best call girls in Lucknow | Service-oriented sexy call g...Sushant Golf City / best call girls in Lucknow | Service-oriented sexy call g...
Sushant Golf City / best call girls in Lucknow | Service-oriented sexy call g...akbard9823
 
Low Rate Call Girls Kolkata Avani 🤌 8250192130 🚀 Vip Call Girls Kolkata
Low Rate Call Girls Kolkata Avani 🤌  8250192130 🚀 Vip Call Girls KolkataLow Rate Call Girls Kolkata Avani 🤌  8250192130 🚀 Vip Call Girls Kolkata
Low Rate Call Girls Kolkata Avani 🤌 8250192130 🚀 Vip Call Girls Kolkataanamikaraghav4
 
Chennai Call Girls Alwarpet Phone 🍆 8250192130 👅 celebrity escorts service
Chennai Call Girls Alwarpet Phone 🍆 8250192130 👅 celebrity escorts serviceChennai Call Girls Alwarpet Phone 🍆 8250192130 👅 celebrity escorts service
Chennai Call Girls Alwarpet Phone 🍆 8250192130 👅 celebrity escorts servicevipmodelshub1
 
Denver Web Design brochure for public viewing
Denver Web Design brochure for public viewingDenver Web Design brochure for public viewing
Denver Web Design brochure for public viewingbigorange77
 
VIP Call Girls Kolkata Ananya 🤌 8250192130 🚀 Vip Call Girls Kolkata
VIP Call Girls Kolkata Ananya 🤌  8250192130 🚀 Vip Call Girls KolkataVIP Call Girls Kolkata Ananya 🤌  8250192130 🚀 Vip Call Girls Kolkata
VIP Call Girls Kolkata Ananya 🤌 8250192130 🚀 Vip Call Girls Kolkataanamikaraghav4
 
定制(AUT毕业证书)新西兰奥克兰理工大学毕业证成绩单原版一比一
定制(AUT毕业证书)新西兰奥克兰理工大学毕业证成绩单原版一比一定制(AUT毕业证书)新西兰奥克兰理工大学毕业证成绩单原版一比一
定制(AUT毕业证书)新西兰奥克兰理工大学毕业证成绩单原版一比一Fs
 
Call Girls In Mumbai Central Mumbai ❤️ 9920874524 👈 Cash on Delivery
Call Girls In Mumbai Central Mumbai ❤️ 9920874524 👈 Cash on DeliveryCall Girls In Mumbai Central Mumbai ❤️ 9920874524 👈 Cash on Delivery
Call Girls In Mumbai Central Mumbai ❤️ 9920874524 👈 Cash on Deliverybabeytanya
 
办理(UofR毕业证书)罗切斯特大学毕业证成绩单原版一比一
办理(UofR毕业证书)罗切斯特大学毕业证成绩单原版一比一办理(UofR毕业证书)罗切斯特大学毕业证成绩单原版一比一
办理(UofR毕业证书)罗切斯特大学毕业证成绩单原版一比一z xss
 
Russian Call Girls in Kolkata Ishita 🤌 8250192130 🚀 Vip Call Girls Kolkata
Russian Call Girls in Kolkata Ishita 🤌  8250192130 🚀 Vip Call Girls KolkataRussian Call Girls in Kolkata Ishita 🤌  8250192130 🚀 Vip Call Girls Kolkata
Russian Call Girls in Kolkata Ishita 🤌 8250192130 🚀 Vip Call Girls Kolkataanamikaraghav4
 
Call Girls South Delhi Delhi reach out to us at ☎ 9711199012
Call Girls South Delhi Delhi reach out to us at ☎ 9711199012Call Girls South Delhi Delhi reach out to us at ☎ 9711199012
Call Girls South Delhi Delhi reach out to us at ☎ 9711199012rehmti665
 
Magic exist by Marta Loveguard - presentation.pptx
Magic exist by Marta Loveguard - presentation.pptxMagic exist by Marta Loveguard - presentation.pptx
Magic exist by Marta Loveguard - presentation.pptxMartaLoveguard
 
Packaging the Monolith - PHP Tek 2024 (Breaking it down one bite at a time)
Packaging the Monolith - PHP Tek 2024 (Breaking it down one bite at a time)Packaging the Monolith - PHP Tek 2024 (Breaking it down one bite at a time)
Packaging the Monolith - PHP Tek 2024 (Breaking it down one bite at a time)Dana Luther
 
Complet Documnetation for Smart Assistant Application for Disabled Person
Complet Documnetation   for Smart Assistant Application for Disabled PersonComplet Documnetation   for Smart Assistant Application for Disabled Person
Complet Documnetation for Smart Assistant Application for Disabled Personfurqan222004
 
定制(CC毕业证书)美国美国社区大学毕业证成绩单原版一比一
定制(CC毕业证书)美国美国社区大学毕业证成绩单原版一比一定制(CC毕业证书)美国美国社区大学毕业证成绩单原版一比一
定制(CC毕业证书)美国美国社区大学毕业证成绩单原版一比一3sw2qly1
 
Chennai Call Girls Porur Phone 🍆 8250192130 👅 celebrity escorts service
Chennai Call Girls Porur Phone 🍆 8250192130 👅 celebrity escorts serviceChennai Call Girls Porur Phone 🍆 8250192130 👅 celebrity escorts service
Chennai Call Girls Porur Phone 🍆 8250192130 👅 celebrity escorts servicesonalikaur4
 

Recently uploaded (20)

Call Girls in Uttam Nagar Delhi 💯Call Us 🔝8264348440🔝
Call Girls in Uttam Nagar Delhi 💯Call Us 🔝8264348440🔝Call Girls in Uttam Nagar Delhi 💯Call Us 🔝8264348440🔝
Call Girls in Uttam Nagar Delhi 💯Call Us 🔝8264348440🔝
 
VIP Kolkata Call Girl Kestopur 👉 8250192130 Available With Room
VIP Kolkata Call Girl Kestopur 👉 8250192130  Available With RoomVIP Kolkata Call Girl Kestopur 👉 8250192130  Available With Room
VIP Kolkata Call Girl Kestopur 👉 8250192130 Available With Room
 
Sushant Golf City / best call girls in Lucknow | Service-oriented sexy call g...
Sushant Golf City / best call girls in Lucknow | Service-oriented sexy call g...Sushant Golf City / best call girls in Lucknow | Service-oriented sexy call g...
Sushant Golf City / best call girls in Lucknow | Service-oriented sexy call g...
 
Low Rate Call Girls Kolkata Avani 🤌 8250192130 🚀 Vip Call Girls Kolkata
Low Rate Call Girls Kolkata Avani 🤌  8250192130 🚀 Vip Call Girls KolkataLow Rate Call Girls Kolkata Avani 🤌  8250192130 🚀 Vip Call Girls Kolkata
Low Rate Call Girls Kolkata Avani 🤌 8250192130 🚀 Vip Call Girls Kolkata
 
Chennai Call Girls Alwarpet Phone 🍆 8250192130 👅 celebrity escorts service
Chennai Call Girls Alwarpet Phone 🍆 8250192130 👅 celebrity escorts serviceChennai Call Girls Alwarpet Phone 🍆 8250192130 👅 celebrity escorts service
Chennai Call Girls Alwarpet Phone 🍆 8250192130 👅 celebrity escorts service
 
Denver Web Design brochure for public viewing
Denver Web Design brochure for public viewingDenver Web Design brochure for public viewing
Denver Web Design brochure for public viewing
 
VIP Call Girls Kolkata Ananya 🤌 8250192130 🚀 Vip Call Girls Kolkata
VIP Call Girls Kolkata Ananya 🤌  8250192130 🚀 Vip Call Girls KolkataVIP Call Girls Kolkata Ananya 🤌  8250192130 🚀 Vip Call Girls Kolkata
VIP Call Girls Kolkata Ananya 🤌 8250192130 🚀 Vip Call Girls Kolkata
 
定制(AUT毕业证书)新西兰奥克兰理工大学毕业证成绩单原版一比一
定制(AUT毕业证书)新西兰奥克兰理工大学毕业证成绩单原版一比一定制(AUT毕业证书)新西兰奥克兰理工大学毕业证成绩单原版一比一
定制(AUT毕业证书)新西兰奥克兰理工大学毕业证成绩单原版一比一
 
Call Girls In Mumbai Central Mumbai ❤️ 9920874524 👈 Cash on Delivery
Call Girls In Mumbai Central Mumbai ❤️ 9920874524 👈 Cash on DeliveryCall Girls In Mumbai Central Mumbai ❤️ 9920874524 👈 Cash on Delivery
Call Girls In Mumbai Central Mumbai ❤️ 9920874524 👈 Cash on Delivery
 
young call girls in Uttam Nagar🔝 9953056974 🔝 Delhi escort Service
young call girls in Uttam Nagar🔝 9953056974 🔝 Delhi escort Serviceyoung call girls in Uttam Nagar🔝 9953056974 🔝 Delhi escort Service
young call girls in Uttam Nagar🔝 9953056974 🔝 Delhi escort Service
 
办理(UofR毕业证书)罗切斯特大学毕业证成绩单原版一比一
办理(UofR毕业证书)罗切斯特大学毕业证成绩单原版一比一办理(UofR毕业证书)罗切斯特大学毕业证成绩单原版一比一
办理(UofR毕业证书)罗切斯特大学毕业证成绩单原版一比一
 
Model Call Girl in Jamuna Vihar Delhi reach out to us at 🔝9953056974🔝
Model Call Girl in  Jamuna Vihar Delhi reach out to us at 🔝9953056974🔝Model Call Girl in  Jamuna Vihar Delhi reach out to us at 🔝9953056974🔝
Model Call Girl in Jamuna Vihar Delhi reach out to us at 🔝9953056974🔝
 
Russian Call Girls in Kolkata Ishita 🤌 8250192130 🚀 Vip Call Girls Kolkata
Russian Call Girls in Kolkata Ishita 🤌  8250192130 🚀 Vip Call Girls KolkataRussian Call Girls in Kolkata Ishita 🤌  8250192130 🚀 Vip Call Girls Kolkata
Russian Call Girls in Kolkata Ishita 🤌 8250192130 🚀 Vip Call Girls Kolkata
 
Call Girls South Delhi Delhi reach out to us at ☎ 9711199012
Call Girls South Delhi Delhi reach out to us at ☎ 9711199012Call Girls South Delhi Delhi reach out to us at ☎ 9711199012
Call Girls South Delhi Delhi reach out to us at ☎ 9711199012
 
Magic exist by Marta Loveguard - presentation.pptx
Magic exist by Marta Loveguard - presentation.pptxMagic exist by Marta Loveguard - presentation.pptx
Magic exist by Marta Loveguard - presentation.pptx
 
Hot Sexy call girls in Rk Puram 🔝 9953056974 🔝 Delhi escort Service
Hot Sexy call girls in  Rk Puram 🔝 9953056974 🔝 Delhi escort ServiceHot Sexy call girls in  Rk Puram 🔝 9953056974 🔝 Delhi escort Service
Hot Sexy call girls in Rk Puram 🔝 9953056974 🔝 Delhi escort Service
 
Packaging the Monolith - PHP Tek 2024 (Breaking it down one bite at a time)
Packaging the Monolith - PHP Tek 2024 (Breaking it down one bite at a time)Packaging the Monolith - PHP Tek 2024 (Breaking it down one bite at a time)
Packaging the Monolith - PHP Tek 2024 (Breaking it down one bite at a time)
 
Complet Documnetation for Smart Assistant Application for Disabled Person
Complet Documnetation   for Smart Assistant Application for Disabled PersonComplet Documnetation   for Smart Assistant Application for Disabled Person
Complet Documnetation for Smart Assistant Application for Disabled Person
 
定制(CC毕业证书)美国美国社区大学毕业证成绩单原版一比一
定制(CC毕业证书)美国美国社区大学毕业证成绩单原版一比一定制(CC毕业证书)美国美国社区大学毕业证成绩单原版一比一
定制(CC毕业证书)美国美国社区大学毕业证成绩单原版一比一
 
Chennai Call Girls Porur Phone 🍆 8250192130 👅 celebrity escorts service
Chennai Call Girls Porur Phone 🍆 8250192130 👅 celebrity escorts serviceChennai Call Girls Porur Phone 🍆 8250192130 👅 celebrity escorts service
Chennai Call Girls Porur Phone 🍆 8250192130 👅 celebrity escorts service
 

Customising QGroundControl

  • 1. QGroundControl Drone Software July 22 Meetup Godfrey Nolan
  • 2. Open Source Cross Platform Ground Control System
  • 3. QGC Run’s on Android, Linux or Windows Built on Qt platform Pixhawk controller Mavlink drones Runs on Ardupilot or PX4 firmware Quadcopters, Rovers, Tractors, VTOL planes etc. Blue UAS
  • 4. Today’s goal Add some customizations to QGC - 3 out of the box examples - Hide settings (flight modes) from newbies Working with Windows/PX4
  • 5. Setup (Windows & Android) 1. Install Visual Studio 2019 a. Community Edition & Desktop development with C++ 2. Install Qt Creator a. Custom Installation 5.15.2 3. Install Android Studio a. Install Android command line tools (latest) b. Install CMake c. Add Tablet Emulator
  • 6.
  • 8. Download QGC code git clone https://github.com/mavlink/qgroundcontrol --single-branch --branch Stable_V4.2 git submodule update –recursive (or git module init/git module update if that doesn’t work)
  • 10. Orange Cube or NXP Ardupilot PX4
  • 12. Custom Project 1. Clean previous build 2. Change custom-example to custom 3. ‘python updateqrc.py’ 4. Build
  • 13. | custom.pri | custom.qrc | custom_deploy.pri | InstrumentValueIcons.qrc | qgcresources.exclusion | qgcresources.qrc | qgroundcontrol.exclusion | qgroundcontrol.qrc | README.jpg | README.md | updateinstrumentqrc.py | updateqrc.py | +---android | ---res | +---drawable-hdpi | | icon.png ... | +---deploy | qgroundcontrol-start.sh | qgroundcontrol.desktop +---res | | CustomFlyViewOverlay.qml | | | +---Custom | | +---Camera | | | qmldir | | | ZoomControl.qml | | | | | ---Widgets | | CustomArtificialHorizon.qml | | CustomAttitudeWidget.qml | | CustomIconButton.qml | | CustomOnOffSwitch.qml | | CustomQuickButton.qml | | CustomSignalStrength.qml | | CustomToolBarButton.qml | | CustomVehicleButton.qml | | qmldir | | | ---Images | altitude.svg | attitude_crosshair.svg | attitude_dial.svg | attitude_pointer.svg | chronometer.svg | compass_needle.svg | compass_pointer.svg | CustomAppIcon.png | CustomVehicleIcon.svg | distance.svg | horizontal_speed.svg | microSD.svg | odometer.svg | vertical_speed.svg | void.png | ---src | CustomPlugin.cc | CustomPlugin.h | +---AutoPilotPlugin | CustomAutoPilotPlugin.cc | CustomAutoPilotPlugin.h | ---FirmwarePlugin CustomFirmwarePlugin.cc CustomFirmwarePlugin.h CustomFirmwarePluginFactory.cc CustomFirmwarePluginFactory.h
  • 14. | custom.pri | custom.qrc | custom_deploy.pri | InstrumentValueIcons.qrc | qgcresources.exclusion | qgcresources.qrc | qgroundcontrol.exclusion | qgroundcontrol.qrc | README.jpg | README.md | updateinstrumentqrc.py | updateqrc.py | +---android | ---res | +---drawable-hdpi | | icon.png ... | +---deploy | qgroundcontrol-start.sh | qgroundcontrol.desktop +---res | | CustomFlyViewOverlay.qml | | | +---Custom | | +---Camera | | | qmldir | | | ZoomControl.qml | | | | | ---Widgets | | CustomArtificialHorizon.qml | | CustomAttitudeWidget.qml | | CustomIconButton.qml | | CustomOnOffSwitch.qml | | CustomQuickButton.qml | | CustomSignalStrength.qml | | CustomToolBarButton.qml | | CustomVehicleButton.qml | | qmldir | | | ---Images | altitude.svg | attitude_crosshair.svg | attitude_dial.svg | attitude_pointer.svg | chronometer.svg | compass_needle.svg | compass_pointer.svg | CustomAppIcon.png | CustomVehicleIcon.svg | distance.svg | horizontal_speed.svg | microSD.svg | odometer.svg | vertical_speed.svg | void.png | ---src | CustomPlugin.cc | CustomPlugin.h | +---AutoPilotPlugin | CustomAutoPilotPlugin.cc | CustomAutoPilotPlugin.h | ---FirmwarePlugin CustomFirmwarePlugin.cc CustomFirmwarePlugin.h CustomFirmwarePluginFactory.cc CustomFirmwarePluginFactory.h
  • 15. Out of the box 1. custom-example 2. First Run Prompts 3. Toolbar customization 4. Fly View customization
  • 16. custom-example 1. rename custom-example to custom 2. clean build 3. cd custom 4. python updateqrc.py Excluded: <file alias="QGroundControl/FlightDisplay/FlyViewCustomLayer.qml">src/FlightDisplay/FlyViewCustomLayer. qml</file> 5. build and run
  • 21. Custom Toolbar ● Exclude the existing Toolbar in qgroundcontrol.qrc <file alias="QGroundControl/Controls/MainToolBar.qml">src/ui/toolbar/MainToolBar.qml</file> ● Add the new Toolbar in custom.qrc <qresource prefix="/qml"> <file alias="QGroundControl/FlightDisplay/FlyViewCustomLayer.qml">res/CustomFlyViewOverlay.qml</file> <file alias="QGroundControl/Controls/MainToolBar.qml">res/CustomMainToolbar.qml</file> </qresource> ● Create CustomMainToolbar.qml and please in custom/res folder
  • 23. Custom Toolbar 1. clean build 2. cd custom 3. Run python updateqrc.py $ python updateqrc.py Excluded: <file alias="QGroundControl/Controls/MainToolBar.qml">src/ui/toolbar/MainToolBar.qml</file> Excluded: <file alias="QGroundControl/FlightDisplay/FlyViewCustomLayer.qml">src/FlightDisplay/FlyViewCust omLayer.qml</file> 4. build and run
  • 26. Custom Toolbar – Before and After
  • 27. Fly View Customization 1. clean build 2. cd custom 3. Add FlyViewWidgetLayer.qml to qgroundcontrol.exclusion 4. Add CustomFlyViewWidgetLayer.qml to custom.qrc 3. python updateqrc.py python updateqrc.py Excluded: <file alias="QGroundControl/Controls/MainToolBar.qml">src/ui/toolbar/MainToolBar.qml</file> Excluded: <file alias="QGroundControl/FlightDisplay/FlyViewCustomLayer.qml">src/FlightDisplay/FlyViewCustomLayer. qml</file> Excluded: <file alias="QGroundControl/FlightDisplay/FlyViewWidgetLayer.qml">src/FlightDisplay/FlyViewWidgetLayer. qml</file> 4. build and run

Editor's Notes

  1. Very different from the SDK’s we’ve looked at before, such as DJI SDK or Parrot SDK. We can still customise it, but we’re working with an already built system. There’s no reason why you couldn’t build your own GCS using Mavlink SDK or MAVSDK
  2. Visual Studio gets you the C++ compiler QT Creator is our IDE Android Studio if we want to push it to Android phone or tablet
  3. Just using this to get the compiler - Qt does all the hard work
  4. Only download the MSVC 2019 64-bit, Qt Charts and Android This will take a while
  5. Don’t download the latest version, it’s probably not going to compile correctly Cd into directory and the do the git submodule recursive command
  6. Hit the hammer to build and hit the green arrow to start the windows version.
  7. Approx $450 for the orange cube NXP drone approx $350 with the telemetry module RDDRONE-FMUK66FMU Easiest way to get there is to go to hovergames.com
  8. With the orangecube connected via USB do the following Click on the Q->Vehicle Setup and then firmware - using the orange cube is straightfoward It’s not going to fly but it’s good enough to get us started
  9. This changes colors, couple other things but it does give us the framework to add our own customizations QML = QT Modeling Language Javascript like language Also uses a lot of C++ WE MAKE CHANGES IN THE CUSTOM FOLDER SO WE DON’T LOSE ANY UPSTREAM IMPROVEMENTS WHILE STILL KEEPING OUR BRANDING
  10. Here’s the directory structure of the custom directory We already know updateqrc.py tells the compiler to compile the custom application Custom Build Plugins The mechanisms for customizing QGC for a custom build is through the existing FirmwarePlugin, AutoPilotPlugin and QGCCorePlugin architectures. By creating subclasses of these plugins in your custom build you can change the behavior of QGC to suit your needs without needed to modify the upstream code. QGCCorePlugin This allows you to modify the parts of QGC which are not directly related to vehicle but are related to the QGC application itself. This includes things like application settings, color palettes, branding and so forth.
  11. Resource Overrides A "resource" in QGC source code terminology is anything found in the qgroundcontrol.qrc and qgcresources.qrc file. By overriding a resource you can replace it with your own version of it. This could be as simple as a single icon, or as complex as replacing an entire Vehicle Setup page of qml ui code. Exclusion Files The first step to overriding a resource is to "exclude" it from the standard portion of the upstream build. This means that you are going to provide that resource in your own custom build resource file(s). There are two files which achieve this: qgroundcontrol.exclusion and qgcresources.exclusion. They correspond directly with the *.qrc counterparts. In order to exclude a resource, copy the resource line from the .qrc file into the appropriate .exclusion file. Custom version of excluded resources You must include the custom version of the overriden resouce in you custom build resource file. The resource alias must exactly match the upstream alias. The name and actual location of the resource can be anywhere within your custom directory structure. Generating the new modified versions of standard QGC resource file This is done using the updateqrc.py python script. It will read the upstream qgroundcontrol.qrc and qgcresources.qrc file and the corresponding exclusion files and output new versions of these files in your custom directory. These new versions will not have the resources you specified to exclude in them. The build system for custom builds uses these generated files (if they exist) to build with instead of the upstream versions. The generated version of these file should be added to your repo. Also whenever you update the upstream portion of QGC in your custom repo you must re-run python updateqrc.py to generate new version of the files since the upstream resources may have changed.
  12. Each time do the following Clean the build Change custom-example to custom Make changes Run ‘python updateqrc.py’ Build
  13. Two choices instead of 3
  14. Each time do the following Clean the build Change custom-example to custom Make changes Run ‘python updateqrc.py’ Build
  15. custom.qrc
  16. Moved MainStatusIndicator to upper right hand corner (“Disconnected” → if no vehicle is connected) Can tinker with the logo button in upper left corner through editing the QGCToolBarButton “currentButton”