SlideShare une entreprise Scribd logo
1  sur  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

Contenu connexe

Tendances

Androidの入力システム
Androidの入力システムAndroidの入力システム
Androidの入力システム
magoroku Yamamoto
 

Tendances (20)

[KubeCon EU 2021] Introduction and Deep Dive Into Containerd
[KubeCon EU 2021] Introduction and Deep Dive Into Containerd[KubeCon EU 2021] Introduction and Deep Dive Into Containerd
[KubeCon EU 2021] Introduction and Deep Dive Into Containerd
 
Embedded Android Workshop
Embedded Android WorkshopEmbedded Android Workshop
Embedded Android Workshop
 
Troubleshooting Linux Kernel Modules And Device Drivers
Troubleshooting Linux Kernel Modules And Device DriversTroubleshooting Linux Kernel Modules And Device Drivers
Troubleshooting Linux Kernel Modules And Device Drivers
 
Qemu Introduction
Qemu IntroductionQemu Introduction
Qemu Introduction
 
Control your service resources with systemd
 Control your service resources with systemd  Control your service resources with systemd
Control your service resources with systemd
 
Native mobile application development with Flutter (Dart)
Native mobile application development with Flutter (Dart)Native mobile application development with Flutter (Dart)
Native mobile application development with Flutter (Dart)
 
An Introduction To Jenkins
An Introduction To JenkinsAn Introduction To Jenkins
An Introduction To Jenkins
 
Androidの入力システム
Androidの入力システムAndroidの入力システム
Androidの入力システム
 
golang_getting_started.pptx
golang_getting_started.pptxgolang_getting_started.pptx
golang_getting_started.pptx
 
Scheduling in Android
Scheduling in AndroidScheduling in Android
Scheduling in Android
 
Android OS Porting: Introduction
Android OS Porting: IntroductionAndroid OS Porting: Introduction
Android OS Porting: Introduction
 
A Gentle Introduction To Docker And All Things Containers
A Gentle Introduction To Docker And All Things ContainersA Gentle Introduction To Docker And All Things Containers
A Gentle Introduction To Docker And All Things Containers
 
淺談探索 Linux 系統設計之道
淺談探索 Linux 系統設計之道 淺談探索 Linux 系統設計之道
淺談探索 Linux 系統設計之道
 
ARM Trusted FirmwareのBL31を単体で使う!
ARM Trusted FirmwareのBL31を単体で使う!ARM Trusted FirmwareのBL31を単体で使う!
ARM Trusted FirmwareのBL31を単体で使う!
 
The TCP/IP Stack in the Linux Kernel
The TCP/IP Stack in the Linux KernelThe TCP/IP Stack in the Linux Kernel
The TCP/IP Stack in the Linux Kernel
 
Linux monitoring and Troubleshooting for DBA's
Linux monitoring and Troubleshooting for DBA'sLinux monitoring and Troubleshooting for DBA's
Linux monitoring and Troubleshooting for DBA's
 
Tuning TCP and NGINX on EC2
Tuning TCP and NGINX on EC2Tuning TCP and NGINX on EC2
Tuning TCP and NGINX on EC2
 
Porting Android
Porting AndroidPorting Android
Porting Android
 
Introduction to OpenCL
Introduction to OpenCLIntroduction to OpenCL
Introduction to OpenCL
 
Part 02 Linux Kernel Module Programming
Part 02 Linux Kernel Module ProgrammingPart 02 Linux Kernel Module Programming
Part 02 Linux Kernel Module Programming
 

Similaire à Customising QGroundControl

Native Application Development With Qt
Native Application Development With QtNative Application Development With Qt
Native Application Development With Qt
rahulnimbalkar
 

Similaire à 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...
 

Plus de Godfrey Nolan

Plus de 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
 

Dernier

➥🔝 7737669865 🔝▻ mehsana Call-girls in Women Seeking Men 🔝mehsana🔝 Escorts...
➥🔝 7737669865 🔝▻ mehsana Call-girls in Women Seeking Men  🔝mehsana🔝   Escorts...➥🔝 7737669865 🔝▻ mehsana Call-girls in Women Seeking Men  🔝mehsana🔝   Escorts...
➥🔝 7737669865 🔝▻ mehsana Call-girls in Women Seeking Men 🔝mehsana🔝 Escorts...
nirzagarg
 
Call Girls in Prashant Vihar, Delhi 💯 Call Us 🔝9953056974 🔝 Escort Service
Call Girls in Prashant Vihar, Delhi 💯 Call Us 🔝9953056974 🔝 Escort ServiceCall Girls in Prashant Vihar, Delhi 💯 Call Us 🔝9953056974 🔝 Escort Service
Call Girls in Prashant Vihar, Delhi 💯 Call Us 🔝9953056974 🔝 Escort Service
9953056974 Low Rate Call Girls In Saket, Delhi NCR
 
