From 775328e643289efcee9fc4bd86d8972fd1c734ee Mon Sep 17 00:00:00 2001 From: mgrova Date: Wed, 28 Jun 2023 14:42:36 +0300 Subject: [PATCH 1/5] Added server responde when handle POST result --- README.md | 2 +- src/communications/DDHL/RestApiClient.cpp | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 8723bd0..b2b3f98 100644 --- a/README.md +++ b/README.md @@ -78,7 +78,7 @@ cd .. && catkin_make -DCMAKE_BUILD_TYPE=Release * Via the default way of cmake creating a build folder: ``` -git clone https://github.com/fada-catec/piloting_grcs && cd piloting_gcs +git clone https://github.com/fada-catec/piloting_grcs && cd piloting_grcs mkdir build && cd build && cmake .. -DCMAKE_BUILD_TYPE=Release diff --git a/src/communications/DDHL/RestApiClient.cpp b/src/communications/DDHL/RestApiClient.cpp index 594b9e1..9d3c083 100644 --- a/src/communications/DDHL/RestApiClient.cpp +++ b/src/communications/DDHL/RestApiClient.cpp @@ -177,7 +177,8 @@ void RestApiClient::handlePostResult(HttpRequestWorker* worker) QLOG_INFO() << __PRETTY_FUNCTION__ << "Post request response: " << worker->response; if (worker->error_type != QNetworkReply::NoError) { - throw std::runtime_error(worker->error_str.toStdString()); + throw std::runtime_error( + worker->error_str.toStdString() + " | Server Response: " + worker->response.toStdString()); } QJsonParseError* e = nullptr; From d59ba4a05b9ad0c7b1575c65a63507621801acaa Mon Sep 17 00:00:00 2001 From: mgrova Date: Wed, 28 Jun 2023 14:51:20 +0300 Subject: [PATCH 2/5] Reading Inspection Area orientation from quat params instead of repr matrix --- src/communications/DDHL/JSon2DTO.cpp | 26 ++++++-------------------- src/communications/DDHL/JSonKeys.cpp | 21 ++++++++++++--------- src/communications/DDHL/JSonKeys.h | 4 ++-- 3 files changed, 20 insertions(+), 31 deletions(-) diff --git a/src/communications/DDHL/JSon2DTO.cpp b/src/communications/DDHL/JSon2DTO.cpp index 147422f..be10500 100644 --- a/src/communications/DDHL/JSon2DTO.cpp +++ b/src/communications/DDHL/JSon2DTO.cpp @@ -176,34 +176,20 @@ QList JSon2DTO::convertInspectionTaskJsonArrayToList(const QJ inspTaskDTO.getLocationType() = InspectionTaskLocationType::POINT; } else if (QString::compare(readedType, "InspectionArea", Qt::CaseInsensitive) == 0) { inspTaskDTO.getLocationType() = InspectionTaskLocationType::AREA; - _jsonKeys.checkIfValidInspTaskAreaDimensions(inspTaskDimensionsJO); + _jsonKeys.checkIfValidInspTaskAreaParams(inspTaskDimensionsJO); inspTaskDTO.getWidth() = inspTaskDimensionsJO["width"].toDouble(); inspTaskDTO.getDepth() = inspTaskDimensionsJO["depth"].toDouble(); inspTaskDTO.getHeight() = inspTaskDimensionsJO["height"].toDouble(); - const QJsonObject reprJO = inspTaskDimensionsJO["repr"].toObject(); - _jsonKeys.checkKeyExist(reprJO, "matrix"); - - const QJsonArray matrixJA = reprJO["matrix"].toArray(); - if (matrixJA.size() != 16) { - throw std::runtime_error("Invalid repr matrix size"); - } - - /// \note. Column-major order arrived matrix - Eigen::Matrix3f m(3, 3); - m << matrixJA[0].toDouble(), matrixJA[4].toDouble(), matrixJA[8].toDouble(), matrixJA[1].toDouble(), - matrixJA[5].toDouble(), matrixJA[9].toDouble(), matrixJA[2].toDouble(), matrixJA[6].toDouble(), - matrixJA[10].toDouble(); - Eigen::Quaternionf q(m); - inspTaskDTO.getOrientation().getX() = q.x(); - inspTaskDTO.getOrientation().getY() = q.y(); - inspTaskDTO.getOrientation().getZ() = q.z(); - inspTaskDTO.getOrientation().getW() = q.w(); + inspTaskDTO.getOrientation().getW() = inspTaskDimensionsJO["quatW"].toDouble(); + inspTaskDTO.getOrientation().getX() = inspTaskDimensionsJO["quatX"].toDouble(); + inspTaskDTO.getOrientation().getY() = inspTaskDimensionsJO["quatY"].toDouble(); + inspTaskDTO.getOrientation().getZ() = inspTaskDimensionsJO["quatZ"].toDouble(); } else { throw std::runtime_error("Invalid inspection task type readed from DDHL"); } - _jsonKeys.checkIfValidInspTaskPointDimensions(inspTaskDimensionsJO); + _jsonKeys.checkIfValidInspTaskPointParams(inspTaskDimensionsJO); inspTaskDTO.getPosition().getX() = inspTaskDimensionsJO["posX"].toDouble(); inspTaskDTO.getPosition().getY() = inspTaskDimensionsJO["posY"].toDouble(); inspTaskDTO.getPosition().getZ() = inspTaskDimensionsJO["posZ"].toDouble(); diff --git a/src/communications/DDHL/JSonKeys.cpp b/src/communications/DDHL/JSonKeys.cpp index ab1f7ff..b9f305f 100644 --- a/src/communications/DDHL/JSonKeys.cpp +++ b/src/communications/DDHL/JSonKeys.cpp @@ -61,19 +61,22 @@ void JSonKeys::checkIfValidInspTaskLocation(const QJsonObject& inspTaskLocation) checkKeyExist(inspTaskLocation, "Properties"); } -void JSonKeys::checkIfValidInspTaskAreaDimensions(const QJsonObject& inspTaskAreaDimensions) +void JSonKeys::checkIfValidInspTaskAreaParams(const QJsonObject& inspTaskAreaParams) { - checkKeyExist(inspTaskAreaDimensions, "width"); - checkKeyExist(inspTaskAreaDimensions, "depth"); - checkKeyExist(inspTaskAreaDimensions, "height"); - checkKeyExist(inspTaskAreaDimensions, "repr"); + checkKeyExist(inspTaskAreaParams, "width"); + checkKeyExist(inspTaskAreaParams, "depth"); + checkKeyExist(inspTaskAreaParams, "height"); + checkKeyExist(inspTaskAreaParams, "quatW"); + checkKeyExist(inspTaskAreaParams, "quatX"); + checkKeyExist(inspTaskAreaParams, "quatY"); + checkKeyExist(inspTaskAreaParams, "quatZ"); } -void JSonKeys::checkIfValidInspTaskPointDimensions(const QJsonObject& inspTaskPointDimensions) +void JSonKeys::checkIfValidInspTaskPointParams(const QJsonObject& inspTaskPointParams) { - checkKeyExist(inspTaskPointDimensions, "posX"); - checkKeyExist(inspTaskPointDimensions, "posY"); - checkKeyExist(inspTaskPointDimensions, "posZ"); + checkKeyExist(inspTaskPointParams, "posX"); + checkKeyExist(inspTaskPointParams, "posY"); + checkKeyExist(inspTaskPointParams, "posZ"); } void JSonKeys::checkIfValidInspTaskType(const QJsonObject& inspTaskType) diff --git a/src/communications/DDHL/JSonKeys.h b/src/communications/DDHL/JSonKeys.h index 317410e..13fb797 100644 --- a/src/communications/DDHL/JSonKeys.h +++ b/src/communications/DDHL/JSonKeys.h @@ -19,8 +19,8 @@ class JSonKeys : public QObject void checkIfValidInspPlan(const QJsonObject&); void checkIfValidInspTask(const QJsonObject&); void checkIfValidInspTaskLocation(const QJsonObject&); - void checkIfValidInspTaskAreaDimensions(const QJsonObject&); - void checkIfValidInspTaskPointDimensions(const QJsonObject&); + void checkIfValidInspTaskAreaParams(const QJsonObject&); + void checkIfValidInspTaskPointParams(const QJsonObject&); void checkIfValidInspTaskType(const QJsonObject&); void checkIfValidAsset(const QJsonObject&); void checkIfValidSite(const QJsonObject&); From f93f7eb7614658309c18b218f17282abc6fb70c0 Mon Sep 17 00:00:00 2001 From: mgrova Date: Mon, 3 Jul 2023 08:19:56 +0300 Subject: [PATCH 3/5] When move wp using arrows, move selected instead of last one --- src/maps/data_types/tools/QMouseTool.cpp | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/src/maps/data_types/tools/QMouseTool.cpp b/src/maps/data_types/tools/QMouseTool.cpp index c122b46..efcb37d 100644 --- a/src/maps/data_types/tools/QMouseTool.cpp +++ b/src/maps/data_types/tools/QMouseTool.cpp @@ -227,17 +227,24 @@ int QMouseTool::processKeyEvent(QKeyEvent* event, rviz::RenderPanel* panel) return Render; } - if (_mapDTO.getVisibleWaypointsList().isEmpty()) { + /// \note. Get selected waypoint + const auto it = std::find_if( + _mapDTO.getVisibleWaypointsList().cbegin(), + _mapDTO.getVisibleWaypointsList().cend(), + [&](const QSharedPointer wp) { return wp->isSelectedWaypoint(); }); + if (it == _mapDTO.getVisibleWaypointsList().cend()) { + QLOG_WARN() << __PRETTY_FUNCTION__ << " - " + << "Unable to move waypoint. No waypoint selected"; return Render; } - float targetAngle; - const auto waypoint_id = _mapDTO.getVisibleWaypointsList().back()->id(); - auto waypoint_pt = _mapDTO.getVisibleWaypointsList().back()->waypoint().getPosition(); + const auto waypoint_id = (*it)->id(); + const auto waypoint_pt = (*it)->waypoint().getPosition(); Ogre::Vector3 updated_waypoint(waypoint_pt.getX(), waypoint_pt.getY(), waypoint_pt.getZ()); /// \note. To be able to move waypoint using arrow keys, must be pressed Control - int visible = false; + float targetAngle; + int visible = false; if (event->type() == QKeyEvent::KeyPress && event->modifiers() & Qt::ControlModifier) { visible = true; const float movementIncrement = 0.1f; From 86d189b506d8ffd6f2e8644c886c1d0815d7cbd2 Mon Sep 17 00:00:00 2001 From: mgrova Date: Wed, 5 Jul 2023 16:48:08 +0300 Subject: [PATCH 4/5] clean icons and fixed minor bug --- data/icons/cloud-icon.png | Bin 41110 -> 0 bytes data/icons/config-visualiz-icon-2.png | Bin 14985 -> 0 bytes data/icons/config-visualiz-icon.png | Bin 2473 -> 14985 bytes src/gui/MainWindowUi.cpp | 5 +++-- .../widgets/robotAlarms/RobotAlarmsWidget.cpp | 2 +- src/images.qrc | 4 ++-- 6 files changed, 6 insertions(+), 5 deletions(-) delete mode 100644 data/icons/cloud-icon.png delete mode 100644 data/icons/config-visualiz-icon-2.png diff --git a/data/icons/cloud-icon.png b/data/icons/cloud-icon.png deleted file mode 100644 index ebfc5ce32ad6bc3822d396317615bc46831323ad..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 41110 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 H%aH#Cp$H^x diff --git a/data/icons/config-visualiz-icon.png b/data/icons/config-visualiz-icon.png index bccbe6b6b23f59727afaee0dce5571711f31a0a0..14a217ee60a2a2ba5f4bef7afe31ede5f736a0f0 100644 GIT binary patch literal 14985 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 H%aH#Cp$H^x literal 2473 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 diff --git a/src/gui/MainWindowUi.cpp b/src/gui/MainWindowUi.cpp index c85e8bf..3806153 100644 --- a/src/gui/MainWindowUi.cpp +++ b/src/gui/MainWindowUi.cpp @@ -92,11 +92,11 @@ MainWindowUi::MainWindowUi(QWidget* parent) : /// \note LeftDockWidgetArea setTelemetryTreeDock(Qt::LeftDockWidgetArea); setInspectionPlanDock(Qt::LeftDockWidgetArea); + setMissionDock(Qt::LeftDockWidgetArea); /// \note RightDockWidgetArea setRobotAlarmsDock(Qt::RightDockWidgetArea); setRobotControlDock(Qt::RightDockWidgetArea); - setMissionDock(Qt::RightDockWidgetArea); setHighLevelActionsDock(Qt::RightDockWidgetArea); /// \note BottomDockWidgetArea @@ -427,6 +427,8 @@ void MainWindowUi::manageCoreDTO(QSharedPointer idto) _inspectionPlanWidget.setInspectionPlan(dto); _waypointEditorWidget.updateInspectionTaskList(dto->getInspectionTaskList()); + + updateMissionButtons(); } break; } @@ -1163,7 +1165,6 @@ void MainWindowUi::updateMissionButtons() const auto hasRoutes = _guiDTO.getHasRoutes(); const auto isConnected = _guiDTO.getCommsIsConnected(); const auto isEditMode = _ui->editModeAct->isChecked(); - // const auto hasInspPlan = !_guiDTO.getInspectionPlan().getInspectionTaskList().isEmpty(); const auto hasInspPlan = !_guiDTO.getInspectionPlan().getUUID().isEmpty(); _ui->saveCurrWptsListAct->setEnabled(hasInspPlan && hasRoutes); diff --git a/src/gui/widgets/robotAlarms/RobotAlarmsWidget.cpp b/src/gui/widgets/robotAlarms/RobotAlarmsWidget.cpp index ef3452a..8c7ec8c 100644 --- a/src/gui/widgets/robotAlarms/RobotAlarmsWidget.cpp +++ b/src/gui/widgets/robotAlarms/RobotAlarmsWidget.cpp @@ -140,7 +140,7 @@ void RobotAlarmsWidget::update(const AlarmStatusDTO& alarmStatusDTO) const auto current_item = _items[alarmStatusDTO.getIndex()]; if (!current_item) { - QLOG_ERROR() << __PRETTY_FUNCTION__ << "Invalid alarm index to update"; + QLOG_ERROR() << __PRETTY_FUNCTION__ << "Invalid alarm index to update: " << alarmStatusDTO.getIndex(); return; } diff --git a/src/images.qrc b/src/images.qrc index 2b3fafd..7b928d9 100644 --- a/src/images.qrc +++ b/src/images.qrc @@ -4,10 +4,9 @@ ../data/icons/3d-view.png ../data/icons/checkbox-icon.png ../data/icons/checklist.png - ../data/icons/cloud-icon.png ../data/icons/cloud-cut.png ../data/icons/config.png - ../data/icons/config-visualiz-icon-2.png + ../data/icons/config-visualiz-icon.png ../data/icons/connect.png ../data/icons/ddhl-config.png ../data/icons/disconnect.png @@ -52,6 +51,7 @@ ../data/svg/pfd/pfd_hsi_marks.svg ../data/svg/pfd/pfd_mask.svg + ../data/styles/indoor_style.qss ../data/styles/outdoor_style.qss From 0c940e016ce81a409edb4589b94d29d20fc53f9e Mon Sep 17 00:00:00 2001 From: mgrova Date: Wed, 5 Jul 2023 17:11:37 +0300 Subject: [PATCH 5/5] updated versions and changelog --- changelog.txt | 16 ++++++++++++++++ cmake_stuff/versions.cmake | 2 +- package.xml | 2 +- 3 files changed, 18 insertions(+), 2 deletions(-) diff --git a/changelog.txt b/changelog.txt index 4cb2968..ff031d6 100644 --- a/changelog.txt +++ b/changelog.txt @@ -1,3 +1,19 @@ +---------------------------------------------- +-- Changelog for version 1.0.4 (2023-07-05) -- +---------------------------------------------- +The changes of this version are small improvements after the release of the code and a the fix of a bug in the representation of the Inspection Areas. + +* In DDHL, new fields have been added in the Inspection Location properties to define the Inspection Plan orientation in the global + reference frame: quatW, quatX, quatY and quatZ. These fields are read instead of the "repr" matrix to represent the Inspection Area. + +* When using "Ctrl + Arrows Keys" to edit a waypoint manually in route editing mode the last one was moved. Now the one that is selected + in the gRCS is edited. + +* Added server response to the logging message when POST call fails during post-mission data upload. + +---------------------------------------------------------------------------------------------------------------------------------------------- +---------------------------------------------------------------------------------------------------------------------------------------------- + ---------------------------------------------- -- Changelog for version 1.0.3 (2023-05-21) -- ---------------------------------------------- diff --git a/cmake_stuff/versions.cmake b/cmake_stuff/versions.cmake index 3b8f455..6c6ed5c 100644 --- a/cmake_stuff/versions.cmake +++ b/cmake_stuff/versions.cmake @@ -1,4 +1,4 @@ -SET(VERSION "1.0.3") +SET(VERSION "1.0.4") STRING(REGEX MATCHALL "[0-9]" VERSION_PARTS "${VERSION}") LIST(GET VERSION_PARTS 0 VERSION_MAJOR) LIST(GET VERSION_PARTS 1 VERSION_MINOR) diff --git a/package.xml b/package.xml index cab730c..8fff5fa 100644 --- a/package.xml +++ b/package.xml @@ -2,7 +2,7 @@ piloting_grcs - 1.0.3 + 1.0.4 The piloting_grcs package Marco A. Montes Grova