From 8b2788cf48603fde1e7d3e1f5b6176f90ec3a94c Mon Sep 17 00:00:00 2001 From: Martin Scheiber Date: Fri, 25 Nov 2022 10:39:10 +0100 Subject: [PATCH 01/10] [FIX] fixed launch commands an parameters --- CMakeLists.txt | 2 +- config/config_template.yaml | 15 ++++++++++++++ include/utils/logger.h | 26 +++++++++++------------ launch/autonomy.launch | 38 +++++++++++++++++----------------- package.xml | 2 +- src/autonomy_core/autonomy.cpp | 4 ++-- 6 files changed, 51 insertions(+), 36 deletions(-) create mode 100644 config/config_template.yaml diff --git a/CMakeLists.txt b/CMakeLists.txt index 2c9b109..d56de40 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,6 +1,6 @@ cmake_minimum_required(VERSION 3.0.2) -project(autonomy) +project(autonomy_engine) ## Try to compile with newer versions of C++ include(CheckCXXCompilerFlag) diff --git a/config/config_template.yaml b/config/config_template.yaml new file mode 100644 index 0000000..eadcf4b --- /dev/null +++ b/config/config_template.yaml @@ -0,0 +1,15 @@ +missions: + + mission_1: + description: "Template" + filepaths: + - "/home/core/catkin_ws/src/flightstack/flightstack_bringup/trajectories/dh/toland.csv" + entities_actions: + - ["px4_gps", "continue"] + - ["px4_imu", "failure"] + - ["px4_mag", "continue"] + - ["px4_bar", "continue"] + - ["mission_cam", "hold"] + - ["uwb", "hold"] + - ["lrf", "hold"] + - ["optitrack", "land"] diff --git a/include/utils/logger.h b/include/utils/logger.h index f077ca6..c2a3937 100644 --- a/include/utils/logger.h +++ b/include/utils/logger.h @@ -15,7 +15,7 @@ #define PAD 1 -#include +#include #include #include #include @@ -45,11 +45,11 @@ class Logger /** * @brief Publish log message as a ros message and log to file if file logger is initialized */ - inline void publishLog(const autonomy::LogMessage::_type_type& type, const std::string& msg, const std::string& state, + inline void publishLog(const autonomy_engine::LogMessage::_type_type& type, const std::string& msg, const std::string& state, const std::string& next_state) { // setup pub msg - autonomy::LogMessage pub_msg; + autonomy_engine::LogMessage pub_msg; pub_msg.header.stamp = ros::Time::now(); pub_msg.header.seq = pub_seq_++; pub_msg.header.frame_id = "global"; @@ -91,7 +91,7 @@ class Logger console_ui_logger_->set_pattern("%v"); // setup publishers - pub_log_ = nh_.advertise("logger", 1); + pub_log_ = nh_.advertise("logger", 1); } /** @@ -120,7 +120,7 @@ class Logger file_logger_->set_pattern("[%Y-%m-%d %T.%e] | %-0v"); // setup publishers - pub_log_ = nh_.advertise("logger", 1); + pub_log_ = nh_.advertise("logger", 1); } /** @@ -151,7 +151,7 @@ class Logger inline void logStateChange(const std::string& cur_state, const std::string& next_state) { const std::string msg = padRight("[STATE TRANSITION] ", PAD) + "[" + cur_state + "] -> [" + next_state + "]"; - publishLog(autonomy::LogMessage::STATE_CHANGE, msg, cur_state, next_state); + publishLog(autonomy_engine::LogMessage::STATE_CHANGE, msg, cur_state, next_state); } /** @@ -161,7 +161,7 @@ class Logger const std::string& next_state = "") { const std::string msg = padRight("[CALLED SERVICE] ", PAD) + service; - publishLog(autonomy::LogMessage::SERVICE_CALLED, msg, cur_state, next_state); + publishLog(autonomy_engine::LogMessage::SERVICE_CALLED, msg, cur_state, next_state); } /** @@ -171,7 +171,7 @@ class Logger const std::string& next_state = "") { const std::string msg = padRight("[SERVICE: " + service + " RESPONSE] ", PAD) + response; - publishLog(autonomy::LogMessage::SERVICE_RESPONSE, msg, cur_state, next_state); + publishLog(autonomy_engine::LogMessage::SERVICE_RESPONSE, msg, cur_state, next_state); } /** @@ -183,12 +183,12 @@ class Logger if (received) { const std::string msg = padRight("[MESSAGE RECEIVED ON: " + topic + "] ", PAD) + contents; - publishLog(autonomy::LogMessage::MESSAGE_RECEIVED, msg, cur_state, next_state); + publishLog(autonomy_engine::LogMessage::MESSAGE_RECEIVED, msg, cur_state, next_state); } else { const std::string msg = padRight("[MESSAGE SENT ON " + topic + "] ", PAD) + contents; - publishLog(autonomy::LogMessage::MESSAGE_SENT, msg, cur_state, next_state); + publishLog(autonomy_engine::LogMessage::MESSAGE_SENT, msg, cur_state, next_state); } } @@ -198,7 +198,7 @@ class Logger inline void logUserInput(const std::string& cur_state, const std::string& input, const std::string& next_state = "") { const std::string msg = padRight("[USER INPUT] ", PAD) + input; - publishLog(autonomy::LogMessage::USER_INPUT, msg, cur_state, next_state); + publishLog(autonomy_engine::LogMessage::USER_INPUT, msg, cur_state, next_state); } /** @@ -207,7 +207,7 @@ class Logger inline void logUserInterface(const std::string& cur_state, const std::string& ui, const std::string& next_state = "") { const std::string msg = padRight("[USER INTERFACE] ", PAD) + ui; - publishLog(autonomy::LogMessage::USER_INTERFACE, msg, cur_state, next_state); + publishLog(autonomy_engine::LogMessage::USER_INTERFACE, msg, cur_state, next_state); } /** @@ -216,7 +216,7 @@ class Logger inline void logInfo(const std::string& cur_state, const std::string& info, const std::string& next_state = "") { const std::string msg = padRight("[INFO] ", PAD) + info; - publishLog(autonomy::LogMessage::INFO, msg, cur_state, next_state); + publishLog(autonomy_engine::LogMessage::INFO, msg, cur_state, next_state); } /** diff --git a/launch/autonomy.launch b/launch/autonomy.launch index e404859..cfe17a0 100644 --- a/launch/autonomy.launch +++ b/launch/autonomy.launch @@ -2,30 +2,30 @@ - + - - - - - - + + + + + + - + - - - - - - + + + + + + - - - + + + @@ -47,7 +47,7 @@ - + @@ -71,7 +71,7 @@ - + diff --git a/package.xml b/package.xml index b6b6104..e1fa23d 100644 --- a/package.xml +++ b/package.xml @@ -1,6 +1,6 @@ - autonomy + autonomy_engine 1.0.0 The CNS-FLIGHT STACK Autonomy package diff --git a/src/autonomy_core/autonomy.cpp b/src/autonomy_core/autonomy.cpp index 0269905..e3b8629 100644 --- a/src/autonomy_core/autonomy.cpp +++ b/src/autonomy_core/autonomy.cpp @@ -45,10 +45,10 @@ Autonomy::Autonomy(ros::NodeHandle& nh) : logger_(nh), nh_(nh) time_t now = time(nullptr); tm* ltm = localtime(&now); - // Initialize file logger setting filename to yyyy-mm-dd-hh-mm-ss-log + // Initialize file logger setting filename to yyyy-mm-dd-hh-mm-ss.log std::string filename = std::to_string(1900 + ltm->tm_year) + "-" + std::to_string(1 + ltm->tm_mon) + "-" + std::to_string(ltm->tm_mday) + "-" + std::to_string(ltm->tm_hour) + "-" + - std::to_string(ltm->tm_min) + "-" + std::to_string(ltm->tm_sec) + "-" + "log"; + std::to_string(ltm->tm_min) + "-" + std::to_string(ltm->tm_sec) + "." + "log"; logger_.initFileLogger(opts_->logger_filepath + filename); // Print option From d9c4f42a9869eb3b6bb3742ebd17e2b0148f1ac2 Mon Sep 17 00:00:00 2001 From: Martin Scheiber Date: Fri, 25 Nov 2022 10:53:04 +0100 Subject: [PATCH 02/10] [FIX] sigint handler initialization before first cin --- src/autonomy_node.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/autonomy_node.cpp b/src/autonomy_node.cpp index 73b95c0..bf312d0 100644 --- a/src/autonomy_node.cpp +++ b/src/autonomy_node.cpp @@ -48,10 +48,6 @@ int main(int argc, char* argv[]) // Instanciate autonomy autonomy::Autonomy autonomy(nh); - autonomy.logger_.logUI("undefined", ESCAPE(BOLD_ESCAPE, GREEN_ESCAPE), - " >>> Press [ENTER] to start the CNS-FLIGHT Autonomy\n"); - std::cin.ignore(std::numeric_limits::max(), '\n'); - // Sigaction to handle CTRL-C // sigintHandler = std::bind(&autonomy::Autonomy::sigintHandler, &autonomy); sigintHandler = [&autonomy]() { autonomy.sigintHandler(); }; @@ -61,6 +57,10 @@ int main(int argc, char* argv[]) sigIntHandler.sa_flags = 0; sigaction(SIGINT, &sigIntHandler, nullptr); + autonomy.logger_.logUI("undefined", ESCAPE(BOLD_ESCAPE, GREEN_ESCAPE), + " >>> Press [ENTER] to start the CNS-FLIGHT Autonomy\n"); + std::cin.ignore(std::numeric_limits::max(), '\n'); + // Start the autonomy autonomy.startAutonomy(); From 962023b2966eafedae645815b189281cf31c5421 Mon Sep 17 00:00:00 2001 From: Martin Scheiber Date: Fri, 25 Nov 2022 11:20:43 +0100 Subject: [PATCH 03/10] [FEAT] added relative path option for trajectories --- config/config_template.yaml | 4 +++- .../template_dir/template_trajectory.csv | 2 ++ include/autonomy_core/autonomy_options.h | 2 ++ launch/autonomy.launch | 4 +++- src/autonomy_core/autonomy.cpp | 13 +++++++++---- 5 files changed, 19 insertions(+), 6 deletions(-) create mode 100644 config/trajectories/template_dir/template_trajectory.csv diff --git a/config/config_template.yaml b/config/config_template.yaml index eadcf4b..0ce090e 100644 --- a/config/config_template.yaml +++ b/config/config_template.yaml @@ -2,8 +2,10 @@ missions: mission_1: description: "Template" + # filepaths are relative to the `autonomy_engine/trajectory_dir` parameter filepaths: - - "/home/core/catkin_ws/src/flightstack/flightstack_bringup/trajectories/dh/toland.csv" + - "template_dir/template_trajectory.csv" + # for a full list of implemented entities see 'include/autonomy_core/autonomy_defs.h' entities_actions: - ["px4_gps", "continue"] - ["px4_imu", "failure"] diff --git a/config/trajectories/template_dir/template_trajectory.csv b/config/trajectories/template_dir/template_trajectory.csv new file mode 100644 index 0000000..b435b76 --- /dev/null +++ b/config/trajectories/template_dir/template_trajectory.csv @@ -0,0 +1,2 @@ +x,y,z,yaw,holdtime +0,0,1.0,0,10 diff --git a/include/autonomy_core/autonomy_options.h b/include/autonomy_core/autonomy_options.h index bae103f..09eaaab 100644 --- a/include/autonomy_core/autonomy_options.h +++ b/include/autonomy_core/autonomy_options.h @@ -50,6 +50,7 @@ struct autonomyOptions const std::string takeoff_service_name; const std::string estimator_init_service_name; const std::string logger_filepath; + const std::string trajectory_dir; const std::vector inflight_sensor_init_services_name; /// Timeout in milliseconds for watchdog heartbeat @@ -99,6 +100,7 @@ struct autonomyOptions << "LOADED PARAMETERS:\n\n" << " - User Interface: " << getStringfromBool(activate_user_interface) << '\n' << " - Logger filepath: " << logger_filepath << '\n' + << " - Trajectories Directory: " << trajectory_dir << '\n' << " - Watchdog: " << getStringfromBool(activate_watchdog) << '\n' << " - Data recording: " << getStringfromBool(activate_data_recording) << '\n' << " - Estimator init service: " << getStringfromBool(estimator_init_service) << '\n' diff --git a/launch/autonomy.launch b/launch/autonomy.launch index cfe17a0..9852e1c 100644 --- a/launch/autonomy.launch +++ b/launch/autonomy.launch @@ -31,7 +31,8 @@ - + + @@ -80,6 +81,7 @@ + diff --git a/src/autonomy_core/autonomy.cpp b/src/autonomy_core/autonomy.cpp index e3b8629..3b70448 100644 --- a/src/autonomy_core/autonomy.cpp +++ b/src/autonomy_core/autonomy.cpp @@ -184,7 +184,9 @@ void Autonomy::getMissions() if (XRV_filepaths[j].getType() == XmlRpc::XmlRpcValue::TypeString) { // assign filepath - filepaths.emplace_back(std::string(XRV_filepaths[j])); + std::string full_path = std::string(opts_->trajectory_dir) + std::string(XRV_filepaths[j]); + filepaths.emplace_back(opts_->trajectory_dir + std::string(XRV_filepaths[j])); +// filepaths.emplace_back(std::string(XRV_filepaths[j])); } else { @@ -286,6 +288,7 @@ void Autonomy::parseParams() std::string estimator_init_service_name; std::string mission_sequencer_waypoints_topic; std::string logger_filepath; + std::string trajectory_dir; std::string rc_topic; // Define auxilliary variables foreach paramter: std::vector @@ -332,6 +335,7 @@ void Autonomy::parseParams() getParameter(mission_sequencer_response_topic, "mission_sequencer_response_topic"); getParameter(mission_sequencer_waypoints_topic, "mission_sequencer_waypoints_topic"); getParameter(logger_filepath, "logger_filepath"); + getParameter(trajectory_dir, "trajectory_dir"); getParameter(flight_timeout_ms, "maximum_flight_time_min"); getParameter(fix_timeout_ms, "fix_timeout_ms"); getParameter(preflight_fix_timeout_ms, "preflight_fix_timeout_ms"); @@ -423,9 +427,6 @@ void Autonomy::parseParams() // Get aux channels getParameter(landing_aux_channel, "landing_aux_channel"); - // Get missions - getMissions(); - // Make options opts_ = std::make_unique(autonomyOptions({ watchdog_heartbeat_topic, watchdog_status_topic, @@ -441,6 +442,7 @@ void Autonomy::parseParams() takeoff_service_name, estimator_init_service_name, logger_filepath, + trajectory_dir, inflight_sensor_init_services_name, watchdog_timeout_ms, flight_timeout_ms, @@ -460,6 +462,9 @@ void Autonomy::parseParams() sequence_multiple_in_flight, mission_id_no_ui, static_cast(landing_aux_channel) })); + + // Get missions + getMissions(); } bool Autonomy::getSensorStatusFromMsg(const watchdog_msgs::Status& msg, SensorStatus& status) From 3b9c0831d727f25bdd9b1fd071fed861b7940f5c Mon Sep 17 00:00:00 2001 From: Martin Scheiber Date: Fri, 25 Nov 2022 14:46:29 +0100 Subject: [PATCH 04/10] [DOC] documentation cleanup --- .github/ISSUE_TEMPLATE/1_bug_report.yaml | 93 + .github/ISSUE_TEMPLATE/2_feature_request.yaml | 41 + .gitlab/commit_message/gitmessage | 23 - .gitlab/issue_templates/Bug.md | 93 - .gitlab/issue_templates/Documentation.md | 47 - .gitlab/issue_templates/EnhancementRequest.md | 65 - .gitlab/issue_templates/FeatureRequest.md | 62 - .gitlab/issue_templates/Question.md | 45 - .gitlab/issue_templates/Test.md | 68 - .../BugfixIntegration.md | 58 - .../FeatureIntegration.md | 58 - .../HotfixIntegration.md | 59 - .gitlab/merge_request_templates/MainBump.md | 63 - .gitlab/merge_request_templates/Release.md | 60 - README.md | 181 +- docs/resources/state_diagram_autonomy.png | Bin 0 -> 50537 bytes launch/autonomy.launch | 2 +- resources/mission_control_layer.png | Bin 207543 -> 0 bytes resources/mission_control_layer.svg | 1509 ----------------- src/autonomy_core/autonomy.cpp | 11 +- 20 files changed, 281 insertions(+), 2257 deletions(-) create mode 100644 .github/ISSUE_TEMPLATE/1_bug_report.yaml create mode 100644 .github/ISSUE_TEMPLATE/2_feature_request.yaml delete mode 100644 .gitlab/commit_message/gitmessage delete mode 100644 .gitlab/issue_templates/Bug.md delete mode 100644 .gitlab/issue_templates/Documentation.md delete mode 100644 .gitlab/issue_templates/EnhancementRequest.md delete mode 100644 .gitlab/issue_templates/FeatureRequest.md delete mode 100644 .gitlab/issue_templates/Question.md delete mode 100644 .gitlab/issue_templates/Test.md delete mode 100644 .gitlab/merge_request_templates/BugfixIntegration.md delete mode 100644 .gitlab/merge_request_templates/FeatureIntegration.md delete mode 100644 .gitlab/merge_request_templates/HotfixIntegration.md delete mode 100644 .gitlab/merge_request_templates/MainBump.md delete mode 100644 .gitlab/merge_request_templates/Release.md create mode 100755 docs/resources/state_diagram_autonomy.png delete mode 100644 resources/mission_control_layer.png delete mode 100644 resources/mission_control_layer.svg diff --git a/.github/ISSUE_TEMPLATE/1_bug_report.yaml b/.github/ISSUE_TEMPLATE/1_bug_report.yaml new file mode 100644 index 0000000..7e582a6 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/1_bug_report.yaml @@ -0,0 +1,93 @@ +name: Bug Report +description: File a bug report +title: "[Bug]: " +labels: ["bug", "todo"] +assignees: + - AlessandroFornasier + - mascheiber +body: + - type: markdown + attributes: + value: | + Thanks for taking the time to fill out this bug report! + + - type: textarea + id: what-happened + attributes: + label: What happened? + description: Also tell us, what did you expect to happen? + placeholder: Tell us what you see! + validations: + required: true + + - type: checkboxes + id: issue-check + attributes: + label: Is there an existing issue for this? + description: Please search to see if an issue already exists for the bug you encountered. + options: + - label: I have searched the existing issues + required: true + + - type: input + id: os + attributes: + label: Operating System + description: Which operating system are you using? + placeholder: "\"default dockerimage\" or \"Ubuntu 20.04\"" + validations: + required: true + + - type: input + id: hardware + attributes: + label: Hardware + description: Which hardware are you using? + placeholder: "\"RPi4\" or \"Desktop PC\"" + validations: + required: true + + - type: input + id: version + attributes: + label: Flight Stack Version + description: Which version of the flight stack are you using? + placeholder: 1.0.0 + validations: + required: true + + - type: textarea + id: reproduce + attributes: + label: Steps To Reproduce + description: Steps to reproduce the bug behavior. + placeholder: | + 1. Hardware switched on... + 2. Flight Stack started with... + 3. Execute mission... + 4. See error... + validations: + required: false + + - type: textarea + id: logs + attributes: + label: Relevant log output + description: | + Please copy and paste any relevant log output. + + Tip: This will be automatically formatted into code, so no need for backticks. + render: shell + validations: + required: false + + - type: textarea + id: additional + attributes: + label: Additional Information + description: | + Do you have any additional context about the issue you are seeing (links, references)? + + Tip: You can attach images or log files by clicking this area to highlight it and then dragging files in. + validations: + required: false diff --git a/.github/ISSUE_TEMPLATE/2_feature_request.yaml b/.github/ISSUE_TEMPLATE/2_feature_request.yaml new file mode 100644 index 0000000..7a1a9e2 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/2_feature_request.yaml @@ -0,0 +1,41 @@ +name: Feature Request +description: Suggest a new feature for this project +title: "[Feature]: " +labels: ["feature", "request", "todo"] +assignees: + - AlessandroFornasier + - mascheiber +body: + - type: markdown + attributes: + value: | + Thanks for taking the time to fill out this feature request! + + - type: textarea + id: problem + attributes: + label: Problem to solve + description: Summarize the problem this feature should solve precisely. + placeholder: Tell us what you see! + validations: + required: true + + - type: textarea + id: solution + attributes: + label: Desired Solution/Behavior + description: Describe clear and concise what you would like to happen. + placeholder: Tell us what you see! + validations: + required: true + + - type: textarea + id: additional + attributes: + label: Additional Information + description: | + Do you have any additional context about the issue you are seeing (links, references)? Please also provide alternative solutions, if you think of any. + + Tip: You can attach images or log files by clicking this area to highlight it and then dragging files in. + validations: + required: false diff --git a/.gitlab/commit_message/gitmessage b/.gitlab/commit_message/gitmessage deleted file mode 100644 index 8873136..0000000 --- a/.gitlab/commit_message/gitmessage +++ /dev/null @@ -1,23 +0,0 @@ - -# No more than 50 chars. #### 50 chars is here: # -# [TAG] Summary, imperative, start upper case, don't end with a period -# Remember blank line between title and body. - -# Body: Explain *what* and *why* (not *how*). Include task ID (GitLab issue). -# Wrap at 72 chars. ################################## which is here: # - - -# At the end: Include Co-authored-by for all contributors. -# Include at least one empty line before it. Format: -# Co-authored-by: name -# -# How to Write a Git Commit Message: -# https://chris.beams.io/posts/git-commit/ -# -# 1. Separate subject from body with a blank line -# 2. Limit the subject line to 50 characters -# 3. Capitalize the subject line -# 4. Do not end the subject line with a period -# 5. Use the imperative mood in the subject line -# 6. Wrap the body at 72 characters -# 7. Use the body to explain what and why vs. how diff --git a/.gitlab/issue_templates/Bug.md b/.gitlab/issue_templates/Bug.md deleted file mode 100644 index da686a7..0000000 --- a/.gitlab/issue_templates/Bug.md +++ /dev/null @@ -1,93 +0,0 @@ - - -### Summary - - -#### Preliminary checks before bug report -- [ ] Search - - [ ] Searched the internet for related issue (_if solution or similar bug found, please provide links_) - - [ ] Searched issue list for duplicate -- [ ] Hardware - - [ ] Rebooted system - - [ ] Used different hardware of same type -- [ ] Software: - - [ ] Clean recompilation (e.g. ROS: `catkin clean && catkin build`) - -### Bug Details -#### Code Version -- **Branch**: -- **Commit**: - -#### Steps to reproduce - - -1. -2. -3. -4. - -#### What is the current *bug* behavior? - - -#### What is the expected *correct* behavior? - - -#### Relevant logs and/or screenshots - - -### Possible fixes of Workaraound - - ---- - -### Further Details - - -#### Bug Details -##### Hardware Information -| PC | OdroidXU4 | Raspberry PI4 | other (_please specify_) | -|:--:|:---------:|:-------------:|:-------------------------:| -| | | | | - -##### Level of reproduction -| Always | Most times | Every other | Sometimes | Rarely | Once | -|:------:|:----------:|:-----------:|:---------:|:------:|:------:| -| >95% | ~75% | ~50% | ~30% | ~10% | 1 time | -| | | | | | | - -##### Level of severity -| Critical | Workaraound | Minor | -|:--------:|:-----------:|:-----:| -| | | | -| cannot work without fix | have workaround to continue for now | does not impact work (at the moment) | - ---- - -### Maintainer/Developer Information - - -- [ ] Checked and Confirmed Bug - - [ ] Checked for duplicates - - [ ] Performed preliminary checks - - [ ] Checked severity - - [ ] Assigned developer - - [ ] Assigned label ~"todo" -- [ ] Fix - - [ ] Have (developed) fix (_e.g. from reporter_) - - [ ] Implemented fix -- [ ] Testing - - [ ] Assigned test issue - - [ ] Assigned test label ~"test" - - [ ] Tested fix on developer hardware - - [ ] Tested fix on reporter hardware -- [ ] Completion - - [ ] Upon test completion assigned ~"awaiting-merge" and unset ~"test" - -/label ~"bug" -/spend 5m diff --git a/.gitlab/issue_templates/Documentation.md b/.gitlab/issue_templates/Documentation.md deleted file mode 100644 index ec58d2f..0000000 --- a/.gitlab/issue_templates/Documentation.md +++ /dev/null @@ -1,47 +0,0 @@ - - -### Summary - - -### Documentation Goal - - -### Relevant Information - - ---- - -### Further Details - - -#### Documentation Details -##### Documentation Place -| Readme | Submodule | [Intranet/Wiki] | Other (_please specify_) | -|:------:|:---------:|:---------------:|:------------------------:| -| | | | | - ---- - -### Maintainer Information - - -- [ ] Documentation Request Checked - - [ ] Documentation is needed - - [ ] Documentation is requested for the right place (readme vs wiki, etc.) -- [ ] Documentation Written - - [ ] Assigned developer for writing documentation - - [ ] Set label ~"todo" -- [ ] Documentation Checked (__assign different person for this!__) - -/estimate 30m -/spend 5m -/label ~"document" - - -[Intranet/Wiki]: https://intranet.aau.at/display/aauintsycns/Institute+of+Smart+System-Technologies+-+Control+of+Networked+Systems+Startseite diff --git a/.gitlab/issue_templates/EnhancementRequest.md b/.gitlab/issue_templates/EnhancementRequest.md deleted file mode 100644 index d968f03..0000000 --- a/.gitlab/issue_templates/EnhancementRequest.md +++ /dev/null @@ -1,65 +0,0 @@ - - -### Enhancement Requested - - - -### Enhancement Details -#### Intended Users / Usage -(_Intended users or usage for this feature._) - -#### What is the *current* software behavior? - - -#### What is the improved behavior? - - -#### Relevant logs and/or screenshots - - ---- - -### Further Details - - -#### Enhancement Details -##### Hardware Information -| PC | OdroidXU4 | Raspberry PI4 | other (_please specify_) | -|:--:|:---------:|:-------------:|:-------------------------:| -| | | | | - -##### Intended Users -| Programmers | Code Testers | End-Users | Internal Users | External Users | -|:-----------:|:------------:|:---------:|:--------------:|:--------------:| -| | | | | | - ---- - -### Maintainer/Developer Information - - -- [ ] Checked Request - - [ ] Checked title for `request: ...` - - [ ] Checked for duplicates - - [ ] Checked for feasibility - - [ ] Checked for implementation time - - [ ] Checked for improvement gain -- [ ] Acceptance - - [ ] Assigned developer for implementation - - [ ] Changed title to `enhancement: ...` - - [ ] Set label ~"todo" and removed ~"request" -- [ ] Testing - - [ ] Assigned test issue - - [ ] Assigned test label ~"test" - - [ ] Tested enhancement internally -- [ ] Completion - - [ ] Upon test completion assigned ~"awaiting-merge" and unset ~"test" - -/spend 10m -/label ~"enhancement" ~"request" diff --git a/.gitlab/issue_templates/FeatureRequest.md b/.gitlab/issue_templates/FeatureRequest.md deleted file mode 100644 index 26dae75..0000000 --- a/.gitlab/issue_templates/FeatureRequest.md +++ /dev/null @@ -1,62 +0,0 @@ - - -### Problem to solve - - - -### Feature Details -#### What is the *current* software behavior? - - -#### What is the *desired* behavior? - - -#### Relevant logs and/or screenshots - - ---- - -### Further Details - - -#### Feature Details -##### Hardware Information -| PC | OdroidXU4 | Raspberry PI4 | other (_please specify_) | -|:--:|:---------:|:-------------:|:-------------------------:| -| | | | | - -##### Intended Users -| Programmers | Code Testers | End-Users | Internal Users | External Users | -|:-----------:|:------------:|:---------:|:--------------:|:--------------:| -| | | | | | - ---- - -### Maintainer/Developer Information - - -- [ ] Checked Request - - [ ] Checked title for `request: ...` - - [ ] Checked for duplicates - - [ ] Checked for feasibility - - [ ] Checked for implementation time - - [ ] Checked for improvement gain -- [ ] Acceptance - - [ ] Assigned developer for implementation - - [ ] Changed title to `feature: ...` - - [ ] Set label ~"todo" and removed ~"request" -- [ ] Testing - - [ ] Assigned test issue - - [ ] Assigned test label ~"test" - - [ ] Tested feature internally -- [ ] Completion - - [ ] Upon test completion assigned ~"awaiting-merge" and unset ~"test" - -/spend 10m -/label ~"feature" ~"request" diff --git a/.gitlab/issue_templates/Question.md b/.gitlab/issue_templates/Question.md deleted file mode 100644 index 23c5aaf..0000000 --- a/.gitlab/issue_templates/Question.md +++ /dev/null @@ -1,45 +0,0 @@ - - -### Question - - - ---- - -### Further Details - - -#### Question Details -##### Related Persons -| Developers | Maintainers | Reporters | Administration | other (_please specify_) | -|:----------:|:-----------:|:---------:|:--------------:|:-------------------------:| -| | | | | | - -##### Hard-/Software -| Hardware | Software | GitLab | other (_please specify_) | -|:--------:|:--------:|:------:|:-------------------------:| -| | | | | - -##### Level of severity -| Critical | Workaraound | Minor | -|:--------:|:-----------:|:-----:| -| | | | -| cannot work without answer | have workaround to continue for now | does not impact work (at the moment) | - ---- - -### Maintainer/Developer Information - - -- [ ] Checked Question - - [ ] Checked title for `question: ...` - - [ ] Checked for duplicates -- [ ] Assign - - [ ] Assigned developer/maintainer for answering - - [ ] Set label ~"todo" and removed ~"request" -- [ ] Answered - - [ ] Check if reporter marks question as answered (--> close issue) - - [ ] Otherwise reevaluate in 1 month, assign ~reevaluation - -/spend 1m -/label ~"question" diff --git a/.gitlab/issue_templates/Test.md b/.gitlab/issue_templates/Test.md deleted file mode 100644 index 0e17a81..0000000 --- a/.gitlab/issue_templates/Test.md +++ /dev/null @@ -1,68 +0,0 @@ - - -### Test to perform - - - -### Test Details -#### Test Goal - - -#### Relevant Information - - -### Test Results -#### Succeeded Tests - -- ... - -#### Failed Tests - -- ... - ---- - -### Further Details - - -#### Test Details -##### Hardware to perform test on -| PC | OdroidXU4 | Raspberry PI4 | other (_please specify_) | -|:--:|:---------:|:-------------:|:-------------------------:| -| | | | | - -##### Required tests -| 1 | 2 | 3-5 | 5-10 | 10+ | -|:-:|:-:|:---:|:----:|:---:| -| | | | | | - -##### Required success rate -| Always | Most times | Every other | Sometimes | Rarely | Once | -|:------:|:----------:|:-----------:|:---------:|:------:|:------:| -| | | | | | | -| >95% | ~75% | ~50% | ~30% | ~10% | 1 time | - ---- - -### Maintainer/Developer Information - - -- [ ] Test Request Checked - - [ ] Checked if test is needed - - [ ] Checked if all relevant issues for test are given -- [ ] Test Assigning - - [ ] Assigned developer for testing - - [ ] Set label ~"todo" -- [ ] Test - - [ ] Tested all required hardware - - [ ] Tested all required software - - [ ] Documented all failed tests - -/spend 10m -/label ~"test" diff --git a/.gitlab/merge_request_templates/BugfixIntegration.md b/.gitlab/merge_request_templates/BugfixIntegration.md deleted file mode 100644 index a7db872..0000000 --- a/.gitlab/merge_request_templates/BugfixIntegration.md +++ /dev/null @@ -1,58 +0,0 @@ -## (Bugfix Branch) - (Bugfix Name) - - -### What does this MR do? - - -### Related issues - -Closes - -**When performing this merge, please copy the above `Closes #XYZ` line into the merge commit.** - ---- - -### Author's checklist (required) - -- [ ] Ensure that the `WIP:` (work in progress) is present in MR title. - -- If you have *Developer* permissions or higher: - - [ ] Ensure that the releated issues are added. - - [ ] Apply the corresponding DevOps labels (e.g., ~"feature", ~"enhancement", etc.) - - [ ] Assign the a designated Maintainer (Merge Request Handler) and add the ~"todo" label (this should be a different person). - - [ ] Checked the `CHANGELOG.md` to account for all release changes. - -**Do not** add the ~"feature", ~"bug", or ~"enhancement" labels if you are only updating documentation. - ---- - -**This MR follows the AAU CNS MR Guidelines available in the [Intranet](https://intranet.aau.at/display/aauintsycns/GitLab+Manual) and corresponding [GitLab Repository](https://gitlab.aau.at/aau-cns/standard/gitlab_setup).** - ---- - -### Review checklist (for project maintainer/developer) - - -- [ ] Merge Request Review - - [ ] Check if the branches for merging is correct. - - [ ] Checked if all information is given and MR tasks performed. - - [ ] Unset the ~"request" label. -- [ ] Code Review and Test - - [ ] Short review by a maintainer before merging to `develop` - - [ ] Check if all tests have been performed - - If not create test issue for the then merged `develop` branch (to yourself or others) - - Check also if tests on different hardware (ARM) were successful - - [ ] Check if the code still compiles - - [ ] Check if the coding style is kept - - [ ] Set the ~"awaiting-merge" label upon test completion. -- [ ] Merging - - [ ] If there has not been a documentation update, make sure a documentation issue is created to update accordingly. - - [ ] Remove `WIP:` in title upon merge request review completion. - - [ ] Unset the ~"awaiting-merge" label. - - [ ] Performed `--no-ff` merge (_check all tasks before pushing!!!_) - - Copy the above `Closes #XYZ` line into the merge commit. - - -/label ~"request" ~"document" ~"bug" -/spend 10m -/estimate 1h diff --git a/.gitlab/merge_request_templates/FeatureIntegration.md b/.gitlab/merge_request_templates/FeatureIntegration.md deleted file mode 100644 index 14b6a32..0000000 --- a/.gitlab/merge_request_templates/FeatureIntegration.md +++ /dev/null @@ -1,58 +0,0 @@ -## (Feature Branch) - (Feature Name) - - -### What does this MR do? - - -### Related issues - -Closes - -**When performing this merge, please copy the above `Closes #XYZ` line into the merge commit.** - ---- - -### Author's checklist (required) - -- [ ] Ensure that the `WIP:` (work in progress) is present in MR title. - -- If you have *Developer* permissions or higher: - - [ ] Ensure that the releated issues are added. - - [ ] Apply the corresponding DevOps labels (e.g., ~"feature", ~"enhancement", etc.) - - [ ] Assign the a designated Maintainer (Merge Request Handler) and add the ~"todo" label (this should be a different person). - - [ ] Checked the `CHANGELOG.md` to account for all release changes. - -**Do not** add the ~"feature", ~"bug", or ~"enhancement" labels if you are only updating documentation. - ---- - -**This MR follows the AAU CNS MR Guidelines available in the [Intranet](https://intranet.aau.at/display/aauintsycns/GitLab+Manual) and corresponding [GitLab Repository](https://gitlab.aau.at/aau-cns/standard/gitlab_setup).** - ---- - -### Review checklist (for project maintainer/developer) - - -- [ ] Merge Request Review - - [ ] Check if the branches for merging is correct. - - [ ] Checked if all information is given and MR tasks performed. - - [ ] Unset the ~"request" label. -- [ ] Code Review and Test - - [ ] Short review by a maintainer before merging to `develop` - - [ ] Check if all tests have been performed - - If not create test issue for the then merged `develop` branch (to yourself or others) - - Check also if tests on different hardware (ARM) were successful - - [ ] Check if the code still compiles - - [ ] Check if the coding style is kept - - [ ] Set the ~"awaiting-merge" label upon test completion. -- [ ] Merging - - [ ] If there has not been a documentation update, make sure a documentation issue is created to update accordingly. - - [ ] Remove `WIP:` in title upon merge request review completion. - - [ ] Unset the ~"awaiting-merge" label. - - [ ] Performed `--no-ff` merge (_check all tasks before pushing!!!_) - - Copy the above `Closes #XYZ` line into the merge commit. - - -/label ~"request" ~"document" ~"feature" -/spend 10m -/estimate 1h diff --git a/.gitlab/merge_request_templates/HotfixIntegration.md b/.gitlab/merge_request_templates/HotfixIntegration.md deleted file mode 100644 index fdedda4..0000000 --- a/.gitlab/merge_request_templates/HotfixIntegration.md +++ /dev/null @@ -1,59 +0,0 @@ -## (Hotfix Branch) - (Hotfix Name) - - -### What does this MR do? - - -### Related issues - -Closes - -**When performing this merge, please copy the above `Closes #XYZ` line into the merge commit.** - ---- - -### Author's checklist (required) - -- [ ] Ensure that the `WIP:` (work in progress) is present in MR title. - -- If you have *Developer* permissions or higher: - - [ ] Ensure that the releated issues are added. - - [ ] Apply the corresponding DevOps labels (e.g., ~"feature", ~"enhancement", etc.) - - [ ] Assign the a designated Maintainer (Merge Request Handler) and add the ~"todo" label (this should be a different person). - - [ ] Checked the `CHANGELOG.md` to account for all release changes. - -**Do not** add the ~"feature", ~"bug", or ~"enhancement" labels if you are only updating documentation. - ---- - -**This MR follows the AAU CNS MR Guidelines available in the [Intranet](https://intranet.aau.at/display/aauintsycns/GitLab+Manual) and corresponding [GitLab Repository](https://gitlab.aau.at/aau-cns/standard/gitlab_setup).** - ---- - -### Review checklist (for project maintainer/developer) - - -- [ ] Merge Request Review - - [ ] Check if the branches for merging is correct. - - [ ] Checked if all information is given and MR tasks performed. - - [ ] Unset the ~"request" label. -- [ ] Code Review and Test - - [ ] Short review by a maintainer before merging to `develop` - - [ ] Check if all tests have been performed - - If not create test issue for the then merged `develop` branch (to yourself or others) - - Check also if tests on different hardware (ARM) were successful - - [ ] Check if the code still compiles - - [ ] Check if the coding style is kept - - [ ] Set the ~"awaiting-merge" label upon test completion. -- [ ] Merging - - [ ] If there has not been a documentation update, make sure a documentation issue is created to update accordingly. - - [ ] Remove `WIP:` in title upon merge request review completion. - - [ ] Unset the ~"awaiting-merge" label. - - [ ] Performed `--no-ff` merge (_check all tasks before pushing!!!_) - - Copy the above `Closes #XYZ` line into the merge commit. - - -/label ~"request" ~"document" ~"bug" -/spend 10m -/estimate 1h diff --git a/.gitlab/merge_request_templates/MainBump.md b/.gitlab/merge_request_templates/MainBump.md deleted file mode 100644 index 3638ad5..0000000 --- a/.gitlab/merge_request_templates/MainBump.md +++ /dev/null @@ -1,63 +0,0 @@ -## (Pump Version) - (Bump Name) - - -### What does this MR do? - - -### Related issues - -Closes - -**When performing this merge, please copy the above `Closes #XYZ` line into the merge commit.** - ---- - -### Author's checklist (required) - -- [ ] Ensure that the `WIP:` (work in progress) is present in MR title. - -- If you have *Developer* permissions or higher: - - [ ] Ensure that the releated issues are added. - - [ ] Apply the corresponding DevOps labels (e.g., ~"feature", ~"enhancement", etc.) - - [ ] Assign the a designated Maintainer (Merge Request Handler) and ~"todo" label. - - [ ] Checked the `CHANGELOG.md` to account for all release changes. - -**Do not** add the ~"feature", ~"bug", or ~"enhancement" labels if you are only updating documentation. - ---- - -**This MR follows the AAU CNS MR Guidelines available in the [Intranet](https://intranet.aau.at/display/aauintsycns/GitLab+Manual) and corresponding [GitLab Repository](https://gitlab.aau.at/aau-cns/standard/gitlab_setup).** - ---- - -### Review checklist (for project maintainer) - - -- [ ] Merge Request Review - - [ ] Check if the branches for merging is correct. - - [ ] Ensure the patch version is correct. - - [ ] Checked if all information is given and MR tasks performed. - - [ ] Unset the ~"request" label. - -- [ ] Code Review and Test - - [ ] Review by a code reviewer or other selected colleague to confirm accuracy, clarity, and completeness. This can be skipped for minor fixes without substantive content changes. - - [ ] Check if all necessary tests have been performed - - If not assign and complete a test issue (to yourself or others) - - Check also if tests on different hardware (ARM) were successful - - [ ] Check if the code still compiles - - [ ] Check if the coding style is kept - - [ ] Set the ~"awaiting-merge" label upon test completion. - -- [ ] Merging - - [ ] If there has not been a documentation update, make sure a documentation issue is created to update accordingly. - - [ ] Remove `WIP:` in title upon merge request review completion. - - [ ] Unset the ~"awaiting-merge" label. - - [ ] Performed `--no-ff` merge (_check all tasks before pushing!!!_) - - Copy the above `Closes #XYZ` line into the merge commit. - - -/label ~"request" ~"document" -/spend 10m -/estimate 1h diff --git a/.gitlab/merge_request_templates/Release.md b/.gitlab/merge_request_templates/Release.md deleted file mode 100644 index 43a4e8e..0000000 --- a/.gitlab/merge_request_templates/Release.md +++ /dev/null @@ -1,60 +0,0 @@ -## (Release Version) - (Release Name) - - -### What does this MR do? - - -### Related issues - -Closes - -**When performing this merge, please copy the above `Closes #XYZ` line into the merge commit.** - ---- - -### Author's checklist (required) - -- [ ] Ensure that the `WIP:` (work in progress) is present in MR title. - -- If you have *Developer* permissions or higher: - - [ ] Ensure that the releated issues are added. - - [ ] Apply the corresponding DevOps labels (e.g., ~"feature", ~"enhancement", etc.) - - [ ] Assign the a designated Maintainer (Merge Request Handler) and add the ~"todo" label (this must be a different person). - - [ ] Checked the `CHANGELOG.md` to account for all release changes. - -**Do not** add the ~"feature", ~"bug", or ~"enhancement" labels if you are only updating documentation. - ---- - -**This MR follows the AAU CNS MR Guidelines available in the [Intranet](https://intranet.aau.at/display/aauintsycns/GitLab+Manual) and corresponding [GitLab Repository](https://gitlab.aau.at/aau-cns/standard/gitlab_setup).** - ---- - -### Review checklist (for project maintainer) - - -- [ ] Merge Request Review - - [ ] Check if the branches for merging is correct. - - [ ] Ensure the patch version is correct. - - [ ] Checked if all information is given and MR tasks performed. - - [ ] Unset the ~"request" label. - -- [ ] Code Review and Test - - [ ] Review by a code reviewer or other selected colleague to confirm accuracy, clarity, and completeness. This can be skipped for minor fixes without substantive content changes. - - [ ] Check if all necessary tests have been performed - - If not assign and complete a test issue (to yourself or others) - - Check also if tests on different hardware (ARM) were successful - - [ ] Check if the code still compiles - - [ ] Set the ~"awaiting-merge" label upon test completion. - -- [ ] Merging - - [ ] If there has not been a documentation update, make the documentation is updated accordingly. - - [ ] Remove `WIP:` in title upon merge request review completion. - - [ ] Unset the ~"awaiting-merge" label. - - [ ] Performed `--no-ff` merge (_check all tasks before pushing!!!_) - - Copy the above `Closes #XYZ` line into the merge commit. - - -/label ~"request" ~"document" -/spend 10m -/estimate 1h diff --git a/README.md b/README.md index 54126ee..92805bc 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,6 @@ -# CNS-FLIGHT Autonomy +# CNS Flight Stack: Autonomy Engine + +[![License](https://img.shields.io/badge/License-AAUCNS-336B81.svg)](./LICENSE) [![Paper](https://img.shields.io/badge/IEEEXplore-10.1109/LRA.2022.3196117-00629B.svg?logo=ieee)](https://doi.org/10.1109/LRA.2022.3196117) Maintainer: [Alessandro Fornasier](mailto:alessandro.fornasier@aau.at) @@ -15,10 +17,9 @@ Maintainer: [Alessandro Fornasier](mailto:alessandro.fornasier@aau.at) * [Parameter description](#parameter-description) ## Credit -This code was written by the [Control of Networked System (CNS)](https://www.aau.at/en/smart-systems-technologies/control-of-networked-systems/), University of Klagenfurt. +This code was written by the [Control of Networked System (CNS)](https://sst.aau.at/cns), University of Klagenfurt. ## License -[![License](https://img.shields.io/badge/License-AAUCNS-green.svg)](./LICENSE) This software is made available to the public to use (_source-available_), licensed under the terms of the BSD-2-Clause-License with no commercial use allowed, the full terms of which are made available in the `LICENSE` file. No license in patents is granted. ### Usage for academic purposes @@ -26,8 +27,8 @@ If you use this software in an academic research setting, please cite the corresponding paper and consult the `LICENSE` file for a detailed explanation. ```latex -@article{Scheiber2022, - title = {Flight Stack for Reproducible and Customizable Autonomy Applications in Research and Industry}, +@article{cns_flightstack22, + title = {CNS Flight Stack for Reproducible, Customizable, and Fully Autonomous Applications}, author = {Scheiber, Martin and Fornasier, Alessandro and Jung, Roland and Böhm, Christoph and Dhakate, Rohit and Stewart, Christian and Steinbrener, Jan and Weiss, Stephan and Brommer, Christian}, journal = {IEEE Robotics and Automation Letters}, volume = {7}, @@ -39,7 +40,29 @@ corresponding paper and consult the `LICENSE` file for a detailed explanation. } ``` -## Description +--- + +## Getting Started +### Prerequesites +This package is part of the [CNS Flight Stack] and thus depends on the other packages of the flight stack: +- [CNS Flight Stack: Mission Sequencer] +- [CNS Flight Stack: Watchdog] +- [MavROS (CNS Version)] +- [PX4Bridge (CNS Version)] + +Further the following libraries are required +- ROS1 noetic + +### Build + +As this is a ROS package, please build it within the catkin environment with + +```bash +catkin build autonomy_engine +``` +Please make sure the above mentioned dependencies are available in your workspace. + +## Autonomy Engine Description The autonomy engine is responsible for the overall mission operation. After launching the node, the autonomy will prompt the user for a predefined mission sequence. After the user confirmed a selection, the autonomy engine is responsible for the following tasks - Pre-Flight Checks @@ -71,7 +94,7 @@ At any time after the Pre-Flight checks, the WatchDog node can communicate an er ### Interaction with the WatchDog Node -The safety node a.k.a. watchdog is started by the Autonomy via service request. After this, the safety node will open two streams; the status stream which communicates change4s in the status of the various watched sensors, and the action stream which is used by the autonomy engine to communicate actions to be performed to restore the nominal functionalities of a specific sensor. +The safety node a.k.a. watchdog is started by the Autonomy via service request. After this, the safety node will open two streams; the status stream which communicates changes in the status of the various watched sensors, and the action stream which is used by the autonomy engine to communicate actions to be performed to restore the nominal functionalities of a specific sensor. Possible states for the status stream, are: @@ -108,7 +131,7 @@ missions: - ["px4_mag", "hold"] - ["px4_bar", "hold"] - ["mission_cam", "land"] - + mission_2: description: "The last mission of the day" filepaths: @@ -141,39 +164,115 @@ x,y,z,yaw,holdtime The ``holdtime`` column is optional, if not present the holdtime is set to 0 by default. ### Parameter description +The parameters of the launchfile are described here. | Parameter | Description | Default value | | --- | --- | --- | -| config_filepath | Path of the configuration file | "" | -| activate_user_interface | Boolean to activate the UI | True | -| activate_watchdog | Boolean to actiavate the watchdog | False | -| activate_data_recording | Boolean to actiavate data recording | False | -| estimator_init_service | Boolean to actiavate the estimator initialization service| False | -| perform_takeoff_check | Boolean to perform takeoff checks | False | -| perform_estimator_check | Boolean to perform estimator health checks | False | -| activate_landing_detection | Boolean to actiavate landing detection | False | -| inflight_sensors_init_service | Boolean to actiavate inflight sensor initalization | False | -| hover_after_mission_completion | Boolean to actiavate hovering (instead of landing) after mission completion | False | -| sequence_multiple_in_flight | Boolean to sequence multiple mission in flight (without perform landing - preflight checks - takeoff in between missions) | False | -| watchdog_heartbeat_topic | Topic of the watchdog heartbeat message | /watchdog/heartbeat | -| watchdog_status_topic | Topic of the watchdog status message | /watchdog/status | -| watchdog_action_topic | Topic for a watchdog action message | /watchdog/action | -| mission_sequencer_request_topic | Topic for a mission sequencer request message | /missionsequencer/request | -| mission_sequencer_response_topic | Topic of the mission sequencer response message | /missionsequencer/response | -| mission_sequencer_waypoints_topic | Topic to communicate waypoints to the mission sequencer | /missionsequencer/waypoints | -| landing_detection_topic | Topic of the landing detection message | /toland/is_landed | -| watchdog_start_service_name | Service name to start the watchdog | /watchdog/service/start | -| data_recrding_service_name | Service name to start and stop data recording | /datarecording/record | -| takeoff_service_name | Service name to request takeoff checks | /toland/service/takeoff | -| estimator_supervisor_service_name | Service name to request estimator supervision | /estimator_supervisor/supervise | -| estimator_init_service_name | Service name to initialize state estimation | /estimator/init | -| inflight_sensor_init_services_name | Names of services that has to be called after takeoff (Array of service names) | [] | -| watchdog_rate_Hz | Framerate of watchdog heartbeat | 1.0 | -| watchdog_startup_time_s | Time the watchdog will check sensors at initialization (in seconds) | 15 | -| watchdog_heartbeat_timeout_multiplier | multiplier to set the maximum allowed time without receiving watchdog heartbeat | 2.0 | -| maximum_flight_time_min | Maximum allowed flight time (in minutes) | 10 | -| fix_timeout_ms | Maximum time to fix an issue (in milliseconds) | 1500 | -| preflight_fix_timeout_ms | Maximum time to fix an issue in preflight stage (in milliseconds) | 2500 | -| data_recording_delay_after_failure_s | Time to wait before stopping data recording in case of failure (in seconds) | 5 | -| mission_id_no_ui | Mission to be performed in case of no UI | 1 | -| logger_filepath | Path of the logger file | "" | +| `config_filepath` | Path of the configuration file | ` ` | +| `activate_user_interface` | Boolean to activate the UI | `True` | +| `activate_watchdog` | Boolean to actiavate the watchdog | `False` | +| `activate_data_recording` | Boolean to actiavate data recording | `False` | +| `estimator_init_service` | Boolean to actiavate the estimator initialization service| `False` | +| `perform_takeoff_check` | Boolean to perform takeoff checks | `False` | +| `perform_estimator_check` | Boolean to perform estimator health checks | `False` | +| `activate_landing_detection` | Boolean to actiavate landing detection | `False` | +| `inflight_sensors_init_service` | Boolean to actiavate inflight sensor initalization | `False` | +| `hover_after_mission_completion` | Boolean to actiavate hovering (instead of landing) after mission completion | `False` | +| `sequence_multiple_in_flight` | Boolean to sequence multiple mission in flight (without perform landing - preflight checks - takeoff in between missions) | `False` | +| `watchdog_heartbeat_topic` | Topic of the watchdog heartbeat message | `/watchdog/heartbeat` | +| `watchdog_status_topic` | Topic of the watchdog status message | `/watchdog/status` | +| `watchdog_action_topic` | Topic for a watchdog action message | `/watchdog/action` | +| `mission_sequencer_request_topic` | Topic for a mission sequencer request message | `/missionsequencer/request` | +| `mission_sequencer_response_topic` | Topic of the mission sequencer response message | `/missionsequencer/response` | +| `mission_sequencer_waypoints_topic` | Topic to communicate waypoints to the mission sequencer | `/missionsequencer/waypoints` | +| `landing_detection_topic` | Topic of the landing detection message | `/toland/is_landed` | +| `watchdog_start_service_name` | Service name to start the watchdog | `/watchdog/service/start` | +| `data_recrding_service_name` | Service name to start and stop data recording | `/datarecording/record` | +| `takeoff_service_name` | Service name to request takeoff checks | `/toland/service/takeoff` | +| `estimator_supervisor_service_name` | Service name to request estimator supervision | `/estimator_supervisor/supervise` | +| `estimator_init_service_name` | Service name to initialize state estimation | `/estimator/init` | +| `inflight_sensor_init_services_name` | Names of services that has to be called after takeoff (Array of service names) | `[]` | +| `watchdog_rate_Hz` | Framerate of watchdog heartbeat | `1.0` | +| `watchdog_startup_time_s` | Time the watchdog will check sensors at initialization (in seconds) | `15` | +| `watchdog_heartbeat_timeout_multiplier` | multiplier to set the maximum allowed time without receiving watchdog heartbeat | `2.0` | +| `maximum_flight_time_min` | Maximum allowed flight time (in minutes) | `10` | +| `fix_timeout_ms` | Maximum time to fix an issue (in milliseconds) | `1500` | +| `preflight_fix_timeout_ms` | Maximum time to fix an issue in preflight stage (in milliseconds) | `2500` | +| `data_recording_delay_after_failure_s` | Time to wait before stopping data recording in case of failure (in seconds) | `5` | +| `mission_id_no_ui` | Mission to be performed in case of no UI | `1` | +| `logger_filepath` | Path of the logger file | ` ` | +| `trajectory_dir` | Global path to trajectories directory | `/config/trajectories` | + +## Architecture + +Please refer to the [academic paper] for further insights of the Autonomy Engine. + +![autonomy_engine state diagram](./docs/resources/state_diagram_autonomy.png) + +## Known Issues + +None at this point in time, please submit an issue request using the git interface if any issues arise. + +## Package Layout + +```[console] +/path/to/autonomy_engine$ tree -L 3 --noreport --charset unicode +. +|-- CMakeLists.txt +|-- config +| |-- config_template.yaml +| `-- trajectories +| `-- template_dir +|-- docs +| `-- resources +| `-- state_diagram_autonomy.png +|-- include +| |-- autonomy_core +| | |-- autonomy_defs.h +| | |-- autonomy.h +| | |-- autonomy_options.h +| | `-- mission.h +| |-- spdlog +| | `-- ... +| |-- state_machine +| | |-- state.h +| | `-- states +| |-- timer +| | `-- timer.h +| |-- utils +| | |-- colors.h +| | |-- except.h +| | |-- format.h +| | |-- logger.h +| | `-- utilities.h +| `-- waypoints_parser +| `-- waypoints_parser.h +|-- launch +| `-- autonomy.launch +|-- LICENSE +|-- msg +| `-- LogMessage.msg +|-- package.xml +|-- README.md +`-- src + |-- autonomy_core + | |-- autonomy.cpp + | `-- mission.cpp + |-- autonomy_node.cpp + |-- state_machine + | |-- state.cpp + | `-- states + |-- timer + | `-- timer.cpp + `-- waypoints_parser + `-- waypoints_parser.cpp + +``` + + +[CNS Flight Stack]: https://github.com/aau-cns/flight_stack +[CNS Flight Stack: Mission Sequencer]: https://github.com/aau-cns/mission_sequencer +[CNS Flight Stack: Watchdog]: https://github.com/aau-cns/ros_watchdog +[MavROS (CNS Version)]: https://github.com/aau-cns/mavros +[PX4Bridge (CNS Version)]: https://github.com/aau-cns/PX4-Autopilot +[academic paper]: https://ieeexplore.ieee.org/document/9849131 diff --git a/docs/resources/state_diagram_autonomy.png b/docs/resources/state_diagram_autonomy.png new file mode 100755 index 0000000000000000000000000000000000000000..c01a0505a37b7ad053a0e0d7be108acffcc72683 GIT binary patch literal 50537 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 i1b$rPPV#bl5l77NczPe4;SFGCAVpa - + diff --git a/resources/mission_control_layer.png b/resources/mission_control_layer.png deleted file mode 100644 index 747984b59adf04082a3b5dc52b4b0f0ec1035042..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 207543 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