valsad Escorts Service ☎️ 6378878445 ( Sakshi Sinha ) High Profile Call Girls...
valsad Escorts Service ☎️ 6378878445 ( Sakshi Sinha ) High Profile Call Girls...valsad Escorts Service ☎️ 6378878445 ( Sakshi Sinha ) High Profile Call Girls...
valsad Escorts Service ☎️ 6378878445 ( Sakshi Sinha ) High Profile Call Girls...
Call Girls In Delhi Whatsup 9873940964 Enjoy Unlimited Pleasure
 
6.High Profile Call Girls In Punjab +919053900678 Punjab Call GirlHigh Profil...
6.High Profile Call Girls In Punjab +919053900678 Punjab Call GirlHigh Profil...6.High Profile Call Girls In Punjab +919053900678 Punjab Call GirlHigh Profil...
6.High Profile Call Girls In Punjab +919053900678 Punjab Call GirlHigh Profil...
@Chandigarh #call #Girls 9053900678 @Call #Girls in @Punjab 9053900678
 
在线制作约克大学毕业证(yu毕业证)在读证明认证可查
在线制作约克大学毕业证(yu毕业证)在读证明认证可查在线制作约克大学毕业证(yu毕业证)在读证明认证可查
在线制作约克大学毕业证(yu毕业证)在读证明认证可查
ydyuyu
 
VIP Call Girls Himatnagar 7001035870 Whatsapp Number, 24/07 Booking
VIP Call Girls Himatnagar 7001035870 Whatsapp Number, 24/07 BookingVIP Call Girls Himatnagar 7001035870 Whatsapp Number, 24/07 Booking
VIP Call Girls Himatnagar 7001035870 Whatsapp Number, 24/07 Booking
dharasingh5698
 
VIP Call Girls Pollachi 7001035870 Whatsapp Number, 24/07 Booking
VIP Call Girls Pollachi 7001035870 Whatsapp Number, 24/07 BookingVIP Call Girls Pollachi 7001035870 Whatsapp Number, 24/07 Booking
VIP Call Girls Pollachi 7001035870 Whatsapp Number, 24/07 Booking
dharasingh5698
 

Dernier (20)

Wagholi & High Class Call Girls Pune Neha 8005736733 | 100% Gennuine High Cla...
Wagholi & High Class Call Girls Pune Neha 8005736733 | 100% Gennuine High Cla...Wagholi & High Class Call Girls Pune Neha 8005736733 | 100% Gennuine High Cla...
Wagholi & High Class Call Girls Pune Neha 8005736733 | 100% Gennuine High Cla...
 
(+971568250507 ))# Young Call Girls in Ajman By Pakistani Call Girls in ...
(+971568250507  ))#  Young Call Girls  in Ajman  By Pakistani Call Girls  in ...(+971568250507  ))#  Young Call Girls  in Ajman  By Pakistani Call Girls  in ...
(+971568250507 ))# Young Call Girls in Ajman By Pakistani Call Girls in ...
 
Call Girls Sangvi Call Me 7737669865 Budget Friendly No Advance BookingCall G...
Call Girls Sangvi Call Me 7737669865 Budget Friendly No Advance BookingCall G...Call Girls Sangvi Call Me 7737669865 Budget Friendly No Advance BookingCall G...
Call Girls Sangvi Call Me 7737669865 Budget Friendly No Advance BookingCall G...
 
➥🔝 7737669865 🔝▻ mehsana Call-girls in Women Seeking Men 🔝mehsana🔝 Escorts...
➥🔝 7737669865 🔝▻ mehsana Call-girls in Women Seeking Men  🔝mehsana🔝   Escorts...➥🔝 7737669865 🔝▻ mehsana Call-girls in Women Seeking Men  🔝mehsana🔝   Escorts...
➥🔝 7737669865 🔝▻ mehsana Call-girls in Women Seeking Men 🔝mehsana🔝 Escorts...
 
20240508 QFM014 Elixir Reading List April 2024.pdf
20240508 QFM014 Elixir Reading List April 2024.pdf20240508 QFM014 Elixir Reading List April 2024.pdf
20240508 QFM014 Elixir Reading List April 2024.pdf
 
Trump Diapers Over Dems t shirts Sweatshirt
Trump Diapers Over Dems t shirts SweatshirtTrump Diapers Over Dems t shirts Sweatshirt
Trump Diapers Over Dems t shirts Sweatshirt
 
Call Girls in Prashant Vihar, Delhi 💯 Call Us 🔝9953056974 🔝 Escort Service
Call Girls in Prashant Vihar, Delhi 💯 Call Us 🔝9953056974 🔝 Escort ServiceCall Girls in Prashant Vihar, Delhi 💯 Call Us 🔝9953056974 🔝 Escort Service
Call Girls in Prashant Vihar, Delhi 💯 Call Us 🔝9953056974 🔝 Escort Service
 
