commit 1fe6185b033eebc14362da7f8df3df59ad9ed963 Author: 蔡思睿 <1696852760@qq.com> Date: Thu Oct 28 08:38:00 2021 +0800 first commit diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..5d947ca --- /dev/null +++ b/.gitignore @@ -0,0 +1,18 @@ +# Build and Release Folders +bin-debug/ +bin-release/ +[Oo]bj/ +[Bb]in/ + +# Other files and folders +.settings/ + +# Executables +*.swf +*.air +*.ipa +*.apk + +# Project files, i.e. `.project`, `.actionScriptProperties` and `.flexProperties` +# should NOT be excluded as they contain compiler settings and other important +# information for Eclipse / Flash Builder. diff --git a/IntelligentUAVPathPlanningSimulationSystem/IUPPSS.bat b/IntelligentUAVPathPlanningSimulationSystem/IUPPSS.bat new file mode 100644 index 0000000..14f6b0e --- /dev/null +++ b/IntelligentUAVPathPlanningSimulationSystem/IUPPSS.bat @@ -0,0 +1,20 @@ +@ECHO OFF + +SET batFileDir=%cd% +SET pythonExeFilePath=/python-3.7.5-embed-amd64/python.exe +SET MainAppFilePath=/core/main.py +SET pythonExeAbsFilePath=%batFileDir%%pythonExeFilePath% +REM SET pythonExeAbsFilePath=Python +SET MainAppAbsFilePath=%batFileDir%%MainAppFilePath% +SET "spaceChar= " +SET RunCommand=%pythonExeAbsFilePath%%spaceChar%%MainAppAbsFilePath% + +ECHO. + +ECHO Intelligent UAV path Planning simulation system (V1.0.0) is starting, please wait a moment...... + +ECHO. + +%RunCommand% + +PAUSE diff --git a/IntelligentUAVPathPlanningSimulationSystem/IUPPSS.lnk b/IntelligentUAVPathPlanningSimulationSystem/IUPPSS.lnk new file mode 100644 index 0000000..d7cc223 Binary files /dev/null and b/IntelligentUAVPathPlanningSimulationSystem/IUPPSS.lnk differ diff --git a/IntelligentUAVPathPlanningSimulationSystem/core/.vscode/settings.json b/IntelligentUAVPathPlanningSimulationSystem/core/.vscode/settings.json new file mode 100644 index 0000000..f99cfdd --- /dev/null +++ b/IntelligentUAVPathPlanningSimulationSystem/core/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "python.pythonPath": "C:\\Program Files\\Python37\\python.exe" +} \ No newline at end of file diff --git a/IntelligentUAVPathPlanningSimulationSystem/core/appUI/AppSettingDialog.py b/IntelligentUAVPathPlanningSimulationSystem/core/appUI/AppSettingDialog.py new file mode 100644 index 0000000..7f224c8 --- /dev/null +++ b/IntelligentUAVPathPlanningSimulationSystem/core/appUI/AppSettingDialog.py @@ -0,0 +1,133 @@ +# -*- coding:utf-8 -*- + +import os +import sys + +sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) +sys.path.append(os.path.dirname(os.path.abspath(__file__))) + +import numpy as np +from PyQt5 import QtCore, QtGui, QtWidgets +from PyQt5.QtWidgets import QApplication, QDialog, QFileDialog, QMessageBox, QTableWidgetItem +#from fileIO import ExcelIO, RasterImgIO, ModelIO +#from data.DataPreprocessor import min_max_scaler, standard_scaler +#from raster.BandCalculator import band_calc +from AppSettingDialogDesigner import Ui_AppSettingDialog +from InitResource import get_icon + + +class AppSettingDialog(QDialog, Ui_AppSettingDialog): + + def __init__(self, setting): + super(AppSettingDialog, self).__init__(None) + self.setupUi(self) + # + self.qSetting = setting + self.working_dir = None + # + self.init_ui_element() + # + #========singal and slot======== + self.connect_signal_slot() + + def init_ui_element(self): + # + self.setWindowIcon(get_icon("setting")) + # + self.selectWorkingDirPushButton.setIcon(get_icon("select_folder")) + # + working_dir = self.qSetting.value("lastFileDir") + if working_dir is None or not os.path.isdir(working_dir): + working_dir = os.path.expanduser('~') + # + sklearn_params_filepath = self.qSetting.value("sklearnParamsFilepath") + curl_bin_dir = self.qSetting.value("curlBinDir") + mySQLHost = self.qSetting.value("mySQLHost") + mySQLPort = self.qSetting.value("mySQLPort") + geoserverHost = self.qSetting.value("geoserverHost") + geoserverPort = self.qSetting.value("geoserverPort") + # + self.selectWorkingDirLineEdit.setText(working_dir) + self.paramsFileDirLineEdit.setText(sklearn_params_filepath) + self.cURLBinDirLineEdit.setText(curl_bin_dir) + self.mySQLHostLineEdit.setText(mySQLHost) + self.mySQLPortLineEdit.setText(mySQLPort) + self.geoserverHostLineEdit.setText(geoserverHost) + self.geoserverPortLineEdit.setText(geoserverPort) + + def connect_signal_slot( self ): + self.appSettingTreeWidget.clicked.connect(self.appSettingTreeWidgetClicked) + self.selectWorkingDirPushButton.clicked.connect(self.selectWorkingDirPushButtonClicked) + # + self.okPushButton.clicked.connect(self.okPushButtonClicked) + self.cancelPushButton.clicked.connect(self.cancelPushButtonClicked) + + def appSettingTreeWidgetClicked(self): + selectItemName = self.appSettingTreeWidget.currentItem().text(0) + # + if selectItemName == "工作空间": + self.appSettingStackedWidget.setCurrentIndex(0) + elif selectItemName == "ML模型库": + self.appSettingStackedWidget.setCurrentIndex(1) + elif selectItemName == "cURL程序": + self.appSettingStackedWidget.setCurrentIndex(2) + elif selectItemName == "MySQL数据库": + self.appSettingStackedWidget.setCurrentIndex(3) + elif selectItemName == "GeoServer": + self.appSettingStackedWidget.setCurrentIndex(4) + else: + pass + + def selectWorkingDirPushButtonClicked(self): + lastFileDir = str(self.qSetting.value("lastFileDir")) + if not os.path.isdir(lastFileDir): + lastFileDir = os.path.expanduser('~') + # + self.working_dir = QFileDialog.getExistingDirectory(self, "选择一个当前工作路径", lastFileDir) + if self.working_dir != "": + self.selectWorkingDirLineEdit.setText(self.working_dir) + + def okPushButtonClicked(self): + self.mySQLHost = self.mySQLHostLineEdit.text() + self.mySQLPort = self.mySQLPortLineEdit.text() + self.geoserverHost = self.geoserverHostLineEdit.text() + self.geoserverPort = self.geoserverPortLineEdit.text() + # + if self.working_dir != "" and self.working_dir is not None: + self.qSetting.setValue("lastFileDir", self.working_dir) + # + if self.mySQLHost != "" and self.mySQLHost is not None: + self.qSetting.setValue("mySQLHost", self.mySQLHost) + # + if self.mySQLPort != "" and self.mySQLPort is not None: + self.qSetting.setValue("mySQLPort", self.mySQLPort) + # + if self.geoserverHost != "" and self.geoserverHost is not None: + self.qSetting.setValue("geoserverHost", self.geoserverHost) + # + if self.geoserverPort != "" and self.geoserverPort is not None: + self.qSetting.setValue("geoserverPort", self.geoserverPort) + # + self.close() + + def cancelPushButtonClicked(self): + # + self.close() + + +def main(setting): + app = QApplication(sys.argv) + appSettingDialog = AppSettingDialog(setting) + appSettingDialog.show() + sys.exit(app.exec_()) + + +if __name__ == "__main__": + # + setting_filename = "Setting.ini" + qSetting = QtCore.QSettings(setting_filename, QtCore.QSettings.IniFormat) + # + main(qSetting) + + + diff --git a/IntelligentUAVPathPlanningSimulationSystem/core/appUI/AppSettingDialogDesigner.py b/IntelligentUAVPathPlanningSimulationSystem/core/appUI/AppSettingDialogDesigner.py new file mode 100644 index 0000000..18a52b6 --- /dev/null +++ b/IntelligentUAVPathPlanningSimulationSystem/core/appUI/AppSettingDialogDesigner.py @@ -0,0 +1,169 @@ +# -*- coding: utf-8 -*- + +# Form implementation generated from reading ui file '.\AppSettingDialogDesigner.ui' +# +# Created by: PyQt5 UI code generator 5.13.0 +# +# WARNING! All changes made in this file will be lost! + + +from PyQt5 import QtCore, QtGui, QtWidgets + + +class Ui_AppSettingDialog(object): + def setupUi(self, AppSettingDialog): + AppSettingDialog.setObjectName("AppSettingDialog") + AppSettingDialog.resize(726, 380) + self.VerticalLayout = QtWidgets.QVBoxLayout(AppSettingDialog) + self.VerticalLayout.setContentsMargins(5, 5, 5, 10) + self.VerticalLayout.setSpacing(5) + self.VerticalLayout.setObjectName("VerticalLayout") + self.horizontalLayout = QtWidgets.QHBoxLayout() + self.horizontalLayout.setContentsMargins(-1, -1, -1, 10) + self.horizontalLayout.setObjectName("horizontalLayout") + self.appSettingTreeWidget = QtWidgets.QTreeWidget(AppSettingDialog) + self.appSettingTreeWidget.setObjectName("appSettingTreeWidget") + item_0 = QtWidgets.QTreeWidgetItem(self.appSettingTreeWidget) + item_0 = QtWidgets.QTreeWidgetItem(self.appSettingTreeWidget) + item_0 = QtWidgets.QTreeWidgetItem(self.appSettingTreeWidget) + item_0 = QtWidgets.QTreeWidgetItem(self.appSettingTreeWidget) + item_0 = QtWidgets.QTreeWidgetItem(self.appSettingTreeWidget) + self.appSettingTreeWidget.header().setVisible(True) + self.horizontalLayout.addWidget(self.appSettingTreeWidget) + self.appSettingGroupBox = QtWidgets.QGroupBox(AppSettingDialog) + self.appSettingGroupBox.setTitle("") + self.appSettingGroupBox.setObjectName("appSettingGroupBox") + self.horizontalLayout_3 = QtWidgets.QHBoxLayout(self.appSettingGroupBox) + self.horizontalLayout_3.setContentsMargins(0, 0, 0, 0) + self.horizontalLayout_3.setSpacing(5) + self.horizontalLayout_3.setObjectName("horizontalLayout_3") + self.appSettingStackedWidget = QtWidgets.QStackedWidget(self.appSettingGroupBox) + self.appSettingStackedWidget.setObjectName("appSettingStackedWidget") + self.workingSpaceSettingPage = QtWidgets.QWidget() + self.workingSpaceSettingPage.setObjectName("workingSpaceSettingPage") + self.gridLayout = QtWidgets.QGridLayout(self.workingSpaceSettingPage) + self.gridLayout.setObjectName("gridLayout") + self.selectWorkingDirLineEdit = QtWidgets.QLineEdit(self.workingSpaceSettingPage) + self.selectWorkingDirLineEdit.setObjectName("selectWorkingDirLineEdit") + self.gridLayout.addWidget(self.selectWorkingDirLineEdit, 0, 1, 1, 1) + self.selectWorkingDirPushButton = QtWidgets.QPushButton(self.workingSpaceSettingPage) + self.selectWorkingDirPushButton.setText("") + self.selectWorkingDirPushButton.setObjectName("selectWorkingDirPushButton") + self.gridLayout.addWidget(self.selectWorkingDirPushButton, 0, 2, 1, 1) + self.selectWorkingDirLabel = QtWidgets.QLabel(self.workingSpaceSettingPage) + self.selectWorkingDirLabel.setObjectName("selectWorkingDirLabel") + self.gridLayout.addWidget(self.selectWorkingDirLabel, 0, 0, 1, 1) + spacerItem = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) + self.gridLayout.addItem(spacerItem, 1, 0, 1, 1) + self.appSettingStackedWidget.addWidget(self.workingSpaceSettingPage) + self.mlModelLibPage = QtWidgets.QWidget() + self.mlModelLibPage.setObjectName("mlModelLibPage") + self.mlModelLibPageGridLayout = QtWidgets.QGridLayout(self.mlModelLibPage) + self.mlModelLibPageGridLayout.setObjectName("mlModelLibPageGridLayout") + self.paramsFileDirLineEdit = QtWidgets.QLineEdit(self.mlModelLibPage) + self.paramsFileDirLineEdit.setEnabled(False) + self.paramsFileDirLineEdit.setObjectName("paramsFileDirLineEdit") + self.mlModelLibPageGridLayout.addWidget(self.paramsFileDirLineEdit, 0, 1, 1, 1) + spacerItem1 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) + self.mlModelLibPageGridLayout.addItem(spacerItem1, 1, 0, 1, 1) + self.paramsFileDirLabel = QtWidgets.QLabel(self.mlModelLibPage) + self.paramsFileDirLabel.setObjectName("paramsFileDirLabel") + self.mlModelLibPageGridLayout.addWidget(self.paramsFileDirLabel, 0, 0, 1, 1) + self.appSettingStackedWidget.addWidget(self.mlModelLibPage) + self.cURLSettingPage = QtWidgets.QWidget() + self.cURLSettingPage.setObjectName("cURLSettingPage") + self.cURLSettingGridLayout = QtWidgets.QGridLayout(self.cURLSettingPage) + self.cURLSettingGridLayout.setObjectName("cURLSettingGridLayout") + self.cURLBinDirLabel = QtWidgets.QLabel(self.cURLSettingPage) + self.cURLBinDirLabel.setObjectName("cURLBinDirLabel") + self.cURLSettingGridLayout.addWidget(self.cURLBinDirLabel, 0, 0, 1, 1) + self.cURLBinDirLineEdit = QtWidgets.QLineEdit(self.cURLSettingPage) + self.cURLBinDirLineEdit.setEnabled(False) + self.cURLBinDirLineEdit.setObjectName("cURLBinDirLineEdit") + self.cURLSettingGridLayout.addWidget(self.cURLBinDirLineEdit, 0, 1, 1, 1) + spacerItem2 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) + self.cURLSettingGridLayout.addItem(spacerItem2, 1, 0, 1, 1) + self.appSettingStackedWidget.addWidget(self.cURLSettingPage) + self.mySQLSettingPage = QtWidgets.QWidget() + self.mySQLSettingPage.setObjectName("mySQLSettingPage") + self.mySQLSettingGridLayout = QtWidgets.QGridLayout(self.mySQLSettingPage) + self.mySQLSettingGridLayout.setObjectName("mySQLSettingGridLayout") + self.mySQLHostLineEdit = QtWidgets.QLineEdit(self.mySQLSettingPage) + self.mySQLHostLineEdit.setObjectName("mySQLHostLineEdit") + self.mySQLSettingGridLayout.addWidget(self.mySQLHostLineEdit, 0, 1, 1, 1) + self.mySQLHostLabel = QtWidgets.QLabel(self.mySQLSettingPage) + self.mySQLHostLabel.setObjectName("mySQLHostLabel") + self.mySQLSettingGridLayout.addWidget(self.mySQLHostLabel, 0, 0, 1, 1) + spacerItem3 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) + self.mySQLSettingGridLayout.addItem(spacerItem3, 1, 0, 1, 1) + self.mySQLPortLabel = QtWidgets.QLabel(self.mySQLSettingPage) + self.mySQLPortLabel.setObjectName("mySQLPortLabel") + self.mySQLSettingGridLayout.addWidget(self.mySQLPortLabel, 0, 3, 1, 1) + self.mySQLPortLineEdit = QtWidgets.QLineEdit(self.mySQLSettingPage) + self.mySQLPortLineEdit.setObjectName("mySQLPortLineEdit") + self.mySQLSettingGridLayout.addWidget(self.mySQLPortLineEdit, 0, 4, 1, 1) + spacerItem4 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) + self.mySQLSettingGridLayout.addItem(spacerItem4, 0, 2, 1, 1) + self.appSettingStackedWidget.addWidget(self.mySQLSettingPage) + self.geoserverSettingPage = QtWidgets.QWidget() + self.geoserverSettingPage.setObjectName("geoserverSettingPage") + self.geoserverSettingGridLayout = QtWidgets.QGridLayout(self.geoserverSettingPage) + self.geoserverSettingGridLayout.setObjectName("geoserverSettingGridLayout") + self.geoserverPortLineEdit = QtWidgets.QLineEdit(self.geoserverSettingPage) + self.geoserverPortLineEdit.setObjectName("geoserverPortLineEdit") + self.geoserverSettingGridLayout.addWidget(self.geoserverPortLineEdit, 0, 4, 1, 1) + self.geoserverPortLabel = QtWidgets.QLabel(self.geoserverSettingPage) + self.geoserverPortLabel.setObjectName("geoserverPortLabel") + self.geoserverSettingGridLayout.addWidget(self.geoserverPortLabel, 0, 3, 1, 1) + self.geoserverHostLabel = QtWidgets.QLabel(self.geoserverSettingPage) + self.geoserverHostLabel.setObjectName("geoserverHostLabel") + self.geoserverSettingGridLayout.addWidget(self.geoserverHostLabel, 0, 0, 1, 1) + spacerItem5 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) + self.geoserverSettingGridLayout.addItem(spacerItem5, 1, 1, 1, 1) + self.geoserverHostLineEdit = QtWidgets.QLineEdit(self.geoserverSettingPage) + self.geoserverHostLineEdit.setObjectName("geoserverHostLineEdit") + self.geoserverSettingGridLayout.addWidget(self.geoserverHostLineEdit, 0, 1, 1, 1) + spacerItem6 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) + self.geoserverSettingGridLayout.addItem(spacerItem6, 0, 2, 1, 1) + self.appSettingStackedWidget.addWidget(self.geoserverSettingPage) + self.horizontalLayout_3.addWidget(self.appSettingStackedWidget) + self.horizontalLayout.addWidget(self.appSettingGroupBox) + self.horizontalLayout.setStretch(1, 1) + self.VerticalLayout.addLayout(self.horizontalLayout) + self.horizontalLayout_2 = QtWidgets.QHBoxLayout() + self.horizontalLayout_2.setObjectName("horizontalLayout_2") + spacerItem7 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) + self.horizontalLayout_2.addItem(spacerItem7) + self.okPushButton = QtWidgets.QPushButton(AppSettingDialog) + self.okPushButton.setObjectName("okPushButton") + self.horizontalLayout_2.addWidget(self.okPushButton) + self.cancelPushButton = QtWidgets.QPushButton(AppSettingDialog) + self.cancelPushButton.setObjectName("cancelPushButton") + self.horizontalLayout_2.addWidget(self.cancelPushButton) + self.VerticalLayout.addLayout(self.horizontalLayout_2) + + self.retranslateUi(AppSettingDialog) + self.appSettingStackedWidget.setCurrentIndex(0) + QtCore.QMetaObject.connectSlotsByName(AppSettingDialog) + + def retranslateUi(self, AppSettingDialog): + _translate = QtCore.QCoreApplication.translate + AppSettingDialog.setWindowTitle(_translate("AppSettingDialog", "系统设置")) + self.appSettingTreeWidget.headerItem().setText(0, _translate("AppSettingDialog", "设置选项")) + __sortingEnabled = self.appSettingTreeWidget.isSortingEnabled() + self.appSettingTreeWidget.setSortingEnabled(False) + self.appSettingTreeWidget.topLevelItem(0).setText(0, _translate("AppSettingDialog", "工作空间")) + self.appSettingTreeWidget.topLevelItem(1).setText(0, _translate("AppSettingDialog", "ML模型库")) + self.appSettingTreeWidget.topLevelItem(2).setText(0, _translate("AppSettingDialog", "cURL程序")) + self.appSettingTreeWidget.topLevelItem(3).setText(0, _translate("AppSettingDialog", "MySQL数据库")) + self.appSettingTreeWidget.topLevelItem(4).setText(0, _translate("AppSettingDialog", "GeoServer")) + self.appSettingTreeWidget.setSortingEnabled(__sortingEnabled) + self.selectWorkingDirLabel.setText(_translate("AppSettingDialog", "默认工作路径:")) + self.paramsFileDirLabel.setText(_translate("AppSettingDialog", "参数文件路径:")) + self.cURLBinDirLabel.setText(_translate("AppSettingDialog", "cURL路径:")) + self.mySQLHostLabel.setText(_translate("AppSettingDialog", "Host:")) + self.mySQLPortLabel.setText(_translate("AppSettingDialog", "端口:")) + self.geoserverPortLabel.setText(_translate("AppSettingDialog", "端口:")) + self.geoserverHostLabel.setText(_translate("AppSettingDialog", "Host:")) + self.okPushButton.setText(_translate("AppSettingDialog", "确定")) + self.cancelPushButton.setText(_translate("AppSettingDialog", "取消")) diff --git a/IntelligentUAVPathPlanningSimulationSystem/core/appUI/InitResource.py b/IntelligentUAVPathPlanningSimulationSystem/core/appUI/InitResource.py new file mode 100644 index 0000000..4e2db17 --- /dev/null +++ b/IntelligentUAVPathPlanningSimulationSystem/core/appUI/InitResource.py @@ -0,0 +1,152 @@ +import os +import sys + +sys.path.append(os.path.join(os.path.dirname(os.path.dirname(os.path.abspath(__file__))),"python-3.7.2")) +sys.path.append(os.path.join(os.path.dirname(os.path.dirname(os.path.abspath(__file__))),"python-3.7.2/Lib/site-packages")) +sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) +sys.path.append(os.path.dirname(os.path.abspath(__file__))) + +from PyQt5.QtGui import * + +__author__ = '王唯一' + +icons_instance = None +pixmap_instance = None +gif_instance = None + +def get_icon(name): + global icons_instance + if not icons_instance: + icons_instance = InitResource() + return icons_instance.icon(name) + +def get_pixmap(name): + global pixmap_instance + if not pixmap_instance: + pixmap_instance = InitResource() + return pixmap_instance.pixmap(name) + +def get_gif(name): + global gif_instance + if not gif_instance: + gif_instance = InitResource() + return gif_instance.gif(name) + +class InitResource(object): + def __init__(self): + self._icons = {} + self._pixmap = {} + self._gif = {} + # + resource_dir = "./core/resource/icons" + # + self.make_icon("appLogo", os.path.join(resource_dir, "appLogo.ico")) + # + self.make_icon("1", os.path.join(resource_dir, "1.ico")) + self.make_icon("2", os.path.join(resource_dir, "2.ico")) + self.make_icon("3", os.path.join(resource_dir, "3.ico")) + self.make_icon("4", os.path.join(resource_dir, "4.ico")) + self.make_icon("5", os.path.join(resource_dir, "5.ico")) + self.make_icon("6", os.path.join(resource_dir, "6.ico")) + self.make_icon("7", os.path.join(resource_dir, "7.ico")) + # + self.make_icon("appLogo", os.path.join(resource_dir, "appLogo.ico")) + self.make_icon("select_folder", os.path.join(resource_dir, "select_folder.ico")) + self.make_icon("Cygwin-Terminal", os.path.join(resource_dir, "Cygwin-Terminal.ico")) + self.make_icon("dataViewToolBar", os.path.join(resource_dir, "dataViewToolBar.ico")) + # + self.make_icon("toolBarHelp", os.path.join(resource_dir, "toolBarHelp.ico")) + self.make_icon("toolBarAppSetting", os.path.join(resource_dir, "toolBarAppSetting.ico")) + # + self.make_icon("tableFile_FileListTreeWidget", os.path.join(resource_dir, "tableFile_FileListTreeWidget.ico")) + self.make_icon("rasterFile_FileListTreeWidget", os.path.join(resource_dir, "rasterFile_FileListTreeWidget.ico")) + # + self.make_icon("toolBarFeedback", os.path.join(resource_dir, "toolBarFeedback.ico")) + self.make_icon("toolBarAbout", os.path.join(resource_dir, "toolBarAbout.ico")) + self.make_icon("9", os.path.join(resource_dir, "9.ico") ) + self.make_icon("10", os.path.join(resource_dir, "10.ico")) + self.make_icon("s", os.path.join(resource_dir, "s.ico")) + + + + + self.make_icon("load_table", os.path.join(resource_dir, "load_table.ico")) + self.make_icon("setting", os.path.join(resource_dir, "setting.ico")) + self.make_icon("checkError", os.path.join(resource_dir, "checkError.ico")) + + self.make_icon("next_step", os.path.join(resource_dir, "next_step.ico")) + self.make_icon("previous_step", os.path.join(resource_dir, "previous_step.ico")) + self.make_icon("operation_cancel", os.path.join(resource_dir, "operation_cancel.ico")) + self.make_icon("reset_parameter", os.path.join(resource_dir, "reset_parameter.ico")) + self.make_icon("finish_tip2", os.path.join(resource_dir, "finish_tip2.ico")) + self.make_icon("move_up", os.path.join(resource_dir, "move_up.ico")) + self.make_icon("move_down", os.path.join(resource_dir, "move_down.ico")) + + self.make_icon("train_model2", os.path.join(resource_dir, "train_model2.ico")) + self.make_icon("test_model", os.path.join(resource_dir, "test_model.ico")) + + self.make_icon("setting", os.path.join(resource_dir, "setting.ico")) + + self.make_icon("default", os.path.join(resource_dir, "default.ico")) + + ###pixmap### + self.make_pixmap("classifier_icon", os.path.join(resource_dir, "classifier_icon.png")) + self.make_pixmap("regressor_icon",os.path.join(resource_dir, "regressor_icon.png")) + self.make_pixmap("clusterer_icon", os.path.join(resource_dir, "clusterer_icon.png")) + + self.make_pixmap("select_task", os.path.join(resource_dir, "select_task.ico")) + self.make_pixmap("import_data", os.path.join(resource_dir, "import_data.ico")) + self.make_pixmap("set_parameter",os.path.join(resource_dir, "set_parameter.ico")) + self.make_pixmap("train_model1", os.path.join(resource_dir, "train_model1.ico")) + self.make_pixmap("optimize_model",os.path.join(resource_dir, "optimize_model.ico")) + self.make_pixmap("export_data", os.path.join(resource_dir, "export_data.ico")) + self.make_pixmap("step_tip", os.path.join(resource_dir, "step_tip.ico")) + self.make_pixmap("info_tip", os.path.join(resource_dir, "info_tip.png")) + self.make_pixmap("finish_tip1", os.path.join(resource_dir, "finish_tip1.ico")) + + self.make_pixmap("default", os.path.join(resource_dir, "default.ico")) + + ###gif### + self.make_gif("fit_model", os.path.join(resource_dir, "fit_model.gif")) + + self.make_gif("default", os.path.join(resource_dir, "default.ico")) + + + def make_icon(self, name, path): + icon = QIcon() + icon.addPixmap(QPixmap(path), QIcon.Normal, QIcon.Off) + self._icons[name] = icon + + + def make_pixmap(self, name, path): + pixmap = QPixmap(path) + self._pixmap[name] = pixmap + + + def make_gif(self, name, path): + gif = QMovie(path) + self._gif[name] = gif + + def icon(self, name): + icon = self._icons["default"] + try: + icon = self._icons[name] + except KeyError: + print("icon " + name + " not found") + return icon + + def pixmap(self, name): + pixmap = self._pixmap["default"] + try: + pixmap = self._pixmap[name] + except KeyError: + print("icon " + name + " not found") + return pixmap + + def gif(self, name): + gif = self._gif["default"] + try: + gif = self._gif[name] + except KeyError: + print("icon " + name + " not found") + return gif diff --git a/IntelligentUAVPathPlanningSimulationSystem/core/appUI/MainWindow.py b/IntelligentUAVPathPlanningSimulationSystem/core/appUI/MainWindow.py new file mode 100644 index 0000000..49009e4 --- /dev/null +++ b/IntelligentUAVPathPlanningSimulationSystem/core/appUI/MainWindow.py @@ -0,0 +1,403 @@ +# -*- coding:utf-8 -*- + +import os +import sys +import time +from multiprocessing import Process +import subprocess +import ctypes + +sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) +sys.path.append(os.path.dirname(os.path.abspath(__file__))) + +from PyQt5 import QtCore, QtGui, QtWidgets +from PyQt5.QtWidgets import QApplication, QMainWindow, QFileDialog, QMessageBox, QTableWidgetItem + +from MainWindowDesigner import Ui_MainWindow +from InitResource import get_icon, get_pixmap, get_gif +from AppSettingDialog import AppSettingDialog + +STD_INPUT_HANDLE = -10 +STD_OUTPUT_HANDLE = -11 +STD_ERROR_HANDLE = -12 + +# 字体颜色定义 ,关键在于颜色编码,由2位十六进制组成,分别取0~f,前一位指的是背景色,后一位指的是字体色 +#由于该函数的限制,应该是只有这16种,可以前景色与背景色组合。也可以几种颜色通过或运算组合,组合后还是在这16种颜色中 + +# Windows CMD命令行 字体颜色定义 text colors +FOREGROUND_BLACK = 0x00 # black. +FOREGROUND_DARKBLUE = 0x01 # dark blue. +FOREGROUND_DARKGREEN = 0x02 # dark green. +FOREGROUND_DARKSKYBLUE = 0x03 # dark skyblue. +FOREGROUND_DARKRED = 0x04 # dark red. +FOREGROUND_DARKPINK = 0x05 # dark pink. +FOREGROUND_DARKYELLOW = 0x06 # dark yellow. +FOREGROUND_DARKWHITE = 0x07 # dark white. +FOREGROUND_DARKGRAY = 0x08 # dark gray. +FOREGROUND_BLUE = 0x09 # blue. +FOREGROUND_GREEN = 0x0a # green. +FOREGROUND_SKYBLUE = 0x0b # skyblue. +FOREGROUND_RED = 0x0c # red. +FOREGROUND_PINK = 0x0d # pink. +FOREGROUND_YELLOW = 0x0e # yellow. +FOREGROUND_WHITE = 0x0f # white. + + +# Windows CMD命令行 背景颜色定义 background colors +BACKGROUND_BLUE = 0x10 # dark blue. +BACKGROUND_GREEN = 0x20 # dark green. +BACKGROUND_DARKSKYBLUE = 0x30 # dark skyblue. +BACKGROUND_DARKRED = 0x40 # dark red. +BACKGROUND_DARKPINK = 0x50 # dark pink. +BACKGROUND_DARKYELLOW = 0x60 # dark yellow. +BACKGROUND_DARKWHITE = 0x70 # dark white. +BACKGROUND_DARKGRAY = 0x80 # dark gray. +BACKGROUND_BLUE = 0x90 # blue. +BACKGROUND_GREEN = 0xa0 # green. +BACKGROUND_SKYBLUE = 0xb0 # skyblue. +BACKGROUND_RED = 0xc0 # red. +BACKGROUND_PINK = 0xd0 # pink. +BACKGROUND_YELLOW = 0xe0 # yellow. +BACKGROUND_WHITE = 0xf0 # white. + + + +# get handle +std_out_handle = ctypes.windll.kernel32.GetStdHandle(STD_OUTPUT_HANDLE) + +def set_cmd_text_color(color, handle=std_out_handle): + Bool = ctypes.windll.kernel32.SetConsoleTextAttribute(handle, color) + return Bool + +#reset white +def resetColor(): + set_cmd_text_color(FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE) + +############################################################### + +#暗蓝色 +#dark blue +def printDarkBlue(mess): + set_cmd_text_color(FOREGROUND_DARKBLUE) + sys.stdout.write(mess) + resetColor() + +#暗绿色 +#dark green +def printDarkGreen(mess): + set_cmd_text_color(FOREGROUND_DARKGREEN) + sys.stdout.write(mess) + resetColor() + +#暗天蓝色 +#dark sky blue +def printDarkSkyBlue(mess): + set_cmd_text_color(FOREGROUND_DARKSKYBLUE) + sys.stdout.write(mess) + resetColor() + +#暗红色 +#dark red +def printDarkRed(mess): + set_cmd_text_color(FOREGROUND_DARKRED) + sys.stdout.write(mess) + resetColor() + +#暗粉红色 +#dark pink +def printDarkPink(mess): + set_cmd_text_color(FOREGROUND_DARKPINK) + sys.stdout.write(mess) + resetColor() + +#暗黄色 +#dark yellow +def printDarkYellow(mess): + set_cmd_text_color(FOREGROUND_DARKYELLOW) + sys.stdout.write(mess) + resetColor() + +#暗白色 +#dark white +def printDarkWhite(mess): + set_cmd_text_color(FOREGROUND_DARKWHITE) + sys.stdout.write(mess) + resetColor() + +#暗灰色 +#dark gray +def printDarkGray(mess): + set_cmd_text_color(FOREGROUND_DARKGRAY) + sys.stdout.write(mess) + resetColor() + +#蓝色 +#blue +def printBlue(mess): + set_cmd_text_color(FOREGROUND_BLUE) + sys.stdout.write(mess) + resetColor() + +#绿色 +#green +def printGreen(mess): + set_cmd_text_color(FOREGROUND_GREEN) + sys.stdout.write(mess) + resetColor() + +#天蓝色 +#sky blue +def printSkyBlue(mess): + set_cmd_text_color(FOREGROUND_SKYBLUE) + sys.stdout.write(mess) + resetColor() + +#红色 +#red +def printRed(mess): + set_cmd_text_color(FOREGROUND_RED) + sys.stdout.write(mess) + resetColor() + +#粉红色 +#pink +def printPink(mess): + set_cmd_text_color(FOREGROUND_PINK) + sys.stdout.write(mess) + resetColor() + +#黄色 +#yellow +def printYellow(mess): + set_cmd_text_color(FOREGROUND_YELLOW) + sys.stdout.write(mess) + resetColor() + +#白色 +#white +def printWhite(mess): + set_cmd_text_color(FOREGROUND_WHITE) + sys.stdout.write(mess) + resetColor() + +################################################## + +#白底黑字 +#white bkground and black text +def printWhiteBlack(mess): + set_cmd_text_color(FOREGROUND_BLACK | BACKGROUND_WHITE) + sys.stdout.write(mess) + resetColor() + +#白底黑字 +#white bkground and black text +def printWhiteBlack_2(mess): + set_cmd_text_color(0xf0) + sys.stdout.write(mess) + resetColor() + + +#黄底蓝字 +#white bkground and black text +def printYellowRed(mess): + set_cmd_text_color(BACKGROUND_YELLOW | FOREGROUND_RED) + sys.stdout.write(mess) + resetColor() + + +############################################################## +global location +location = "KSFO" + +class MainWindow(QMainWindow, Ui_MainWindow): + + def __init__(self): + super(MainWindow, self).__init__(None) + self.setupUi(self) + # + self.init_app_config() + self.init_window_ui() + self.init_toolBar_ui() + self.init_toolBox_ui() + self.connect_signal_slot() + + def init_app_config(self): + # + self.setting_filename = os.path.dirname(os.path.dirname(__file__)) + \ + r"\resource\data\setting.ini" + self.qSetting = QtCore.QSettings(self.setting_filename, QtCore.QSettings.IniFormat) + # + self.working_dir = str(self.qSetting.value("lastFileDir")) + if self.working_dir is None or not os.path.isdir(self.working_dir): + self.working_dir = os.path.expanduser('~') + # + self.qSetting.setValue("lastFileDir", self.working_dir) + # + self.sklearn_params_filepath = str(self.qSetting.value("sklearnParamsFilepath")) + if self.sklearn_params_filepath is None or not os.path.isdir(self.sklearn_params_filepath): + self.sklearn_params_filepath = os.path.dirname(os.path.dirname(__file__)) + \ + r"\resource\data\sklearn_params.json" + self.qSetting.setValue("sklearnParamsFilepath", self.sklearn_params_filepath) + # + self.curl_bin_dir = str(self.qSetting.value("curlBinDir")) + if self.curl_bin_dir is None or not os.path.isdir(self.curl_bin_dir): + self.curl_bin_dir = os.path.dirname(os.path.dirname(__file__)) + \ + r"\bin\curl-7.65.3-win64-mingw\bin" + # + self.qSetting.setValue("curlBinDir", self.curl_bin_dir) + + def init_window_ui(self): + self.setWindowIcon(get_icon("s")) + self.setWindowFlags(QtCore.Qt.WindowMinimizeButtonHint|QtCore.Qt.WindowCloseButtonHint) + + def init_toolBar_ui(self): + self.mainToolBar = QtWidgets.QToolBar(self) + self.mainToolBar.setMovable(False) + self.mainToolBar.setToolButtonStyle(QtCore.Qt.ToolButtonTextUnderIcon) + self.mainToolBar.setObjectName("mainToolBar") + self.addToolBar(QtCore.Qt.TopToolBarArea, self.mainToolBar) + # + self.appSettingToolBarAction = QtWidgets.QAction(get_icon("toolBarAppSetting"), "设置", self) + self.mainToolBar.addAction(self.appSettingToolBarAction) + self.mainToolBar.addSeparator() + + self.helpToolBarAction = QtWidgets.QAction(get_icon("toolBarHelp"), "帮助", self) + self.mainToolBar.addAction(self.helpToolBarAction) + + self.feedbackToolBarAction = QtWidgets.QAction(get_icon("toolBarFeedback"), "反馈", self) + self.mainToolBar.addAction(self.feedbackToolBarAction) + + self.aboutToolBarAction = QtWidgets.QAction(get_icon("toolBarAbout"), "关于", self) + self.mainToolBar.addAction(self.aboutToolBarAction) + + def init_toolBox_ui(self): + # 虚拟飞行 + self.toolBoxTreeWidget.topLevelItem(0).setIcon(0, get_icon("select_folder")) + self.toolBoxTreeWidget.topLevelItem(0).child(0).setIcon(0, get_icon("1")) + self.toolBoxTreeWidget.topLevelItem(0).child(1).setIcon(0, get_icon("select_folder")) + self.toolBoxTreeWidget.topLevelItem(0).child(1).child(0).setIcon(0, get_icon("2")) + self.toolBoxTreeWidget.topLevelItem(0).child(1).child(1).setIcon(0, get_icon("9")) + self.toolBoxTreeWidget.topLevelItem(0).child(1).child(2).setIcon(0, get_icon("10")) + self.toolBoxTreeWidget.topLevelItem(0).child(1).child(3).setIcon(0, get_icon("3")) + + # 作战控制台 + self.toolBoxTreeWidget.topLevelItem(1).setIcon(0, get_icon("select_folder")) + self.toolBoxTreeWidget.topLevelItem(1).child(0).setIcon(0, get_icon("Cygwin-Terminal")) + self.toolBoxTreeWidget.topLevelItem(1).child(1).setIcon(0, get_icon("tableFile_FileListTreeWidget")) + self.toolBoxTreeWidget.topLevelItem(1).child(2).setIcon(0, get_icon("dataViewToolBar")) + #self.toolBoxTreeWidget.topLevelItem(1).child(3).setIcon(0, get_icon("toolBoxToolTreeWidget")) + + # 智能控制台 + self.toolBoxTreeWidget.topLevelItem(1).child(3).setIcon(0, get_icon("select_folder")) + self.toolBoxTreeWidget.topLevelItem(1).child(3).child(0).setIcon(0, get_icon("Cygwin-Terminal")) + self.toolBoxTreeWidget.topLevelItem(1).child(3).child(1).setIcon(0, get_icon("5")) + self.toolBoxTreeWidget.topLevelItem(1).child(3).child(2).setIcon(0, get_icon("6")) + self.toolBoxTreeWidget.topLevelItem(1).child(3).child(3).setIcon(0, get_icon("7")) + + # 地面站 + self.toolBoxTreeWidget.topLevelItem(2).setIcon(0, get_icon("select_folder")) + self.toolBoxTreeWidget.topLevelItem(2).child(0).setIcon(0, get_icon("4")) + + + def connect_signal_slot(self): + self.appSettingToolBarAction.triggered.connect(self.appSettingToolBarActionTriggered) + self.toolBoxTreeWidget.doubleClicked.connect(self.toolBoxTreeWidgetDoubleClicked) + + def appSettingToolBarActionTriggered(self): + appSettingDialog = AppSettingDialog(self.qSetting) + appSettingDialog.exec() + + def toolBoxTreeWidgetDoubleClicked(self): + selectToolName = self.toolBoxTreeWidget.currentItem().text(0) + global location + + if selectToolName == "启动FlightGear飞行模拟器": + printSkyBlue(u'正在启动FlightGear飞行模拟器......\n') + process1 = subprocess.Popen(["C:/cygwin64/home/Lenovo/ardupilot/Tools/autotest/fg_quad_view.bat"]) + #printSkyBlue(u'FlightGear飞行模拟器启动完成\n') + #subprocess.call("start /wait C:/cygwin64/home/Lenovo/ardupilot/Tools/autotest/fg_quad_view.bat", shell=True) + #son_p1=Process(target=run_FlightGear,args={}) + #son_p1.start() + #son_p1.join() + elif selectToolName == "测试位置:德国吕纳堡(EDHG)": + location = "EDHG" + printBlue(u'目标位置确定:' + location + '\n') + elif selectToolName == "测试位置:布兰肯塞机场(EDHL)": + location = "EDHL" + printBlue(u'目标位置确定:' + location + '\n') + elif selectToolName == "测试位置:佛罗里达(SCSE)": + location = "SCSE" + printBlue(u'目标位置确定:' + location + '\n') + elif selectToolName == "自定义地理坐标": + printBlue(u'因平台重新编译原因,请开启编程环境——作战平台并执行以下两段代码,注意替换实际的值:\n') + printBlue(u'cd /home/Lenovo/ardupilot/ArduCopter\n') + printBlue(u'../Tools/autotest/sim_vehicle.py --map -l ' + "目标纬度,目标经度,飞行高度,无人机朝向" + ' --console\n') + + elif selectToolName == "启动编程环境——作战平台": + printYellow(u'正在启动编程环境——作战平台......\n') + os.system("mintty.exe -i /Cygwin-Terminal.ico -") + printYellow(u'编程环境——作战平台启动完成\n') + + elif selectToolName == "仅加载Mavproxy控制台": + printDarkGreen(u'因平台重新编译原因,请分别在编程环境——作战平台下执行以下两段代码:\n') + printDarkGreen(u'cd /home/Lenovo/ardupilot/ArduCopter\n') + printDarkGreen(u'../Tools/autotest/sim_vehicle.py --console\n') + + elif selectToolName == "加载Mavproxy控制台与战场俯视图": + printDarkSkyBlue(u'因平台重新编译原因,请分别在编程环境——作战平台下执行以下两段代码:\n') + printDarkSkyBlue(u'cd /home/Lenovo/ardupilot/ArduCopter\n') + printDarkSkyBlue(u'../Tools/autotest/sim_vehicle.py --map -L ' + location + ' --console\n') + + elif selectToolName == "启动编程环境——智能平台": + printYellow(u'正在启动编程环境——智能平台......\n') + os.system("mintty.exe -i /Cygwin-Terminal.ico -") + printYellow(u'编程环境——智能平台启动完成\n') + + elif selectToolName == "autoFly获取无人机信息": + printDarkPink(u'因平台重新编译原因,请分别在编程环境——智能平台下执行以下两段代码:\n') + printDarkPink(u'cd /home/Lenovo/ardupilot/ArduCopter/PyScripts\n') + printDarkPink(u'python autoFly获取无人机信息.py\n') + + elif selectToolName == "autoFly前后左右升降俯仰": + printDarkYellow(u'因平台重新编译原因,请分别在编程环境——智能平台下执行以下两段代码:\n') + printDarkYellow(u'cd /home/Lenovo/ardupilot/ArduCopter/PyScripts\n') + printDarkYellow(u'python autoFly前后左右升降俯仰.py\n') + + elif selectToolName == "autoFly连续飞行": + printSkyBlue(u'因平台重新编译原因,请分别在编程环境——智能平台下执行以下两段代码:\n') + printSkyBlue(u'cd /home/Lenovo/ardupilot/ArduCopter/PyScripts\n') + printSkyBlue(u'python autoFly连续飞行.py\n') + + elif selectToolName == "启动地面站Mission Planner": + printDarkRed(u'地面站Mission Planner启动......\n') + son_p2=Process(target=run_MP,args={}) + son_p2.start() + son_p2.join() + printDarkRed(u'请在Mavproxy控制台输入代码并执行:\n') + printDarkRed(u'output add 127.0.0.1:14550\n') + printDarkRed(u'地面站Mission Planner启动完成\n') + + else: + pass + + def closeEvent(self, QCloseEvent): + qMsg = QMessageBox.question(self, "提示","退出仿真程序?") + if qMsg == QMessageBox.Yes: + QCloseEvent.accept() + else: + QCloseEvent.ignore() + +def run_MP(): + process2 = subprocess.Popen([subprocess.call("start start /B /wait MissionPlanner.exe", shell=True)]) + +def main(): + app = QApplication(sys.argv) + mainWindow = MainWindow() + mainWindow.show() + sys.exit(app.exec_()) + + + +if __name__ == "__main__": + #启动 + main() diff --git a/IntelligentUAVPathPlanningSimulationSystem/core/appUI/MainWindowDesigner.py b/IntelligentUAVPathPlanningSimulationSystem/core/appUI/MainWindowDesigner.py new file mode 100644 index 0000000..fca6b51 --- /dev/null +++ b/IntelligentUAVPathPlanningSimulationSystem/core/appUI/MainWindowDesigner.py @@ -0,0 +1,85 @@ +# -*- coding: utf-8 -*- + +# Form implementation generated from reading ui file '.\MainWindowDesigner.ui' +# +# Created by: PyQt5 UI code generator 5.12.3 +# +# WARNING! All changes made in this file will be lost! + + +from PyQt5 import QtCore, QtGui, QtWidgets + + +class Ui_MainWindow(object): + def setupUi(self, MainWindow): + MainWindow.setObjectName("MainWindow") + MainWindow.resize(402, 676) + self.centralwidget = QtWidgets.QWidget(MainWindow) + self.centralwidget.setObjectName("centralwidget") + self.horizontalLayout = QtWidgets.QHBoxLayout(self.centralwidget) + self.horizontalLayout.setContentsMargins(0, 0, 0, 0) + self.horizontalLayout.setSpacing(5) + self.horizontalLayout.setObjectName("horizontalLayout") + self.toolBoxTreeWidget = QtWidgets.QTreeWidget(self.centralwidget) + self.toolBoxTreeWidget.setHeaderHidden(True) + self.toolBoxTreeWidget.setObjectName("toolBoxTreeWidget") + self.toolBoxTreeWidget.headerItem().setText(0, "1") + item_0 = QtWidgets.QTreeWidgetItem(self.toolBoxTreeWidget) + item_1 = QtWidgets.QTreeWidgetItem(item_0) + item_1 = QtWidgets.QTreeWidgetItem(item_0) + item_2 = QtWidgets.QTreeWidgetItem(item_1) + item_2 = QtWidgets.QTreeWidgetItem(item_1) + item_2 = QtWidgets.QTreeWidgetItem(item_1) + item_2 = QtWidgets.QTreeWidgetItem(item_1) + + item_0 = QtWidgets.QTreeWidgetItem(self.toolBoxTreeWidget) + item_1 = QtWidgets.QTreeWidgetItem(item_0) + item_1 = QtWidgets.QTreeWidgetItem(item_0) + item_1 = QtWidgets.QTreeWidgetItem(item_0) + item_1 = QtWidgets.QTreeWidgetItem(item_0) + item_2 = QtWidgets.QTreeWidgetItem(item_1) + item_2 = QtWidgets.QTreeWidgetItem(item_1) + item_2 = QtWidgets.QTreeWidgetItem(item_1) + item_2 = QtWidgets.QTreeWidgetItem(item_1) + + item_0 = QtWidgets.QTreeWidgetItem(self.toolBoxTreeWidget) + item_1 = QtWidgets.QTreeWidgetItem(item_0) + + self.horizontalLayout.addWidget(self.toolBoxTreeWidget) + MainWindow.setCentralWidget(self.centralwidget) + self.statusBar = QtWidgets.QStatusBar(MainWindow) + self.statusBar.setObjectName("statusBar") + MainWindow.setStatusBar(self.statusBar) + + self.retranslateUi(MainWindow) + QtCore.QMetaObject.connectSlotsByName(MainWindow) + + def retranslateUi(self, MainWindow): + _translate = QtCore.QCoreApplication.translate + MainWindow.setWindowTitle(_translate("MainWindow", "智能无人机路径规划仿真系统 V1.0.0")) + __sortingEnabled = self.toolBoxTreeWidget.isSortingEnabled() + self.toolBoxTreeWidget.setSortingEnabled(False) + self.toolBoxTreeWidget.topLevelItem(0).setText(0, _translate("MainWindow", "虚拟飞行")) + self.toolBoxTreeWidget.topLevelItem(0).child(0).setText(0, _translate("MainWindow", "启动FlightGear飞行模拟器")) + + self.toolBoxTreeWidget.topLevelItem(0).child(1).setText(0, _translate("MainWindow", "选择作战地图")) + self.toolBoxTreeWidget.topLevelItem(0).child(1).child(0).setText(0, _translate("MainWindow", "测试位置:德国吕纳堡(EDHG)")) + self.toolBoxTreeWidget.topLevelItem(0).child(1).child(1).setText(0, _translate("MainWindow", "测试位置:布兰肯塞机场(EDHL)")) + self.toolBoxTreeWidget.topLevelItem(0).child(1).child(2).setText(0, _translate("MainWindow", "测试位置:佛罗里达(SCSE)")) + self.toolBoxTreeWidget.topLevelItem(0).child(1).child(3).setText(0, _translate("MainWindow", "自定义地理坐标")) + + self.toolBoxTreeWidget.topLevelItem(1).setText(0, _translate("MainWindow", "作战控制台")) + self.toolBoxTreeWidget.topLevelItem(1).child(0).setText(0, _translate("MainWindow", "启动编程环境——作战平台")) + self.toolBoxTreeWidget.topLevelItem(1).child(1).setText(0, _translate("MainWindow", "仅加载Mavproxy控制台")) + self.toolBoxTreeWidget.topLevelItem(1).child(2).setText(0, _translate("MainWindow", "加载Mavproxy控制台与战场俯视图")) + + self.toolBoxTreeWidget.topLevelItem(1).child(3).setText(0, _translate("MainWindow", "智能控制")) + self.toolBoxTreeWidget.topLevelItem(1).child(3).child(0).setText(0, _translate("MainWindow", "启动编程环境——智能平台")) + self.toolBoxTreeWidget.topLevelItem(1).child(3).child(1).setText(0, _translate("MainWindow", "autoFly获取无人机信息")) + self.toolBoxTreeWidget.topLevelItem(1).child(3).child(2).setText(0, _translate("MainWindow", "autoFly前后左右升降俯仰")) + self.toolBoxTreeWidget.topLevelItem(1).child(3).child(3).setText(0, _translate("MainWindow", "autoFly连续飞行")) + + self.toolBoxTreeWidget.topLevelItem(2).setText(0, _translate("MainWindow", "地面站")) + self.toolBoxTreeWidget.topLevelItem(2).child(0).setText(0, _translate("MainWindow", "启动地面站Mission Planner")) + + self.toolBoxTreeWidget.setSortingEnabled(__sortingEnabled) diff --git a/IntelligentUAVPathPlanningSimulationSystem/core/appUI/SampleMakerDialog.py b/IntelligentUAVPathPlanningSimulationSystem/core/appUI/SampleMakerDialog.py new file mode 100644 index 0000000..00085e6 --- /dev/null +++ b/IntelligentUAVPathPlanningSimulationSystem/core/appUI/SampleMakerDialog.py @@ -0,0 +1,35 @@ +# -*- coding: utf-8 -*- + +import os +import sys + +sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) +sys.path.append(os.path.dirname(os.path.abspath(__file__))) + +from PyQt5 import QtCore, QtWidgets +from PyQt5.QtWidgets import QDialog, QApplication, QFileDialog, QMessageBox +import numpy as np + +from InitResource import get_icon +from SampleMakerDialogDesigner import Ui_SampleMakerDialog +from fileIO import ExcelIO +from data import SampleMaker +from chart.StatsChart import CoordinateAxis, BarChart, HistgramChart + + +class SampleMakerDialog(QDialog, Ui_SampleMakerDialog): + ''' + ''' + # + qSetting = None + # + training_cv_samples = None + test_samples = None + + + + + +if __name__ == "__main__": + os.system("C:\cygwin64\home\Lenovo\ardupilot\Tools\autotest\fg_quad_view.bat") + diff --git a/IntelligentUAVPathPlanningSimulationSystem/core/appUI/UIDesigner/AppSettingDialogDesigner.ui b/IntelligentUAVPathPlanningSimulationSystem/core/appUI/UIDesigner/AppSettingDialogDesigner.ui new file mode 100644 index 0000000..102f58d --- /dev/null +++ b/IntelligentUAVPathPlanningSimulationSystem/core/appUI/UIDesigner/AppSettingDialogDesigner.ui @@ -0,0 +1,338 @@ + + + AppSettingDialog + + + + 0 + 0 + 726 + 380 + + + + 系统设置 + + + + 5 + + + 5 + + + 5 + + + 5 + + + 10 + + + + + 10 + + + + + true + + + + 设置选项 + + + + + 工作空间 + + + + + ML模型库 + + + + + cURL程序 + + + + + MySQL数据库 + + + + + GeoServer + + + + + + + + + + + + 5 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + + + + + + + + + + + + + + + 默认工作路径: + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + + + + false + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + 参数文件路径: + + + + + + + + + + + cURL路径: + + + + + + + false + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + + + + + + + Host: + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + 端口: + + + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + + + + + 端口: + + + + + + + Host: + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + 确定 + + + + + + + 取消 + + + + + + + + + + diff --git a/IntelligentUAVPathPlanningSimulationSystem/core/appUI/UIDesigner/BandCalculatorDialogDesigner.ui b/IntelligentUAVPathPlanningSimulationSystem/core/appUI/UIDesigner/BandCalculatorDialogDesigner.ui new file mode 100644 index 0000000..0651092 --- /dev/null +++ b/IntelligentUAVPathPlanningSimulationSystem/core/appUI/UIDesigner/BandCalculatorDialogDesigner.ui @@ -0,0 +1,327 @@ + + + BandCalculatorDialog + + + + 0 + 0 + 990 + 513 + + + + 波段计算器 + + + + 10 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 10 + + + 10 + + + 10 + + + 10 + + + 10 + + + + + 文件列表: + + + + + + + QAbstractItemView::SingleSelection + + + QAbstractItemView::SelectRows + + + 49 + + + 2 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 输入影像 + + + + + 输出影像 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 有效波段: + + + + + + + 波段计算公式:e.g.(B5-B4)/(B5+B4) + + + + + + + + 40 + 40 + + + + 添加 + + + + + + + 有效波段计算公式: + + + + + + + 波段保存顺序: + + + + + + + + + + QAbstractItemView::ExtendedSelection + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 保存位置: + + + + + + + + + + + + + + + + + + + + + + + + + Qt::Horizontal + + + + + + + 10 + + + 10 + + + 10 + + + 10 + + + 10 + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + 确定 + + + + + + + 取消 + + + + + + + + + + diff --git a/IntelligentUAVPathPlanningSimulationSystem/core/appUI/UIDesigner/BandSpliterDialogDesigner.ui b/IntelligentUAVPathPlanningSimulationSystem/core/appUI/UIDesigner/BandSpliterDialogDesigner.ui new file mode 100644 index 0000000..590e634 --- /dev/null +++ b/IntelligentUAVPathPlanningSimulationSystem/core/appUI/UIDesigner/BandSpliterDialogDesigner.ui @@ -0,0 +1,275 @@ + + + BandSpliterDialog + + + + 0 + 0 + 751 + 546 + + + + 波段分离 + + + + 10 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 5 + + + 5 + + + 5 + + + 5 + + + 10 + + + + + + + + + + + + + 60 + 16777215 + + + + 分离波段: + + + + + + + + + + + + + + + GeoTiff(*.tif) + + + + + + + + 保存方式: + + + + + + + + + + + 多波段文件 + + + + + 单波段文件 + + + + + + + + + + + 保存格式: + + + + + + + + 35 + 16777215 + + + + + + + + + + + + + + + + + + + + + 保存位置: + + + + + + + > + + + + + + + 文件列表: + + + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + + + 保存文件: + + + + + + + + + + + + + + + 60 + 16777215 + + + + 有效波段: + + + + + + + < + + + + + + + + + Qt::Horizontal + + + + + + + 10 + + + 5 + + + 5 + + + 5 + + + 5 + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + 确定 + + + + + + + 取消 + + + + + + + + + + diff --git a/IntelligentUAVPathPlanningSimulationSystem/core/appUI/UIDesigner/BandSpliterDialogDesigner_old.ui b/IntelligentUAVPathPlanningSimulationSystem/core/appUI/UIDesigner/BandSpliterDialogDesigner_old.ui new file mode 100644 index 0000000..e21d754 --- /dev/null +++ b/IntelligentUAVPathPlanningSimulationSystem/core/appUI/UIDesigner/BandSpliterDialogDesigner_old.ui @@ -0,0 +1,19 @@ + + + BandSpliterDialog + + + + 0 + 0 + 613 + 674 + + + + 波段分离 + + + + + diff --git a/IntelligentUAVPathPlanningSimulationSystem/core/appUI/UIDesigner/BandStackingDialogDesigner.ui b/IntelligentUAVPathPlanningSimulationSystem/core/appUI/UIDesigner/BandStackingDialogDesigner.ui new file mode 100644 index 0000000..4d69209 --- /dev/null +++ b/IntelligentUAVPathPlanningSimulationSystem/core/appUI/UIDesigner/BandStackingDialogDesigner.ui @@ -0,0 +1,160 @@ + + + BandStackingDialog + + + + 0 + 0 + 776 + 521 + + + + Dialog + + + + 0 + + + 0 + + + 0 + + + + + 10 + + + 10 + + + 10 + + + 10 + + + 5 + + + 15 + + + + + 合并文件 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + + + + + Qt::Horizontal + + + + + + + 10 + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + 确定 + + + + + + + 取消 + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + diff --git a/IntelligentUAVPathPlanningSimulationSystem/core/appUI/UIDesigner/ChartViewDialogDesigner.ui b/IntelligentUAVPathPlanningSimulationSystem/core/appUI/UIDesigner/ChartViewDialogDesigner.ui new file mode 100644 index 0000000..93568c7 --- /dev/null +++ b/IntelligentUAVPathPlanningSimulationSystem/core/appUI/UIDesigner/ChartViewDialogDesigner.ui @@ -0,0 +1,105 @@ + + + ChartViewDialog + + + + 0 + 0 + 751 + 620 + + + + Dialog + + + + 2 + + + 3 + + + 2 + + + 2 + + + + + + + + + + + + + + + + + + + + + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + true + + + + + 0 + 0 + 745 + 582 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + + + + + + + + diff --git a/IntelligentUAVPathPlanningSimulationSystem/core/appUI/UIDesigner/DataScalerDialogDesigner.ui b/IntelligentUAVPathPlanningSimulationSystem/core/appUI/UIDesigner/DataScalerDialogDesigner.ui new file mode 100644 index 0000000..3e51df5 --- /dev/null +++ b/IntelligentUAVPathPlanningSimulationSystem/core/appUI/UIDesigner/DataScalerDialogDesigner.ui @@ -0,0 +1,319 @@ + + + DataScalerDialog + + + + 0 + 0 + 709 + 201 + + + + 归一化/标准化 + + + + 5 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 10 + + + 10 + + + 10 + + + 10 + + + 5 + + + 15 + + + + + 数据格式: + + + + + + + + + + + + + + + + + 列优先 + + + true + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + 行优先 + + + false + + + + + + + 包含行标题 + + + true + + + + + + + 归一化 + + + false + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + 16777215 + 16777215 + + + + 预处理方式: + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + 16777215 + 16777215 + + + + 数据文件: + + + + + + + 包含列标题 + + + true + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + 标准化 + + + false + + + + + + + 最大/小值: + + + + + + + false + + + 0.0-1.0 + + + + + + + + 16777215 + 16777215 + + + + 数据文件: + + + + + + + + + + + + + + + + + + + Qt::Horizontal + + + + + + + 5 + + + 5 + + + 10 + + + 5 + + + 5 + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + 确定 + + + + + + + 取消 + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + diff --git a/IntelligentUAVPathPlanningSimulationSystem/core/appUI/UIDesigner/EmpiricalStatisticalModelDialogDesigner.ui b/IntelligentUAVPathPlanningSimulationSystem/core/appUI/UIDesigner/EmpiricalStatisticalModelDialogDesigner.ui new file mode 100644 index 0000000..4028607 --- /dev/null +++ b/IntelligentUAVPathPlanningSimulationSystem/core/appUI/UIDesigner/EmpiricalStatisticalModelDialogDesigner.ui @@ -0,0 +1,318 @@ + + + EmpiricalStatisticalModelDialog + + + + 0 + 0 + 796 + 353 + + + + 经验统计模型 + + + + + + 输入样本 + + + + 10 + + + + + 训练样本: + + + + + + + + + + + + + + 测试样本(可选): + + + + + + + + + + + + + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + 样本文件类型: + + + + + + + 包含行标题 + + + true + + + + + + + 包含列标题 + + + true + + + + + + + 行优先 + + + true + + + + + + + 列优先 + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + 参数设置 + + + + 10 + + + + + + y = α * x + β + + + + + y = α * x ** 2 + β * x + γ + + + + + y = α * exp (β * x) + + + + + y = α + β * log(x ) + + + + + + + + + + + + + 自定义方程: + + + + + + + + + + 未拟合方程: + + + + + + + + 35 + 25 + + + + > + + + + + + + + 35 + 25 + + + + < + + + + + + + QAbstractItemView::SelectRows + + + 10 + + + + + + + + + + + + + + 待拟合方程 + + + + + 初始化参数 + + + + + y = α * x + β + + + + + 10,10 + + + + + + + + + + + + + + + + + + + + + 10 + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + 训练/测试 + + + + + + + 取消 + + + + + + + + + + diff --git a/IntelligentUAVPathPlanningSimulationSystem/core/appUI/UIDesigner/EstimatorApplicationDialogDesigner.ui b/IntelligentUAVPathPlanningSimulationSystem/core/appUI/UIDesigner/EstimatorApplicationDialogDesigner.ui new file mode 100644 index 0000000..46051ee --- /dev/null +++ b/IntelligentUAVPathPlanningSimulationSystem/core/appUI/UIDesigner/EstimatorApplicationDialogDesigner.ui @@ -0,0 +1,315 @@ + + + EstimatorApplicationDialog + + + + 0 + 0 + 828 + 527 + + + + 应用模型 + + + + 5 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 5 + + + 10 + + + 5 + + + 10 + + + 10 + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + GeoTiff影像 + + + + + Excel表格数据 + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + GeoTiff影像 + + + + + Excel表格数据 + + + + + + + + 统一特征 + + + true + + + + + + + 输出类型: + + + + + + + 输入类型: + + + + + + + + + + + + + + + + + + + + + + + + + + + + QAbstractItemView::SelectRows + + + 20 + + + 2 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 5 + + + 5 + + + 5 + + + 10 + + + 5 + + + 10 + + + + + 模型信息: + + + + + + + + + + + + + + 模型文件: + + + + + + + + + + background-color: rgba(240, 240, 240, 246); + + + + + + + + + 5 + + + 5 + + + 10 + + + 5 + + + 10 + + + + + + + + + + + + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + 确定 + + + + + + + 取消 + + + + + + + + + + diff --git a/IntelligentUAVPathPlanningSimulationSystem/core/appUI/UIDesigner/FeatureCreatorFormDesigner.ui b/IntelligentUAVPathPlanningSimulationSystem/core/appUI/UIDesigner/FeatureCreatorFormDesigner.ui new file mode 100644 index 0000000..50da8c4 --- /dev/null +++ b/IntelligentUAVPathPlanningSimulationSystem/core/appUI/UIDesigner/FeatureCreatorFormDesigner.ui @@ -0,0 +1,359 @@ + + + FeatureCreatorDialog + + + + 0 + 0 + 791 + 488 + + + + 特征构建 + + + + 5 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 10 + + + 10 + + + 10 + + + 15 + + + 5 + + + 15 + + + + + 单特征比值 + + + true + + + + + + + 合并原始特征和生成特征 + + + true + + + + + + + 行优先 + + + false + + + + + + + + + + 自定义特征: + + + + + + + + 40 + 35 + + + + 应用 + + + + + + + 保存特征: + + + + + + + 列优先 + + + true + + + + + + + + + + + + + 包含列标题 + + + true + + + + + + + 敏感特征: + + + + + + + + + + 双特征和差比值 + + + true + + + + + + + + + + + + + + 包含行标题 + + + true + + + + + + + + 60 + 50 + + + + 原始特征: + + + + + + + 样本总体: + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + 5 + + + 5 + + + 5 + + + + + Qt::Horizontal + + + + + + + + + + + + + + + + + + + + + + 生成特征: + + + + + + + + + Qt::Horizontal + + + + + + + 5 + + + 10 + + + 5 + + + 10 + + + 5 + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + 确定 + + + + + + + 取消 + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + diff --git a/IntelligentUAVPathPlanningSimulationSystem/core/appUI/UIDesigner/FeatureSelectorDialogDesigner.ui b/IntelligentUAVPathPlanningSimulationSystem/core/appUI/UIDesigner/FeatureSelectorDialogDesigner.ui new file mode 100644 index 0000000..c9952a7 --- /dev/null +++ b/IntelligentUAVPathPlanningSimulationSystem/core/appUI/UIDesigner/FeatureSelectorDialogDesigner.ui @@ -0,0 +1,360 @@ + + + FeatureSelectorDialog + + + + 0 + 0 + 1028 + 678 + + + + 特征选择 + + + + 5 + + + 5 + + + 10 + + + 5 + + + 5 + + + + + 5 + + + 10 + + + + + 数据格式: + + + + + + + 包含行标题 + + + true + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + 包含列标题 + + + true + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + 行优先 + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + 列优先 + + + true + + + + + + + 显著性标准: + + + + + + + 特征方差 + + + true + + + + + + + 皮尔逊相关系数 + + + true + + + + + + + 距离相关系数 + + + true + + + + + + + 数据文件: + + + + + + + + + + + + + + + + + + + 5 + + + 10 + + + 10 + + + + + Qt::Horizontal + + + + + + + + + 10 + + + 5 + + + 10 + + + + + 保存显著特征: + + + + + + + 显著性图表: + + + + + + + false + + + + + + + + + + 显著特征: + + + + + + + + + + + + + + + + + + + + false + + + + + + + 保留显著性信息 + + + true + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 5 + + + + + + + + + + + diff --git a/IntelligentUAVPathPlanningSimulationSystem/core/appUI/UIDesigner/FormulaApplicationDialogDesigner.ui b/IntelligentUAVPathPlanningSimulationSystem/core/appUI/UIDesigner/FormulaApplicationDialogDesigner.ui new file mode 100644 index 0000000..abdbf24 --- /dev/null +++ b/IntelligentUAVPathPlanningSimulationSystem/core/appUI/UIDesigner/FormulaApplicationDialogDesigner.ui @@ -0,0 +1,357 @@ + + + FormulaApplicationDialog + + + + 0 + 0 + 828 + 526 + + + + 应用方程 + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 5 + + + 10 + + + 5 + + + 10 + + + 10 + + + + + + GeoTiff影像 + + + + + Excel表格数据 + + + + + + + + 输入类型: + + + + + + + + + + + + + + + + + + + + + QAbstractItemView::SelectRows + + + 20 + + + 2 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + GeoTiff影像 + + + + + Excel表格数据 + + + + + + + + 输出类型: + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + 5 + + + 5 + + + 5 + + + 10 + + + 5 + + + 10 + + + + + + + + 计算方程: + + + + + + + + + + + + + + 变量设置: + + + + + + + + + + + + + + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + QAbstractItemView::SelectRows + + + 20 + + + 2 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Qt::Horizontal + + + + + + + 5 + + + 5 + + + 10 + + + 5 + + + 10 + + + + + text-align: Center;color: rgb(0, 0, 0);font-weight: bold + + + 0 + + + + + + + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + 确定 + + + + + + + 取消 + + + + + + + + + + diff --git a/IntelligentUAVPathPlanningSimulationSystem/core/appUI/UIDesigner/GeoserverWMSPublisherDialogDesigner.ui b/IntelligentUAVPathPlanningSimulationSystem/core/appUI/UIDesigner/GeoserverWMSPublisherDialogDesigner.ui new file mode 100644 index 0000000..acab901 --- /dev/null +++ b/IntelligentUAVPathPlanningSimulationSystem/core/appUI/UIDesigner/GeoserverWMSPublisherDialogDesigner.ui @@ -0,0 +1,358 @@ + + + GeoserverWMSPublisherDialog + + + + 0 + 0 + 872 + 392 + + + + WMS服务发布 + + + + 10 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 10 + + + 10 + + + 5 + + + 10 + + + 5 + + + + + 用户信息 + + + + + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + 登录 + + + + + + + 密码: + + + + + + + false + + + 注销 + + + + + + + 用户名: + + + + + + + 端口: + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + + + 参数设置 + + + + + + false + + + 创建新的数据存储 + + + + + + + 数据类型: + + + + + + + 栅格文件 + + + true + + + + + + + 图层名称: + + + + + + + false + + + + + + + 创建新的样式 + + + + + + + 样式名称: + + + + + + + + + + + + + + false + + + 数据存储: + + + + + + + false + + + + + + + + + + 创建新的工作空间 + + + false + + + + + + + 工作空间: + + + + + + + + + + + + + + 样式文件: + + + + + + + 数据文件: + + + + + + + + + + false + + + + + + + false + + + + + + + 矢量文件 + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + + + + + + + + + + + + 5 + + + 10 + + + 5 + + + 10 + + + 5 + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + 确定 + + + + + + + 取消 + + + + + + + + + + diff --git a/IntelligentUAVPathPlanningSimulationSystem/core/appUI/UIDesigner/ImageFusionSTARFMDialogDesigner.ui b/IntelligentUAVPathPlanningSimulationSystem/core/appUI/UIDesigner/ImageFusionSTARFMDialogDesigner.ui new file mode 100644 index 0000000..e24dba1 --- /dev/null +++ b/IntelligentUAVPathPlanningSimulationSystem/core/appUI/UIDesigner/ImageFusionSTARFMDialogDesigner.ui @@ -0,0 +1,354 @@ + + + ImageFusionSTARFMDialog + + + + 0 + 0 + 880 + 465 + + + + STARFM图像融合 + + + + + + + + Tk时刻影像对 + + + + + + Tk输入低分影像: + + + + + + + + + + + + + + + + + Tk输入高分影像: + + + + + + + + + + + + + + + + + + + + T0时刻影像对 + + + + + + T0输入低分影像: + + + + + + + + + + + + + + + + + + + + + + + + 参数得分图表 + + + + + + + + + 参数设置 + + + + + + T0拟合高分影像保存路径: + + + + + + + 窗口尺寸: + + + + + + + 系数S: + + + + + + + + + + + + + + + + + 1.0 + + + + + + + 系数A: + + + + + + + 1.0 + + + + + + + 1.0 + + + + + + + 1.0 + + + + + + + 起始值 + + + + + + + 19 + + + + + + + 1.0 + + + + + + + 1.0 + + + + + + + 15 + + + + + + + 系数T: + + + + + + + 1.0 + + + + + + + 1.0 + + + + + + + 1.0 + + + + + + + 1.0 + + + + + + + 1.0 + + + + + + + 系数D: + + + + + + + 1.0 + + + + + + + 终止值 + + + + + + + 2 + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + 取值间隔 + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + 确定 + + + + + + + 取消 + + + + + + + + + + diff --git a/IntelligentUAVPathPlanningSimulationSystem/core/appUI/UIDesigner/MLRegressorDialogDesigner.ui b/IntelligentUAVPathPlanningSimulationSystem/core/appUI/UIDesigner/MLRegressorDialogDesigner.ui new file mode 100644 index 0000000..9df8c45 --- /dev/null +++ b/IntelligentUAVPathPlanningSimulationSystem/core/appUI/UIDesigner/MLRegressorDialogDesigner.ui @@ -0,0 +1,1830 @@ + + + MLRegressorDialog + + + + 0 + 0 + 1061 + 694 + + + + Dialog + + + + + + + 5 + + + 5 + + + 10 + + + 5 + + + 10 + + + + + 10 + + + + + + Aharoni + 16 + 75 + true + + + + 选择样本 + + + + + + + 选择训练模型所用的样本数据 + + + + + + + TextLabel + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + 0 + + + + + 5 + + + 0 + + + 10 + + + 0 + + + 10 + + + + + 样本设置 + + + + 15 + + + + + + 100 + 16777215 + + + + 样本文件类型: + + + + + + + + 100 + 16777215 + + + + 训练-验证样本: + + + + + + + + + + + + + + + 100 + 16777215 + + + + 测试样本(可选): + + + + + + + + + + + + + + + + + + + + 包含列标题 + + + true + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + 包含行标题 + + + true + + + + + + + 行优先 + + + true + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + 列优先 + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + background-color:white + + + QFrame::StyledPanel + + + QFrame::Sunken + + + + 5 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + + + + + + + + 5 + + + 0 + + + 10 + + + 0 + + + 10 + + + + + + + + + 10 + + + + + 20 + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + false + + + + + + + + 60 + 0 + + + + + 60 + 25 + + + + 参数文件: + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + false + + + + + + + + + + 导入参数 + + + false + + + + + + + 初始化参数 + + + true + + + + + + + + 60 + 25 + + + + 回归模型: + + + + + + + 3 + + + + 线性回归 + + + + + 支持向量机 + + + + + BP神经网络 + + + + + 随机森林 + + + + + 梯度提升树 + + + + + + + + + + 2 + + + + + + + + Aharoni + 8 + 75 + true + + + + color:gray + + + 提示:线性回归模型无参数设置和调试参数项! + + + Qt::AlignCenter + + + + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 5 + + + 15 + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + 65 + 0 + + + + 核函数: + + + + + + + 1 + + + + 1 / N + + + + + 1 / (N * X.std) + + + + + + + + 3 + + + + 线性核函数 + + + + + 多项式核函数 + + + + + sigmoid核函数 + + + + + 径向基函数(rbf) + + + + + + + + 核系数: + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 5 + + + 15 + + + + + + 65 + 0 + + + + 激活函数: + + + + + + + 网络结构: + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + 2 + + + + lbfgs + + + + + sgd + + + + + adam + + + + + + + + 3 + + + + f(x) = x + + + + + logistic + + + + + tanh + + + + + relu + + + + + + + + 优化算法: + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + 0 + + + 5 + + + 0 + + + 0 + + + 5 + + + 15 + + + + + 计算袋外得分(OOB) + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + 使用自助采样法 + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + 最大特征: + + + + + + + + + + + + + + 65 + 0 + + + + 分裂标准: + + + + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 5 + + + 15 + + + + + + split + + + + + gain + + + + + + + + + 65 + 0 + + + + boosting: + + + + + + + + gbdt + + + + + dart + + + + + goss + + + + + rf + + + + + + + + 特征返回类型: + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + + + + + 5 + + + + + 调试参数项: + + + + + + + + + + + + + + 5 + + + 0 + + + 10 + + + 0 + + + 10 + + + + + 模型信息 + + + + + + background:rgb(240,240,240) + + + QFrame::NoFrame + + + + + + + + + + + + 训练模型 + + + + + + 训练 + + + + + + + 交叉验证(K): + + + + + + + + + + + + + 工作核心数: + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + TextLabel + + + + + + + + + + 结果 + + + + + + - + + + + + + + R2 + + + + + + + 样本数 + + + + + + + - + + + + + + + - + + + + + + + - + + + + + + + 测试: + + + + + + + 训练: + + + + + + + 验证: + + + + + + + MSE + + + + + + + - + + + + + + + - + + + + + + + - + + + + + + + - + + + + + + + - + + + + + + + Qt::Horizontal + + + + + + + 绘制模型评估图表 + + + + + + + 绘制训练信息图表 + + + + + + + + + + + + + + 5 + + + 0 + + + 10 + + + 0 + + + 10 + + + + + 优化模型 + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + 更多的数据以增加训练模型的样本数量! + + + + + + + 如果第一次训练没得到较好的结果,希望进一步提高模型性能? + + + + + + + 重新训练 + + + + + + + 如果重新训练模型无效,则修改模型参数。 + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + 以上操作均无效?您可能需要重新进行数据预处理或者获取 + + + + + + + 导入更大的数据集 + + + + + + + 调整模型参数 + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + + + 使用新试数据评估模型 + + + + + + …… + + + + + + + 测试样本: + + + + + + + 绘制拟合散点图 + + + + + + + Qt::Horizontal + + + + + + + Qt::Horizontal + + + + + + + 测试 + + + + + + + 特征数 + + + + + + + 绘制误差直方图 + + + + + + + - + + + + + + + R2 + + + + + + + - + + + + + + + - + + + + + + + 测试样本: + + + + + + + 样本量 + + + + + + + - + + + + + + + MSE + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + + + + + + + + 5 + + + 0 + + + 10 + + + 0 + + + 10 + + + + + + + + + + + + + 保存最优模型到本地文件(xml)的文件名 + + + true + + + + + + + + + + 保存模型训练数据、验证数据及测试数据结果到本地文件(Excel)的文件名: + + + true + + + + + + + + + + 保存模型训练数据结果到本地l文件(Excel)中的工作表名称: + + + false + + + + + + + + + + 保存模型验证数据结果到本地文件(Excel)中的工作表名称: + + + false + + + + + + + + + + 保存模型测试数据结果到本地文件(Excel)中的工作表名称: + + + true + + + + + + + + + + 保存模型新测试数据结果到本地文件(Excel)中的工作表名称: + + + + + + + + + + 保存模型训练-验证数据结果到本地文件(Excel)中的工作表名称: + + + true + + + + + + + + + + + + Qt::Horizontal + + + + + + + + + 保存路径 + + + + + + + + + + + + + + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + 重置参数 + + + + + + + 保存结果 + + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + + + + + + + 15 + + + + + TextLabel + + + + + + + 选择本地样本文件后,点击“下一步”以继续操作! + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + 上一步 + + + + + + + 下一步 + + + + + + + 取消 + + + + + + + + + + diff --git a/IntelligentUAVPathPlanningSimulationSystem/core/appUI/UIDesigner/MainWindowDesigner.ui b/IntelligentUAVPathPlanningSimulationSystem/core/appUI/UIDesigner/MainWindowDesigner.ui new file mode 100644 index 0000000..b74af3f --- /dev/null +++ b/IntelligentUAVPathPlanningSimulationSystem/core/appUI/UIDesigner/MainWindowDesigner.ui @@ -0,0 +1,196 @@ + + + MainWindow + + + + 0 + 0 + 402 + 676 + + + + iPyGIRS V0.2.3 + + + + + 5 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + true + + + + 1 + + + + + 数据管理 + + + + 创建样本 + + + + + 预处理 + + + + 归一化/标准化 + + + + + + 特征处理 + + + + 特征构建 + + + + + 特征选择 + + + + + + + 数理统计 + + + + 经验统计模型 + + + + + 应用方程 + + + + + + 地理处理 + + + + 像元值提取 + + + + + + 栅格数据 + + + + 波段计算器 + + + + + 波段分离(当前版本不可用) + + + + + 波段合并(当前版本不可用) + + + + + 图像平滑(当前版本不可用) + + + + 移动平均平滑(当前版本不可用) + + + + + + 图像融合(当前版本不可用) + + + + STARFM融合 + + + + + + + 机器学习 + + + + scikit-learn机器学习 + + + + + TPOT机器学习(当前版本不可用) + + + + + 应用模型 + + + + + + 数据库 + + + + MySQL数据库管理 + + + + + + 地图服务 + + + + Geoserver工具 + + + + WMS服务发布 + + + + + + + + + + + + + diff --git a/IntelligentUAVPathPlanningSimulationSystem/core/appUI/UIDesigner/MySQLDatabaseManagementDialogDesigner.ui b/IntelligentUAVPathPlanningSimulationSystem/core/appUI/UIDesigner/MySQLDatabaseManagementDialogDesigner.ui new file mode 100644 index 0000000..ecaeafe --- /dev/null +++ b/IntelligentUAVPathPlanningSimulationSystem/core/appUI/UIDesigner/MySQLDatabaseManagementDialogDesigner.ui @@ -0,0 +1,565 @@ + + + MySQLDatabaseManagementDialog + + + + 0 + 0 + 872 + 810 + + + + MySQL数据库管理 + + + + + + 数据库设置 + + + + 10 + + + + + QLineEdit::Password + + + + + + + + 80 + 16777215 + + + + 数据表信息: + + + + + + + + + + 用户名: + + + + + + + + 50 + 16777215 + + + + 数据表: + + + + + + + + + + + 80 + 16777215 + + + + 数据库: + + + + + + + 密码: + + + + + + + Qt::Vertical + + + + 81 + 123 + + + + + + + + + + + + 80 + 40 + + + + 连接 + + + + + + + Qt::Horizontal + + + QSizePolicy::Fixed + + + + 40 + 20 + + + + + + + + + 字段名称 + + + + + 数据类型 + + + + + 记录数 + + + + + + + + + + + Geoserver设置 + + + + 10 + + + + + Qt::Horizontal + + + QSizePolicy::Fixed + + + + 40 + 20 + + + + + + + + + 60 + 16777215 + + + + 渲染图层: + + + + + + + + + + 用户名: + + + + + + + 数据类型: + + + + + + + false + + + + 60 + 16777215 + + + + 数据存储: + + + + + + + false + + + + + + + QLineEdit::Password + + + + + + + + + + 密码: + + + + + + + 栅格数据 + + + true + + + + + + + + 80 + 40 + + + + 登录 + + + + + + + + + + + 60 + 16777215 + + + + 工作空间: + + + + + + + Qt::Horizontal + + + QSizePolicy::Fixed + + + + 40 + 20 + + + + + + + + false + + + 矢量数据 + + + + + + + + + + + + 数据信息 + + + + + + false + + + + + + + + + + false + + + + + + + + + + 100 + + + 50 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 字段设置: + + + + + + + + + + 文件列表: + + + + + + + + 0 + 35 + + + + + 80 + 40 + + + + 更新 + + + + + + + false + + + + + + + + + + + + + + + + diff --git a/IntelligentUAVPathPlanningSimulationSystem/core/appUI/UIDesigner/PixelValueExtractorDialogDesigner.ui b/IntelligentUAVPathPlanningSimulationSystem/core/appUI/UIDesigner/PixelValueExtractorDialogDesigner.ui new file mode 100644 index 0000000..6986d8f --- /dev/null +++ b/IntelligentUAVPathPlanningSimulationSystem/core/appUI/UIDesigner/PixelValueExtractorDialogDesigner.ui @@ -0,0 +1,536 @@ + + + PixelValueExtractorDialog + + + + 0 + 0 + 938 + 584 + + + + 像元值提取 + + + + 10 + + + 5 + + + 5 + + + 5 + + + 5 + + + + + + + + + 5 + + + 5 + + + 5 + + + 5 + + + 10 + + + 20 + + + + + + 地理坐标(lon,lat) + + + + + 投影坐标(x,y) + + + + + 图像坐标(row,col) + + + + + + + + QAbstractItemView::SingleSelection + + + QAbstractItemView::SelectRows + + + 100 + + + 2 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Y坐标字段: + + + + + + + false + + + 1 + + + + + + + 保存路径: + + + + + + + Qt::Horizontal + + + + 13 + 17 + + + + + + + + 像元半径: + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + false + + + 65536 + + + + + + + + + + + + + + Qt::Horizontal + + + + 13 + 17 + + + + + + + + false + + + 65536 + + + + + + + + + + + + + + + 120 + 0 + + + + + + + + + + + + + Qt::Horizontal + + + + 13 + 17 + + + + + + + + 坐标文件: + + + + + + + + 120 + 0 + + + + + + + + + + + + + 缩放因子: + + + + + + + NoData值: + + + + + + + Qt::Horizontal + + + + 13 + 17 + + + + + + + + + + + 无效像元值: + + + + + + + X坐标字段: + + + + + + + + + + + + + + + + + 坐标类型: + + + + + + + true + + + + 60 + 16777215 + + + + 工作表名: + + + + + + + + + + + + + + + 120 + 0 + + + + + + + + + + + + + Qt::Horizontal + + + + 13 + 17 + + + + + + + + + + + + + + + + + + + + + 5 + + + 10 + + + 5 + + + 5 + + + + + 程序工作进度: + + + + + + + text-align: Center;color: rgb(0, 0, 0);font-weight: bold + + + 0 + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + 确定 + + + + + + + 取消 + + + + + + + + + + diff --git a/IntelligentUAVPathPlanningSimulationSystem/core/appUI/UIDesigner/RasterImageInfoDialogDesigner.ui b/IntelligentUAVPathPlanningSimulationSystem/core/appUI/UIDesigner/RasterImageInfoDialogDesigner.ui new file mode 100644 index 0000000..4385fe3 --- /dev/null +++ b/IntelligentUAVPathPlanningSimulationSystem/core/appUI/UIDesigner/RasterImageInfoDialogDesigner.ui @@ -0,0 +1,410 @@ + + + Dialog + + + + 0 + 0 + 1098 + 659 + + + + Dialog + + + + + + 5 + + + + + 关闭 + + + + + + + 关闭 + + + + + + + 关闭 + + + + + + + 关闭 + + + + + + + 关闭 + + + + + + + border:1px solid rgba(0,0,0,0);background:1px solid rgba(0,0,0,0) + + + PushButton + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + + + 图像属性 + + + + + + + + + 栅格信息 + + + + + 地图信息 + + + + + 坐标系信息 + + + + + 空间范围 + + + + + 波段统计信息 + + + + + + + + + 4 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + New Row + + + + + New Row + + + + + New Row + + + + + New Row + + + + + 属性名 + + + + + 属性值 + + + + + + + + + + 5 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + + + + + 5 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + + + + + 5 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + + + + + 5 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + QFrame::Box + + + QFrame::Sunken + + + + + + + + + + + + 5 + + + 10 + + + + + 统计波段: + + + + + + + + Band1 + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + 直方图bin: + + + + + + + + 50 + 20 + + + + + 50 + 20 + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + 曲线平滑: + + + + + + + + 200 + 20 + + + + + 200 + 20 + + + + Qt::Horizontal + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + 导出 + + + + + + + + + + + + + + + + + + + diff --git a/IntelligentUAVPathPlanningSimulationSystem/core/appUI/UIDesigner/SampleMakerDialogDesigner.ui b/IntelligentUAVPathPlanningSimulationSystem/core/appUI/UIDesigner/SampleMakerDialogDesigner.ui new file mode 100644 index 0000000..389b061 --- /dev/null +++ b/IntelligentUAVPathPlanningSimulationSystem/core/appUI/UIDesigner/SampleMakerDialogDesigner.ui @@ -0,0 +1,287 @@ + + + SampleMakerDialog + + + + 0 + 0 + 929 + 757 + + + + 创建样本 + + + + 5 + + + 5 + + + 5 + + + + + 参数设置 + + + + 10 + + + 10 + + + 10 + + + 5 + + + + + + + + 回归样本 + + + true + + + + + + + 分类样本 + + + + + + + 包含列标题 + + + true + + + + + + + + 80 + 16777215 + + + + 0.300000000000000 + + + + + + + + 80 + 16777215 + + + + 测试样本比例: + + + + + + + + 60 + 16777215 + + + + 总体样本: + + + + + + + + 30 + 16777215 + + + + + + + + + + + 包含行标题 + + + true + + + + + + + + + + 样本分布图表 + + + + 5 + + + 0 + + + 5 + + + 0 + + + 5 + + + + + + + + + + + 输出 + + + + + + + + + + + + + + + + + + + + + + + false + + + + + + + false + + + + + + + + + + + + + 训练验证样本: + + + + + + + 测试样本: + + + + + + + 样本分布图表: + + + + + + + + + + 5 + + + 15 + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + 确定 + + + + + + + 取消 + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + diff --git a/IntelligentUAVPathPlanningSimulationSystem/core/appUI/UIDesigner/ScikitLearnMLDialogDesigner.ui b/IntelligentUAVPathPlanningSimulationSystem/core/appUI/UIDesigner/ScikitLearnMLDialogDesigner.ui new file mode 100644 index 0000000..03c9ba5 --- /dev/null +++ b/IntelligentUAVPathPlanningSimulationSystem/core/appUI/UIDesigner/ScikitLearnMLDialogDesigner.ui @@ -0,0 +1,1373 @@ + + + ScikitLearnMLDialog + + + + 0 + 0 + 1006 + 620 + + + + scikit-learn机器学习 + + + + + + + 5 + + + 5 + + + 10 + + + 5 + + + 10 + + + + + 10 + + + + + + Aharoni + 16 + 75 + true + + + + 选择样本 + + + + + + + 选择训练模型所用的样本数据 + + + + + + + TextLabel + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + 0 + + + + + 5 + + + 5 + + + 5 + + + 5 + + + + + + + + + + + + + + + + + + 该分类特指监督学习分类,这是一种使用已标记,即带有离散数值特征标签的训练数据,训练机器学习分类模型,从而达到推断未知标签的数据样本,属于特定类别中的哪一类的机器学习任务。 + + + true + + + + + + + Qt::Vertical + + + + + + + 分类 + + + true + + + buttonGroup + + + + + + + + + + + + + + + + + + + + + + + 该回归特指监督学习回归,回归也可交数据拟合、预测,这是一种使用已标记,即带有数值连续特性特点标签的训练数据,训练机器学习回归模型,从而达到预测出未知标签的数据样本值的任务。 + + + true + + + + + + + Qt::Vertical + + + + + + + 回归 + + + buttonGroup + + + + + + + + + + + + + + + + + + + + + + + 聚类属于非监督学习算法,使用未知分类标签(通常也需要标签用以调试模型参数或评估模型训练精度)的训练数据训练机器学习聚类模型,从而达到推断应用场景中未知标签的数据,属于特定类别中的哪一类的机器学习任务。 + + + true + + + + + + + Qt::Vertical + + + + + + + 聚类 + + + buttonGroup + + + + + + + + + + + + 5 + + + 0 + + + 10 + + + 0 + + + 10 + + + + + 样本设置 + + + + 5 + + + 5 + + + 5 + + + 5 + + + 15 + + + + + 包含列标题 + + + true + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + 150 + 16777215 + + + + 训练-验证样本: + + + + + + + + + + + + + + + + + + 100 + 16777215 + + + + 样本文件类型: + + + + + + + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + true + + + + 150 + 16777215 + + + + 测试样本(可选): + + + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + 包含行标题 + + + true + + + + + + + 行优先 + + + true + + + + + + + 列优先 + + + + + + + + + + background-color:white + + + QFrame::StyledPanel + + + QFrame::Sunken + + + + 5 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + + + + + + + + 5 + + + 0 + + + 10 + + + 0 + + + 10 + + + + + + + + + 5 + + + 5 + + + 5 + + + 5 + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + 参数类型: + + + + + + + + 85 + 0 + + + + + 默认参数 + + + + + 调试参数 + + + + + 本地文件 + + + + + + + + 参数调试器: + + + + + + + + + + + + + + + 60 + 25 + + + + 学习器: + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + true + + + + + + + + + + + 85 + 0 + + + + -1 + + + + + + + false + + + + + + + + + + false + + + 参数文件: + + + + + + + false + + + + + + + + 格网搜索 + + + + + 随机搜索 + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + 5 + + + + + 基本参数: + + + + + + + 50 + + + true + + + false + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 参数名称 + + + + + 参数取值 + + + + + + + + + + + + 5 + + + 0 + + + 10 + + + 0 + + + 10 + + + + + 预训练模型信息 + + + + 5 + + + 5 + + + 5 + + + 5 + + + + + background:rgb(240,240,240) + + + QFrame::NoFrame + + + + + + + + + + + + 训练设置 + + + + 5 + + + 5 + + + 5 + + + 5 + + + + + + 100 + 16777215 + + + + + + + + 工作核心数: + + + + + + + + 100 + 16777215 + + + + 5 + + + + + + + 交叉验证(K): + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + 训练 + + + + + + + + + + 训练结果 + + + + 5 + + + 10 + + + 5 + + + 5 + + + + + + + + Qt::AlignCenter + + + + + + + false + + + 模型评估图表 + + + + + + + Qt::Horizontal + + + + + + + - + + + Qt::AlignCenter + + + + + + + 样本数 + + + Qt::AlignCenter + + + + + + + - + + + Qt::AlignCenter + + + + + + + false + + + 学习曲线图表 + + + + + + + - + + + Qt::AlignCenter + + + + + + + - + + + Qt::AlignCenter + + + + + + + 验证: + + + + + + + - + + + Qt::AlignCenter + + + + + + + + 70 + 16777215 + + + + 训练: + + + + + + + - + + + Qt::AlignCenter + + + + + + + 测试: + + + + + + + - + + + Qt::AlignCenter + + + + + + + + + + Qt::AlignCenter + + + + + + + - + + + Qt::AlignCenter + + + + + + + - + + + Qt::AlignCenter + + + + + + + Qt::Horizontal + + + + + + + + 16777215 + 125 + + + + background:rgb(240,240,240) + + + QFrame::NoFrame + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'SimSun'; font-size:9pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Null</p></body></html> + + + + + + + + + + + + + + 5 + + + 0 + + + 10 + + + 0 + + + 10 + + + + + 保存设置 + + + + + + + + 保存最优模型到本地文件的文件名 + + + true + + + + + + + + + + 保存模型训练数据、验证数据及测试数据结果到本地文件(Excel)的文件名: + + + true + + + + + + + + + + 保存模型训练数据结果到本地文件(Excel)中的工作表名称: + + + true + + + + + + + + + + true + + + 保存模型验证数据结果到本地文件(Excel)中的工作表名称: + + + false + + + + + + + true + + + + + + + true + + + 保存模型测试数据结果到本地文件(Excel)中的工作表名称: + + + false + + + + + + + true + + + + + + + + + Qt::Horizontal + + + + + + + + + 保存路径: + + + + + + + + + + + + + + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + 重置参数 + + + + + + + 保存结果 + + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + + + + + + + 5 + + + + + TextLabel + + + + + + + 选择本地样本文件后,点击“下一步”以继续操作! + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + false + + + 上一步 + + + + + + + 下一步 + + + + + + + 取消 + + + + + + + + + + + + + diff --git a/IntelligentUAVPathPlanningSimulationSystem/core/appUI/UIDesigner/StatisticalModelDialogDesigner.ui b/IntelligentUAVPathPlanningSimulationSystem/core/appUI/UIDesigner/StatisticalModelDialogDesigner.ui new file mode 100644 index 0000000..1748ac5 --- /dev/null +++ b/IntelligentUAVPathPlanningSimulationSystem/core/appUI/UIDesigner/StatisticalModelDialogDesigner.ui @@ -0,0 +1,696 @@ + + + Dialog + + + + 0 + 0 + 1061 + 634 + + + + Dialog + + + + 5 + + + 5 + + + 10 + + + 5 + + + 10 + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + 选择训练及评估模型所用的样本数据 + + + + + + + TextLabel + + + + + + + + Aharoni + 16 + 75 + true + + + + 选择样本 + + + + + + + + + 1 + + + + + 5 + + + 0 + + + 10 + + + 0 + + + 10 + + + + + 样本设置 + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + 训练-验证样本: + + + + + + + 列优先 + + + + + + + 行优先 + + + + + + + 包含列标题 + + + + + + + 包含行标题 + + + + + + + 样本文件类型: + + + + + + + + + + + + + + 测试样本(可选): + + + + + + + + + + + + + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + background-color:white + + + QFrame::StyledPanel + + + QFrame::Sunken + + + + 5 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + + + + + + + + 0 + + + 10 + + + 0 + + + 10 + + + 5 + + + + + 参数设置 + + + + + + + + + + + + 定义方程: + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + + + + + + + + + + + + + + + 45 + 16777215 + + + + 添加 + + + + + + + + + + + + + + + + + 模型信息 + + + + 5 + + + 0 + + + 5 + + + 0 + + + 0 + + + + + background:rgb(240,240,240) + + + QFrame::NoFrame + + + + + + + + + + 结果 + + + + + + MSE + + + + + + + - + + + + + + + - + + + + + + + - + + + + + + + - + + + + + + + - + + + + + + + - + + + + + + + R2 + + + + + + + 样本数 + + + + + + + 测试: + + + + + + + 训练: + + + + + + + Qt::Horizontal + + + + + + + 绘制模型评估图表 + + + + + + + 训练 + + + + + + + + + + + + 0 + + + 10 + + + 0 + + + 10 + + + + + + + + + + + + + 保存最优模型到本地xml文件: + + + + + + + + + + 保存模型训练、测试数据结果到本地Excel文件: + + + + + + + + + + 保存模型训练数据结果的Excel文件工作表: + + + + + + + + + + 保存模型测试数据结果的Excel文件工作表: + + + + + + + + + + + + Qt::Horizontal + + + + + + + + + 保存路径: + + + + + + + + + + + + + + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + 重置参数 + + + + + + + 保存结果 + + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + + + + + + + 15 + + + + + TextLabel + + + + + + + 选择本地样本文件后,点击“下一步”以继续操作! + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + 上一步 + + + + + + + 下一步 + + + + + + + 取消 + + + + + + + + + + diff --git a/IntelligentUAVPathPlanningSimulationSystem/core/appUI/UIDesigner/TensorCalculatorDialogDesigner.ui b/IntelligentUAVPathPlanningSimulationSystem/core/appUI/UIDesigner/TensorCalculatorDialogDesigner.ui new file mode 100644 index 0000000..4ea5fad --- /dev/null +++ b/IntelligentUAVPathPlanningSimulationSystem/core/appUI/UIDesigner/TensorCalculatorDialogDesigner.ui @@ -0,0 +1,1025 @@ + + + Dialog + + + + 0 + 0 + 1084 + 600 + + + + 张量计算器 + + + + 5 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 5 + + + 5 + + + 5 + + + 5 + + + 5 + + + 10 + + + + + false + + + 包含列标题 + + + true + + + + + + + false + + + 包含行标题 + + + true + + + + + + + 数据格式: + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + 50 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 输入张量 + + + + + 输出张量 + + + + + + + + 栅格数据 + + + true + + + + + + + 表格数据 + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + BSQ + + + + + BIL + + + + + BIP + + + + + + + + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + Qt::Vertical + + + + + + + 5 + + + 0 + + + 10 + + + 5 + + + 5 + + + + + 0 + + + 5 + + + + + + 40 + 16777215 + + + + abs + + + + + + + + 40 + 16777215 + + + + 9 + + + + + + + 有效变量: + + + + + + + + 40 + 16777215 + + + + % + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + 40 + 16777215 + + + + + + + + + + + + 40 + 16777215 + + + + 7 + + + + + + + + 40 + 16777215 + + + + 2 + + + + + + + + 40 + 16777215 + + + + == + + + + + + + + 40 + 16777215 + + + + not + + + + + + + + 40 + 16777215 + + + + 8 + + + + + + + + 40 + 16777215 + + + + >= + + + + + + + + 40 + 16777215 + + + + where + + + + + + + + + + + 40 + 16777215 + + + + != + + + + + + + + 40 + 16777215 + + + + > + + + + + + + + 40 + 16777215 + + + + / + + + + + + + + 40 + 16777215 + + + + < + + + + + + + NoData填充值: + + + + + + + + 40 + 16777215 + + + + 1 + + + + + + + + 40 + 16777215 + + + + 4 + + + + + + + + 40 + 16777215 + + + + or + + + + + + + + 16777215 + 16777215 + + + + 0 + + + + + + + + 40 + 16777215 + + + + + + + + + + + + 40 + 16777215 + + + + 5 + + + + + + + + 40 + 16777215 + + + + 3 + + + + + + + + 40 + 16777215 + + + + - + + + + + + + + 40 + 16777215 + + + + * + + + + + + + + 40 + 16777215 + + + + . + + + + + + + + 40 + 16777215 + + + + dot + + + + + + + + 40 + 16777215 + + + + 6 + + + + + + + background-color: rgba(240, 240, 240, 246); + + + + + + + + 40 + 16777215 + + + + <= + + + + + + + + 40 + 16777215 + + + + // + + + + + + + + 40 + 16777215 + + + + + + + + + + + + + 40 + 16777215 + + + + ** + + + + + + + + 40 + 16777215 + + + + and + + + + + + + 计算公式: + + + + + + + + + + + 40 + 16777215 + + + + = + + + + + + + + 40 + 16777215 + + + + tanh + + + + + + + + 40 + 16777215 + + + + cosh + + + + + + + + 40 + 16777215 + + + + sinh + + + + + + + + 40 + 16777215 + + + + tan + + + + + + + + 40 + 16777215 + + + + cos + + + + + + + + 40 + 16777215 + + + + sin + + + + + + + + 40 + 16777215 + + + + rint + + + + + + + + 40 + 16777215 + + + + floor + + + + + + + + 40 + 16777215 + + + + ceil + + + + + + + + 40 + 16777215 + + + + float + + + + + + + + 40 + 16777215 + + + + int + + + + + + + + 40 + 16777215 + + + + exp + + + + + + + + 40 + 16777215 + + + + log + + + + + + + + 40 + 16777215 + + + + power + + + + + + + + + Qt::Horizontal + + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + 确定 + + + + + + + 取消 + + + + + + + + + + + + diff --git a/IntelligentUAVPathPlanningSimulationSystem/core/appUI/UIDesigner/软件UI设计规范.txt b/IntelligentUAVPathPlanningSimulationSystem/core/appUI/UIDesigner/软件UI设计规范.txt new file mode 100644 index 0000000..86ee713 --- /dev/null +++ b/IntelligentUAVPathPlanningSimulationSystem/core/appUI/UIDesigner/软件UI设计规范.txt @@ -0,0 +1,31 @@ +QGroupBox + +layoutTopMargin:5 +layoutBottomMargin:5 + +layoutLeftMargin:10 +layoutRightMargin:10 + +layoutHorizontalSpacing:5 +layoutVerticalSpacing:10 + +HorizontalLayout>layoutStretch + +VerticalLayout>layoutStretch + +GridLayout>layoutRowStretchlayoutColumnStretch + + +background:#F5F5F5 +ؼĬϱɫbackground:rgb(240,240,240) +ɫοhttps://blog.csdn.net/zy_heu/article/details/78952173 + +buttonɫΪɫborder:1px solid rgba(0,0,0,0);background:1px solid rgba(0,0,0,0) + + +껮ʱbuttonɫhttps://zhidao.baidu.com/question/349973878.html + +loginButton->setStyleSheet(tr("QPushButton{background-color:white;}QPushButton:hover{background-color:cyan;}QPushButton:pressed{background-color:red;}")); +QbuttonsetStyleSheet࣬ĺʵƵťǰǰɫƵťɫºǺɫȻ뻻ºɫֱloginButton->setStyleSheet(tr("QPushButton{background-color:white;}QPushButton:hover{background-color:cyan;}"));С + + diff --git a/IntelligentUAVPathPlanningSimulationSystem/core/appUI/__pycache__/AppSettingDialog.cpython-37.pyc b/IntelligentUAVPathPlanningSimulationSystem/core/appUI/__pycache__/AppSettingDialog.cpython-37.pyc new file mode 100644 index 0000000..7d20e97 Binary files /dev/null and b/IntelligentUAVPathPlanningSimulationSystem/core/appUI/__pycache__/AppSettingDialog.cpython-37.pyc differ diff --git a/IntelligentUAVPathPlanningSimulationSystem/core/appUI/__pycache__/AppSettingDialogDesigner.cpython-37.pyc b/IntelligentUAVPathPlanningSimulationSystem/core/appUI/__pycache__/AppSettingDialogDesigner.cpython-37.pyc new file mode 100644 index 0000000..cbb8050 Binary files /dev/null and b/IntelligentUAVPathPlanningSimulationSystem/core/appUI/__pycache__/AppSettingDialogDesigner.cpython-37.pyc differ diff --git a/IntelligentUAVPathPlanningSimulationSystem/core/appUI/__pycache__/BandCalculatorDialog.cpython-37.pyc b/IntelligentUAVPathPlanningSimulationSystem/core/appUI/__pycache__/BandCalculatorDialog.cpython-37.pyc new file mode 100644 index 0000000..2253066 Binary files /dev/null and b/IntelligentUAVPathPlanningSimulationSystem/core/appUI/__pycache__/BandCalculatorDialog.cpython-37.pyc differ diff --git a/IntelligentUAVPathPlanningSimulationSystem/core/appUI/__pycache__/BandCalculatorDialogDesigner.cpython-37.pyc b/IntelligentUAVPathPlanningSimulationSystem/core/appUI/__pycache__/BandCalculatorDialogDesigner.cpython-37.pyc new file mode 100644 index 0000000..84ad996 Binary files /dev/null and b/IntelligentUAVPathPlanningSimulationSystem/core/appUI/__pycache__/BandCalculatorDialogDesigner.cpython-37.pyc differ diff --git a/IntelligentUAVPathPlanningSimulationSystem/core/appUI/__pycache__/BandSpliterDialog.cpython-37.pyc b/IntelligentUAVPathPlanningSimulationSystem/core/appUI/__pycache__/BandSpliterDialog.cpython-37.pyc new file mode 100644 index 0000000..32e6167 Binary files /dev/null and b/IntelligentUAVPathPlanningSimulationSystem/core/appUI/__pycache__/BandSpliterDialog.cpython-37.pyc differ diff --git a/IntelligentUAVPathPlanningSimulationSystem/core/appUI/__pycache__/BandSpliterDialogDesigner.cpython-37.pyc b/IntelligentUAVPathPlanningSimulationSystem/core/appUI/__pycache__/BandSpliterDialogDesigner.cpython-37.pyc new file mode 100644 index 0000000..2f4ad7c Binary files /dev/null and b/IntelligentUAVPathPlanningSimulationSystem/core/appUI/__pycache__/BandSpliterDialogDesigner.cpython-37.pyc differ diff --git a/IntelligentUAVPathPlanningSimulationSystem/core/appUI/__pycache__/ChartViewDialog.cpython-37.pyc b/IntelligentUAVPathPlanningSimulationSystem/core/appUI/__pycache__/ChartViewDialog.cpython-37.pyc new file mode 100644 index 0000000..efe0d1d Binary files /dev/null and b/IntelligentUAVPathPlanningSimulationSystem/core/appUI/__pycache__/ChartViewDialog.cpython-37.pyc differ diff --git a/IntelligentUAVPathPlanningSimulationSystem/core/appUI/__pycache__/ChartViewDialogDesigner.cpython-37.pyc b/IntelligentUAVPathPlanningSimulationSystem/core/appUI/__pycache__/ChartViewDialogDesigner.cpython-37.pyc new file mode 100644 index 0000000..9527edf Binary files /dev/null and b/IntelligentUAVPathPlanningSimulationSystem/core/appUI/__pycache__/ChartViewDialogDesigner.cpython-37.pyc differ diff --git a/IntelligentUAVPathPlanningSimulationSystem/core/appUI/__pycache__/DataScalerDialog.cpython-37.pyc b/IntelligentUAVPathPlanningSimulationSystem/core/appUI/__pycache__/DataScalerDialog.cpython-37.pyc new file mode 100644 index 0000000..7f5bd04 Binary files /dev/null and b/IntelligentUAVPathPlanningSimulationSystem/core/appUI/__pycache__/DataScalerDialog.cpython-37.pyc differ diff --git a/IntelligentUAVPathPlanningSimulationSystem/core/appUI/__pycache__/DataScalerDialogDesigner.cpython-37.pyc b/IntelligentUAVPathPlanningSimulationSystem/core/appUI/__pycache__/DataScalerDialogDesigner.cpython-37.pyc new file mode 100644 index 0000000..fd4602f Binary files /dev/null and b/IntelligentUAVPathPlanningSimulationSystem/core/appUI/__pycache__/DataScalerDialogDesigner.cpython-37.pyc differ diff --git a/IntelligentUAVPathPlanningSimulationSystem/core/appUI/__pycache__/EmpiricalStatisticalModelDialog.cpython-37.pyc b/IntelligentUAVPathPlanningSimulationSystem/core/appUI/__pycache__/EmpiricalStatisticalModelDialog.cpython-37.pyc new file mode 100644 index 0000000..c34beea Binary files /dev/null and b/IntelligentUAVPathPlanningSimulationSystem/core/appUI/__pycache__/EmpiricalStatisticalModelDialog.cpython-37.pyc differ diff --git a/IntelligentUAVPathPlanningSimulationSystem/core/appUI/__pycache__/EmpiricalStatisticalModelDialogDesigner.cpython-37.pyc b/IntelligentUAVPathPlanningSimulationSystem/core/appUI/__pycache__/EmpiricalStatisticalModelDialogDesigner.cpython-37.pyc new file mode 100644 index 0000000..bf6dade Binary files /dev/null and b/IntelligentUAVPathPlanningSimulationSystem/core/appUI/__pycache__/EmpiricalStatisticalModelDialogDesigner.cpython-37.pyc differ diff --git a/IntelligentUAVPathPlanningSimulationSystem/core/appUI/__pycache__/EstimatorApplicationDialog.cpython-37.pyc b/IntelligentUAVPathPlanningSimulationSystem/core/appUI/__pycache__/EstimatorApplicationDialog.cpython-37.pyc new file mode 100644 index 0000000..45c108b Binary files /dev/null and b/IntelligentUAVPathPlanningSimulationSystem/core/appUI/__pycache__/EstimatorApplicationDialog.cpython-37.pyc differ diff --git a/IntelligentUAVPathPlanningSimulationSystem/core/appUI/__pycache__/EstimatorApplicationDialogDesigner.cpython-37.pyc b/IntelligentUAVPathPlanningSimulationSystem/core/appUI/__pycache__/EstimatorApplicationDialogDesigner.cpython-37.pyc new file mode 100644 index 0000000..ebd1590 Binary files /dev/null and b/IntelligentUAVPathPlanningSimulationSystem/core/appUI/__pycache__/EstimatorApplicationDialogDesigner.cpython-37.pyc differ diff --git a/IntelligentUAVPathPlanningSimulationSystem/core/appUI/__pycache__/FeatureCreatorDialog.cpython-37.pyc b/IntelligentUAVPathPlanningSimulationSystem/core/appUI/__pycache__/FeatureCreatorDialog.cpython-37.pyc new file mode 100644 index 0000000..b5a67ea Binary files /dev/null and b/IntelligentUAVPathPlanningSimulationSystem/core/appUI/__pycache__/FeatureCreatorDialog.cpython-37.pyc differ diff --git a/IntelligentUAVPathPlanningSimulationSystem/core/appUI/__pycache__/FeatureCreatorDialogDesigner.cpython-37.pyc b/IntelligentUAVPathPlanningSimulationSystem/core/appUI/__pycache__/FeatureCreatorDialogDesigner.cpython-37.pyc new file mode 100644 index 0000000..c103fa7 Binary files /dev/null and b/IntelligentUAVPathPlanningSimulationSystem/core/appUI/__pycache__/FeatureCreatorDialogDesigner.cpython-37.pyc differ diff --git a/IntelligentUAVPathPlanningSimulationSystem/core/appUI/__pycache__/FeatureSelectorDialog.cpython-37.pyc b/IntelligentUAVPathPlanningSimulationSystem/core/appUI/__pycache__/FeatureSelectorDialog.cpython-37.pyc new file mode 100644 index 0000000..ec4923d Binary files /dev/null and b/IntelligentUAVPathPlanningSimulationSystem/core/appUI/__pycache__/FeatureSelectorDialog.cpython-37.pyc differ diff --git a/IntelligentUAVPathPlanningSimulationSystem/core/appUI/__pycache__/FeatureSelectorDialogDesigner.cpython-37.pyc b/IntelligentUAVPathPlanningSimulationSystem/core/appUI/__pycache__/FeatureSelectorDialogDesigner.cpython-37.pyc new file mode 100644 index 0000000..2904a1b Binary files /dev/null and b/IntelligentUAVPathPlanningSimulationSystem/core/appUI/__pycache__/FeatureSelectorDialogDesigner.cpython-37.pyc differ diff --git a/IntelligentUAVPathPlanningSimulationSystem/core/appUI/__pycache__/FormulaApplicationDialog.cpython-37.pyc b/IntelligentUAVPathPlanningSimulationSystem/core/appUI/__pycache__/FormulaApplicationDialog.cpython-37.pyc new file mode 100644 index 0000000..de66972 Binary files /dev/null and b/IntelligentUAVPathPlanningSimulationSystem/core/appUI/__pycache__/FormulaApplicationDialog.cpython-37.pyc differ diff --git a/IntelligentUAVPathPlanningSimulationSystem/core/appUI/__pycache__/FormulaApplicationDialogDesigner.cpython-37.pyc b/IntelligentUAVPathPlanningSimulationSystem/core/appUI/__pycache__/FormulaApplicationDialogDesigner.cpython-37.pyc new file mode 100644 index 0000000..21fd342 Binary files /dev/null and b/IntelligentUAVPathPlanningSimulationSystem/core/appUI/__pycache__/FormulaApplicationDialogDesigner.cpython-37.pyc differ diff --git a/IntelligentUAVPathPlanningSimulationSystem/core/appUI/__pycache__/GeoserverWMSPublisherDialog.cpython-37.pyc b/IntelligentUAVPathPlanningSimulationSystem/core/appUI/__pycache__/GeoserverWMSPublisherDialog.cpython-37.pyc new file mode 100644 index 0000000..027033f Binary files /dev/null and b/IntelligentUAVPathPlanningSimulationSystem/core/appUI/__pycache__/GeoserverWMSPublisherDialog.cpython-37.pyc differ diff --git a/IntelligentUAVPathPlanningSimulationSystem/core/appUI/__pycache__/GeoserverWMSPublisherDialogDesigner.cpython-37.pyc b/IntelligentUAVPathPlanningSimulationSystem/core/appUI/__pycache__/GeoserverWMSPublisherDialogDesigner.cpython-37.pyc new file mode 100644 index 0000000..43eb461 Binary files /dev/null and b/IntelligentUAVPathPlanningSimulationSystem/core/appUI/__pycache__/GeoserverWMSPublisherDialogDesigner.cpython-37.pyc differ diff --git a/IntelligentUAVPathPlanningSimulationSystem/core/appUI/__pycache__/ImageFusionSTARFMDialogDesigner.cpython-37.pyc b/IntelligentUAVPathPlanningSimulationSystem/core/appUI/__pycache__/ImageFusionSTARFMDialogDesigner.cpython-37.pyc new file mode 100644 index 0000000..99207e0 Binary files /dev/null and b/IntelligentUAVPathPlanningSimulationSystem/core/appUI/__pycache__/ImageFusionSTARFMDialogDesigner.cpython-37.pyc differ diff --git a/IntelligentUAVPathPlanningSimulationSystem/core/appUI/__pycache__/ImageMergeSTARFMDialog.cpython-37.pyc b/IntelligentUAVPathPlanningSimulationSystem/core/appUI/__pycache__/ImageMergeSTARFMDialog.cpython-37.pyc new file mode 100644 index 0000000..cad2727 Binary files /dev/null and b/IntelligentUAVPathPlanningSimulationSystem/core/appUI/__pycache__/ImageMergeSTARFMDialog.cpython-37.pyc differ diff --git a/IntelligentUAVPathPlanningSimulationSystem/core/appUI/__pycache__/InitResource.cpython-37.pyc b/IntelligentUAVPathPlanningSimulationSystem/core/appUI/__pycache__/InitResource.cpython-37.pyc new file mode 100644 index 0000000..309f44d Binary files /dev/null and b/IntelligentUAVPathPlanningSimulationSystem/core/appUI/__pycache__/InitResource.cpython-37.pyc differ diff --git a/IntelligentUAVPathPlanningSimulationSystem/core/appUI/__pycache__/MainWindow.cpython-37.pyc b/IntelligentUAVPathPlanningSimulationSystem/core/appUI/__pycache__/MainWindow.cpython-37.pyc new file mode 100644 index 0000000..79cee02 Binary files /dev/null and b/IntelligentUAVPathPlanningSimulationSystem/core/appUI/__pycache__/MainWindow.cpython-37.pyc differ diff --git a/IntelligentUAVPathPlanningSimulationSystem/core/appUI/__pycache__/MainWindowDesigner.cpython-37.pyc b/IntelligentUAVPathPlanningSimulationSystem/core/appUI/__pycache__/MainWindowDesigner.cpython-37.pyc new file mode 100644 index 0000000..c03beb9 Binary files /dev/null and b/IntelligentUAVPathPlanningSimulationSystem/core/appUI/__pycache__/MainWindowDesigner.cpython-37.pyc differ diff --git a/IntelligentUAVPathPlanningSimulationSystem/core/appUI/__pycache__/MySQLDatabaseManagementDialog.cpython-37.pyc b/IntelligentUAVPathPlanningSimulationSystem/core/appUI/__pycache__/MySQLDatabaseManagementDialog.cpython-37.pyc new file mode 100644 index 0000000..9f65a47 Binary files /dev/null and b/IntelligentUAVPathPlanningSimulationSystem/core/appUI/__pycache__/MySQLDatabaseManagementDialog.cpython-37.pyc differ diff --git a/IntelligentUAVPathPlanningSimulationSystem/core/appUI/__pycache__/MySQLDatabaseManagementDialogDesigner.cpython-37.pyc b/IntelligentUAVPathPlanningSimulationSystem/core/appUI/__pycache__/MySQLDatabaseManagementDialogDesigner.cpython-37.pyc new file mode 100644 index 0000000..010d723 Binary files /dev/null and b/IntelligentUAVPathPlanningSimulationSystem/core/appUI/__pycache__/MySQLDatabaseManagementDialogDesigner.cpython-37.pyc differ diff --git a/IntelligentUAVPathPlanningSimulationSystem/core/appUI/__pycache__/PixelValueExtractorDialog.cpython-37.pyc b/IntelligentUAVPathPlanningSimulationSystem/core/appUI/__pycache__/PixelValueExtractorDialog.cpython-37.pyc new file mode 100644 index 0000000..87389da Binary files /dev/null and b/IntelligentUAVPathPlanningSimulationSystem/core/appUI/__pycache__/PixelValueExtractorDialog.cpython-37.pyc differ diff --git a/IntelligentUAVPathPlanningSimulationSystem/core/appUI/__pycache__/PixelValueExtractorDialogDesigner.cpython-37.pyc b/IntelligentUAVPathPlanningSimulationSystem/core/appUI/__pycache__/PixelValueExtractorDialogDesigner.cpython-37.pyc new file mode 100644 index 0000000..d27a312 Binary files /dev/null and b/IntelligentUAVPathPlanningSimulationSystem/core/appUI/__pycache__/PixelValueExtractorDialogDesigner.cpython-37.pyc differ diff --git a/IntelligentUAVPathPlanningSimulationSystem/core/appUI/__pycache__/SampleMakerDialog.cpython-37.pyc b/IntelligentUAVPathPlanningSimulationSystem/core/appUI/__pycache__/SampleMakerDialog.cpython-37.pyc new file mode 100644 index 0000000..f3968e1 Binary files /dev/null and b/IntelligentUAVPathPlanningSimulationSystem/core/appUI/__pycache__/SampleMakerDialog.cpython-37.pyc differ diff --git a/IntelligentUAVPathPlanningSimulationSystem/core/appUI/__pycache__/SampleMakerDialogDesigner.cpython-37.pyc b/IntelligentUAVPathPlanningSimulationSystem/core/appUI/__pycache__/SampleMakerDialogDesigner.cpython-37.pyc new file mode 100644 index 0000000..c91b776 Binary files /dev/null and b/IntelligentUAVPathPlanningSimulationSystem/core/appUI/__pycache__/SampleMakerDialogDesigner.cpython-37.pyc differ diff --git a/IntelligentUAVPathPlanningSimulationSystem/core/appUI/__pycache__/ScikitLearnMLDialog.cpython-37.pyc b/IntelligentUAVPathPlanningSimulationSystem/core/appUI/__pycache__/ScikitLearnMLDialog.cpython-37.pyc new file mode 100644 index 0000000..bef3bfb Binary files /dev/null and b/IntelligentUAVPathPlanningSimulationSystem/core/appUI/__pycache__/ScikitLearnMLDialog.cpython-37.pyc differ diff --git a/IntelligentUAVPathPlanningSimulationSystem/core/appUI/__pycache__/ScikitLearnMLDialogDesigner.cpython-37.pyc b/IntelligentUAVPathPlanningSimulationSystem/core/appUI/__pycache__/ScikitLearnMLDialogDesigner.cpython-37.pyc new file mode 100644 index 0000000..64d23d7 Binary files /dev/null and b/IntelligentUAVPathPlanningSimulationSystem/core/appUI/__pycache__/ScikitLearnMLDialogDesigner.cpython-37.pyc differ diff --git a/IntelligentUAVPathPlanningSimulationSystem/core/clearRunCache.py b/IntelligentUAVPathPlanningSimulationSystem/core/clearRunCache.py new file mode 100644 index 0000000..fc9be78 --- /dev/null +++ b/IntelligentUAVPathPlanningSimulationSystem/core/clearRunCache.py @@ -0,0 +1,22 @@ +# -*- coding:utf-8 -*- + +import os +import shutil + + +def clearRunCache(app_dir): + for script_folder in os.listdir(app_dir): + script_dir = os.path.join(app_dir, script_folder) + if os.path.isdir(script_dir): + for file in os.listdir(script_dir): + if file == "__pycache__": + cache_dir = os.path.join(script_dir, file) + shutil.rmtree(cache_dir) + +def main(): + working_dir = os.path.join(os.getcwd(), "core") + clearRunCache(working_dir) + +if __name__ == "__main__": + # + main() diff --git a/IntelligentUAVPathPlanningSimulationSystem/core/main.py b/IntelligentUAVPathPlanningSimulationSystem/core/main.py new file mode 100644 index 0000000..9af808c --- /dev/null +++ b/IntelligentUAVPathPlanningSimulationSystem/core/main.py @@ -0,0 +1,13 @@ +# -*- coding:utf-8 -*- + +import os +import sys + +sys.path.append(os.path.dirname(os.path.abspath(__file__))) + +from appUI.MainWindow import main + + +if __name__ == "__main__": + # + main() diff --git a/IntelligentUAVPathPlanningSimulationSystem/core/resource/data/setting.ini b/IntelligentUAVPathPlanningSimulationSystem/core/resource/data/setting.ini new file mode 100644 index 0000000..83d3720 --- /dev/null +++ b/IntelligentUAVPathPlanningSimulationSystem/core/resource/data/setting.ini @@ -0,0 +1,8 @@ +[General] +lastFileDir=C:\\Users\\Lenovo +curlBinDir=D:\\new\\\x5168\x519b\x5e94\x7528\x8f6f\x4ef6\x521b\x5ba2\x5927\x8d5b\\iPyGIRS\\core\\bin\\curl-7.65.3-win64-mingw\\bin +sklearnParamsFilepath=C:\\cygwin64\\home\\Lenovo\\\x667a\x80fd\x65e0\x4eba\x673a\x8def\x5f84\x89c4\x5212\x4eff\x771f\x7cfb\x7edf\\core\\resource\\data\\sklearn_params.json +mySQLHost=localhost +mySQLPort=3306 +geoserverHost=localhost +geoserverPort=8090 diff --git a/IntelligentUAVPathPlanningSimulationSystem/core/resource/data/sklearn_params.json b/IntelligentUAVPathPlanningSimulationSystem/core/resource/data/sklearn_params.json new file mode 100644 index 0000000..7b2d629 --- /dev/null +++ b/IntelligentUAVPathPlanningSimulationSystem/core/resource/data/sklearn_params.json @@ -0,0 +1,1092 @@ +{ + "description":"", + + "ClassificationEstimator":{ + "逻辑回归": "LogisticRegression", + "支持向量分类": "SVC", + "多层感知器分类": "MLPClassifier", + "决策树分类": "DecisionTreeClassifier", + "随机森林分类": "RandomForestClassifier", + "梯度提升树分类": "GradientBoostingClassifier" + }, + + "ClusterEstimator":{ + "K-Means聚类": "KMeans" + }, + + "RegressionEstimator":{ + "线性回归":"LinearRegression", + "岭回归": "Ridge", + "套索回归": "Lasso", + "支持向量回归": "SVR", + "多层感知器回归": "MLPRegressor", + "决策树回归": "DecisionTreeRegressor", + "随机森林回归": "RandomForestRegressor", + "梯度提升树回归": "GradientBoostingRegressor" + }, + + "LogisticRegression":{ + "name":"逻辑回归", + "parameters":{ + "default parameters":{ + "description":"full", + "penalty":{ + "name":"正则化", + "value":"l2", + "type":["string"] + }, + "C":{ + "name":"正则化强度", + "value":1.0, + "type":["float", "list"] + }, + "solver":{ + "name":"优化算法", + "value":"liblinear", + "type":["string"] + }, + "max_iter":{ + "name":"迭代次数", + "value":100, + "type":["int"] + }, + "multi_class":{ + "name":"多分类方式", + "value":"ovr", + "type":["string"] + } + }, + "tuning parameters":{ + "description":"full", + "penalty":{ + "name":"正则化", + "value":["l1", "l2", "elasticnet", "none"], + "type":["string"] + }, + "C":{ + "name":"正则化强度", + "value":[1.0, 2.0, 10.0], + "type":["float", "list"] + }, + "solver":{ + "name":"优化算法", + "value":["liblinear"], + "type":["string"] + }, + "max_iter":{ + "name":"迭代次数", + "value":[50, 100, 500], + "type":["int"] + }, + "multi_class":{ + "name":"多分类方式", + "value":["ovr", "multinomial", "auto"], + "type":["string"] + } + } + } + }, + + "SVC":{ + "name":"支持向量分类", + "parameters":{ + "default parameters":{ + "description":"full", + "kernel":{ + "name":"核函数", + "value":"rbf", + "type":["string"] + }, + "degree":{ + "name":"核函数阶数", + "value":3, + "type":["int"] + }, + "gamma":{ + "name":"核函数系数", + "value":"auto", + "type":["string"] + }, + "coef0":{ + "name":"核函数常数项", + "value":0.0, + "type":["float"] + }, + "tol":{ + "name":"容忍停止标准", + "value":1e-3, + "type":["float"] + }, + "C":{ + "name":"误差项惩罚系数", + "value":1.0, + "type":["int"] + }, + "max_iter":{ + "name":"迭代次数", + "value":-1, + "type":["int"] + } + }, + "tuning parameters":{ + "description":"full", + "kernel":{ + "name":"核函数", + "value":["linear", "poly", "rbf", "sigmoid"], + "type":["string"] + }, + "degree":{ + "name":"核函数阶数", + "value":[3, 7, 10], + "type":["int"] + }, + "gamma":{ + "name":"核函数系数", + "value":["scale", "auto"], + "type":["string"] + }, + "coef0":{ + "name":"核函数常数项", + "value":[0.0, 0.05, 0.1, 0.9], + "type":["float"] + }, + "tol":{ + "name":"容忍停止标准", + "value":[1e-3, 1e-2], + "type":["float"] + }, + "C":{ + "name":"误差项惩罚系数", + "value":[1.0, 2.0, 10.0], + "type":["int"] + }, + "max_iter":{ + "name":"迭代次数", + "value":[-1], + "type":["int"] + } + } + } + }, + + "MLPClassifier":{ + "name":"多层感知器分类", + "parameters":{ + "default parameters":{ + "description":"full", + "hidden_layer_sizes":{ + "name":"网络结构", + "value":100, + "type":["tuple"] + }, + "activation":{ + "name":"激活函数", + "value":"relu", + "type":["string"] + }, + "solver":{ + "name":"优化算法", + "value":"adam", + "type":["string"] + }, + "alpha":{ + "name":"L2惩罚项系数", + "value":1e-4, + "type":["float"] + }, + "batch_size":{ + "name":"批次大小", + "value":["auto"], + "type":["int", "string"] + }, + "max_iter":{ + "name":"最大迭代次数", + "value":200, + "type":["double"] + }, + "learning_rate_init":{ + "name":"初始学习率", + "value":0.001, + "type":["double"] + } + }, + "tuning parameters":{ + "description":"full", + "hidden_layer_sizes":{ + "name":"网络结构", + "value":[100, 10], + "type":["tuple"] + }, + "activation":{ + "name":"激活函数", + "value":["identity", "logistic", "tanh", "relu"], + "type":["string"] + }, + "solver":{ + "name":"优化算法", + "value":["lbfgs", "sgd"], + "type":["string"] + }, + "alpha":{ + "name":"L2惩罚项系数", + "value":[1e-4, 5e-3], + "type":["float"] + }, + "batch_size":{ + "name":"批次大小", + "value":["auto"], + "type":["int", "string"] + }, + "max_iter":{ + "name":"最大迭代次数", + "value":[5, 20, 50, 100], + "type":["double"] + }, + "learning_rate_init":{ + "name":"初始学习率", + "value":[0.001, 0.0001], + "type":["double"] + } + } + } + }, + + "DecisionTreeClassifier":{ + "name":"决策树分类", + "parameters":{ + "default parameters":{ + "description":"full", + "criterion":{ + "name":"节点分裂放方式", + "value":"gini", + "type":["string"] + }, + "splitter":{ + "name":"分裂节点选择策略", + "value":"best", + "type":["string"] + }, + "max_depth":{ + "name":"最大深度", + "value":"None", + "type":["int", "None"] + }, + "max_features":{ + "name":"节点分裂最大特征数", + "value":"None", + "type":["string"] + }, + "min_samples_split":{ + "name":"节点分裂最小样本数", + "value":2, + "type":["int", "float"] + }, + "min_samples_leaf":{ + "name":"叶子节点最小样本数", + "value":1, + "type":["int", "float"] + } + }, + "tuning parameters":{ + "description":"full", + "criterion":{ + "name":"节点分裂放方式", + "value":["gini", "entropy"], + "type":["string"] + }, + "splitter":{ + "name":"分裂节点选择策略", + "value":["best", "random"], + "type":["string"] + }, + "max_depth":{ + "name":"最大深度", + "value":["None", 2, 3, 50, 100, 500], + "type":["int", "None"] + }, + "max_features":{ + "name":"节点分裂最大特征数", + "value":["None"], + "type":["double"] + }, + "min_samples_split":{ + "name":"节点分裂最小样本数", + "value":[2, 5, 10], + "type":["int", "float"] + }, + "min_samples_leaf":{ + "name":"叶子节点最小样本数", + "value":[1, 5, 10], + "type":["int", "float"] + } + } + } + }, + + "RandomForestClassifier":{ + "name":"随机森林分类", + "parameters":{ + "default parameters":{ + "description":"full", + "n_estimators ":{ + "name":"决策树数目", + "value":100, + "type":["int"] + }, + "max_depth":{ + "name":"最大深度", + "value":"None", + "type":["int", "None"] + }, + "criterion":{ + "name":"叶节点分裂规则", + "value":"gini", + "type":["string"] + }, + "max_features":{ + "name":"节点分裂最大特征数", + "value":"auto", + "type":["string", "int"] + }, + "min_samples_split":{ + "name":"节点分裂最小样本数", + "value":2, + "type":["int"] + }, + "min_samples_leaf":{ + "name":"叶子节点最小样本数", + "value":1, + "type":["int"] + }, + "bootstrap":{ + "name":"自助重采样", + "value":"True", + "type":["bool"] + }, + "oob_score":{ + "name":"计算袋外得分", + "value":"False", + "type":["bool"] + } + }, + "tuning parameters":{ + "description":"full", + "n_estimators":{ + "name":"决策树数目", + "value":[5, 50, 100, 500], + "type":["int"] + }, + "max_depth":{ + "name":"最大深度", + "value":["None", 2, 3, 50, 100, 500], + "type":["int", "None"] + }, + "criterion":{ + "name":"叶节点分裂规则", + "value":["gini", "entropy"], + "type":["string"] + }, + "max_features":{ + "name":"节点分裂最大特征数", + "value":["None"], + "type":["double"] + }, + "min_samples_split":{ + "name":"节点分裂最小样本数", + "value":[2, 5, 10], + "type":["int", "float"] + }, + "min_samples_leaf":{ + "name":"叶子节点最小样本数", + "value":[1, 5, 10], + "type":["int", "float"] + } + } + } + }, + + "GradientBoostingClassifier":{ + "name":"梯度提升树分类", + "parameters":{ + "default parameters":{ + "description":"full", + "n_estimators ":{ + "name":"提升树数目", + "value":100, + "type":["int"] + }, + "loss":{ + "name":"损失函数", + "value":"deviance", + "type":["string"] + }, + "learning_rate":{ + "name":"学习率", + "value":0.1, + "type":["float"] + }, + "max_depth":{ + "name":"最大深度", + "value":3, + "type":["int"] + }, + "criterion":{ + "name":"叶节点分裂规则", + "value":"friedman_mse", + "type":["string"] + }, + "max_features":{ + "name":"节点分裂最大特征数", + "value":"None", + "type":["double"] + }, + "min_samples_split":{ + "name":"节点分裂最小样本数", + "value":2, + "type":["int", "float"] + }, + "min_samples_leaf":{ + "name":"叶子节点最小样本数", + "value":1, + "type":["int"] + }, + "tol":{ + "name":"误差下限", + "value":1e-4, + "type":["float"] + } + }, + "tuning parameters":{ + "description":"full", + "n_estimators":{ + "name":"提升树数目", + "value":[5, 50, 100, 500], + "type":["int"] + }, + "loss":{ + "name":"损失函数", + "value":["deviance"], + "type":["string"] + }, + "learning_rate":{ + "name":"学习率", + "value":[0.1, 0.005, 0.0001], + "type":["float"] + }, + "max_depth":{ + "name":"最大深度", + "value":["None", 2, 3, 50, 100], + "type":["int"] + }, + "criterion":{ + "name":"叶节点分裂规则", + "value":["mse", "friedman_mse"], + "type":["string"] + }, + "max_features":{ + "name":"节点分裂最大特征数", + "value":["None"], + "type":["double"] + }, + "min_samples_split":{ + "name":"节点分裂最小样本数", + "value":[2, 5, 10], + "type":["int", "float"] + }, + "min_samples_leaf":{ + "name":"叶子节点最小样本数", + "value":[1, 5, 10], + "type":["int", "float"] + }, + "tol":{ + "name":"误差下限", + "value":[1e-4, 1e-3], + "type":["float"] + } + } + } + }, + + "KMeans":{ + "name":"K-Means聚类", + "parameters":{ + "default parameters":{ + "description":"full", + "n_clusters":{ + "name":"聚类数", + "value":8, + "type":["int"] + }, + "init":{ + "name":"参数初始化算法", + "value":"k-means++", + "type":["string"] + }, + "n_init":{ + "name":"质心初始化次数", + "value":10, + "type":["float"] + }, + "max_iter":{ + "name":"迭代次数", + "value":300, + "type":["int"] + }, + "algorithm":{ + "name":"k-Means算法", + "value":"auto", + "type":["double"] + }, + "tol":{ + "name":"误差下限", + "value":1e-4, + "type":["float"] + } + }, + "tuning parameters":{ + "description":"full", + "init":{ + "name":"参数初始化算法", + "value":["k-means++"], + "type":["string"] + }, + "n_init":{ + "name":"质心初始化次数", + "value":[3, 10, 20, 50], + "type":["float"] + }, + "max_iter":{ + "name":"迭代次数", + "value":[100, 300, 500, 1000], + "type":["int"] + }, + "algorithm":{ + "name":"k-Means算法", + "value":["auto", "full", "elkan"], + "type":["double"] + }, + "tol":{ + "name":"误差下限", + "value":[1e-4, 1e-3, 1e-2], + "type":["float"] + } + } + } + }, + + "LinearRegression":{ + "name":"线性回归", + "parameters":{ + "default parameters":{ + "description":"null" + }, + "tuning parameters":{ + "description":"null" + } + } + }, + + "Ridge":{ + "name":"岭回归", + "parameters":{ + "default parameters":{ + "description":"full", + "alpha":{ + "name":"正则化强度", + "value":1.0, + "type":["float", "list"] + }, + "max_iter":{ + "name":"最大迭代次数", + "value":"None", + "type":["None", "int"] + } + }, + "tuning parameters":{ + "description":"full", + "alpha":{ + "name":"正则化强度", + "value":[1.0, 2.0, 5.0], + "type":["float", "list"] + }, + "max_iter":{ + "name":"最大迭代次数", + "value":[10, 50, 100, 500, 1000], + "type":["None","int"] + } + } + } + }, + + "Lasso":{ + "name":"套索回归", + "parameters":{ + "default parameters":{ + "description":"full", + "alpha":{ + "name":"正则化强度", + "value":1.0, + "type":["float", "list"] + }, + "max_iter":{ + "name":"最大迭代次数", + "value":"None", + "type":["None", "int"] + }, + "tol":{ + "name":"优化下限", + "value":1e-4, + "type":["float"] + } + }, + "tuning parameters":{ + "description":"full", + "alpha":{ + "name":"正则化强度", + "value":[1.0, 2.0, 5.0, 10.0], + "type":["float", "list"] + }, + "max_iter":{ + "name":"最大迭代次数", + "value":[10, 50, 100, 200, 500, 1000], + "type":["None", "int"] + }, + "tol":{ + "name":"优化下限", + "value":[1e-4, 5e-3, 1e-3, 5e-2, 1e-2], + "type":["float"] + } + } + } + }, + + "SVR":{ + "name":"支持向量回归", + "parameters":{ + "default parameters":{ + "description":"full", + "kernel":{ + "name":"核函数", + "value":"rbf", + "type":["string"] + }, + "degree":{ + "name":"核函数阶数", + "value":3, + "type":["int"] + }, + "gamma":{ + "name":"核函数系数", + "value":"auto", + "type":["string"] + }, + "coef0":{ + "name":"核函数常数项", + "value":0.0, + "type":["float"] + }, + "tol":{ + "name":"容忍停止标准", + "value":1e-3, + "type":["float"] + }, + "C":{ + "name":"误差项惩罚系数", + "value":1.0, + "type":["int"] + }, + "epsilon":{ + "name":"epsilon", + "value":0.1, + "type":["float"] + }, + "max_iter":{ + "name":"迭代次数", + "value":-1, + "type":["int"] + } + }, + "tuning parameters":{ + "description":"full", + "kernel":{ + "name":"核函数", + "value":["linear", "poly", "rbf", "sigmoid"], + "type":["string"] + }, + "degree":{ + "name":"核函数阶数", + "value":[3, 7, 10], + "type":["int"] + }, + "gamma":{ + "name":"核函数系数", + "value":["scale", "auto"], + "type":["string"] + }, + "coef0":{ + "name":"核函数常数项", + "value":[0.0, 0.05, 0.1, 0.9], + "type":["float"] + }, + "tol":{ + "name":"容忍停止标准", + "value":[1e-3, 1e-2], + "type":["float"] + }, + "C":{ + "name":"误差项惩罚系数", + "value":[1.0, 2.0, 10.0], + "type":["int"] + }, + "epsilon":{ + "name":"epsilon", + "value":[0.1, 0.2, 0.8], + "type":["float"] + }, + "max_iter":{ + "name":"迭代次数", + "value":[-1], + "type":["int"] + } + } + } + }, + + "MLPRegressor":{ + "name":"多层感知器回归", + "parameters":{ + "default parameters":{ + "description":"full", + "hidden_layer_sizes":{ + "name":"网络结构", + "value":100, + "type":["tuple"] + }, + "activation":{ + "name":"激活函数", + "value":"relu", + "type":["string"] + }, + "solver":{ + "name":"优化算法", + "value":"adam", + "type":["string"] + }, + "alpha":{ + "name":"L2惩罚项系数", + "value":1e-4, + "type":["float"] + }, + "batch_size":{ + "name":"批次大小", + "value":"auto", + "type":["int", "string"] + }, + "max_iter":{ + "name":"最大迭代次数", + "value":200, + "type":["double"] + }, + "learning_rate_init":{ + "name":"初始学习率", + "value":0.001, + "type":["double"] + } + }, + "tuning parameters":{ + "description":"full", + "hidden_layer_sizes":{ + "name":"网络结构", + "value":[[3],[5],[5,5],[10, 10],[15,15],[100,100]], + "type":["tuple"] + }, + "activation":{ + "name":"激活函数", + "value":["logistic", "tanh", "relu"], + "type":["string"] + }, + "solver":{ + "name":"优化算法", + "value":["lbfgs", "sgd"], + "type":["string"] + }, + "alpha":{ + "name":"L2惩罚项系数", + "value":[1e-3, 3e-3, 5e-3, 7e-3, 8e-3], + "type":["float"] + }, + "batch_size":{ + "name":"批次大小", + "value":["auto"], + "type":["int", "string"] + }, + "max_iter":{ + "name":"最大迭代次数", + "value":[-1], + "type":["double"] + }, + "learning_rate_init":{ + "name":"初始学习率", + "value":[0.01, 0.001, 0.0001], + "type":["double"] + } + } + } + }, + + "DecisionTreeRegressor":{ + "name":"决策树回归", + "parameters":{ + "default parameters":{ + "description":"full", + "criterion":{ + "name":"节点分裂放方式", + "value":"mse", + "type":["string"] + }, + "splitter":{ + "name":"分裂节点选择策略", + "value":"best", + "type":["string"] + }, + "max_depth":{ + "name":"最大深度", + "value":"None", + "type":["int", "None"] + }, + "max_features":{ + "name":"节点分裂最大特征数", + "value":"None", + "type":["double"] + }, + "min_samples_split":{ + "name":"节点分裂最小样本数", + "value":2, + "type":["int", "float"] + }, + "min_samples_leaf":{ + "name":"叶子节点最小样本数", + "value":1, + "type":["int", "float"] + } + }, + "tuning parameters":{ + "description":"full", + "criterion":{ + "name":"节点分裂放方式", + "value":["mse", "friedman_mse", "mae"], + "type":["string"] + }, + "splitter":{ + "name":"分裂节点选择策略", + "value":["best", "random"], + "type":["string"] + }, + "max_depth":{ + "name":"最大深度", + "value":["None", 2, 3, 50, 100, 500], + "type":["int", "None"] + }, + "max_features":{ + "name":"节点分裂最大特征数", + "value":["None"], + "type":["double"] + }, + "min_samples_split":{ + "name":"节点分裂最小样本数", + "value":[2, 5, 10], + "type":["int", "float"] + }, + "min_samples_leaf":{ + "name":"叶子节点最小样本数", + "value":[1, 5, 10], + "type":["int", "float"] + } + } + } + }, + + "RandomForestRegressor":{ + "name":"随机森林回归", + "parameters":{ + "default parameters":{ + "description":"full", + "n_estimators ":{ + "name":"决策树数目", + "value":100, + "type":["int"] + }, + "max_depth":{ + "name":"最大深度", + "value":"None", + "type":["int", "None"] + }, + "criterion":{ + "name":"叶节点分裂规则", + "value":"mse", + "type":["string"] + }, + "max_features":{ + "name":"节点分裂最大特征数", + "value":"auto", + "type":["string", "int"] + }, + "min_samples_split":{ + "name":"节点分裂最小样本数", + "value":2, + "type":["int"] + }, + "min_samples_leaf":{ + "name":"叶子节点最小样本数", + "value":1, + "type":["int"] + }, + "bootstrap":{ + "name":"自助重采样", + "value":"True", + "type":["bool"] + }, + "oob_score":{ + "name":"计算袋外得分", + "value":"False", + "type":["bool"] + } + }, + "tuning parameters":{ + "description":"full", + "n_estimators":{ + "name":"决策树数目", + "value":[50, 100, 500, 1000, 2000], + "type":["int"] + }, + "max_depth":{ + "name":"最大深度", + "value":["None"], + "type":["int", "None"] + }, + "criterion":{ + "name":"叶节点分裂规则", + "value":["mse"], + "type":["string"] + }, + "max_features":{ + "name":"节点分裂最大特征数", + "value":["None"], + "type":["double"] + }, + "min_samples_split":{ + "name":"节点分裂最小样本数", + "value":[2], + "type":["int", "float"] + }, + "min_samples_leaf":{ + "name":"叶子节点最小样本数", + "value":[1], + "type":["int", "float"] + } + } + } + }, + + "GradientBoostingRegressor":{ + "name":"梯度提升树回归", + "parameters":{ + "default parameters":{ + "description":"full", + "n_estimators ":{ + "name":"提升树数目", + "value":100, + "type":["int"] + }, + "loss":{ + "name":"损失函数", + "value":"ls", + "type":["string"] + }, + "learning_rate":{ + "name":"学习率", + "value":0.1, + "type":["float"] + }, + "max_depth":{ + "name":"最大深度", + "value":3, + "type":["int"] + }, + "criterion":{ + "name":"叶节点分裂规则", + "value":"friedman_mse", + "type":["string"] + }, + "max_features":{ + "name":"节点分裂最大特征数", + "value":"None", + "type":["double"] + }, + "min_samples_split":{ + "name":"节点分裂最小样本数", + "value":2, + "type":["int", "float"] + }, + "min_samples_leaf":{ + "name":"叶子节点最小样本数", + "value":1, + "type":["int"] + }, + "tol":{ + "name":"误差下限", + "value":1e-4, + "type":["float"] + } + }, + "tuning parameters":{ + "description":"full", + "n_estimators":{ + "name":"提升树数目", + "value":[5, 50, 100, 500], + "type":["int"] + }, + "loss":{ + "name":"损失函数", + "value":["ls", "lad"], + "type":["string"] + }, + "learning_rate":{ + "name":"学习率", + "value":[0.1, 0.005, 0.0001], + "type":["float"] + }, + "max_depth":{ + "name":"最大深度", + "value":["None", 2, 3, 50, 100], + "type":["int"] + }, + "criterion":{ + "name":"叶节点分裂规则", + "value":["mse", "friedman_mse"], + "type":["string"] + }, + "max_features":{ + "name":"节点分裂最大特征数", + "value":["None"], + "type":["double"] + }, + "min_samples_split":{ + "name":"节点分裂最小样本数", + "value":[2, 5, 10], + "type":["int", "float"] + }, + "min_samples_leaf":{ + "name":"叶子节点最小样本数", + "value":[1, 5, 10], + "type":["int", "float"] + }, + "tol":{ + "name":"误差下限", + "value":[1e-4, 1e-3], + "type":["float"] + } + } + } + } +} \ No newline at end of file diff --git a/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/1.ico b/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/1.ico new file mode 100644 index 0000000..88e7c50 Binary files /dev/null and b/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/1.ico differ diff --git a/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/10.ico b/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/10.ico new file mode 100644 index 0000000..abf6537 Binary files /dev/null and b/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/10.ico differ diff --git a/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/2.ico b/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/2.ico new file mode 100644 index 0000000..194d624 Binary files /dev/null and b/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/2.ico differ diff --git a/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/3.ico b/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/3.ico new file mode 100644 index 0000000..b2e8e43 Binary files /dev/null and b/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/3.ico differ diff --git a/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/4.ico b/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/4.ico new file mode 100644 index 0000000..5d79930 Binary files /dev/null and b/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/4.ico differ diff --git a/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/5.ico b/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/5.ico new file mode 100644 index 0000000..9fb4737 Binary files /dev/null and b/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/5.ico differ diff --git a/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/6.ico b/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/6.ico new file mode 100644 index 0000000..22c2762 Binary files /dev/null and b/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/6.ico differ diff --git a/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/7.ico b/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/7.ico new file mode 100644 index 0000000..f067498 Binary files /dev/null and b/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/7.ico differ diff --git a/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/9.ico b/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/9.ico new file mode 100644 index 0000000..950de16 Binary files /dev/null and b/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/9.ico differ diff --git a/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/Cygwin-Terminal.ico b/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/Cygwin-Terminal.ico new file mode 100644 index 0000000..8690d54 Binary files /dev/null and b/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/Cygwin-Terminal.ico differ diff --git a/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/add.ico b/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/add.ico new file mode 100644 index 0000000..6210754 Binary files /dev/null and b/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/add.ico differ diff --git a/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/appLogo.ico b/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/appLogo.ico new file mode 100644 index 0000000..760cf1c Binary files /dev/null and b/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/appLogo.ico differ diff --git a/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/checkError.ico b/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/checkError.ico new file mode 100644 index 0000000..7a6159d Binary files /dev/null and b/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/checkError.ico differ diff --git a/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/classifier_icon.png b/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/classifier_icon.png new file mode 100644 index 0000000..e7718de Binary files /dev/null and b/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/classifier_icon.png differ diff --git a/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/clear_file.ico b/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/clear_file.ico new file mode 100644 index 0000000..073fd15 Binary files /dev/null and b/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/clear_file.ico differ diff --git a/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/closeAllFileToolBar.ico b/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/closeAllFileToolBar.ico new file mode 100644 index 0000000..6d93dd9 Binary files /dev/null and b/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/closeAllFileToolBar.ico differ diff --git a/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/closeFileToolBar.ico b/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/closeFileToolBar.ico new file mode 100644 index 0000000..a6dc2bf Binary files /dev/null and b/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/closeFileToolBar.ico differ diff --git a/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/clusterer_icon.png b/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/clusterer_icon.png new file mode 100644 index 0000000..719f15c Binary files /dev/null and b/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/clusterer_icon.png differ diff --git a/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/dataViewToolBar.ico b/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/dataViewToolBar.ico new file mode 100644 index 0000000..11620c2 Binary files /dev/null and b/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/dataViewToolBar.ico differ diff --git a/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/default.ico b/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/default.ico new file mode 100644 index 0000000..99b04d6 Binary files /dev/null and b/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/default.ico differ diff --git a/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/del_file.ico b/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/del_file.ico new file mode 100644 index 0000000..9511f66 Binary files /dev/null and b/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/del_file.ico differ diff --git a/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/export_data.ico b/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/export_data.ico new file mode 100644 index 0000000..192ccd9 Binary files /dev/null and b/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/export_data.ico differ diff --git a/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/finish_tip1.ico b/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/finish_tip1.ico new file mode 100644 index 0000000..393c29f Binary files /dev/null and b/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/finish_tip1.ico differ diff --git a/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/finish_tip2.ico b/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/finish_tip2.ico new file mode 100644 index 0000000..dc06aad Binary files /dev/null and b/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/finish_tip2.ico differ diff --git a/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/fit_model.gif b/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/fit_model.gif new file mode 100644 index 0000000..5d7e80a Binary files /dev/null and b/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/fit_model.gif differ diff --git a/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/import_data.ico b/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/import_data.ico new file mode 100644 index 0000000..67ab5f9 Binary files /dev/null and b/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/import_data.ico differ diff --git a/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/info_tip.ico b/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/info_tip.ico new file mode 100644 index 0000000..cc18097 Binary files /dev/null and b/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/info_tip.ico differ diff --git a/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/info_tip.png b/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/info_tip.png new file mode 100644 index 0000000..d810037 Binary files /dev/null and b/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/info_tip.png differ diff --git a/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/load_table.ico b/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/load_table.ico new file mode 100644 index 0000000..ae5503f Binary files /dev/null and b/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/load_table.ico differ diff --git a/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/move_down.ico b/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/move_down.ico new file mode 100644 index 0000000..6e83120 Binary files /dev/null and b/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/move_down.ico differ diff --git a/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/move_up.ico b/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/move_up.ico new file mode 100644 index 0000000..5e6ffd2 Binary files /dev/null and b/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/move_up.ico differ diff --git a/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/next_step.ico b/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/next_step.ico new file mode 100644 index 0000000..cde49a9 Binary files /dev/null and b/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/next_step.ico differ diff --git a/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/openFileToolBar.ico b/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/openFileToolBar.ico new file mode 100644 index 0000000..94535f4 Binary files /dev/null and b/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/openFileToolBar.ico differ diff --git a/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/open_file.ico b/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/open_file.ico new file mode 100644 index 0000000..94535f4 Binary files /dev/null and b/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/open_file.ico differ diff --git a/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/open_file.png b/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/open_file.png new file mode 100644 index 0000000..0ffcc9d Binary files /dev/null and b/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/open_file.png differ diff --git a/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/operation_cancel.ico b/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/operation_cancel.ico new file mode 100644 index 0000000..e93e125 Binary files /dev/null and b/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/operation_cancel.ico differ diff --git a/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/optimize_model.ico b/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/optimize_model.ico new file mode 100644 index 0000000..6d83601 Binary files /dev/null and b/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/optimize_model.ico differ diff --git a/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/previous_step.ico b/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/previous_step.ico new file mode 100644 index 0000000..fbf23ea Binary files /dev/null and b/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/previous_step.ico differ diff --git a/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/rasterFile_FileListTreeWidget.ico b/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/rasterFile_FileListTreeWidget.ico new file mode 100644 index 0000000..1dc9ec6 Binary files /dev/null and b/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/rasterFile_FileListTreeWidget.ico differ diff --git a/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/regressor_icon.png b/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/regressor_icon.png new file mode 100644 index 0000000..a22fc29 Binary files /dev/null and b/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/regressor_icon.png differ diff --git a/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/reset_parameter.ico b/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/reset_parameter.ico new file mode 100644 index 0000000..158f567 Binary files /dev/null and b/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/reset_parameter.ico differ diff --git a/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/s.ico b/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/s.ico new file mode 100644 index 0000000..4c4ac1d Binary files /dev/null and b/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/s.ico differ diff --git a/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/save.ico b/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/save.ico new file mode 100644 index 0000000..cd473d0 Binary files /dev/null and b/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/save.ico differ diff --git a/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/saveAllFileToolBar.ico b/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/saveAllFileToolBar.ico new file mode 100644 index 0000000..0e78aff Binary files /dev/null and b/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/saveAllFileToolBar.ico differ diff --git a/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/saveFileToolBar.ico b/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/saveFileToolBar.ico new file mode 100644 index 0000000..cd473d0 Binary files /dev/null and b/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/saveFileToolBar.ico differ diff --git a/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/save_file.ico b/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/save_file.ico new file mode 100644 index 0000000..b2ac081 Binary files /dev/null and b/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/save_file.ico differ diff --git a/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/select_folder.ico b/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/select_folder.ico new file mode 100644 index 0000000..dbb76e7 Binary files /dev/null and b/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/select_folder.ico differ diff --git a/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/select_folder.png b/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/select_folder.png new file mode 100644 index 0000000..9eea76c Binary files /dev/null and b/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/select_folder.png differ diff --git a/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/select_task.ico b/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/select_task.ico new file mode 100644 index 0000000..79411e2 Binary files /dev/null and b/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/select_task.ico differ diff --git a/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/set_parameter.ico b/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/set_parameter.ico new file mode 100644 index 0000000..f94dd78 Binary files /dev/null and b/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/set_parameter.ico differ diff --git a/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/setting.ico b/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/setting.ico new file mode 100644 index 0000000..3f496ea Binary files /dev/null and b/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/setting.ico differ diff --git a/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/tableFile_FileListTreeWidget.ico b/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/tableFile_FileListTreeWidget.ico new file mode 100644 index 0000000..381db7d Binary files /dev/null and b/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/tableFile_FileListTreeWidget.ico differ diff --git a/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/test_model.ico b/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/test_model.ico new file mode 100644 index 0000000..4267471 Binary files /dev/null and b/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/test_model.ico differ diff --git a/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/toolBarAbout.ico b/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/toolBarAbout.ico new file mode 100644 index 0000000..c785635 Binary files /dev/null and b/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/toolBarAbout.ico differ diff --git a/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/toolBarAppSetting.ico b/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/toolBarAppSetting.ico new file mode 100644 index 0000000..b04297c Binary files /dev/null and b/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/toolBarAppSetting.ico differ diff --git a/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/toolBarFeedback.ico b/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/toolBarFeedback.ico new file mode 100644 index 0000000..2b9aeb9 Binary files /dev/null and b/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/toolBarFeedback.ico differ diff --git a/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/toolBarHelp.ico b/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/toolBarHelp.ico new file mode 100644 index 0000000..78b53ed Binary files /dev/null and b/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/toolBarHelp.ico differ diff --git a/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/toolBoxBoxTreeWidget.ico b/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/toolBoxBoxTreeWidget.ico new file mode 100644 index 0000000..8ace267 Binary files /dev/null and b/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/toolBoxBoxTreeWidget.ico differ diff --git a/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/toolBoxToolTreeWidget.ico b/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/toolBoxToolTreeWidget.ico new file mode 100644 index 0000000..697e514 Binary files /dev/null and b/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/toolBoxToolTreeWidget.ico differ diff --git a/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/train_model1.ico b/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/train_model1.ico new file mode 100644 index 0000000..b37c915 Binary files /dev/null and b/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/train_model1.ico differ diff --git a/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/train_model2.ico b/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/train_model2.ico new file mode 100644 index 0000000..161fb4e Binary files /dev/null and b/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/train_model2.ico differ diff --git a/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/windowSettingToolBar.ico b/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/windowSettingToolBar.ico new file mode 100644 index 0000000..892f5d9 Binary files /dev/null and b/IntelligentUAVPathPlanningSimulationSystem/core/resource/icons/windowSettingToolBar.ico differ diff --git a/IntelligentUAVPathPlanningSimulationSystem/docs/3.waypoints b/IntelligentUAVPathPlanningSimulationSystem/docs/3.waypoints new file mode 100644 index 0000000..9ba5bed --- /dev/null +++ b/IntelligentUAVPathPlanningSimulationSystem/docs/3.waypoints @@ -0,0 +1,15 @@ +QGC WPL 110 +0 1 0 16 0 0 0 0 53.805001 10.716999 13.810000 1 +1 0 3 16 0.000000 0.000000 0.000000 0.000000 53.809369 10.707378 100.000000 1 +2 0 3 16 0.000000 0.000000 0.000000 0.000000 53.804959 10.700941 100.000000 1 +3 0 3 16 0.000000 0.000000 0.000000 0.000000 53.811801 10.685406 100.000000 1 +4 0 3 16 0.000000 0.000000 0.000000 0.000000 53.798268 10.702057 100.000000 1 +5 0 3 16 0.000000 0.000000 0.000000 0.000000 53.797913 10.730639 100.000000 1 +6 0 3 16 0.000000 0.000000 0.000000 0.000000 53.805669 10.745316 100.000000 1 +7 0 3 16 0.000000 0.000000 0.000000 0.000000 53.812156 10.739136 100.000000 1 +8 0 3 16 0.000000 0.000000 0.000000 0.000000 53.804706 10.704117 100.000000 1 +9 0 3 16 0.000000 0.000000 0.000000 0.000000 53.800803 10.711155 100.000000 1 +10 0 3 16 0.000000 0.000000 0.000000 0.000000 53.787063 10.733042 100.000000 1 +11 0 3 16 0.000000 0.000000 0.000000 0.000000 53.786556 10.704117 100.000000 1 +12 0 3 16 0.000000 0.000000 0.000000 0.000000 53.792235 10.703430 100.000000 1 +13 0 3 16 0.000000 0.000000 0.000000 0.000000 53.784325 10.767117 100.000000 1 diff --git a/IntelligentUAVPathPlanningSimulationSystem/docs/network.kml b/IntelligentUAVPathPlanningSimulationSystem/docs/network.kml new file mode 100644 index 0000000..cfa7731 --- /dev/null +++ b/IntelligentUAVPathPlanningSimulationSystem/docs/network.kml @@ -0,0 +1,297 @@ + + + + 149.1638223 + -35.3617756 + 580.690002441406 + 259.456787109375 + 80 + 50 + absolute + + + P/Q 580.69 + true + + absolute + + 149.1638223 + -35.3617756 + 580.690002441406 + + + 259.456787109375 + 0.38446220755577 + 0.39079678058624 + + + 2 + 2 + 2 + + + block_plane_0.dae + + + + + WP H Alt: 581 + + relativeToGround + 50.8223,60,581 + + + + + WP 1 Alt: 100 + + relativeToGround + 144.1406256,17.3091376,100 + + + + + WP 2 Alt: 100 + + relativeToGround + 144.1407711,17.3091156,100 + + + + + WP 3 Alt: 100 + + relativeToGround + 144.1409024,17.3090517,100 + + + + + WP 4 Alt: 100 + + relativeToGround + 144.1410066,17.3089523,100 + + + + + WP 5 Alt: 100 + + relativeToGround + 144.1410735,17.3088269,100 + + + + + WP 6 Alt: 100 + + relativeToGround + 144.1410966,17.308688,100 + + + + + WP 7 Alt: 100 + + relativeToGround + 144.1410735,17.308549,100 + + + + + WP 8 Alt: 100 + + relativeToGround + 144.1410066,17.3084237,100 + + + + + WP 9 Alt: 100 + + relativeToGround + 144.1409024,17.3083242,100 + + + + + WP 10 Alt: 100 + + relativeToGround + 144.1407711,17.3082603,100 + + + + + WP 11 Alt: 100 + + relativeToGround + 144.1406256,17.3082383,100 + + + + + WP 12 Alt: 100 + + relativeToGround + 144.14048,17.3082603,100 + + + + + WP 13 Alt: 100 + + relativeToGround + 144.1403487,17.3083242,100 + + + + + WP 14 Alt: 100 + + relativeToGround + 144.1402445,17.3084237,100 + + + + + WP 15 Alt: 100 + + relativeToGround + 144.1401776,17.308549,100 + + + + + WP 16 Alt: 100 + + relativeToGround + 144.1401546,17.308688,100 + + + + + WP 17 Alt: 100 + + relativeToGround + 144.1401776,17.3088269,100 + + + + + WP 18 Alt: 100 + + relativeToGround + 144.1402445,17.3089523,100 + + + + + WP 19 Alt: 100 + + relativeToGround + 144.1403487,17.3090517,100 + + + + + WP 20 Alt: 100 + + relativeToGround + 144.14048,17.3091156,100 + + + + + WP 21 Alt: 100 + + relativeToGround + 144.1406256,17.3091376,100 + + + + + WP H Alt: 581 + + relativeToGround + 50.8223,60,581 + + + + + WPs + + + false + true + relativeToGround + 50.8223,60,581 +144.1406256,17.3091376,100 +144.1407711,17.3091156,100 +144.1409024,17.3090517,100 +144.1410066,17.3089523,100 +144.1410735,17.3088269,100 +144.1410966,17.308688,100 +144.1410735,17.308549,100 +144.1410066,17.3084237,100 +144.1409024,17.3083242,100 +144.1407711,17.3082603,100 +144.1406256,17.3082383,100 +144.14048,17.3082603,100 +144.1403487,17.3083242,100 +144.1402445,17.3084237,100 +144.1401776,17.308549,100 +144.1401546,17.308688,100 +144.1401776,17.3088269,100 +144.1402445,17.3089523,100 +144.1403487,17.3090517,100 +144.14048,17.3091156,100 +144.1406256,17.3091376,100 +50.8223,60,581 + + + + + onground + + + false + true + clampToGround + 50.8223,60,581 +144.1406256,17.3091376,100 +144.1407711,17.3091156,100 +144.1409024,17.3090517,100 +144.1410066,17.3089523,100 +144.1410735,17.3088269,100 +144.1410966,17.308688,100 +144.1410735,17.308549,100 +144.1410066,17.3084237,100 +144.1409024,17.3083242,100 +144.1407711,17.3082603,100 +144.1406256,17.3082383,100 +144.14048,17.3082603,100 +144.1403487,17.3083242,100 +144.1402445,17.3084237,100 +144.1401776,17.308549,100 +144.1401546,17.308688,100 +144.1401776,17.3088269,100 +144.1402445,17.3089523,100 +144.1403487,17.3090517,100 +144.14048,17.3091156,100 +144.1406256,17.3091376,100 +50.8223,60,581 + + + + \ No newline at end of file diff --git a/IntelligentUAVPathPlanningSimulationSystem/setup/Include/pyconfig.h b/IntelligentUAVPathPlanningSimulationSystem/setup/Include/pyconfig.h new file mode 100644 index 0000000..81e7656 --- /dev/null +++ b/IntelligentUAVPathPlanningSimulationSystem/setup/Include/pyconfig.h @@ -0,0 +1,684 @@ +#ifndef Py_CONFIG_H +#define Py_CONFIG_H + +/* pyconfig.h. NOT Generated automatically by configure. + +This is a manually maintained version used for the Watcom, +Borland and Microsoft Visual C++ compilers. It is a +standard part of the Python distribution. + +WINDOWS DEFINES: +The code specific to Windows should be wrapped around one of +the following #defines + +MS_WIN64 - Code specific to the MS Win64 API +MS_WIN32 - Code specific to the MS Win32 (and Win64) API (obsolete, this covers all supported APIs) +MS_WINDOWS - Code specific to Windows, but all versions. +Py_ENABLE_SHARED - Code if the Python core is built as a DLL. + +Also note that neither "_M_IX86" or "_MSC_VER" should be used for +any purpose other than "Windows Intel x86 specific" and "Microsoft +compiler specific". Therefore, these should be very rare. + + +NOTE: The following symbols are deprecated: +NT, USE_DL_EXPORT, USE_DL_IMPORT, DL_EXPORT, DL_IMPORT +MS_CORE_DLL. + +WIN32 is still required for the locale module. + +*/ + +/* Deprecated USE_DL_EXPORT macro - please use Py_BUILD_CORE */ +#ifdef USE_DL_EXPORT +# define Py_BUILD_CORE +#endif /* USE_DL_EXPORT */ + +/* Visual Studio 2005 introduces deprecation warnings for + "insecure" and POSIX functions. The insecure functions should + be replaced by *_s versions (according to Microsoft); the + POSIX functions by _* versions (which, according to Microsoft, + would be ISO C conforming). Neither renaming is feasible, so + we just silence the warnings. */ + +#ifndef _CRT_SECURE_NO_DEPRECATE +#define _CRT_SECURE_NO_DEPRECATE 1 +#endif +#ifndef _CRT_NONSTDC_NO_DEPRECATE +#define _CRT_NONSTDC_NO_DEPRECATE 1 +#endif + +#define HAVE_IO_H +#define HAVE_SYS_UTIME_H +#define HAVE_TEMPNAM +#define HAVE_TMPFILE +#define HAVE_TMPNAM +#define HAVE_CLOCK +#define HAVE_STRERROR + +#include + +#define HAVE_HYPOT +#define HAVE_STRFTIME +#define DONT_HAVE_SIG_ALARM +#define DONT_HAVE_SIG_PAUSE +#define LONG_BIT 32 +#define WORD_BIT 32 + +#define MS_WIN32 /* only support win32 and greater. */ +#define MS_WINDOWS +#ifndef PYTHONPATH +# define PYTHONPATH L".\\DLLs;.\\lib" +#endif +#define NT_THREADS +#define WITH_THREAD +#ifndef NETSCAPE_PI +#define USE_SOCKET +#endif + + +/* Compiler specific defines */ + +/* ------------------------------------------------------------------------*/ +/* Microsoft C defines _MSC_VER */ +#ifdef _MSC_VER + +/* We want COMPILER to expand to a string containing _MSC_VER's *value*. + * This is horridly tricky, because the stringization operator only works + * on macro arguments, and doesn't evaluate macros passed *as* arguments. + * Attempts simpler than the following appear doomed to produce "_MSC_VER" + * literally in the string. + */ +#define _Py_PASTE_VERSION(SUFFIX) \ + ("[MSC v." _Py_STRINGIZE(_MSC_VER) " " SUFFIX "]") +/* e.g., this produces, after compile-time string catenation, + * ("[MSC v.1200 32 bit (Intel)]") + * + * _Py_STRINGIZE(_MSC_VER) expands to + * _Py_STRINGIZE1((_MSC_VER)) expands to + * _Py_STRINGIZE2(_MSC_VER) but as this call is the result of token-pasting + * it's scanned again for macros and so further expands to (under MSVC 6) + * _Py_STRINGIZE2(1200) which then expands to + * "1200" + */ +#define _Py_STRINGIZE(X) _Py_STRINGIZE1((X)) +#define _Py_STRINGIZE1(X) _Py_STRINGIZE2 ## X +#define _Py_STRINGIZE2(X) #X + +/* MSVC defines _WINxx to differentiate the windows platform types + + Note that for compatibility reasons _WIN32 is defined on Win32 + *and* on Win64. For the same reasons, in Python, MS_WIN32 is + defined on Win32 *and* Win64. Win32 only code must therefore be + guarded as follows: + #if defined(MS_WIN32) && !defined(MS_WIN64) +*/ +#ifdef _WIN64 +#define MS_WIN64 +#endif + +/* set the COMPILER */ +#ifdef MS_WIN64 +#if defined(_M_X64) || defined(_M_AMD64) +#if defined(__INTEL_COMPILER) +#define COMPILER ("[ICC v." _Py_STRINGIZE(__INTEL_COMPILER) " 64 bit (amd64) with MSC v." _Py_STRINGIZE(_MSC_VER) " CRT]") +#else +#define COMPILER _Py_PASTE_VERSION("64 bit (AMD64)") +#endif /* __INTEL_COMPILER */ +#define PYD_PLATFORM_TAG "win_amd64" +#else +#define COMPILER _Py_PASTE_VERSION("64 bit (Unknown)") +#endif +#endif /* MS_WIN64 */ + +/* set the version macros for the windows headers */ +/* Python 3.5+ requires Windows Vista or greater */ +#define Py_WINVER 0x0600 /* _WIN32_WINNT_VISTA */ +#define Py_NTDDI NTDDI_VISTA + +/* We only set these values when building Python - we don't want to force + these values on extensions, as that will affect the prototypes and + structures exposed in the Windows headers. Even when building Python, we + allow a single source file to override this - they may need access to + structures etc so it can optionally use new Windows features if it + determines at runtime they are available. +*/ +#if defined(Py_BUILD_CORE) || defined(Py_BUILD_CORE_BUILTIN) || defined(Py_BUILD_CORE_MODULE) +#ifndef NTDDI_VERSION +#define NTDDI_VERSION Py_NTDDI +#endif +#ifndef WINVER +#define WINVER Py_WINVER +#endif +#ifndef _WIN32_WINNT +#define _WIN32_WINNT Py_WINVER +#endif +#endif + +/* _W64 is not defined for VC6 or eVC4 */ +#ifndef _W64 +#define _W64 +#endif + +/* Define like size_t, omitting the "unsigned" */ +#ifdef MS_WIN64 +typedef __int64 ssize_t; +#else +typedef _W64 int ssize_t; +#endif +#define HAVE_SSIZE_T 1 + +#if defined(MS_WIN32) && !defined(MS_WIN64) +#if defined(_M_IX86) +#if defined(__INTEL_COMPILER) +#define COMPILER ("[ICC v." _Py_STRINGIZE(__INTEL_COMPILER) " 32 bit (Intel) with MSC v." _Py_STRINGIZE(_MSC_VER) " CRT]") +#else +#define COMPILER _Py_PASTE_VERSION("32 bit (Intel)") +#endif /* __INTEL_COMPILER */ +#define PYD_PLATFORM_TAG "win32" +#elif defined(_M_ARM) +#define COMPILER _Py_PASTE_VERSION("32 bit (ARM)") +#define PYD_PLATFORM_TAG "win_arm" +#else +#define COMPILER _Py_PASTE_VERSION("32 bit (Unknown)") +#endif +#endif /* MS_WIN32 && !MS_WIN64 */ + +typedef int pid_t; + +#include +#define Py_IS_NAN _isnan +#define Py_IS_INFINITY(X) (!_finite(X) && !_isnan(X)) +#define Py_IS_FINITE(X) _finite(X) +#define copysign _copysign + +/* Side by Side assemblies supported in VS 2005 and VS 2008 but not 2010*/ +#if _MSC_VER >= 1400 && _MSC_VER < 1600 +#define HAVE_SXS 1 +#endif + +/* define some ANSI types that are not defined in earlier Win headers */ +#if _MSC_VER >= 1200 +/* This file only exists in VC 6.0 or higher */ +#include +#endif + +#endif /* _MSC_VER */ + +/* ------------------------------------------------------------------------*/ +/* egcs/gnu-win32 defines __GNUC__ and _WIN32 */ +#if defined(__GNUC__) && defined(_WIN32) +/* XXX These defines are likely incomplete, but should be easy to fix. + They should be complete enough to build extension modules. */ +/* Suggested by Rene Liebscher to avoid a GCC 2.91.* + bug that requires structure imports. More recent versions of the + compiler don't exhibit this bug. +*/ +#if (__GNUC__==2) && (__GNUC_MINOR__<=91) +#warning "Please use an up-to-date version of gcc! (>2.91 recommended)" +#endif + +#define COMPILER "[gcc]" +#define PY_LONG_LONG long long +#define PY_LLONG_MIN LLONG_MIN +#define PY_LLONG_MAX LLONG_MAX +#define PY_ULLONG_MAX ULLONG_MAX +#endif /* GNUC */ + +/* ------------------------------------------------------------------------*/ +/* lcc-win32 defines __LCC__ */ +#if defined(__LCC__) +/* XXX These defines are likely incomplete, but should be easy to fix. + They should be complete enough to build extension modules. */ + +#define COMPILER "[lcc-win32]" +typedef int pid_t; +/* __declspec() is supported here too - do nothing to get the defaults */ + +#endif /* LCC */ + +/* ------------------------------------------------------------------------*/ +/* End of compilers - finish up */ + +#ifndef NO_STDIO_H +# include +#endif + +/* 64 bit ints are usually spelt __int64 unless compiler has overridden */ +#ifndef PY_LONG_LONG +# define PY_LONG_LONG __int64 +# define PY_LLONG_MAX _I64_MAX +# define PY_LLONG_MIN _I64_MIN +# define PY_ULLONG_MAX _UI64_MAX +#endif + +/* For Windows the Python core is in a DLL by default. Test +Py_NO_ENABLE_SHARED to find out. Also support MS_NO_COREDLL for b/w compat */ +#if !defined(MS_NO_COREDLL) && !defined(Py_NO_ENABLE_SHARED) +# define Py_ENABLE_SHARED 1 /* standard symbol for shared library */ +# define MS_COREDLL /* deprecated old symbol */ +#endif /* !MS_NO_COREDLL && ... */ + +/* All windows compilers that use this header support __declspec */ +#define HAVE_DECLSPEC_DLL + +/* For an MSVC DLL, we can nominate the .lib files used by extensions */ +#ifdef MS_COREDLL +# if !defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_BUILTIN) + /* not building the core - must be an ext */ +# if defined(_MSC_VER) + /* So MSVC users need not specify the .lib + file in their Makefile (other compilers are + generally taken care of by distutils.) */ +# if defined(_DEBUG) +# pragma comment(lib,"python37_d.lib") +# elif defined(Py_LIMITED_API) +# pragma comment(lib,"python3.lib") +# else +# pragma comment(lib,"python37.lib") +# endif /* _DEBUG */ +# endif /* _MSC_VER */ +# endif /* Py_BUILD_CORE */ +#endif /* MS_COREDLL */ + +#if defined(MS_WIN64) +/* maintain "win32" sys.platform for backward compatibility of Python code, + the Win64 API should be close enough to the Win32 API to make this + preferable */ +# define PLATFORM "win32" +# define SIZEOF_VOID_P 8 +# define SIZEOF_TIME_T 8 +# define SIZEOF_OFF_T 4 +# define SIZEOF_FPOS_T 8 +# define SIZEOF_HKEY 8 +# define SIZEOF_SIZE_T 8 +/* configure.ac defines HAVE_LARGEFILE_SUPPORT iff + sizeof(off_t) > sizeof(long), and sizeof(PY_LONG_LONG) >= sizeof(off_t). + On Win64 the second condition is not true, but if fpos_t replaces off_t + then this is true. The uses of HAVE_LARGEFILE_SUPPORT imply that Win64 + should define this. */ +# define HAVE_LARGEFILE_SUPPORT +#elif defined(MS_WIN32) +# define PLATFORM "win32" +# define HAVE_LARGEFILE_SUPPORT +# define SIZEOF_VOID_P 4 +# define SIZEOF_OFF_T 4 +# define SIZEOF_FPOS_T 8 +# define SIZEOF_HKEY 4 +# define SIZEOF_SIZE_T 4 + /* MS VS2005 changes time_t to a 64-bit type on all platforms */ +# if defined(_MSC_VER) && _MSC_VER >= 1400 +# define SIZEOF_TIME_T 8 +# else +# define SIZEOF_TIME_T 4 +# endif +#endif + +#ifdef _DEBUG +# define Py_DEBUG +#endif + + +#ifdef MS_WIN32 + +#define SIZEOF_SHORT 2 +#define SIZEOF_INT 4 +#define SIZEOF_LONG 4 +#define SIZEOF_LONG_LONG 8 +#define SIZEOF_DOUBLE 8 +#define SIZEOF_FLOAT 4 + +/* VC 7.1 has them and VC 6.0 does not. VC 6.0 has a version number of 1200. + Microsoft eMbedded Visual C++ 4.0 has a version number of 1201 and doesn't + define these. + If some compiler does not provide them, modify the #if appropriately. */ +#if defined(_MSC_VER) +#if _MSC_VER > 1300 +#define HAVE_UINTPTR_T 1 +#define HAVE_INTPTR_T 1 +#else +/* VC6, VS 2002 and eVC4 don't support the C99 LL suffix for 64-bit integer literals */ +#define Py_LL(x) x##I64 +#endif /* _MSC_VER > 1300 */ +#endif /* _MSC_VER */ + +#endif + +/* define signed and unsigned exact-width 32-bit and 64-bit types, used in the + implementation of Python integers. */ +#define PY_UINT32_T uint32_t +#define PY_UINT64_T uint64_t +#define PY_INT32_T int32_t +#define PY_INT64_T int64_t + +/* Fairly standard from here! */ + +/* Define to 1 if you have the `copysign' function. */ +#define HAVE_COPYSIGN 1 + +/* Define to 1 if you have the `round' function. */ +#if _MSC_VER >= 1800 +#define HAVE_ROUND 1 +#endif + +/* Define to 1 if you have the `isinf' macro. */ +#define HAVE_DECL_ISINF 1 + +/* Define to 1 if you have the `isnan' function. */ +#define HAVE_DECL_ISNAN 1 + +/* Define if on AIX 3. + System headers sometimes define this. + We just want to avoid a redefinition error message. */ +#ifndef _ALL_SOURCE +/* #undef _ALL_SOURCE */ +#endif + +/* Define to empty if the keyword does not work. */ +/* #define const */ + +/* Define to 1 if you have the header file. */ +#define HAVE_CONIO_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_DIRECT_H 1 + +/* Define if you have dirent.h. */ +/* #define DIRENT 1 */ + +/* Define to the type of elements in the array set by `getgroups'. + Usually this is either `int' or `gid_t'. */ +/* #undef GETGROUPS_T */ + +/* Define to `int' if doesn't define. */ +/* #undef gid_t */ + +/* Define if your struct tm has tm_zone. */ +/* #undef HAVE_TM_ZONE */ + +/* Define if you don't have tm_zone but do have the external array + tzname. */ +#define HAVE_TZNAME + +/* Define to `int' if doesn't define. */ +/* #undef mode_t */ + +/* Define if you don't have dirent.h, but have ndir.h. */ +/* #undef NDIR */ + +/* Define to `long' if doesn't define. */ +/* #undef off_t */ + +/* Define to `int' if doesn't define. */ +/* #undef pid_t */ + +/* Define if the system does not provide POSIX.1 features except + with this defined. */ +/* #undef _POSIX_1_SOURCE */ + +/* Define if you need to in order for stat and other things to work. */ +/* #undef _POSIX_SOURCE */ + +/* Define as the return type of signal handlers (int or void). */ +#define RETSIGTYPE void + +/* Define to `unsigned' if doesn't define. */ +/* #undef size_t */ + +/* Define if you have the ANSI C header files. */ +#define STDC_HEADERS 1 + +/* Define if you don't have dirent.h, but have sys/dir.h. */ +/* #undef SYSDIR */ + +/* Define if you don't have dirent.h, but have sys/ndir.h. */ +/* #undef SYSNDIR */ + +/* Define if you can safely include both and . */ +/* #undef TIME_WITH_SYS_TIME */ + +/* Define if your declares struct tm. */ +/* #define TM_IN_SYS_TIME 1 */ + +/* Define to `int' if doesn't define. */ +/* #undef uid_t */ + +/* Define if the closedir function returns void instead of int. */ +/* #undef VOID_CLOSEDIR */ + +/* Define if getpgrp() must be called as getpgrp(0) + and (consequently) setpgrp() as setpgrp(0, 0). */ +/* #undef GETPGRP_HAVE_ARGS */ + +/* Define this if your time.h defines altzone */ +/* #define HAVE_ALTZONE */ + +/* Define if you have the putenv function. */ +#define HAVE_PUTENV + +/* Define if your compiler supports function prototypes */ +#define HAVE_PROTOTYPES + +/* Define if you can safely include both and + (which you can't on SCO ODT 3.0). */ +/* #undef SYS_SELECT_WITH_SYS_TIME */ + +/* Define if you want build the _decimal module using a coroutine-local rather + than a thread-local context */ +#define WITH_DECIMAL_CONTEXTVAR 1 + +/* Define if you want documentation strings in extension modules */ +#define WITH_DOC_STRINGS 1 + +/* Define if you want to compile in rudimentary thread support */ +/* #undef WITH_THREAD */ + +/* Define if you want to use the GNU readline library */ +/* #define WITH_READLINE 1 */ + +/* Use Python's own small-block memory-allocator. */ +#define WITH_PYMALLOC 1 + +/* Define if you have clock. */ +/* #define HAVE_CLOCK */ + +/* Define when any dynamic module loading is enabled */ +#define HAVE_DYNAMIC_LOADING + +/* Define if you have ftime. */ +#define HAVE_FTIME + +/* Define if you have getpeername. */ +#define HAVE_GETPEERNAME + +/* Define if you have getpgrp. */ +/* #undef HAVE_GETPGRP */ + +/* Define if you have getpid. */ +#define HAVE_GETPID + +/* Define if you have gettimeofday. */ +/* #undef HAVE_GETTIMEOFDAY */ + +/* Define if you have getwd. */ +/* #undef HAVE_GETWD */ + +/* Define if you have lstat. */ +/* #undef HAVE_LSTAT */ + +/* Define if you have the mktime function. */ +#define HAVE_MKTIME + +/* Define if you have nice. */ +/* #undef HAVE_NICE */ + +/* Define if you have readlink. */ +/* #undef HAVE_READLINK */ + +/* Define if you have setpgid. */ +/* #undef HAVE_SETPGID */ + +/* Define if you have setpgrp. */ +/* #undef HAVE_SETPGRP */ + +/* Define if you have setsid. */ +/* #undef HAVE_SETSID */ + +/* Define if you have setvbuf. */ +#define HAVE_SETVBUF + +/* Define if you have siginterrupt. */ +/* #undef HAVE_SIGINTERRUPT */ + +/* Define if you have symlink. */ +/* #undef HAVE_SYMLINK */ + +/* Define if you have tcgetpgrp. */ +/* #undef HAVE_TCGETPGRP */ + +/* Define if you have tcsetpgrp. */ +/* #undef HAVE_TCSETPGRP */ + +/* Define if you have times. */ +/* #undef HAVE_TIMES */ + +/* Define if you have uname. */ +/* #undef HAVE_UNAME */ + +/* Define if you have waitpid. */ +/* #undef HAVE_WAITPID */ + +/* Define to 1 if you have the `wcsftime' function. */ +#if defined(_MSC_VER) && _MSC_VER >= 1310 +#define HAVE_WCSFTIME 1 +#endif + +/* Define to 1 if you have the `wcscoll' function. */ +#define HAVE_WCSCOLL 1 + +/* Define to 1 if you have the `wcsxfrm' function. */ +#define HAVE_WCSXFRM 1 + +/* Define if the zlib library has inflateCopy */ +#define HAVE_ZLIB_COPY 1 + +/* Define if you have the header file. */ +/* #undef HAVE_DLFCN_H */ + +/* Define to 1 if you have the header file. */ +#define HAVE_ERRNO_H 1 + +/* Define if you have the header file. */ +#define HAVE_FCNTL_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_PROCESS_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SIGNAL_H 1 + +/* Define if you have the prototypes. */ +#define HAVE_STDARG_PROTOTYPES + +/* Define if you have the header file. */ +#define HAVE_STDDEF_H 1 + +/* Define if you have the header file. */ +/* #undef HAVE_SYS_AUDIOIO_H */ + +/* Define if you have the header file. */ +/* #define HAVE_SYS_PARAM_H 1 */ + +/* Define if you have the header file. */ +/* #define HAVE_SYS_SELECT_H 1 */ + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_STAT_H 1 + +/* Define if you have the header file. */ +/* #define HAVE_SYS_TIME_H 1 */ + +/* Define if you have the header file. */ +/* #define HAVE_SYS_TIMES_H 1 */ + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_TYPES_H 1 + +/* Define if you have the header file. */ +/* #define HAVE_SYS_UN_H 1 */ + +/* Define if you have the header file. */ +/* #define HAVE_SYS_UTIME_H 1 */ + +/* Define if you have the header file. */ +/* #define HAVE_SYS_UTSNAME_H 1 */ + +/* Define if you have the header file. */ +/* #define HAVE_UNISTD_H 1 */ + +/* Define if you have the header file. */ +/* #define HAVE_UTIME_H 1 */ + +/* Define if the compiler provides a wchar.h header file. */ +#define HAVE_WCHAR_H 1 + +/* The size of `wchar_t', as computed by sizeof. */ +#define SIZEOF_WCHAR_T 2 + +/* The size of `_Bool', as computed by sizeof. */ +#define SIZEOF__BOOL 1 + +/* The size of `pid_t', as computed by sizeof. */ +#define SIZEOF_PID_T SIZEOF_INT + +/* Define if you have the dl library (-ldl). */ +/* #undef HAVE_LIBDL */ + +/* Define if you have the mpc library (-lmpc). */ +/* #undef HAVE_LIBMPC */ + +/* Define if you have the nsl library (-lnsl). */ +#define HAVE_LIBNSL 1 + +/* Define if you have the seq library (-lseq). */ +/* #undef HAVE_LIBSEQ */ + +/* Define if you have the socket library (-lsocket). */ +#define HAVE_LIBSOCKET 1 + +/* Define if you have the sun library (-lsun). */ +/* #undef HAVE_LIBSUN */ + +/* Define if you have the termcap library (-ltermcap). */ +/* #undef HAVE_LIBTERMCAP */ + +/* Define if you have the termlib library (-ltermlib). */ +/* #undef HAVE_LIBTERMLIB */ + +/* Define if you have the thread library (-lthread). */ +/* #undef HAVE_LIBTHREAD */ + +/* WinSock does not use a bitmask in select, and uses + socket handles greater than FD_SETSIZE */ +#define Py_SOCKET_FD_CAN_BE_GE_FD_SETSIZE + +/* Define if C doubles are 64-bit IEEE 754 binary format, stored with the + least significant byte first */ +#define DOUBLE_IS_LITTLE_ENDIAN_IEEE754 1 + +/* Define to 1 if you have the `erf' function. */ +#define HAVE_ERF 1 + +/* Define to 1 if you have the `erfc' function. */ +#define HAVE_ERFC 1 + +/* Define if you have the 'inet_pton' function. */ +#define HAVE_INET_PTON 1 + +/* framework name */ +#define _PYTHONFRAMEWORK "" + +/* Define if libssl has X509_VERIFY_PARAM_set1_host and related function */ +#define HAVE_X509_VERIFY_PARAM_SET1_HOST 1 + +#endif /* !Py_CONFIG_H */ diff --git a/IntelligentUAVPathPlanningSimulationSystem/setup/MSVCP140.dll b/IntelligentUAVPathPlanningSimulationSystem/setup/MSVCP140.dll new file mode 100644 index 0000000..95b47f0 Binary files /dev/null and b/IntelligentUAVPathPlanningSimulationSystem/setup/MSVCP140.dll differ diff --git a/IntelligentUAVPathPlanningSimulationSystem/setup/PyQt5/Qt/plugins/iconengines/qsvgicon.dll b/IntelligentUAVPathPlanningSimulationSystem/setup/PyQt5/Qt/plugins/iconengines/qsvgicon.dll new file mode 100644 index 0000000..ddca812 Binary files /dev/null and b/IntelligentUAVPathPlanningSimulationSystem/setup/PyQt5/Qt/plugins/iconengines/qsvgicon.dll differ diff --git a/IntelligentUAVPathPlanningSimulationSystem/setup/PyQt5/Qt/plugins/imageformats/qgif.dll b/IntelligentUAVPathPlanningSimulationSystem/setup/PyQt5/Qt/plugins/imageformats/qgif.dll new file mode 100644 index 0000000..bca2d58 Binary files /dev/null and b/IntelligentUAVPathPlanningSimulationSystem/setup/PyQt5/Qt/plugins/imageformats/qgif.dll differ diff --git a/IntelligentUAVPathPlanningSimulationSystem/setup/PyQt5/Qt/plugins/imageformats/qicns.dll b/IntelligentUAVPathPlanningSimulationSystem/setup/PyQt5/Qt/plugins/imageformats/qicns.dll new file mode 100644 index 0000000..296044e Binary files /dev/null and b/IntelligentUAVPathPlanningSimulationSystem/setup/PyQt5/Qt/plugins/imageformats/qicns.dll differ diff --git a/IntelligentUAVPathPlanningSimulationSystem/setup/PyQt5/Qt/plugins/imageformats/qico.dll b/IntelligentUAVPathPlanningSimulationSystem/setup/PyQt5/Qt/plugins/imageformats/qico.dll new file mode 100644 index 0000000..b0eb513 Binary files /dev/null and b/IntelligentUAVPathPlanningSimulationSystem/setup/PyQt5/Qt/plugins/imageformats/qico.dll differ diff --git a/IntelligentUAVPathPlanningSimulationSystem/setup/PyQt5/Qt/plugins/imageformats/qjpeg.dll b/IntelligentUAVPathPlanningSimulationSystem/setup/PyQt5/Qt/plugins/imageformats/qjpeg.dll new file mode 100644 index 0000000..884dfde Binary files /dev/null and b/IntelligentUAVPathPlanningSimulationSystem/setup/PyQt5/Qt/plugins/imageformats/qjpeg.dll differ diff --git a/IntelligentUAVPathPlanningSimulationSystem/setup/PyQt5/Qt/plugins/imageformats/qsvg.dll b/IntelligentUAVPathPlanningSimulationSystem/setup/PyQt5/Qt/plugins/imageformats/qsvg.dll new file mode 100644 index 0000000..4620604 Binary files /dev/null and b/IntelligentUAVPathPlanningSimulationSystem/setup/PyQt5/Qt/plugins/imageformats/qsvg.dll differ diff --git a/IntelligentUAVPathPlanningSimulationSystem/setup/PyQt5/Qt/plugins/imageformats/qtga.dll b/IntelligentUAVPathPlanningSimulationSystem/setup/PyQt5/Qt/plugins/imageformats/qtga.dll new file mode 100644 index 0000000..d261370 Binary files /dev/null and b/IntelligentUAVPathPlanningSimulationSystem/setup/PyQt5/Qt/plugins/imageformats/qtga.dll differ diff --git a/IntelligentUAVPathPlanningSimulationSystem/setup/PyQt5/Qt/plugins/imageformats/qtiff.dll b/IntelligentUAVPathPlanningSimulationSystem/setup/PyQt5/Qt/plugins/imageformats/qtiff.dll new file mode 100644 index 0000000..c0bdadb Binary files /dev/null and b/IntelligentUAVPathPlanningSimulationSystem/setup/PyQt5/Qt/plugins/imageformats/qtiff.dll differ diff --git a/IntelligentUAVPathPlanningSimulationSystem/setup/PyQt5/Qt/plugins/imageformats/qwbmp.dll b/IntelligentUAVPathPlanningSimulationSystem/setup/PyQt5/Qt/plugins/imageformats/qwbmp.dll new file mode 100644 index 0000000..b850448 Binary files /dev/null and b/IntelligentUAVPathPlanningSimulationSystem/setup/PyQt5/Qt/plugins/imageformats/qwbmp.dll differ diff --git a/IntelligentUAVPathPlanningSimulationSystem/setup/PyQt5/Qt/plugins/imageformats/qwebp.dll b/IntelligentUAVPathPlanningSimulationSystem/setup/PyQt5/Qt/plugins/imageformats/qwebp.dll new file mode 100644 index 0000000..855b418 Binary files /dev/null and b/IntelligentUAVPathPlanningSimulationSystem/setup/PyQt5/Qt/plugins/imageformats/qwebp.dll differ diff --git a/IntelligentUAVPathPlanningSimulationSystem/setup/PyQt5/Qt/plugins/platforms/qminimal.dll b/IntelligentUAVPathPlanningSimulationSystem/setup/PyQt5/Qt/plugins/platforms/qminimal.dll new file mode 100644 index 0000000..f09343b Binary files /dev/null and b/IntelligentUAVPathPlanningSimulationSystem/setup/PyQt5/Qt/plugins/platforms/qminimal.dll differ diff --git a/IntelligentUAVPathPlanningSimulationSystem/setup/PyQt5/Qt/plugins/platforms/qoffscreen.dll b/IntelligentUAVPathPlanningSimulationSystem/setup/PyQt5/Qt/plugins/platforms/qoffscreen.dll new file mode 100644 index 0000000..35ccb4e Binary files /dev/null and b/IntelligentUAVPathPlanningSimulationSystem/setup/PyQt5/Qt/plugins/platforms/qoffscreen.dll differ diff --git a/IntelligentUAVPathPlanningSimulationSystem/setup/PyQt5/Qt/plugins/platforms/qwebgl.dll b/IntelligentUAVPathPlanningSimulationSystem/setup/PyQt5/Qt/plugins/platforms/qwebgl.dll new file mode 100644 index 0000000..698fee2 Binary files /dev/null and b/IntelligentUAVPathPlanningSimulationSystem/setup/PyQt5/Qt/plugins/platforms/qwebgl.dll differ diff --git a/IntelligentUAVPathPlanningSimulationSystem/setup/PyQt5/Qt/plugins/platforms/qwindows.dll b/IntelligentUAVPathPlanningSimulationSystem/setup/PyQt5/Qt/plugins/platforms/qwindows.dll new file mode 100644 index 0000000..20ddd7c Binary files /dev/null and b/IntelligentUAVPathPlanningSimulationSystem/setup/PyQt5/Qt/plugins/platforms/qwindows.dll differ diff --git a/IntelligentUAVPathPlanningSimulationSystem/setup/PyQt5/Qt/plugins/platformthemes/qxdgdesktopportal.dll b/IntelligentUAVPathPlanningSimulationSystem/setup/PyQt5/Qt/plugins/platformthemes/qxdgdesktopportal.dll new file mode 100644 index 0000000..c3adc8e Binary files /dev/null and b/IntelligentUAVPathPlanningSimulationSystem/setup/PyQt5/Qt/plugins/platformthemes/qxdgdesktopportal.dll differ diff --git a/IntelligentUAVPathPlanningSimulationSystem/setup/PyQt5/Qt/plugins/styles/qwindowsvistastyle.dll b/IntelligentUAVPathPlanningSimulationSystem/setup/PyQt5/Qt/plugins/styles/qwindowsvistastyle.dll new file mode 100644 index 0000000..70ca43a Binary files /dev/null and b/IntelligentUAVPathPlanningSimulationSystem/setup/PyQt5/Qt/plugins/styles/qwindowsvistastyle.dll differ diff --git a/IntelligentUAVPathPlanningSimulationSystem/setup/PyQt5/Qt/translations/qtbase_ar.qm b/IntelligentUAVPathPlanningSimulationSystem/setup/PyQt5/Qt/translations/qtbase_ar.qm new file mode 100644 index 0000000..dbb2a6b Binary files /dev/null and b/IntelligentUAVPathPlanningSimulationSystem/setup/PyQt5/Qt/translations/qtbase_ar.qm differ diff --git a/IntelligentUAVPathPlanningSimulationSystem/setup/PyQt5/Qt/translations/qtbase_bg.qm b/IntelligentUAVPathPlanningSimulationSystem/setup/PyQt5/Qt/translations/qtbase_bg.qm new file mode 100644 index 0000000..dcec255 Binary files /dev/null and b/IntelligentUAVPathPlanningSimulationSystem/setup/PyQt5/Qt/translations/qtbase_bg.qm differ diff --git a/IntelligentUAVPathPlanningSimulationSystem/setup/PyQt5/Qt/translations/qtbase_ca.qm b/IntelligentUAVPathPlanningSimulationSystem/setup/PyQt5/Qt/translations/qtbase_ca.qm new file mode 100644 index 0000000..b1f52a7 Binary files /dev/null and b/IntelligentUAVPathPlanningSimulationSystem/setup/PyQt5/Qt/translations/qtbase_ca.qm differ diff --git a/IntelligentUAVPathPlanningSimulationSystem/setup/PyQt5/Qt/translations/qtbase_cs.qm b/IntelligentUAVPathPlanningSimulationSystem/setup/PyQt5/Qt/translations/qtbase_cs.qm new file mode 100644 index 0000000..3ab5ca7 Binary files /dev/null and b/IntelligentUAVPathPlanningSimulationSystem/setup/PyQt5/Qt/translations/qtbase_cs.qm differ diff --git a/IntelligentUAVPathPlanningSimulationSystem/setup/PyQt5/Qt/translations/qtbase_da.qm b/IntelligentUAVPathPlanningSimulationSystem/setup/PyQt5/Qt/translations/qtbase_da.qm new file mode 100644 index 0000000..6756496 Binary files /dev/null and b/IntelligentUAVPathPlanningSimulationSystem/setup/PyQt5/Qt/translations/qtbase_da.qm differ diff --git a/IntelligentUAVPathPlanningSimulationSystem/setup/PyQt5/Qt/translations/qtbase_de.qm b/IntelligentUAVPathPlanningSimulationSystem/setup/PyQt5/Qt/translations/qtbase_de.qm new file mode 100644 index 0000000..86ae7fa Binary files /dev/null and b/IntelligentUAVPathPlanningSimulationSystem/setup/PyQt5/Qt/translations/qtbase_de.qm differ diff --git a/IntelligentUAVPathPlanningSimulationSystem/setup/PyQt5/Qt/translations/qtbase_en.qm b/IntelligentUAVPathPlanningSimulationSystem/setup/PyQt5/Qt/translations/qtbase_en.qm new file mode 100644 index 0000000..be651ee --- /dev/null +++ b/IntelligentUAVPathPlanningSimulationSystem/setup/PyQt5/Qt/translations/qtbase_en.qm @@ -0,0 +1 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/IntelligentUAVPathPlanningSimulationSystem/setup/unicodedata.pyd b/IntelligentUAVPathPlanningSimulationSystem/setup/unicodedata.pyd new file mode 100644 index 0000000..8d7bc46 Binary files /dev/null and b/IntelligentUAVPathPlanningSimulationSystem/setup/unicodedata.pyd differ diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..cba9cd6 --- /dev/null +++ b/LICENSE @@ -0,0 +1,29 @@ +BSD 3-Clause License + +Copyright (c) 2021, wwy +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +* Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +* Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +* Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/PyScripts_ScriptIntelligentControl/2020-11-21_10-13-21.txt b/PyScripts_ScriptIntelligentControl/2020-11-21_10-13-21.txt new file mode 100644 index 0000000..b558ae4 --- /dev/null +++ b/PyScripts_ScriptIntelligentControl/2020-11-21_10-13-21.txt @@ -0,0 +1,2 @@ +0 LocationGlobalRelative:lat=54.0,lon=56.0,alt=5.0 +1 LocationGlobalRelative:lat=258.0,lon=56.0,alt=51.0 diff --git a/PyScripts_ScriptIntelligentControl/autoFly_continuousFlight.py b/PyScripts_ScriptIntelligentControl/autoFly_continuousFlight.py new file mode 100644 index 0000000..3b14b1e --- /dev/null +++ b/PyScripts_ScriptIntelligentControl/autoFly_continuousFlight.py @@ -0,0 +1,149 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +""" +Intelligent scripting: Simplified operation process, detailed instructions can help flight control better take-off. +此脚本可设置精准航点,使无人机连续飞行到达指定目的地 + +""" + +from __future__ import print_function +import time +from dronekit import connect, VehicleMode, LocationGlobalRelative + +print(""" + 此脚本可设置精准航点,使无人机按照配置连续飞行到达指定目的地 + + version==1.0 + + /$$ /$$$$$$$$ /$$ + | $$ | $$_____/| $$ + /$$$$$$ /$$ /$$ /$$$$$$ /$$$$$$ | $$ | $$ /$$ /$$ + |____ $$| $$ | $$|_ $$_/ /$$__ $$| $$$$$ | $$| $$ | $$ + /$$$$$$$| $$ | $$ | $$ | $$ \ $$| $$__/ | $$| $$ | $$ + /$$__ $$| $$ | $$ | $$ /$$| $$ | $$| $$ | $$| $$ | $$ +| $$$$$$$| $$$$$$/ | $$$$/| $$$$$$/| $$ | $$| $$$$$$$ + \_______/ \______/ \___/ \______/ |__/ |__/ \____ $$ + /$$ | $$ + | $$$$$$/ + \______/ + + by:wwy +""" + +) + +# 通过本地的14551端口,使用UDP连接到SITL模拟器 +connection_string ='127.0.0.1:14550' #'tcp:127.0.0.1:5760' # +print('正在连接无人机: %s' % connection_string) +# connect函数将会返回一个Vehicle类型的对象,即此处的vehicle +# 即可认为是无人机的主体,通过vehicle对象,我们可以直接控制无人机 +vehicle = connect(connection_string, wait_ready=True) + +# 定义arm_and_takeoff函数,使无人机解锁并起飞到目标高度 +# 参数aTargetAltitude即为目标高度,单位为米 +def arm_and_takeoff(aTargetAltitude): + # 进行起飞前检查 + print("正在进行起飞前检查......") + # vehicle.is_armable会检查飞控是否启动完成、有无GPS fix、卡曼滤波器 + # 是否初始化完毕。若以上检查通过,则会返回True + while not vehicle.is_armable: + print(" 无人机正在初始化,请等待......") + time.sleep(1) + + # 解锁无人机(电机将开始旋转) + print("无人机初始化完毕,电机开始旋转") + # 将无人机的飞行模式切换成"GUIDED"(一般建议在GUIDED模式下控制无人机) + vehicle.mode = VehicleMode("GUIDED") + # 通过设置vehicle.armed状态变量为True,解锁无人机 + vehicle.armed = True + + # 在无人机起飞之前,确认电机已经解锁 + while not vehicle.armed: + print(" 正在为无人机供电,请等待......") + time.sleep(1) + + # 发送起飞指令 + print("起飞!") + # simple_takeoff将发送指令,使无人机起飞并上升到目标高度 + vehicle.simple_takeoff(aTargetAltitude) + + # 在无人机上升到目标高度之前,阻塞程序 + while True: + print(" 上升高度: ", vehicle.location.global_relative_frame.alt) + # 当高度上升到目标高度的0.95倍时,即认为达到了目标高度,退出循环 + # vehicle.location.global_relative_frame.alt为相对于home点的高度 + if vehicle.location.global_relative_frame.alt >= aTargetAltitude * 0.95: + print("无人机已达到目标上升高度,随时准备行动") + break + # 等待1s + time.sleep(1) + +# 调用上面声明的arm_and_takeoff函数,目标高度10m +takeoff_high = input("请输入飞行高度m: ") +arm_and_takeoff(float(takeoff_high)) + +# 设置在运动时,默认的空速为3m/s +air_speed = input("请设置无人机空中运行速度m/s: ") +# vehicle.airspeed变量可读可写,且读、写时的含义不同。 +# 读取时,为无人机的当前空速;写入时,设定无人机在执行航点任务时的默认速度 +vehicle.airspeed = float(air_speed) + +# 发送指令,让无人机前往第一个航点 +#time_fly = input("请设置飞行时间/秒: #无人机将在此时间过后前往下一处航点") +ground_speed_Q = input("是否设置地速[y/n]: ") + +num = 1 +record = [] +while True: + # LocationGlobalRelative是一个类,它由经纬度(WGS84)和相对于home点的高度组成 + # 这条语句将创建一个位于南纬35.361354,东经149.165218,相对home点高20m的位置 + waypointS = input("请输入第" + str(num) + "个航点纬度,若退出任务请输入E,南纬: ")#则填写35.361354,149.165218,20 + waypointE = input("请输入第" + str(num) + "个航点经度,若退出任务请输入E,东经: ") + waypointH = input("请输入第" + str(num) + "个航点高度,若退出任务请输入E,高度: ") + if waypointS == "E" or waypointE == "E" or waypointH == "E" or waypointS == "e" or waypointE == "e" or waypointH == "e": + break + point = LocationGlobalRelative(float(waypointS),float(waypointE),float(waypointH)) + + if ground_speed_Q == "y" or ground_speed_Q == "Y": + ground_speed = input("请设置无人机对地速度m/s: ") + # simple_goto将目标航点发送给无人机,groundspeed=10设置飞行时的地速为ground_speed + vehicle.simple_goto(point, groundspeed=float(ground_speed)) + else: + # simple_goto函数将位置发送给无人机,生成一个目标航点 + vehicle.simple_goto(point) + record.append(point) + num += 1 + time.sleep(2) + #time.sleep(float(time_fly)) + #vehicle.mode = VehicleMode("AUTO") + # simple_goto函数只发送指令,不判断有没有到达目标航点 + # 它可以被其他后续指令打断,此处延时30s,即让无人机朝向point1飞行30s + #if time_fly == "n" or time_fly == "N": + # vehicle.mode = VehicleMode("AUTO") + #else: + # time.sleep(time_fly) + +# 发送"返航"指令 +print("飞行任务退出,无人机返回基地......") +# 返航,只需将无人机的飞行模式切换成"RTL(Return to Launch)" +# 无人机会自动返回home点的正上方,之后自动降落 +vehicle.mode = VehicleMode("RTL") +#防止无人机继续向目的地飞行,将飞行模式调为可控,再返回基地 +time.sleep(3) +vehicle.mode = VehicleMode("GUIDED") +vehicle.mode = VehicleMode("RTL") + +filename = time.strftime("%Y-%m-%d_%H-%M-%S", time.localtime()) + '.txt' +with open(filename, 'a') as file_object: + for i in range(len(record)): + file_object.write(str(i)) + file_object.write(" ") + file_object.write(str(record[i])) + file_object.write("\n") +print("航点记录成功!") +# 退出之前,清除vehicle对象 +print("......任务结束......") +vehicle.close() + + diff --git a/PyScripts_ScriptIntelligentControl/autoFly_getDroneInformation.py b/PyScripts_ScriptIntelligentControl/autoFly_getDroneInformation.py new file mode 100644 index 0000000..c7cb0b8 --- /dev/null +++ b/PyScripts_ScriptIntelligentControl/autoFly_getDroneInformation.py @@ -0,0 +1,115 @@ +# -*- coding: utf-8 -*- + +''' +--------------------------------------------------------------------------- +Intelligent scripting: Simplified operation process, detailed instructions can help flight control better take-off. +获取无人机基础状态信息 + +--------------------------------------------------------------------------- + +''' +from __future__ import print_function +import time +from dronekit import connect, VehicleMode, LocationGlobalRelative +from pymavlink import mavutil + +print(""" + 此脚本可获取无人机基础状态信息 + + version==1.0 + + /$$ /$$$$$$$$ /$$ + | $$ | $$_____/| $$ + /$$$$$$ /$$ /$$ /$$$$$$ /$$$$$$ | $$ | $$ /$$ /$$ + |____ $$| $$ | $$|_ $$_/ /$$__ $$| $$$$$ | $$| $$ | $$ + /$$$$$$$| $$ | $$ | $$ | $$ \ $$| $$__/ | $$| $$ | $$ + /$$__ $$| $$ | $$ | $$ /$$| $$ | $$| $$ | $$| $$ | $$ +| $$$$$$$| $$$$$$/ | $$$$/| $$$$$$/| $$ | $$| $$$$$$$ + \_______/ \______/ \___/ \______/ |__/ |__/ \____ $$ + /$$ | $$ + | $$$$$$/ + \______/ + + by:wwy +""" + +) + +#连接 +vehicle = connect('127.0.0.1:14550', wait_ready=True) + +#起飞 +def arm_and_takeoff(aTargetAltitude): + + print("起飞前检查......") + while not vehicle.is_armable: + print (" 等待飞机初始化......") + time.sleep(1) + print ("切换至GUIDED模式......") + vehicle.mode = VehicleMode("GUIDED") + print ("无人机解除锁定......") + vehicle.armed = True + while not vehicle.armed: + print ("等待解锁...") + time.sleep(1) + print ("起飞!!!......") + vehicle.simple_takeoff(aTargetAltitude) + while True: + print (" 当前高度:", vehicle.location.global_relative_frame.alt) + + if vehicle.location.global_relative_frame.alt>=aTargetAltitude*0.95: + print ("到达目标高度......") + break + time.sleep(1) +#起飞5m +arm_and_takeoff(5) + +#版本 +print ("固件版本:%s" % vehicle.version) +#全球定位信息 +#经纬和高度 +print ("经度、纬度和飞行高度:%s" % vehicle.location.global_frame) +#经纬和相对高度 +print ("经度、纬度和相对飞行高度:%s" % vehicle.location.global_relative_frame) +#相对home点的位置信息 +print ("相对基地的位置信息:%s" % vehicle.location.local_frame ) +#高度 +print ("无人机高度:%s" % vehicle.attitude) +#速度 +print ("无人机速度:%s" % vehicle.velocity) +#Gps质量 +print ("GPS:%s" % vehicle.gps_0) +#地速 +print ("飞行地速:%s" % vehicle.groundspeed) +#空速 +print ("飞行空速:%s" % vehicle.airspeed) +#云台 +print ("云台状态:%s" % vehicle.gimbal) +#电量 +print ("电量:%s" % vehicle.battery) +#ekf +print ("EKF OK?:%s" % vehicle.ekf_ok) +#心跳 +print ("最近一次检测信号:%s" % vehicle.last_heartbeat) +#超声波或激光 +print ("测距仪:%s" % vehicle.rangefinder) +#距离 +print ("测距仪——距离:%s" % vehicle.rangefinder.distance) +#电压 +print ("测距仪——电压:%s" % vehicle.rangefinder.voltage) +#朝向 +print ("无人机朝向:%s" % vehicle.heading) +#是否可以解锁 +print ("无人机是否解除锁定?:%s" % vehicle.is_armable) +#系统状态 +print ("系统状态:%s" % vehicle.system_status.state) +#飞行模式 +print ("当前飞行模式:%s" % vehicle.mode.name ) +#解锁状态 +print ("无人机解除锁定:%s" % vehicle.armed ) + + +print("飞行任务退出,无人机返回基地......") +vehicle.mode = VehicleMode("LAND") +print("......任务结束......") +vehicle.close() diff --git a/PyScripts_ScriptIntelligentControl/autoFly_pitching_forward_backward_left_right.py b/PyScripts_ScriptIntelligentControl/autoFly_pitching_forward_backward_left_right.py new file mode 100644 index 0000000..6da8b9a --- /dev/null +++ b/PyScripts_ScriptIntelligentControl/autoFly_pitching_forward_backward_left_right.py @@ -0,0 +1,121 @@ +# -*- coding: utf-8 -*- +''' +--------------------------------------------------------------------------- +Intelligent scripting: Simplified operation process, detailed instructions can help flight control better take-off. +控制无人机前后左右升降俯仰 + +--------------------------------------------------------------------------- + +''' + + +from __future__ import print_function +import time +from dronekit import connect, VehicleMode, LocationGlobalRelative +from pymavlink import mavutil + +print(""" + 此脚本可控制无人机前后左右升降俯仰,判断当前环境无人机灵敏性 + + version==1.0 + + /$$ /$$$$$$$$ /$$ + | $$ | $$_____/| $$ + /$$$$$$ /$$ /$$ /$$$$$$ /$$$$$$ | $$ | $$ /$$ /$$ + |____ $$| $$ | $$|_ $$_/ /$$__ $$| $$$$$ | $$| $$ | $$ + /$$$$$$$| $$ | $$ | $$ | $$ \ $$| $$__/ | $$| $$ | $$ + /$$__ $$| $$ | $$ | $$ /$$| $$ | $$| $$ | $$| $$ | $$ +| $$$$$$$| $$$$$$/ | $$$$/| $$$$$$/| $$ | $$| $$$$$$$ + \_______/ \______/ \___/ \______/ |__/ |__/ \____ $$ + /$$ | $$ + | $$$$$$/ + \______/ + + by:wwy +""" + +) + +#连接 +vehicle = connect('127.0.0.1:14551', wait_ready=True) + +#起飞 +def arm_and_takeoff(aTargetAltitude): + + print("起飞前检查......") + while not vehicle.is_armable: + print (" 等待飞机初始化......") + time.sleep(1) + + print ("切换至GUIDED模式......") + vehicle.mode = VehicleMode("GUIDED") + print ("无人机解除锁定...") + vehicle.armed = True + + while not vehicle.armed: + print ("等待解锁......") + time.sleep(1) + print ("起飞!!!......") + vehicle.simple_takeoff(aTargetAltitude) + + while True: + print (" 当前高度: ", vehicle.location.global_relative_frame.alt) + if vehicle.location.global_relative_frame.alt>=aTargetAltitude*0.95: + print ("到达目标高度......") + break + time.sleep(1) + +#前后左右上下移动 +def send_ned_velocity(velocity_x, velocity_y, velocity_z, duration): + """ + Move vehicle in direction based on specified velocity vectors. + """ + msg = vehicle.message_factory.set_position_target_local_ned_encode( + 0, + 0, 0, + mavutil.mavlink.MAV_FRAME_LOCAL_NED, + 0b0000111111000111, + 0, 0, 0, + velocity_x, velocity_y, velocity_z, + 0, 0, 0, + 0, 0) + #循环发送几次 + for x in range(0,duration): + #发送指令 + vehicle.send_mavlink(msg) + time.sleep(1) + +#偏航 +def condition_yaw(heading, relative=False): + if relative: + is_relative=1 + else: + is_relative=0 + msg = vehicle.message_factory.command_long_encode( + 0, 0, + mavutil.mavlink.MAV_CMD_CONDITION_YAW, + 0, + heading, + 0, + 1, + is_relative, + 0, 0, 0) + #发送指令 + vehicle.send_mavlink(msg) + +#起飞 +arm_and_takeoff(10) + +#移动 +send_ned_velocity(5, 5, -2, 1) +time.sleep(3) + +#偏航45 +condition_yaw(45) +time.sleep(3) + +print("设置模式返航...") +vehicle.mode = VehicleMode("RTL") + +print("关闭连接") +vehicle.close() diff --git a/PyScripts_ScriptIntelligentControl/autoFly_test.py b/PyScripts_ScriptIntelligentControl/autoFly_test.py new file mode 100644 index 0000000..9c7f33e --- /dev/null +++ b/PyScripts_ScriptIntelligentControl/autoFly_test.py @@ -0,0 +1,101 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +""" +Intelligent scripting: Simplified operation process, detailed instructions can help flight control better take-off. +But this is just a test file. +""" + +from __future__ import print_function +import time +from dronekit import connect, VehicleMode, LocationGlobalRelative + + +# 通过本地的14551端口,使用UDP连接到SITL模拟器 +connection_string ='127.0.0.1:14550' #'tcp:127.0.0.1:5760' # +print('Connecting to vehicle on: %s' % connection_string) +# connect函数将会返回一个Vehicle类型的对象,即此处的vehicle +# 即可认为是无人机的主体,通过vehicle对象,我们可以直接控制无人机 +vehicle = connect(connection_string, wait_ready=True) + +# 定义arm_and_takeoff函数,使无人机解锁并起飞到目标高度 +# 参数aTargetAltitude即为目标高度,单位为米 +def arm_and_takeoff(aTargetAltitude): + # 进行起飞前检查 + print("Basic pre-arm checks") + # vehicle.is_armable会检查飞控是否启动完成、有无GPS fix、卡曼滤波器 + # 是否初始化完毕。若以上检查通过,则会返回True + while not vehicle.is_armable: + print(" Waiting for vehicle to initialise...") + time.sleep(1) + + # 解锁无人机(电机将开始旋转) + print("Arming motors") + # 将无人机的飞行模式切换成"GUIDED"(一般建议在GUIDED模式下控制无人机) + vehicle.mode = VehicleMode("GUIDED") + # 通过设置vehicle.armed状态变量为True,解锁无人机 + vehicle.armed = True + + # 在无人机起飞之前,确认电机已经解锁 + while not vehicle.armed: + print(" Waiting for arming...") + time.sleep(1) + + # 发送起飞指令 + print("Taking off!") + # simple_takeoff将发送指令,使无人机起飞并上升到目标高度 + vehicle.simple_takeoff(aTargetAltitude) + + # 在无人机上升到目标高度之前,阻塞程序 + while True: + print(" Altitude: ", vehicle.location.global_relative_frame.alt) + # 当高度上升到目标高度的0.95倍时,即认为达到了目标高度,退出循环 + # vehicle.location.global_relative_frame.alt为相对于home点的高度 + if vehicle.location.global_relative_frame.alt >= aTargetAltitude * 0.95: + print("Reached target altitude") + break + # 等待1s + time.sleep(1) + +# 调用上面声明的arm_and_takeoff函数,目标高度10m +arm_and_takeoff(10) + +# 设置在运动时,默认的空速为3m/s +print("Set default/target airspeed to 3") +# vehicle.airspeed变量可读可写,且读、写时的含义不同。 +# 读取时,为无人机的当前空速;写入时,设定无人机在执行航点任务时的默认速度 +vehicle.airspeed = 3 + +# 发送指令,让无人机前往第一个航点 +print("Going towards first point for 30 seconds ...") +# LocationGlobalRelative是一个类,它由经纬度(WGS84)和相对于home点的高度组成 +# 这条语句将创建一个位于南纬35.361354,东经149.165218,相对home点高20m的位置 +point1 = LocationGlobalRelative(-35.361354, 149.165218, 20) + +# simple_goto函数将位置发送给无人机,生成一个目标航点 +vehicle.simple_goto(point1) + +# simple_goto函数只发送指令,不判断有没有到达目标航点 +# 它可以被其他后续指令打断,此处延时30s,即让无人机朝向point1飞行30s +time.sleep(30) + +# 发送指令,让无人机前往第二个航点 +print("Going towards second point for 30 seconds (groundspeed set to 10 m/s) ...") +# 与之前类似,这条语句创建了另一个相对home高20m的点 +point2 = LocationGlobalRelative(-35.363244, 149.168801, 20) + +# simple_goto将目标航点发送给无人机,groundspeed=10设置飞行时的地速为10m/s +vehicle.simple_goto(point2, groundspeed=10) + +# 与之前一样,延时30s +time.sleep(30) + +# 发送"返航"指令 +print("Returning to Launch") +# 返航,只需将无人机的飞行模式切换成"RTL(Return to Launch)" +# 无人机会自动返回home点的正上方,之后自动降落 +vehicle.mode = VehicleMode("RTL") + +# 退出之前,清除vehicle对象 +print("Close vehicle object") +vehicle.close() \ No newline at end of file diff --git a/README.cn.md b/README.cn.md new file mode 100644 index 0000000..c888ead --- /dev/null +++ b/README.cn.md @@ -0,0 +1,256 @@ +# IntelligentUAVPathPlanningSimulationSystemS-Drone![](https://img.shields.io/badge/IntelligentUAVPathPlanningSimulationSystem-Drone-brightgreen)
+Drone智能无人机路径规划仿真系统是一个具有操作控制精细、平台整合性强、全方向模型建立与应用自动化特点的软件。它以A、B两国在C区开展无人机战争为背景,该系统的核心功能是通过仿真平台规划无人机航线,并进行验证输出,数据可导入真实无人机,使其按照规定路线精准抵达战场任一位置,支持多人多设备编队联合行动。
+#### QQ交流群:809473689 +#### 加微信-进入交流群:wwy18795980897 +### [视频简介](https://www.yuque.com/u12074055/kb/qqkaw9) +## 一、主要特点 +![1](https://user-images.githubusercontent.com/39434325/110713673-43615400-823d-11eb-91db-b8151e68e926.jpeg)
+系统以开源无人机仿真平台SITL为支撑,通过FlightGear渲染真实战场环境,集成了动力学模型建模、二维俯视、三维模拟、脚本控制、地面站监控、数据处理等功能,此外,仿真系统支持加载多种全球地图,模拟各大重点地域的三维环境,可应用于全球各处遥感监测的场景中。 +### 1. 软件界面 +![2](https://user-images.githubusercontent.com/39434325/110713684-48260800-823d-11eb-8422-f051c9f1fd0a.png) +### 2. 软件架构(部分扩展功能的插件待实现) +![3](https://user-images.githubusercontent.com/39434325/110713694-4bb98f00-823d-11eb-8fe9-09c591975299.png) +### 3. 代码编写 +![4](https://user-images.githubusercontent.com/39434325/110713702-4f4d1600-823d-11eb-97e8-5f58c69a1aa1.png) +### 4. 多维视图 +#### 二维视图(一) +![5](https://user-images.githubusercontent.com/39434325/110713711-54aa6080-823d-11eb-8c17-ff3f1336b5a4.png) +#### 二维视图(二) +![6](https://user-images.githubusercontent.com/39434325/110713723-5bd16e80-823d-11eb-86ce-29389c362478.png) +#### 三维视图 +![7](https://user-images.githubusercontent.com/39434325/110713736-61c74f80-823d-11eb-883c-b50c7e75486f.png) +### 5. 无人机控制 +#### 控制台控制 +![8](https://user-images.githubusercontent.com/39434325/110713744-668c0380-823d-11eb-8ec7-99b5a509d046.png) +#### 智能控制 +![9](https://user-images.githubusercontent.com/39434325/110713758-6ab82100-823d-11eb-8015-2faff63fef55.png) +#### 地面站控制 +![10](https://user-images.githubusercontent.com/39434325/110713826-891e1c80-823d-11eb-9929-085cbe7d00fc.png) +### 6. 制定飞行任务 +#### 飞行任务(一) +![11](https://user-images.githubusercontent.com/39434325/110713844-90452a80-823d-11eb-9eb7-f2d83f21dd39.png) +#### 飞行任务(二) +![12](https://user-images.githubusercontent.com/39434325/110713854-963b0b80-823d-11eb-9fef-5fd23bde2a9c.png) +#### 飞行任务(三) +![13](https://user-images.githubusercontent.com/39434325/110713868-9cc98300-823d-11eb-9fe1-7e2ce670fb2e.png) +### 7. 路径规划 +路径算法是基于Huiming Zhou的开源算法库(zhm-real/PathPlanning)的再开发,增加了无人机模拟、地理坐标转换、leaflet可视化等元素。 +#### 目录导图
+ + drone_PathPlanning + ├─fence.txt + ├─leaflet_folium_plot.py + ├─mission.waypoints + │ + ├─folium-0.12.1 + │ + ├─leaflet + │ + ├─results + │ + ├─Sampling_based_Planning + │ ├─algorithm_mission_rrt2D + │ │ algorithm_mission_batch_informed_trees.waypoints + │ │ algorithm_mission_dubins_rrt_star.waypoints + │ │ algorithm_mission_dynamic_rrt.waypoints + │ │ algorithm_mission_extended_rrt.waypoints + │ │ algorithm_mission_fast_marching_trees.waypoints + │ │ algorithm_mission_informed_rrt_star.waypoints + │ │ algorithm_mission_rrt.waypoints + │ │ algorithm_mission_rrt_connect.waypoints + │ │ algorithm_mission_rrt_star.waypoints + │ │ algorithm_mission_rrt_star_smart.waypoints + │ │ + │ ├─indoor_obstacle_avoidance_rrt3D + │ │ IOAPath_rrt3D.waypoints + │ │ IOAPath_rrt_star3D.waypoints + │ │ IOA_BIT_star3D.waypoints + │ │ IOA_extend_rrt3D.waypoints + │ │ + │ ├─rrt_2D + │ │ batch_informed_trees.py + │ │ draw.py + │ │ dubins_path.py + │ │ dubins_rrt_star.py + │ │ dynamic_rrt.py + │ │ env.py + │ │ extended_rrt.py + │ │ fast_marching_trees.py + │ │ informed_rrt_star.py + │ │ judge.py + │ │ plotting.py + │ │ queue.py + │ │ rrt.py + │ │ rrt_connect.py + │ │ rrt_star.py + │ │ rrt_star_smart.py + │ │ utils.py + │ │ __init__.py + │ │ + │ ├─rrt_2D_路径优化效果图 + │ │ + │ ├─rrt_3D + │ │ ABIT_star3D.py + │ │ BIT_star3D.py + │ │ dynamic_rrt3D.py + │ │ env3D.py + │ │ extend_rrt3D.py + │ │ FMT_star3D.py + │ │ informed_rrt_star3D.py + │ │ plot_util3D.py + │ │ queueL.py + │ │ rrt3D.py + │ │ rrt_connect3D.py + │ │ rrt_star3D.py + │ │ utils3D.py + │ │ + │ └─rrt_3D_室内避障效果图 + │ + └─Search_based_Planning + ├─algorithm_mission_Search2D + │ algorithm_mission_Anytime_D_star.waypoints + │ algorithm_mission_ARAstar.waypoints + │ algorithm_mission_Astar.waypoints + │ algorithm_mission_Best_First.waypoints + │ algorithm_mission_bfs.waypoints + │ algorithm_mission_Bidirectional_a_star.waypoints + │ algorithm_mission_Bidirectional_dfs.waypoints + │ algorithm_mission_Bidirectional_Dijkstra.waypoints + │ algorithm_mission_Bidirectional_D_star.waypoints + │ algorithm_mission_Bidirectional_D_star_Lite.waypoints + │ algorithm_mission_Bidirectional_LPAstar.waypoints + │ algorithm_mission_Bidirectional_LRTAstar.waypoints + │ algorithm_mission_Bidirectional_RTAAStar.waypoints + │ + ├─indoor_obstacle_avoidance_Search_3D + │ IOA_Anytime_Dstar3D.waypoints + │ IOA_Astar3D.waypoints + │ IOA_bidirectional_Astar3D.waypoints + │ IOA_Dstar3D.waypoints + │ IOA_DstarLite3D.waypoints + │ IOA_LP_Astar3D.waypoints + │ IOA_LRT_Astar3D.waypoints + │ IOA_RTA_Astar3D.waypoints + │ + ├─Search_2D + │ Anytime_D_star.py + │ ARAstar.py + │ Astar.py + │ Best_First.py + │ bfs.py + │ Bidirectional_a_star.py + │ dfs.py + │ Dijkstra.py + │ D_star.py + │ D_star_Lite.py + │ env.py + │ LPAstar.py + │ LRTAstar.py + │ plotting.py + │ queueL.py + │ RTAAStar.py + │ + ├─Search_2D_路径优化效果图 + │ + ├─Search_3D + │ Anytime_Dstar3D.py + │ Astar3D.py + │ bidirectional_Astar3D.py + │ Dstar3D.py + │ DstarLite3D.py + │ env3D.py + │ LP_Astar3D.py + │ LRT_Astar3D.py + │ plot_util3D.py + │ queueL.py + │ RTA_Astar3D.py + │ utils3D.py + │ + └─Search_3D_室内避障效果图 + +### 室外避障 +#### 自定义路线和障碍区域 +![自定义路线与障碍区](https://user-images.githubusercontent.com/39434325/116529533-a7d09380-a90f-11eb-9ad6-6e239d336e0b.PNG) +#### rrt_2D_路径优化效果图 +![rrt_2D_路径优化效果图](https://user-images.githubusercontent.com/39434325/116529610-c171db00-a90f-11eb-9506-8b2d7979d1f1.png) +#### Search_2D_路径优化效果图 +![Search_2D_路径优化效果图](https://user-images.githubusercontent.com/39434325/116529702-cf276080-a90f-11eb-951e-f6e5ccd3f7ab.png)
+ +### 室内避障 +由于室内结构具有空间狭窄,干扰物多的特点,此时路径规划程度更侧重于三维层次的避障效果,地图显得无意义。这里仍然依照Huiming Zhou的开源算法库为模型基础,使用建模的思想创建室内环境,运用Search_based_Planning及Sampling_based_Planning的3D算法对飞行路径进行避障规划。飞行演示如下:
+![IOA_DstarLite3D](https://user-images.githubusercontent.com/39434325/118637888-dd7ae500-b808-11eb-916b-530b1d8393ee.gif) +#### rrt_3D_室内避障效果图 +![rrt_3D_室内避障效果图1](https://user-images.githubusercontent.com/39434325/118637923-e4a1f300-b808-11eb-83f0-5c9137af4a1a.PNG) +#### Search_3D_室内避障效果图 +![Search_3D_室内避障效果图1](https://user-images.githubusercontent.com/39434325/118637946-e966a700-b808-11eb-8006-f21af8f695be.PNG) + +### 路径优化 +增加随机、贪心、路径最优算法聚类,区域路径随机生成、区域路径最短距离优先生成算法对多无人机集群飞行路径进行优化。 +#### 算法生成各无人机飞行情况,经过航点,飞行距离信息 +![路径优化-1](https://user-images.githubusercontent.com/39434325/125012329-9557a080-e09c-11eb-908d-01ae1a72e55d.PNG) +#### 路径优化效果图 +![路径优化效果图片](https://user-images.githubusercontent.com/39434325/125012342-9be61800-e09c-11eb-8c72-672537dfb60c.png) + +## 二、解决问题 + +智能无人机路径规划仿真系统解决了普通无人机无法精准规划路径的问题,且普通无人机不够托底,不便控制,难以运用于实际战争。本软件可以预先为飞行任务设计航线,使用飞行模拟器记录无人机在飞行任务中的实时状态,通过地面站模块强化无人机在体系对抗中的受控度,模拟无人机群联合行动的战术战法,然后输出航行数据供真实无人机使用,将无人机体型短小、行动迅速、资源庞大的优势尽可能的释放出来。 + +## 三、应用场景及效益 + +截止目前,全世界已有40多个国家在从事研究和生产无人机,60多个国家在使用无人机。无人机在战场发挥作用是未来战争的趋势。 + +使用该软件的优点是吸收国外已获得成果,将运行环境从Linux系统重新编译移植到Windows等其他操作系统,除仿真三维环境模块外均使用Python语言编写,程序易维护、易修改。通过Pyqt5编写的软件界面集成了软件各个模块,加入后台提示功能,设计智能控制脚本简化系统使用流程,联动FlightGear模拟器、MissionPlanner地面站程序进行可视化,以提高真实无人机飞行路径精准度、指定飞行计划为根本目的。 + +## 四、扩展
+### 关于多无人机的编队模拟 +windows下使用 SITL 模拟多无人机编队请参照下面文章,注意路径要在ArduCopter/下执行测试命令: +https://blog.csdn.net/jzhd2015/article/details/108987818
+![电风扇的成熟度](https://user-images.githubusercontent.com/39434325/112772851-b94f2300-9065-11eb-8a29-4ac8b08d2c4f.PNG)
+双机编队路径算法测试: +![4326547](https://user-images.githubusercontent.com/39434325/112721732-9aa33c00-8f40-11eb-8fc5-45a0c5cdcd3c.PNG) +可分别规划左侧、右侧四翼无人机飞行路径 +![6464161](https://user-images.githubusercontent.com/39434325/112722145-ac85de80-8f42-11eb-93ec-40d36548bd53.PNG) + +### 关于flylitchi下的航线飞行 +在油管上偶然看到,通过地面站Mission Planner规划航线,保存航点后,可用Excel对其进行编辑,再通过网页端或安卓端Litchi导入修改后的CSV格式的数据,进而实现大疆无人机在Litchi APP上按照航线飞行。
+1.网页版可在flylitchi官网直接编辑(国外网站-需要跳板):https://flylitchi.com/hub
+使用方法十分简单,可见《好知》教程:http://www.howzhi.com/course/13669/lesson/84384
+ +2.安卓手机Litchi 4.7 APP编辑(吾爱破解下载地址):https://www.52pojie.cn/thread-834234-1-1.html
+百度网盘链接: https://pan.baidu.com/s/14qzvBuRIYhr_LhL7BRjd4Q 提取码: w5eu
+内置的双地图,不用下载谷歌应用,让你的御AIR也有航点功能
+Android:Litchi for DJI Mavic / Phantom / Inspire / Spark版本4.7.0
+- 全景模式速度和可靠性改进
+- 全景模式设置改进
+- 修复了在某些设备上更改应用程序语言失败的错误
+ +### Mission planner + Google Earth 日志生成3D轨迹图 +仍需跳板,这里使用谷歌中国卫星地图代替,主要是向地图导入地面站Mission planner或控制台生成的规划路径,以.waypoint或kmz文件为主
+![1111](https://user-images.githubusercontent.com/39434325/112245151-4facce80-8c8b-11eb-9ac9-706a7bb78bc5.PNG) + +其他扩展插件请等待更新.... + + +## 五、感谢
+**CSDN:**
+https://blog.csdn.net/qinguoxiaoziyangyue/article/details/77712064
+https://blog.csdn.net/guojunxiu/article/details/79158843
+https://blog.csdn.net/huihut/article/details/86587782
+https://blog.csdn.net/u010946448/article/details/90718264
+https://blog.csdn.net/jzhd2015/article/details/108987818
+https://blog.csdn.net/jzhd2015/article/details/108663961
+**Zhihu:**
+https://zhuanlan.zhihu.com/p/50900595 +https://zhuanlan.zhihu.com/p/62017292
+**Freesion:**
+https://www.freesion.com/article/2344608320/
+**Gitee:**
+https://gitee.com/wwy2018/XTDrone
+**Github:**
+https://github.com/dhondta/dronesploit
+ +## 项目链接
+简书地址:https://www.jianshu.com/p/b1e6b2efb96f
+Github:https://github.com/wangwei39120157028/IntelligentUAVPathPlanningSimulationSystem-Drone
+Gitee:https://gitee.com/wwy2018/intelligent-uavpath-planning-simulation-system-S
+欢迎star!!! diff --git a/README.md b/README.md new file mode 100644 index 0000000..555af51 --- /dev/null +++ b/README.md @@ -0,0 +1,251 @@ +# IntelligentUAVPathPlanningSimulationSystemS-Drone![](https://img.shields.io/badge/IntelligentUAVPathPlanningSimulationSystem-Drone-brightgreen)
+Drone Intelligent UAV path planning simulation system is a software with fine operation control, strong platform integration, omnidirectional model building and application automation. It takes the UAV war between A and B in Zone C as the background. The core function of the system is to plan the UAV route through the simulation platform and verify the output. The data can be imported into the real UAV to make it accurately arrive at any position in the battlefield according to the specified route and support the joint action of multi-person and multi-device formation. +### [Video Introduction](https://www.yuque.com/u12074055/kb/qqkaw9) +## Main Features +![1](https://user-images.githubusercontent.com/39434325/110713243-8d960580-823c-11eb-9caf-3b7a572d9732.jpeg)
+System supported by open source SITL uav simulation platform, through FlightGear rendering real battlefield environment, integrated modeling, 2 d vertical, three-dimensional dynamic model simulation, script control, ground station monitoring, data processing, and other functions, in addition, the simulation system supports a variety of global map load, simulate the key region of the three dimensional environment, can be used throughout the global remote sensing monitoring in the scene. +### 1. Software Interface +![2](https://user-images.githubusercontent.com/39434325/110713299-a69eb680-823c-11eb-8689-3b634a2a5f91.png) +### 2. Software Architecture (plug-ins to be implemented for some extended functions) +![3](https://user-images.githubusercontent.com/39434325/110713307-ab636a80-823c-11eb-93a0-fc7b6c8434c9.png) +### 3. Code +![4](https://user-images.githubusercontent.com/39434325/110713325-b4543c00-823c-11eb-8535-9cbf0aabecc6.png) +### 4. Multidimensional View +#### Two-dimensional view (1) +![5](https://user-images.githubusercontent.com/39434325/110713334-b9b18680-823c-11eb-95c8-d9ace97e9842.png) +#### Two-dimensional view (2) +![6](https://user-images.githubusercontent.com/39434325/110713350-c209c180-823c-11eb-8284-167268a5533a.png) +#### 3d view +![7](https://user-images.githubusercontent.com/39434325/110713362-c7ffa280-823c-11eb-9d30-d08ae469522f.png) +### 5. UAV Control +#### Console Control +![8](https://user-images.githubusercontent.com/39434325/110713375-cdf58380-823c-11eb-8efd-367f4535d42b.png) +#### Intelligent Control +![9](https://user-images.githubusercontent.com/39434325/110713391-d2ba3780-823c-11eb-882f-a82430b8bc42.png) +#### Ground Station Control +![10](https://user-images.githubusercontent.com/39434325/110713407-da79dc00-823c-11eb-9c8d-5cd2208a6c87.png) +### 6. Set Flight Mission +#### Flight Mission(1) +![11](https://user-images.githubusercontent.com/39434325/110713425-e1a0ea00-823c-11eb-8beb-1d9d7f52724a.png) +#### Flight Mission(2) +![12](https://user-images.githubusercontent.com/39434325/110713442-e9608e80-823c-11eb-86df-85b19b823738.png) +#### Flight Mission(3) +![13](https://user-images.githubusercontent.com/39434325/110713570-1b71f080-823d-11eb-97da-6651e9a00d60.png) +### 7. Path planning +The path algorithm is based on the redevelopment of Huiming Zhou's open source algorithm library (ZHM-Real /PathPlanning), adding elements such as UAV simulation, geographic coordinate conversion, and Leaflet visualization. +#### Directory Structure
+ + drone_PathPlanning + ├─fence.txt + ├─leaflet_folium_plot.py + ├─mission.waypoints + │ + ├─folium-0.12.1 + │ + ├─leaflet + │ + ├─results + │ + ├─Sampling_based_Planning + │ ├─algorithm_mission_rrt2D + │ │ algorithm_mission_batch_informed_trees.waypoints + │ │ algorithm_mission_dubins_rrt_star.waypoints + │ │ algorithm_mission_dynamic_rrt.waypoints + │ │ algorithm_mission_extended_rrt.waypoints + │ │ algorithm_mission_fast_marching_trees.waypoints + │ │ algorithm_mission_informed_rrt_star.waypoints + │ │ algorithm_mission_rrt.waypoints + │ │ algorithm_mission_rrt_connect.waypoints + │ │ algorithm_mission_rrt_star.waypoints + │ │ algorithm_mission_rrt_star_smart.waypoints + │ │ + │ ├─indoor_obstacle_avoidance_rrt3D + │ │ IOAPath_rrt3D.waypoints + │ │ IOAPath_rrt_star3D.waypoints + │ │ IOA_BIT_star3D.waypoints + │ │ IOA_extend_rrt3D.waypoints + │ │ + │ ├─rrt_2D + │ │ batch_informed_trees.py + │ │ draw.py + │ │ dubins_path.py + │ │ dubins_rrt_star.py + │ │ dynamic_rrt.py + │ │ env.py + │ │ extended_rrt.py + │ │ fast_marching_trees.py + │ │ informed_rrt_star.py + │ │ judge.py + │ │ plotting.py + │ │ queue.py + │ │ rrt.py + │ │ rrt_connect.py + │ │ rrt_star.py + │ │ rrt_star_smart.py + │ │ utils.py + │ │ __init__.py + │ │ + │ ├─rrt_2D_路径优化效果图 + │ │ + │ ├─rrt_3D + │ │ ABIT_star3D.py + │ │ BIT_star3D.py + │ │ dynamic_rrt3D.py + │ │ env3D.py + │ │ extend_rrt3D.py + │ │ FMT_star3D.py + │ │ informed_rrt_star3D.py + │ │ plot_util3D.py + │ │ queueL.py + │ │ rrt3D.py + │ │ rrt_connect3D.py + │ │ rrt_star3D.py + │ │ utils3D.py + │ │ + │ └─rrt_3D_室内避障效果图 + │ + └─Search_based_Planning + ├─algorithm_mission_Search2D + │ algorithm_mission_Anytime_D_star.waypoints + │ algorithm_mission_ARAstar.waypoints + │ algorithm_mission_Astar.waypoints + │ algorithm_mission_Best_First.waypoints + │ algorithm_mission_bfs.waypoints + │ algorithm_mission_Bidirectional_a_star.waypoints + │ algorithm_mission_Bidirectional_dfs.waypoints + │ algorithm_mission_Bidirectional_Dijkstra.waypoints + │ algorithm_mission_Bidirectional_D_star.waypoints + │ algorithm_mission_Bidirectional_D_star_Lite.waypoints + │ algorithm_mission_Bidirectional_LPAstar.waypoints + │ algorithm_mission_Bidirectional_LRTAstar.waypoints + │ algorithm_mission_Bidirectional_RTAAStar.waypoints + │ + ├─indoor_obstacle_avoidance_Search_3D + │ IOA_Anytime_Dstar3D.waypoints + │ IOA_Astar3D.waypoints + │ IOA_bidirectional_Astar3D.waypoints + │ IOA_Dstar3D.waypoints + │ IOA_DstarLite3D.waypoints + │ IOA_LP_Astar3D.waypoints + │ IOA_LRT_Astar3D.waypoints + │ IOA_RTA_Astar3D.waypoints + │ + ├─Search_2D + │ Anytime_D_star.py + │ ARAstar.py + │ Astar.py + │ Best_First.py + │ bfs.py + │ Bidirectional_a_star.py + │ dfs.py + │ Dijkstra.py + │ D_star.py + │ D_star_Lite.py + │ env.py + │ LPAstar.py + │ LRTAstar.py + │ plotting.py + │ queueL.py + │ RTAAStar.py + │ + ├─Search_2D_路径优化效果图 + │ + ├─Search_3D + │ Anytime_Dstar3D.py + │ Astar3D.py + │ bidirectional_Astar3D.py + │ Dstar3D.py + │ DstarLite3D.py + │ env3D.py + │ LP_Astar3D.py + │ LRT_Astar3D.py + │ plot_util3D.py + │ queueL.py + │ RTA_Astar3D.py + │ utils3D.py + │ + └─Search_3D_室内避障效果图 + +### Outdoor obstacle avoidance +#### Custom routes and obstacle areas +![自定义路线与障碍区](https://user-images.githubusercontent.com/39434325/116529533-a7d09380-a90f-11eb-9ad6-6e239d336e0b.PNG) +#### rrt_2D Path optimization effect chart +![rrt_2D_路径优化效果图](https://user-images.githubusercontent.com/39434325/116529610-c171db00-a90f-11eb-9506-8b2d7979d1f1.png) +#### Search_2D Path optimization effect chart +![Search_2D_路径优化效果图](https://user-images.githubusercontent.com/39434325/116529702-cf276080-a90f-11eb-951e-f6e5ccd3f7ab.png)
+### Indoor obstacle avoidance +Because the indoor structure has the characteristics of narrow space and many distractions, the path planning degree at this time focuses more on the effect of three-dimensional obstacle avoidance, and the map is meaningless. Based on Huiming Zhou's open source algorithm library, the indoor environment was created using the idea of modeling, and the 3D algorithms of Search_based_Planning and Sampling_based_Planning were used to plan the flight path for obstacle avoidance. The flight demo is as follows:
+![IOA_DstarLite3D](https://user-images.githubusercontent.com/39434325/118637888-dd7ae500-b808-11eb-916b-530b1d8393ee.gif) +#### rrt_3D_Indoor obstacle avoidance renderings +![rrt_3D_室内避障效果图1](https://user-images.githubusercontent.com/39434325/118637923-e4a1f300-b808-11eb-83f0-5c9137af4a1a.PNG) +#### Search_3D_Indoor obstacle avoidance renderings +![Search_3D_室内避障效果图1](https://user-images.githubusercontent.com/39434325/118637946-e966a700-b808-11eb-8006-f21af8f695be.PNG) +### Path optimization +To optimize the flight paths of multiple UAV clusters, we add random, greedy, path optimal algorithm clustering, regional path random generation, regional path shortest distance first generation algorithm. +#### The algorithm generates the flight status of each UAV, the navigation point and the flight distance information +![路径优化-1](https://user-images.githubusercontent.com/39434325/125012016-0ea2c380-e09c-11eb-9f04-5919bb37db61.PNG) +#### Path optimization effect chart +![路径优化效果图片](https://user-images.githubusercontent.com/39434325/125012038-1498a480-e09c-11eb-89dc-5467bebf1824.png) + +## Solve The Problem + +Intelligent UAV path planning simulation system solves the problem that ordinary UAV can not accurately plan the path, and ordinary UAV is not enough support, inconvenient to control, difficult to use in the actual war. This software can be designed for flight mission routes in advance, using a flight simulator unmanned aerial vehicle (uav) in the real-time state of mission, through strengthening unmanned aerial vehicle (uav) in the system against ground station module control, simulation of the unmanned aerial vehicle (uav) group of joint action tactical fighting, sailing and output data for the use of real unmanned aerial vehicle (uav), the uav size short, quick release, huge resource advantage as far as possible. + +## Application Scenarios And Benefits + +Up to now, more than 40 countries are engaged in the research and production of UAVs, and more than 60 countries are using UAVs. The use of drones on the battlefield is the future of warfare. + +The advantage of using this software is that it absorbs the results obtained abroad, recompiles and transplants the operating environment from Linux system to Windows and other operating systems, and uses Python language to write the program except the simulation 3D environment module. The program is easy to maintain and modify. The software interface prepared by PyQT5 integrates each module of the software, adds background prompt function, designs intelligent control scripts to simplify the use process of the system, and integrates FlightGear simulator and MissionPlanner ground station program for visualization, so as to improve the accuracy of real UAV flight path and specify flight plan as the fundamental purpose. + +## EXTENSION
+### On the formation simulation of multi-UAV +Using SITL to simulate multi-UAV formation under Windows, please refer to the following article. Note that the path should be tested under ArduCopter/ :
+https://blog.csdn.net/jzhd2015/article/details/108987818
+![电风扇的成熟度](https://user-images.githubusercontent.com/39434325/112772851-b94f2300-9065-11eb-8a29-4ac8b08d2c4f.PNG)
+Test of two-plane formation path algorithm:
+![4326547](https://user-images.githubusercontent.com/39434325/112721732-9aa33c00-8f40-11eb-8fc5-45a0c5cdcd3c.PNG)
+It can plan the flight path of left wing and right wing UAV respectively:
+![6464161](https://user-images.githubusercontent.com/39434325/112722145-ac85de80-8f42-11eb-93ec-40d36548bd53.PNG)
+ +### About the flight line under Flylitchi +I happened to see it on the oil pipe. After planning the flight route on the ground station Mission Planner and saving the navigation point, I could edit it with Excel, and then import the modified data in CSV format through the webpage or Android Litchi, so as to realize the DJI UAV flying in accordance with the flight route on the Litchi App.
+1.The web version can be edited directly on Flylitchi's website:https://flylitchi.com/hub
+Use method is very simple, visible "good know" tutorial:http://www.howzhi.com/course/13669/lesson/84384
+ +2.Litchi 4.7 APP editor for Android phone:https://www.52pojie.cn/thread-834234-1-1.html
+Baidu network disk link: https://pan.baidu.com/s/14qzvBuRIYhr_LhL7BRjd4Q Extract the code: w5eu
+Built-in dual map, no need to download Google application, so that your Royal Air also has navigation point function.
+Android:Litchi for DJI Mavic / Phantom / Inspire / Spark Version 4.7.0
+- Panoramic mode speed and reliability improvements
+- Panorama mode Settings improved
+- Fixed failure to change the application language on some devices
+ +### Mission Planner + Google Earth log generates 3D trajectory maps +Google China satellite map is used instead. It mainly imports the planned path generated by the Mission Planner or the console of the ground station to the map, with.waypoint or KMZ file as the main file.
+![1111](https://user-images.githubusercontent.com/39434325/112245151-4facce80-8c8b-11eb-9ac9-706a7bb78bc5.PNG) + +Please wait for updates on other extensions.... + +## Gratitude
+**CSDN:**
+https://blog.csdn.net/qinguoxiaoziyangyue/article/details/77712064
+https://blog.csdn.net/guojunxiu/article/details/79158843
+https://blog.csdn.net/huihut/article/details/86587782
+https://blog.csdn.net/u010946448/article/details/90718264
+https://blog.csdn.net/jzhd2015/article/details/108987818
+https://blog.csdn.net/jzhd2015/article/details/108663961
+**Zhihu:**
+https://zhuanlan.zhihu.com/p/50900595 +https://zhuanlan.zhihu.com/p/62017292
+**Freesion:**
+https://www.freesion.com/article/2344608320/
+**Gitee:**
+https://gitee.com/wwy2018/XTDrone
+**Github:**
+https://github.com/dhondta/dronesploit
+ +## Project Link
+JianShu:https://www.jianshu.com/p/b1e6b2efb96f
+Github:https://github.com/wangwei39120157028/IntelligentUAVPathPlanningSimulationSystem-Drone
+Gitee:https://gitee.com/wwy2018/intelligent-uavpath-planning-simulation-system-S
+Welcome To Star!!! diff --git a/SoftwareEnvironmentConfiguration.txt b/SoftwareEnvironmentConfiguration.txt new file mode 100644 index 0000000..337fe93 --- /dev/null +++ b/SoftwareEnvironmentConfiguration.txt @@ -0,0 +1,10 @@ +FlightGear-2018.2.2 +gcc-arm-none-eabi-6-2017-q2-update-win32-sha2 +MAVProxySetup-latest +MissionPlanner-latest +setup-x86_64Cygwin +ǡڵİװȰװ˻·滮ϵͳ_ʹ˵顷 +ٶӣhttps://pan.baidu.com/s/1dBIDc5FwI0xtw_yLlb3Siw ȡ룺d7bc + +ԼPythonл +ٶӣhttps://pan.baidu.com/s/1YMidaCKLpsvem6twfpxaZQ ȡ룺eohb