Jj zWyBI&yEV@uGd@J^;Nym%HHAg;AP)a$G}gsc*Id&Z1T7|y13rYdT*vX7D3~1?7tU!d z`;xMs^I4tWo<}kl0vYHqDb~z6@U5!PHSg}ON*$NaX&)976GLjyi&ta}cP+{D%V!w+ z!>Exa@7wS1??~4mtD?>daT>i5cbAP9Q%EG|eZ+%7`YZ&fZ2?i=`rJB?8OLq^f^!Bj zzc&#uXLc+f<$8>-L{piuJpLn%p*PusCr z#AhS0eHoX{K+5PRM}n5*`CHljMb6~N@4167CYVY9eV|cBL)>3K$fz6ex&P)yNy3c^ zG4b(ZA6|b$s60X%iM`L-cxK@V;wx0}dD8-+yZq#|(tVA|?>BsilU z>M|mk$M#)*Yxe5Mm>3O8vdf$bJL`ypN*Uc*6?X0qy*SePL%+Mmv~MC8J1?CivkOUT z=(;z#87jdPIGR-SS0P=QTUiBgQYmdO=<(_U3Rryz6nejZ;>BFy7KXwYEi5V$BcFF@ z0wjE<>C&xEm)=8&@D}xWk$j6R!;f;~{c7h`sPizM^yGf%(l;4md(fd8#ZMg3q6k6p z_ifY~D$MED)_>7z{`k;_VFXh?xaRexb_>{TcOZ2!IUm$J_3^$bLy$^BeNO}J$C>-) zcz*E}_LA?>0(v8a!70O{V`H!I7<@}F;pVyK;)S;h6fQIx4C%KVh0G{F*8Ba%=2inI z)9Jm*y0cw%$1x+wak&~m*j46r6QS)4K+2m{n$J53qVoKmX{6|=sL7aKte|CS>zdWU zXdhv($BH;;G8MRd=JBMd5}&ZMl$?pNx|Jn>8uNwzi{9!b#qo2(N=iyjIu&W~vpjav z@~hgn9@F;nK;6}^H%H9aXSZta6F>agjr}+{IXU_LW53@LQ8Gi4Lz~xZLROQPm$w|v z)}sj9ik0x;-7C+F6}K3>W3X_jcpT!_hz2O7_KJkhr7FGX99`wm9%_Ga>)E>ES=Qt> zq(0l(7m>u9R0h0OpyC&{>}W15njIGka?hSd?$Q-Ah9J6CLm3CW!rkw9^$gg;eA=|V zB!q|A^)$JR-c-H1UVYa!M}_BdnK+Wf(;EgY2c^*N-N8lo3cGq;p z02(`aV0s(!lx2kylg>ZLV^x^CaVtKfIEnZuY59>^v$ zb#rrLzj9T3dmE9$zd`9FAf@!C{ExpTG7^9YfACeN|C$=74SCQ) zSPwRpGpNm~#e%~(s z|K!Jvdt^SM@s%w*avNoB0!fhhX_=2xfs#I5c_;VvcH~ei52Xzskk;nl)^1--=zc(!X*>MSaZy7BCJ z;|7urJ{I37ICAyB-(W)m@p}ZO%6OJiSuA@%KyD bntqXWIUA@et1P=)e8*^lso`;hxtsq7TG=f= diff --git a/resources/mission_control_layer.svg b/resources/mission_control_layer.svg deleted file mode 100644 index e35465d..0000000 --- a/resources/mission_control_layer.svg +++ /dev/null @@ -1,1509 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - Autonomy - - Missionoperation - - Pre-Operation Checks - - - State-Estimation - - - - LandingDetection - - - - SensorsDriver/Node - - - - Mission Planner - - - Takeoff /Land Seq. - - - - - - - Mission Seq. - - - - - Sequencer - - - - - - - Datarecording - Data Merge - - - - - Data Storage - - - - - - - Watchdog - - - - Heart-beat - Error - Log - Take-OffChecks - Take-OffConfirm - - - - - - - - - - - Control - - - - - - - - - - - - - - - - - OperatorInteraction - RuntimeSafety - StateEstimation - Navigationand Control - DataManagement - - Responsibilities - - - - - - - Components and Connections - - Parameter - - - - MissionSelect - - - - Messaging - - - - - - - - - diff --git a/src/autonomy_core/autonomy.cpp b/src/autonomy_core/autonomy.cpp index 3b70448..0c3a0da 100644 --- a/src/autonomy_core/autonomy.cpp +++ b/src/autonomy_core/autonomy.cpp @@ -9,10 +9,11 @@ // // You can contact the author at +#include "autonomy_core/autonomy.h" + #include #include -#include "autonomy_core/autonomy.h" #include "state_machine/states/end_mission.h" #include "state_machine/states/failure.h" #include "state_machine/states/hold.h" @@ -45,9 +46,9 @@ Autonomy::Autonomy(ros::NodeHandle& nh) : logger_(nh), nh_(nh) time_t now = time(nullptr); tm* ltm = localtime(&now); - // Initialize file logger setting filename to yyyy-mm-dd-hh-mm-ss.log - std::string filename = std::to_string(1900 + ltm->tm_year) + "-" + std::to_string(1 + ltm->tm_mon) + "-" + - std::to_string(ltm->tm_mday) + "-" + std::to_string(ltm->tm_hour) + "-" + + // Initialize file logger setting filename to autonomy-yyyy-mm-dd-hh-mm-ss.log + std::string filename = "autonomy-" + std::to_string(1900 + ltm->tm_year) + "-" + std::to_string(1 + ltm->tm_mon) + + "-" + std::to_string(ltm->tm_mday) + "-" + std::to_string(ltm->tm_hour) + "-" + std::to_string(ltm->tm_min) + "-" + std::to_string(ltm->tm_sec) + "." + "log"; logger_.initFileLogger(opts_->logger_filepath + filename); @@ -186,7 +187,7 @@ void Autonomy::getMissions() // assign filepath std::string full_path = std::string(opts_->trajectory_dir) + std::string(XRV_filepaths[j]); filepaths.emplace_back(opts_->trajectory_dir + std::string(XRV_filepaths[j])); -// filepaths.emplace_back(std::string(XRV_filepaths[j])); + // filepaths.emplace_back(std::string(XRV_filepaths[j])); } else { From ebd7b303ede678f0afad33559480f4c284d9c50d Mon Sep 17 00:00:00 2001 From: "Fornasier, Alessandro" Date: Wed, 30 Nov 2022 14:53:21 +0100 Subject: [PATCH 05/10] [MAINT] Removed option for C++20 --- CMakeLists.txt | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index d56de40..15ad47a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -4,12 +4,12 @@ project(autonomy_engine) ## Try to compile with newer versions of C++ include(CheckCXXCompilerFlag) -CHECK_CXX_COMPILER_FLAG("-std=c++20" COMPILER_SUPPORTS_CXX20) +#CHECK_CXX_COMPILER_FLAG("-std=c++20" COMPILER_SUPPORTS_CXX20) CHECK_CXX_COMPILER_FLAG("-std=c++17" COMPILER_SUPPORTS_CXX17) -if(COMPILER_SUPPORTS_CXX20) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++20") - set(CMAKE_CXX_STANDARD 20) -elseif(COMPILER_SUPPORTS_CXX17) +#if(COMPILER_SUPPORTS_CXX20) +# set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++20") +# set(CMAKE_CXX_STANDARD 20) +if(COMPILER_SUPPORTS_CXX17) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++17") set(CMAKE_CXX_STANDARD 17) else() From 5e33034f73498b0fd304ab6ce19e9e64a6f4c73a Mon Sep 17 00:00:00 2001 From: "Fornasier, Alessandro" Date: Wed, 30 Nov 2022 14:53:43 +0100 Subject: [PATCH 06/10] [FIX] Fix bug on termination. When terminating the autonomy was going through the whole logic and continuously failing. The bug is now solved. --- src/autonomy_core/autonomy.cpp | 4 ++++ src/autonomy_node.cpp | 4 ---- src/state_machine/states/initialization.cpp | 14 +++++--------- src/state_machine/states/termination.cpp | 5 +---- 4 files changed, 10 insertions(+), 17 deletions(-) diff --git a/src/autonomy_core/autonomy.cpp b/src/autonomy_core/autonomy.cpp index 0c3a0da..ca93052 100644 --- a/src/autonomy_core/autonomy.cpp +++ b/src/autonomy_core/autonomy.cpp @@ -1576,6 +1576,10 @@ void Autonomy::DataRecording(const bool& start_stop) void Autonomy::startAutonomy() { + logger_.logUI("undefined", ESCAPE(BOLD_ESCAPE, GREEN_ESCAPE), + " >>> Press [ENTER] to start the CNS-FLIGHT Autonomy\n"); + std::cin.clear(); + std::cin.ignore(std::numeric_limits::max(), '\n'); // Mission selection missionSelection(); diff --git a/src/autonomy_node.cpp b/src/autonomy_node.cpp index bf312d0..ceee8e0 100644 --- a/src/autonomy_node.cpp +++ b/src/autonomy_node.cpp @@ -57,10 +57,6 @@ int main(int argc, char* argv[]) sigIntHandler.sa_flags = 0; sigaction(SIGINT, &sigIntHandler, nullptr); - autonomy.logger_.logUI("undefined", ESCAPE(BOLD_ESCAPE, GREEN_ESCAPE), - " >>> Press [ENTER] to start the CNS-FLIGHT Autonomy\n"); - std::cin.ignore(std::numeric_limits::max(), '\n'); - // Start the autonomy autonomy.startAutonomy(); diff --git a/src/state_machine/states/initialization.cpp b/src/state_machine/states/initialization.cpp index ef251c3..e6fdfb9 100644 --- a/src/state_machine/states/initialization.cpp +++ b/src/state_machine/states/initialization.cpp @@ -28,23 +28,19 @@ void Initialization::onEntry(Autonomy& autonomy) // print info autonomy.logger_.logUI(getStringFromState(), ESCAPE(BOLD_ESCAPE, GREEN_ESCAPE), formatStateEntry("INITIALIZATION")); - // Perform initialization of the watchdog + // Perform initialization of the watchdog and RC aux registration if (autonomy.opts_->activate_watchdog) { - if (!autonomy.startWatchdog()) + if (!(autonomy.startWatchdog() && autonomy.registerRCAux())) { autonomy.stateTransition("failure"); } } - - // Perform registration of RC aux - if (!autonomy.registerRCAux()) + else { - autonomy.stateTransition("failure"); + // Transition to nominal + autonomy.stateTransition("nominal"); } - - // Transition to nominal - autonomy.stateTransition("nominal"); } void Initialization::onExit(Autonomy&) diff --git a/src/state_machine/states/termination.cpp b/src/state_machine/states/termination.cpp index d07db36..ac0d748 100644 --- a/src/state_machine/states/termination.cpp +++ b/src/state_machine/states/termination.cpp @@ -65,11 +65,8 @@ void Termination::onEntry(Autonomy& autonomy) autonomy.sub_landing_detection_.shutdown(); autonomy.sub_mission_sequencer_response_.shutdown(); - // Wait - std::this_thread::sleep_for(std::chrono::seconds(1)); - // Shoutdown - autonomy.nh_.shutdown(); + ros::shutdown(); } void Termination::onExit(Autonomy&) From d957c0fc98ff7baecd73fcd9ac3d475b96f59704 Mon Sep 17 00:00:00 2001 From: Martin Scheiber Date: Fri, 2 Dec 2022 13:25:48 +0100 Subject: [PATCH 07/10] [FIX] leading zeros in logfilename --- src/autonomy_core/autonomy.cpp | 28 ++++++++++++++++++---------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/src/autonomy_core/autonomy.cpp b/src/autonomy_core/autonomy.cpp index ca93052..652427a 100644 --- a/src/autonomy_core/autonomy.cpp +++ b/src/autonomy_core/autonomy.cpp @@ -12,7 +12,9 @@ #include "autonomy_core/autonomy.h" #include +#include #include +#include #include "state_machine/states/end_mission.h" #include "state_machine/states/failure.h" @@ -36,21 +38,27 @@ Autonomy::Autonomy(ros::NodeHandle& nh) : logger_(nh), nh_(nh) // Setting state to UNDEFINED state_ = &Undefined::Instance(); - // Init message - logger_.logUI(state_->getStringFromState(), ESCAPE(BOLD_ESCAPE, GREEN_ESCAPE), formatInitMsg()); - - // Parse parameters and options - parseParams(); - // Get actual time time_t now = time(nullptr); tm* ltm = localtime(&now); + // Parse parameters and options + parseParams(); + // Initialize file logger setting filename to autonomy-yyyy-mm-dd-hh-mm-ss.log - std::string filename = "autonomy-" + std::to_string(1900 + ltm->tm_year) + "-" + std::to_string(1 + ltm->tm_mon) + - "-" + std::to_string(ltm->tm_mday) + "-" + std::to_string(ltm->tm_hour) + "-" + - std::to_string(ltm->tm_min) + "-" + std::to_string(ltm->tm_sec) + "." + "log"; - logger_.initFileLogger(opts_->logger_filepath + filename); + // std::string filename = "autonomy-" + std::to_string(1900 + ltm->tm_year) + "-" + std::to_string(1 + ltm->tm_mon) + + // "-" + std::to_string(ltm->tm_mday) + "-" + std::to_string(ltm->tm_hour) + "-" + + // std::to_string(ltm->tm_min) + "-" + std::to_string(ltm->tm_sec) + "." + "log"; + // logger_.initFileLogger(opts_->logger_filepath + filename); + std::ostringstream ss; + ss << "autonomy-" << std::setw(4) << std::setfill('0') << (1900 + ltm->tm_year) << "-" << std::setw(2) + << std::setfill('0') << int(1 + ltm->tm_mon) << "-" << std::setw(2) << std::setfill('0') << int(ltm->tm_mday) + << "-" << std::setw(2) << std::setfill('0') << int(ltm->tm_hour) << "-" + << std::setw(2) << std::setfill('0') << int(ltm->tm_min) << "-" << int(ltm->tm_sec) << ".log"; + logger_.initFileLogger(std::string(opts_->logger_filepath) + ss.str()); + + // Init message + logger_.logUI(state_->getStringFromState(), ESCAPE(BOLD_ESCAPE, GREEN_ESCAPE), formatInitMsg()); // Print option logger_.logUI(state_->getStringFromState(), ESCAPE(BOLD_ESCAPE, YELLOW_ESCAPE), opts_->printAutonomyOptions()); From 891947603816f888bdc40a60d2f7b83e627d6beb Mon Sep 17 00:00:00 2001 From: Martin Scheiber Date: Wed, 7 Dec 2022 09:25:03 +0100 Subject: [PATCH 08/10] [FIX] Transition fix in initialization to nominal --- src/state_machine/states/initialization.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/state_machine/states/initialization.cpp b/src/state_machine/states/initialization.cpp index e6fdfb9..624cbd0 100644 --- a/src/state_machine/states/initialization.cpp +++ b/src/state_machine/states/initialization.cpp @@ -35,6 +35,11 @@ void Initialization::onEntry(Autonomy& autonomy) { autonomy.stateTransition("failure"); } + else + { + // Transition to nominal + autonomy.stateTransition("nominal"); + } } else { From b8019753f0bd3f9dfc2f29d761fcf310d7ea18a4 Mon Sep 17 00:00:00 2001 From: "Fornasier, Alessandro" Date: Wed, 4 Jan 2023 10:54:00 +0100 Subject: [PATCH 09/10] =?UTF-8?q?[FIX]=20Fixed=20leading=20zeros=20in=20lo?= =?UTF-8?q?gfile.=20=E2=80=98Fixes=20#4=E2=80=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fixed with commit d957c0fc98ff7baecd73fcd9ac3d475b96f59704 --- src/autonomy_core/autonomy.cpp | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/src/autonomy_core/autonomy.cpp b/src/autonomy_core/autonomy.cpp index 652427a..52f5532 100644 --- a/src/autonomy_core/autonomy.cpp +++ b/src/autonomy_core/autonomy.cpp @@ -45,16 +45,11 @@ Autonomy::Autonomy(ros::NodeHandle& nh) : logger_(nh), nh_(nh) // Parse parameters and options parseParams(); - // Initialize file logger setting filename to autonomy-yyyy-mm-dd-hh-mm-ss.log - // std::string filename = "autonomy-" + std::to_string(1900 + ltm->tm_year) + "-" + std::to_string(1 + ltm->tm_mon) + - // "-" + std::to_string(ltm->tm_mday) + "-" + std::to_string(ltm->tm_hour) + "-" + - // std::to_string(ltm->tm_min) + "-" + std::to_string(ltm->tm_sec) + "." + "log"; - // logger_.initFileLogger(opts_->logger_filepath + filename); std::ostringstream ss; ss << "autonomy-" << std::setw(4) << std::setfill('0') << (1900 + ltm->tm_year) << "-" << std::setw(2) << std::setfill('0') << int(1 + ltm->tm_mon) << "-" << std::setw(2) << std::setfill('0') << int(ltm->tm_mday) - << "-" << std::setw(2) << std::setfill('0') << int(ltm->tm_hour) << "-" - << std::setw(2) << std::setfill('0') << int(ltm->tm_min) << "-" << int(ltm->tm_sec) << ".log"; + << "-" << std::setw(2) << std::setfill('0') << int(ltm->tm_hour) << "-" << std::setw(2) << std::setfill('0') + << int(ltm->tm_min) << "-" << int(ltm->tm_sec) << ".log"; logger_.initFileLogger(std::string(opts_->logger_filepath) + ss.str()); // Init message From 621de5e638b080166a2f424069e8a598c353de2f Mon Sep 17 00:00:00 2001 From: "Fornasier, Alessandro" Date: Wed, 4 Jan 2023 11:02:11 +0100 Subject: [PATCH 10/10] =?UTF-8?q?[FIX]=20Fixed=20missing=20transition=20to?= =?UTF-8?q?=20nominal=20from=20initialization.=20=E2=80=98Fixes=20#1?= =?UTF-8?q?=E2=80=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/state_machine/states/initialization.cpp | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/state_machine/states/initialization.cpp b/src/state_machine/states/initialization.cpp index 624cbd0..c20b0c5 100644 --- a/src/state_machine/states/initialization.cpp +++ b/src/state_machine/states/initialization.cpp @@ -37,14 +37,20 @@ void Initialization::onEntry(Autonomy& autonomy) } else { - // Transition to nominal autonomy.stateTransition("nominal"); } } else { - // Transition to nominal - autonomy.stateTransition("nominal"); + if (!autonomy.registerRCAux()) + { + autonomy.stateTransition("failure"); + } + else + { + // Transition to nominal + autonomy.stateTransition("nominal"); + } } }