valsad Escorts Service ☎️ 6378878445 ( Sakshi Sinha ) High Profile Call Girls...
valsad Escorts Service ☎️ 6378878445 ( Sakshi Sinha ) High Profile Call Girls...valsad Escorts Service ☎️ 6378878445 ( Sakshi Sinha ) High Profile Call Girls...
valsad Escorts Service ☎️ 6378878445 ( Sakshi Sinha ) High Profile Call Girls...
 
Dubai=Desi Dubai Call Girls O525547819 Outdoor Call Girls Dubai
Dubai=Desi Dubai Call Girls O525547819 Outdoor Call Girls DubaiDubai=Desi Dubai Call Girls O525547819 Outdoor Call Girls Dubai
Dubai=Desi Dubai Call Girls O525547819 Outdoor Call Girls Dubai
 
"Boost Your Digital Presence: Partner with a Leading SEO Agency"
"Boost Your Digital Presence: Partner with a Leading SEO Agency""Boost Your Digital Presence: Partner with a Leading SEO Agency"
"Boost Your Digital Presence: Partner with a Leading SEO Agency"
 
6.High Profile Call Girls In Punjab +919053900678 Punjab Call GirlHigh Profil...
6.High Profile Call Girls In Punjab +919053900678 Punjab Call GirlHigh Profil...6.High Profile Call Girls In Punjab +919053900678 Punjab Call GirlHigh Profil...
6.High Profile Call Girls In Punjab +919053900678 Punjab Call GirlHigh Profil...
 
在线制作约克大学毕业证(yu毕业证)在读证明认证可查
在线制作约克大学毕业证(yu毕业证)在读证明认证可查在线制作约克大学毕业证(yu毕业证)在读证明认证可查
在线制作约克大学毕业证(yu毕业证)在读证明认证可查
 
VVIP Pune Call Girls Sinhagad WhatSapp Number 8005736733 With Elite Staff And...
VVIP Pune Call Girls Sinhagad WhatSapp Number 8005736733 With Elite Staff And...VVIP Pune Call Girls Sinhagad WhatSapp Number 8005736733 With Elite Staff And...
VVIP Pune Call Girls Sinhagad WhatSapp Number 8005736733 With Elite Staff And...
 
Nanded City ( Call Girls ) Pune 6297143586 Hot Model With Sexy Bhabi Ready ...
Nanded City ( Call Girls ) Pune  6297143586  Hot Model With Sexy Bhabi Ready ...Nanded City ( Call Girls ) Pune  6297143586  Hot Model With Sexy Bhabi Ready ...
Nanded City ( Call Girls ) Pune 6297143586 Hot Model With Sexy Bhabi Ready ...
 
(INDIRA) Call Girl Pune Call Now 8250077686 Pune Escorts 24x7
(INDIRA) Call Girl Pune Call Now 8250077686 Pune Escorts 24x7(INDIRA) Call Girl Pune Call Now 8250077686 Pune Escorts 24x7
(INDIRA) Call Girl Pune Call Now 8250077686 Pune Escorts 24x7
 
VIP Call Girls Himatnagar 7001035870 Whatsapp Number, 24/07 Booking
VIP Call Girls Himatnagar 7001035870 Whatsapp Number, 24/07 BookingVIP Call Girls Himatnagar 7001035870 Whatsapp Number, 24/07 Booking
VIP Call Girls Himatnagar 7001035870 Whatsapp Number, 24/07 Booking
 
Busty Desi⚡Call Girls in Vasundhara Ghaziabad >༒8448380779 Escort Service
Busty Desi⚡Call Girls in Vasundhara Ghaziabad >༒8448380779 Escort ServiceBusty Desi⚡Call Girls in Vasundhara Ghaziabad >༒8448380779 Escort Service
Busty Desi⚡Call Girls in Vasundhara Ghaziabad >༒8448380779 Escort Service
 
Ganeshkhind ! Call Girls Pune - 450+ Call Girl Cash Payment 8005736733 Neha T...
Ganeshkhind ! Call Girls Pune - 450+ Call Girl Cash Payment 8005736733 Neha T...Ganeshkhind ! Call Girls Pune - 450+ Call Girl Cash Payment 8005736733 Neha T...
Ganeshkhind ! Call Girls Pune - 450+ Call Girl Cash Payment 8005736733 Neha T...
 
Katraj ( Call Girls ) Pune 6297143586 Hot Model With Sexy Bhabi Ready For S...
Katraj ( Call Girls ) Pune  6297143586  Hot Model With Sexy Bhabi Ready For S...Katraj ( Call Girls ) Pune  6297143586  Hot Model With Sexy Bhabi Ready For S...
Katraj ( Call Girls ) Pune 6297143586 Hot Model With Sexy Bhabi Ready For S...
 
VIP Call Girls Pollachi 7001035870 Whatsapp Number, 24/07 Booking
VIP Call Girls Pollachi 7001035870 Whatsapp Number, 24/07 BookingVIP Call Girls Pollachi 7001035870 Whatsapp Number, 24/07 Booking
VIP Call Girls Pollachi 7001035870 Whatsapp Number, 24/07 Booking
 

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

Notes de l'éditeur

  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”