From 0b851a10447645724c9a10ede8605947b587b056 Mon Sep 17 00:00:00 2001 From: Tomas Baca Date: Fri, 3 Nov 2023 11:58:39 +0100 Subject: [PATCH] restructured the repository --- README.md | 16 +- controller_plugin/README.md | 3 - cpp/README.md | 1 + .../controller_plugin}/CMakeLists.txt | 0 cpp/controller_plugin/README.md | 9 + .../cfg/example_controller.cfg | 0 .../config/example_controller.yaml | 0 .../controller_plugin}/include/pid.hpp | 0 .../controller_plugin}/package.xml | 0 .../controller_plugin}/plugins.xml | 0 .../src/example_controller.cpp | 0 .../tmux/config/custom_config.yaml | 0 .../tmux/config/hw_api.yaml | 0 .../tmux/config/network_config.yaml | 0 .../tmux/config/simulator.yaml | 0 .../tmux/config/world_config.yaml | 0 .../controller_plugin}/tmux/layout.json | 0 .../controller_plugin}/tmux/session.yml | 0 .../controller_plugin}/tmux/start.sh | 0 .../pluginlib_example}/README.md | 0 .../example_plugin_manager/CMakeLists.txt | 0 .../config/example_plugin_manager.yaml | 0 .../config/plugins.yaml | 0 .../example_plugin_manager/common_handlers.h | 0 .../example_plugin_manager/plugin_interface.h | 0 .../launch/example_plugin_manager.launch | 0 .../example_plugin_manager/nodelets.xml | 0 .../example_plugin_manager/package.xml | 0 .../src/example_plugin_manager.cpp | 0 .../example_plugins/CMakeLists.txt | 0 .../config/example_plugin.yaml | 0 .../example_plugins/package.xml | 0 .../example_plugins/plugins.xml | 0 .../example_plugins/src/example_plugin.cpp | 0 .../tracker_plugin}/CMakeLists.txt | 0 cpp/tracker_plugin/README.md | 9 + .../tracker_plugin}/cfg/example_tracker.cfg | 0 .../config/example_tracker.yaml | 0 .../tracker_plugin}/include/.gitkeep | 0 .../tracker_plugin}/package.xml | 0 .../tracker_plugin}/plugins.xml | 0 .../tracker_plugin}/src/example_tracker.cpp | 0 .../tmux/config/custom_config.yaml | 0 .../tracker_plugin}/tmux/config/hw_api.yaml | 0 .../tmux/config/network_config.yaml | 0 .../tmux/config/simulator.yaml | 0 .../tmux/config/world_config.yaml | 0 .../tracker_plugin}/tmux/layout.json | 0 .../tracker_plugin}/tmux/session.yml | 0 .../tracker_plugin}/tmux/start.sh | 0 .../waypoint_flier}/CMakeLists.txt | 0 .../waypoint_flier}/README.md | 8 + .../waypoint_flier}/config/dynparam.cfg | 0 .../config/waypoint_flier.yaml | 0 .../launch/waypoint_flier.launch | 0 .../waypoint_flier}/nodelets.xml | 0 .../waypoint_flier}/package.xml | 0 .../waypoint_flier}/src/waypoint_flier.cpp | 0 .../tmux/config/automatic_start.yaml | 0 .../tmux/config/custom_config.yaml | 0 .../waypoint_flier}/tmux/config/hw_api.yaml | 0 .../tmux/config/network_config.yaml | 0 .../tmux/config/simulator.yaml | 0 .../tmux/config/world_config.yaml | 0 .../waypoint_flier}/tmux/kill.sh | 0 .../waypoint_flier}/tmux/layout.json | 0 .../waypoint_flier}/tmux/session.yml | 0 .../waypoint_flier}/tmux/start.sh | 0 .../waypoint_flier_simple}/CMakeLists.txt | 0 .../waypoint_flier_simple}/README.md | 8 + .../config/waypoint_flier.yaml | 0 .../launch/waypoint_flier_simple.launch | 0 .../waypoint_flier_simple}/nodelets.xml | 0 .../waypoint_flier_simple}/package.xml | 0 .../src/waypoint_flier_simple.cpp | 0 .../tmux/config/automatic_start.yaml | 0 .../tmux/config/custom_config.yaml | 0 .../tmux/config/hw_api.yaml | 0 .../tmux/config/network_config.yaml | 0 .../tmux/config/simulator.yaml | 0 .../tmux/config/world_config.yaml | 0 .../waypoint_flier_simple}/tmux/kill.sh | 0 .../waypoint_flier_simple}/tmux/layout.json | 0 .../waypoint_flier_simple}/tmux/session.yml | 0 .../waypoint_flier_simple}/tmux/start.sh | 0 python/README.md | 1 + python/sweeping_generator/CMakeLists.txt | 36 ++++ python/sweeping_generator/README.md | 12 ++ .../config/sweeping_generator.yaml | 13 ++ .../launch/sweeping_generator.launch | 24 +++ python/sweeping_generator/package.xml | 21 +++ .../scripts/sweeping_generator.py | 167 ++++++++++++++++++ .../tmux/config/automatic_start.yaml | 5 + .../tmux/config/custom_config.yaml | 39 ++++ .../tmux/config/hw_api.yaml | 28 +++ .../tmux/config/network_config.yaml | 20 +++ .../tmux/config/simulator.yaml | 20 +++ .../tmux/config/world_config.yaml | 34 ++++ python/sweeping_generator/tmux/kill.sh | 14 ++ python/sweeping_generator/tmux/layout.json | 50 ++++++ python/sweeping_generator/tmux/session.yml | 54 ++++++ python/sweeping_generator/tmux/start.sh | 27 +++ tracker_plugin/README.md | 3 - 103 files changed, 611 insertions(+), 11 deletions(-) delete mode 100644 controller_plugin/README.md create mode 100644 cpp/README.md rename {controller_plugin => cpp/controller_plugin}/CMakeLists.txt (100%) create mode 100644 cpp/controller_plugin/README.md rename {controller_plugin => cpp/controller_plugin}/cfg/example_controller.cfg (100%) rename {controller_plugin => cpp/controller_plugin}/config/example_controller.yaml (100%) rename {controller_plugin => cpp/controller_plugin}/include/pid.hpp (100%) rename {controller_plugin => cpp/controller_plugin}/package.xml (100%) rename {controller_plugin => cpp/controller_plugin}/plugins.xml (100%) rename {controller_plugin => cpp/controller_plugin}/src/example_controller.cpp (100%) rename {controller_plugin => cpp/controller_plugin}/tmux/config/custom_config.yaml (100%) rename {controller_plugin => cpp/controller_plugin}/tmux/config/hw_api.yaml (100%) rename {controller_plugin => cpp/controller_plugin}/tmux/config/network_config.yaml (100%) rename {controller_plugin => cpp/controller_plugin}/tmux/config/simulator.yaml (100%) rename {controller_plugin => cpp/controller_plugin}/tmux/config/world_config.yaml (100%) rename {controller_plugin => cpp/controller_plugin}/tmux/layout.json (100%) rename {controller_plugin => cpp/controller_plugin}/tmux/session.yml (100%) rename {controller_plugin => cpp/controller_plugin}/tmux/start.sh (100%) rename {pluginlib_example => cpp/pluginlib_example}/README.md (100%) rename {pluginlib_example => cpp/pluginlib_example}/example_plugin_manager/CMakeLists.txt (100%) rename {pluginlib_example => cpp/pluginlib_example}/example_plugin_manager/config/example_plugin_manager.yaml (100%) rename {pluginlib_example => cpp/pluginlib_example}/example_plugin_manager/config/plugins.yaml (100%) rename {pluginlib_example => cpp/pluginlib_example}/example_plugin_manager/include/example_plugin_manager/common_handlers.h (100%) rename {pluginlib_example => cpp/pluginlib_example}/example_plugin_manager/include/example_plugin_manager/plugin_interface.h (100%) rename {pluginlib_example => cpp/pluginlib_example}/example_plugin_manager/launch/example_plugin_manager.launch (100%) rename {pluginlib_example => cpp/pluginlib_example}/example_plugin_manager/nodelets.xml (100%) rename {pluginlib_example => cpp/pluginlib_example}/example_plugin_manager/package.xml (100%) rename {pluginlib_example => cpp/pluginlib_example}/example_plugin_manager/src/example_plugin_manager.cpp (100%) rename {pluginlib_example => cpp/pluginlib_example}/example_plugins/CMakeLists.txt (100%) rename {pluginlib_example => cpp/pluginlib_example}/example_plugins/config/example_plugin.yaml (100%) rename {pluginlib_example => cpp/pluginlib_example}/example_plugins/package.xml (100%) rename {pluginlib_example => cpp/pluginlib_example}/example_plugins/plugins.xml (100%) rename {pluginlib_example => cpp/pluginlib_example}/example_plugins/src/example_plugin.cpp (100%) rename {tracker_plugin => cpp/tracker_plugin}/CMakeLists.txt (100%) create mode 100644 cpp/tracker_plugin/README.md rename {tracker_plugin => cpp/tracker_plugin}/cfg/example_tracker.cfg (100%) rename {tracker_plugin => cpp/tracker_plugin}/config/example_tracker.yaml (100%) rename {tracker_plugin => cpp/tracker_plugin}/include/.gitkeep (100%) rename {tracker_plugin => cpp/tracker_plugin}/package.xml (100%) rename {tracker_plugin => cpp/tracker_plugin}/plugins.xml (100%) rename {tracker_plugin => cpp/tracker_plugin}/src/example_tracker.cpp (100%) rename {tracker_plugin => cpp/tracker_plugin}/tmux/config/custom_config.yaml (100%) rename {tracker_plugin => cpp/tracker_plugin}/tmux/config/hw_api.yaml (100%) rename {tracker_plugin => cpp/tracker_plugin}/tmux/config/network_config.yaml (100%) rename {tracker_plugin => cpp/tracker_plugin}/tmux/config/simulator.yaml (100%) rename {tracker_plugin => cpp/tracker_plugin}/tmux/config/world_config.yaml (100%) rename {tracker_plugin => cpp/tracker_plugin}/tmux/layout.json (100%) rename {tracker_plugin => cpp/tracker_plugin}/tmux/session.yml (100%) rename {tracker_plugin => cpp/tracker_plugin}/tmux/start.sh (100%) rename {waypoint_flier => cpp/waypoint_flier}/CMakeLists.txt (100%) rename {waypoint_flier => cpp/waypoint_flier}/README.md (98%) rename {waypoint_flier => cpp/waypoint_flier}/config/dynparam.cfg (100%) rename {waypoint_flier => cpp/waypoint_flier}/config/waypoint_flier.yaml (100%) rename {waypoint_flier => cpp/waypoint_flier}/launch/waypoint_flier.launch (100%) rename {waypoint_flier => cpp/waypoint_flier}/nodelets.xml (100%) rename {waypoint_flier => cpp/waypoint_flier}/package.xml (100%) rename {waypoint_flier => cpp/waypoint_flier}/src/waypoint_flier.cpp (100%) rename {waypoint_flier => cpp/waypoint_flier}/tmux/config/automatic_start.yaml (100%) rename {waypoint_flier => cpp/waypoint_flier}/tmux/config/custom_config.yaml (100%) rename {waypoint_flier => cpp/waypoint_flier}/tmux/config/hw_api.yaml (100%) rename {waypoint_flier => cpp/waypoint_flier}/tmux/config/network_config.yaml (100%) rename {waypoint_flier => cpp/waypoint_flier}/tmux/config/simulator.yaml (100%) rename {waypoint_flier => cpp/waypoint_flier}/tmux/config/world_config.yaml (100%) rename {waypoint_flier => cpp/waypoint_flier}/tmux/kill.sh (100%) rename {waypoint_flier => cpp/waypoint_flier}/tmux/layout.json (100%) rename {waypoint_flier => cpp/waypoint_flier}/tmux/session.yml (100%) rename {waypoint_flier => cpp/waypoint_flier}/tmux/start.sh (100%) rename {waypoint_flier_simple => cpp/waypoint_flier_simple}/CMakeLists.txt (100%) rename {waypoint_flier_simple => cpp/waypoint_flier_simple}/README.md (93%) rename {waypoint_flier_simple => cpp/waypoint_flier_simple}/config/waypoint_flier.yaml (100%) rename {waypoint_flier_simple => cpp/waypoint_flier_simple}/launch/waypoint_flier_simple.launch (100%) rename {waypoint_flier_simple => cpp/waypoint_flier_simple}/nodelets.xml (100%) rename {waypoint_flier_simple => cpp/waypoint_flier_simple}/package.xml (100%) rename {waypoint_flier_simple => cpp/waypoint_flier_simple}/src/waypoint_flier_simple.cpp (100%) rename {waypoint_flier_simple => cpp/waypoint_flier_simple}/tmux/config/automatic_start.yaml (100%) rename {waypoint_flier_simple => cpp/waypoint_flier_simple}/tmux/config/custom_config.yaml (100%) rename {waypoint_flier_simple => cpp/waypoint_flier_simple}/tmux/config/hw_api.yaml (100%) rename {waypoint_flier_simple => cpp/waypoint_flier_simple}/tmux/config/network_config.yaml (100%) rename {waypoint_flier_simple => cpp/waypoint_flier_simple}/tmux/config/simulator.yaml (100%) rename {waypoint_flier_simple => cpp/waypoint_flier_simple}/tmux/config/world_config.yaml (100%) rename {waypoint_flier_simple => cpp/waypoint_flier_simple}/tmux/kill.sh (100%) rename {waypoint_flier_simple => cpp/waypoint_flier_simple}/tmux/layout.json (100%) rename {waypoint_flier_simple => cpp/waypoint_flier_simple}/tmux/session.yml (100%) rename {waypoint_flier_simple => cpp/waypoint_flier_simple}/tmux/start.sh (100%) create mode 100644 python/README.md create mode 100644 python/sweeping_generator/CMakeLists.txt create mode 100644 python/sweeping_generator/README.md create mode 100644 python/sweeping_generator/config/sweeping_generator.yaml create mode 100644 python/sweeping_generator/launch/sweeping_generator.launch create mode 100644 python/sweeping_generator/package.xml create mode 100755 python/sweeping_generator/scripts/sweeping_generator.py create mode 100644 python/sweeping_generator/tmux/config/automatic_start.yaml create mode 100644 python/sweeping_generator/tmux/config/custom_config.yaml create mode 100644 python/sweeping_generator/tmux/config/hw_api.yaml create mode 100644 python/sweeping_generator/tmux/config/network_config.yaml create mode 100644 python/sweeping_generator/tmux/config/simulator.yaml create mode 100644 python/sweeping_generator/tmux/config/world_config.yaml create mode 100755 python/sweeping_generator/tmux/kill.sh create mode 100644 python/sweeping_generator/tmux/layout.json create mode 100644 python/sweeping_generator/tmux/session.yml create mode 100755 python/sweeping_generator/tmux/start.sh delete mode 100644 tracker_plugin/README.md diff --git a/README.md b/README.md index 7bdb84e..2010d86 100644 --- a/README.md +++ b/README.md @@ -4,11 +4,17 @@ This repository includes Core ROS examples for the [MRS UAV System](https://gith ## Packages -* [waypoint_flier_simple](./waypoint_flier_simple) - Minimalistic C++ Nodelet with "_vanilla_" ROS features -* [waypoint_flier](./waypoint_flier) - Full C++ Nodelet with "_MRS_" libraries and wrappers -* [controller_plugin](./controller_plugin) - Example of Controller plugin for the [ControlManager](https://github.com/ctu-mrs/mrs_uav_managers) -* [tracker_plugin](./tracker_plugin) - Example of Tracker plugin for the [ControlManager](https://github.com/ctu-mrs/mrs_uav_managers) -* [pluginlib_example](./pluginlib_example) - Example of ROS Pluginlib, similar to how it is used in the [ControlManager](https://github.com/ctu-mrs/mrs_uav_managers) +## C++ + +* [waypoint_flier_simple](./cpp/waypoint_flier_simple) - Minimalistic C++ Nodelet with "_vanilla_" ROS features +* [waypoint_flier](./cpp/waypoint_flier) - Full C++ Nodelet with "_MRS_" libraries and wrappers +* [controller_plugin](./cpp/controller_plugin) - Example of Controller plugin for the [ControlManager](https://github.com/ctu-mrs/mrs_uav_managers) +* [tracker_plugin](./cpp/tracker_plugin) - Example of Tracker plugin for the [ControlManager](https://github.com/ctu-mrs/mrs_uav_managers) +* [pluginlib_example](./cpp/pluginlib_example) - Example of ROS Pluginlib, similar to how it is used in the [ControlManager](https://github.com/ctu-mrs/mrs_uav_managers) + +## Python + +* [sweeping_generator](./python/sweeping_generator) - Minimalistic Python Example that generates sweeping path for the UAV # Disclaimer diff --git a/controller_plugin/README.md b/controller_plugin/README.md deleted file mode 100644 index 08be633..0000000 --- a/controller_plugin/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# example_controller_plugin - -Example controller plugin for the MRS Control Manager. diff --git a/cpp/README.md b/cpp/README.md new file mode 100644 index 0000000..55459fe --- /dev/null +++ b/cpp/README.md @@ -0,0 +1 @@ +# MRS C++ Examples diff --git a/controller_plugin/CMakeLists.txt b/cpp/controller_plugin/CMakeLists.txt similarity index 100% rename from controller_plugin/CMakeLists.txt rename to cpp/controller_plugin/CMakeLists.txt diff --git a/cpp/controller_plugin/README.md b/cpp/controller_plugin/README.md new file mode 100644 index 0000000..eb5e102 --- /dev/null +++ b/cpp/controller_plugin/README.md @@ -0,0 +1,9 @@ +# Example Controller Plugin + +Example controller plugin for the Control Manager. + +## How to start + +```bash +./tmux/start.sh +``` diff --git a/controller_plugin/cfg/example_controller.cfg b/cpp/controller_plugin/cfg/example_controller.cfg similarity index 100% rename from controller_plugin/cfg/example_controller.cfg rename to cpp/controller_plugin/cfg/example_controller.cfg diff --git a/controller_plugin/config/example_controller.yaml b/cpp/controller_plugin/config/example_controller.yaml similarity index 100% rename from controller_plugin/config/example_controller.yaml rename to cpp/controller_plugin/config/example_controller.yaml diff --git a/controller_plugin/include/pid.hpp b/cpp/controller_plugin/include/pid.hpp similarity index 100% rename from controller_plugin/include/pid.hpp rename to cpp/controller_plugin/include/pid.hpp diff --git a/controller_plugin/package.xml b/cpp/controller_plugin/package.xml similarity index 100% rename from controller_plugin/package.xml rename to cpp/controller_plugin/package.xml diff --git a/controller_plugin/plugins.xml b/cpp/controller_plugin/plugins.xml similarity index 100% rename from controller_plugin/plugins.xml rename to cpp/controller_plugin/plugins.xml diff --git a/controller_plugin/src/example_controller.cpp b/cpp/controller_plugin/src/example_controller.cpp similarity index 100% rename from controller_plugin/src/example_controller.cpp rename to cpp/controller_plugin/src/example_controller.cpp diff --git a/controller_plugin/tmux/config/custom_config.yaml b/cpp/controller_plugin/tmux/config/custom_config.yaml similarity index 100% rename from controller_plugin/tmux/config/custom_config.yaml rename to cpp/controller_plugin/tmux/config/custom_config.yaml diff --git a/controller_plugin/tmux/config/hw_api.yaml b/cpp/controller_plugin/tmux/config/hw_api.yaml similarity index 100% rename from controller_plugin/tmux/config/hw_api.yaml rename to cpp/controller_plugin/tmux/config/hw_api.yaml diff --git a/controller_plugin/tmux/config/network_config.yaml b/cpp/controller_plugin/tmux/config/network_config.yaml similarity index 100% rename from controller_plugin/tmux/config/network_config.yaml rename to cpp/controller_plugin/tmux/config/network_config.yaml diff --git a/controller_plugin/tmux/config/simulator.yaml b/cpp/controller_plugin/tmux/config/simulator.yaml similarity index 100% rename from controller_plugin/tmux/config/simulator.yaml rename to cpp/controller_plugin/tmux/config/simulator.yaml diff --git a/controller_plugin/tmux/config/world_config.yaml b/cpp/controller_plugin/tmux/config/world_config.yaml similarity index 100% rename from controller_plugin/tmux/config/world_config.yaml rename to cpp/controller_plugin/tmux/config/world_config.yaml diff --git a/controller_plugin/tmux/layout.json b/cpp/controller_plugin/tmux/layout.json similarity index 100% rename from controller_plugin/tmux/layout.json rename to cpp/controller_plugin/tmux/layout.json diff --git a/controller_plugin/tmux/session.yml b/cpp/controller_plugin/tmux/session.yml similarity index 100% rename from controller_plugin/tmux/session.yml rename to cpp/controller_plugin/tmux/session.yml diff --git a/controller_plugin/tmux/start.sh b/cpp/controller_plugin/tmux/start.sh similarity index 100% rename from controller_plugin/tmux/start.sh rename to cpp/controller_plugin/tmux/start.sh diff --git a/pluginlib_example/README.md b/cpp/pluginlib_example/README.md similarity index 100% rename from pluginlib_example/README.md rename to cpp/pluginlib_example/README.md diff --git a/pluginlib_example/example_plugin_manager/CMakeLists.txt b/cpp/pluginlib_example/example_plugin_manager/CMakeLists.txt similarity index 100% rename from pluginlib_example/example_plugin_manager/CMakeLists.txt rename to cpp/pluginlib_example/example_plugin_manager/CMakeLists.txt diff --git a/pluginlib_example/example_plugin_manager/config/example_plugin_manager.yaml b/cpp/pluginlib_example/example_plugin_manager/config/example_plugin_manager.yaml similarity index 100% rename from pluginlib_example/example_plugin_manager/config/example_plugin_manager.yaml rename to cpp/pluginlib_example/example_plugin_manager/config/example_plugin_manager.yaml diff --git a/pluginlib_example/example_plugin_manager/config/plugins.yaml b/cpp/pluginlib_example/example_plugin_manager/config/plugins.yaml similarity index 100% rename from pluginlib_example/example_plugin_manager/config/plugins.yaml rename to cpp/pluginlib_example/example_plugin_manager/config/plugins.yaml diff --git a/pluginlib_example/example_plugin_manager/include/example_plugin_manager/common_handlers.h b/cpp/pluginlib_example/example_plugin_manager/include/example_plugin_manager/common_handlers.h similarity index 100% rename from pluginlib_example/example_plugin_manager/include/example_plugin_manager/common_handlers.h rename to cpp/pluginlib_example/example_plugin_manager/include/example_plugin_manager/common_handlers.h diff --git a/pluginlib_example/example_plugin_manager/include/example_plugin_manager/plugin_interface.h b/cpp/pluginlib_example/example_plugin_manager/include/example_plugin_manager/plugin_interface.h similarity index 100% rename from pluginlib_example/example_plugin_manager/include/example_plugin_manager/plugin_interface.h rename to cpp/pluginlib_example/example_plugin_manager/include/example_plugin_manager/plugin_interface.h diff --git a/pluginlib_example/example_plugin_manager/launch/example_plugin_manager.launch b/cpp/pluginlib_example/example_plugin_manager/launch/example_plugin_manager.launch similarity index 100% rename from pluginlib_example/example_plugin_manager/launch/example_plugin_manager.launch rename to cpp/pluginlib_example/example_plugin_manager/launch/example_plugin_manager.launch diff --git a/pluginlib_example/example_plugin_manager/nodelets.xml b/cpp/pluginlib_example/example_plugin_manager/nodelets.xml similarity index 100% rename from pluginlib_example/example_plugin_manager/nodelets.xml rename to cpp/pluginlib_example/example_plugin_manager/nodelets.xml diff --git a/pluginlib_example/example_plugin_manager/package.xml b/cpp/pluginlib_example/example_plugin_manager/package.xml similarity index 100% rename from pluginlib_example/example_plugin_manager/package.xml rename to cpp/pluginlib_example/example_plugin_manager/package.xml diff --git a/pluginlib_example/example_plugin_manager/src/example_plugin_manager.cpp b/cpp/pluginlib_example/example_plugin_manager/src/example_plugin_manager.cpp similarity index 100% rename from pluginlib_example/example_plugin_manager/src/example_plugin_manager.cpp rename to cpp/pluginlib_example/example_plugin_manager/src/example_plugin_manager.cpp diff --git a/pluginlib_example/example_plugins/CMakeLists.txt b/cpp/pluginlib_example/example_plugins/CMakeLists.txt similarity index 100% rename from pluginlib_example/example_plugins/CMakeLists.txt rename to cpp/pluginlib_example/example_plugins/CMakeLists.txt diff --git a/pluginlib_example/example_plugins/config/example_plugin.yaml b/cpp/pluginlib_example/example_plugins/config/example_plugin.yaml similarity index 100% rename from pluginlib_example/example_plugins/config/example_plugin.yaml rename to cpp/pluginlib_example/example_plugins/config/example_plugin.yaml diff --git a/pluginlib_example/example_plugins/package.xml b/cpp/pluginlib_example/example_plugins/package.xml similarity index 100% rename from pluginlib_example/example_plugins/package.xml rename to cpp/pluginlib_example/example_plugins/package.xml diff --git a/pluginlib_example/example_plugins/plugins.xml b/cpp/pluginlib_example/example_plugins/plugins.xml similarity index 100% rename from pluginlib_example/example_plugins/plugins.xml rename to cpp/pluginlib_example/example_plugins/plugins.xml diff --git a/pluginlib_example/example_plugins/src/example_plugin.cpp b/cpp/pluginlib_example/example_plugins/src/example_plugin.cpp similarity index 100% rename from pluginlib_example/example_plugins/src/example_plugin.cpp rename to cpp/pluginlib_example/example_plugins/src/example_plugin.cpp diff --git a/tracker_plugin/CMakeLists.txt b/cpp/tracker_plugin/CMakeLists.txt similarity index 100% rename from tracker_plugin/CMakeLists.txt rename to cpp/tracker_plugin/CMakeLists.txt diff --git a/cpp/tracker_plugin/README.md b/cpp/tracker_plugin/README.md new file mode 100644 index 0000000..f583448 --- /dev/null +++ b/cpp/tracker_plugin/README.md @@ -0,0 +1,9 @@ +# Example Tracker Plugin + +Example tracker plugin for the MRS Control Manager. + +## How to start + +```bash +./tmux/start.sh +``` diff --git a/tracker_plugin/cfg/example_tracker.cfg b/cpp/tracker_plugin/cfg/example_tracker.cfg similarity index 100% rename from tracker_plugin/cfg/example_tracker.cfg rename to cpp/tracker_plugin/cfg/example_tracker.cfg diff --git a/tracker_plugin/config/example_tracker.yaml b/cpp/tracker_plugin/config/example_tracker.yaml similarity index 100% rename from tracker_plugin/config/example_tracker.yaml rename to cpp/tracker_plugin/config/example_tracker.yaml diff --git a/tracker_plugin/include/.gitkeep b/cpp/tracker_plugin/include/.gitkeep similarity index 100% rename from tracker_plugin/include/.gitkeep rename to cpp/tracker_plugin/include/.gitkeep diff --git a/tracker_plugin/package.xml b/cpp/tracker_plugin/package.xml similarity index 100% rename from tracker_plugin/package.xml rename to cpp/tracker_plugin/package.xml diff --git a/tracker_plugin/plugins.xml b/cpp/tracker_plugin/plugins.xml similarity index 100% rename from tracker_plugin/plugins.xml rename to cpp/tracker_plugin/plugins.xml diff --git a/tracker_plugin/src/example_tracker.cpp b/cpp/tracker_plugin/src/example_tracker.cpp similarity index 100% rename from tracker_plugin/src/example_tracker.cpp rename to cpp/tracker_plugin/src/example_tracker.cpp diff --git a/tracker_plugin/tmux/config/custom_config.yaml b/cpp/tracker_plugin/tmux/config/custom_config.yaml similarity index 100% rename from tracker_plugin/tmux/config/custom_config.yaml rename to cpp/tracker_plugin/tmux/config/custom_config.yaml diff --git a/tracker_plugin/tmux/config/hw_api.yaml b/cpp/tracker_plugin/tmux/config/hw_api.yaml similarity index 100% rename from tracker_plugin/tmux/config/hw_api.yaml rename to cpp/tracker_plugin/tmux/config/hw_api.yaml diff --git a/tracker_plugin/tmux/config/network_config.yaml b/cpp/tracker_plugin/tmux/config/network_config.yaml similarity index 100% rename from tracker_plugin/tmux/config/network_config.yaml rename to cpp/tracker_plugin/tmux/config/network_config.yaml diff --git a/tracker_plugin/tmux/config/simulator.yaml b/cpp/tracker_plugin/tmux/config/simulator.yaml similarity index 100% rename from tracker_plugin/tmux/config/simulator.yaml rename to cpp/tracker_plugin/tmux/config/simulator.yaml diff --git a/tracker_plugin/tmux/config/world_config.yaml b/cpp/tracker_plugin/tmux/config/world_config.yaml similarity index 100% rename from tracker_plugin/tmux/config/world_config.yaml rename to cpp/tracker_plugin/tmux/config/world_config.yaml diff --git a/tracker_plugin/tmux/layout.json b/cpp/tracker_plugin/tmux/layout.json similarity index 100% rename from tracker_plugin/tmux/layout.json rename to cpp/tracker_plugin/tmux/layout.json diff --git a/tracker_plugin/tmux/session.yml b/cpp/tracker_plugin/tmux/session.yml similarity index 100% rename from tracker_plugin/tmux/session.yml rename to cpp/tracker_plugin/tmux/session.yml diff --git a/tracker_plugin/tmux/start.sh b/cpp/tracker_plugin/tmux/start.sh similarity index 100% rename from tracker_plugin/tmux/start.sh rename to cpp/tracker_plugin/tmux/start.sh diff --git a/waypoint_flier/CMakeLists.txt b/cpp/waypoint_flier/CMakeLists.txt similarity index 100% rename from waypoint_flier/CMakeLists.txt rename to cpp/waypoint_flier/CMakeLists.txt diff --git a/waypoint_flier/README.md b/cpp/waypoint_flier/README.md similarity index 98% rename from waypoint_flier/README.md rename to cpp/waypoint_flier/README.md index 80b37ac..b80af73 100644 --- a/waypoint_flier/README.md +++ b/cpp/waypoint_flier/README.md @@ -10,6 +10,14 @@ The package is written in C++ and features custom MRS libraries and msgs. * Service `start_waypoint_following` causes the UAV to start tracking the waypoints * Service `stop_waypoint_following` stops adding new waypoints. Flight to the current waypoint is not interrupted. +## How to start + +```bash +./tmux/start.sh +``` + +The call the services prepared in the terminal window. + ## Package structure See [ROS packages](http://wiki.ros.org/Packages) diff --git a/waypoint_flier/config/dynparam.cfg b/cpp/waypoint_flier/config/dynparam.cfg similarity index 100% rename from waypoint_flier/config/dynparam.cfg rename to cpp/waypoint_flier/config/dynparam.cfg diff --git a/waypoint_flier/config/waypoint_flier.yaml b/cpp/waypoint_flier/config/waypoint_flier.yaml similarity index 100% rename from waypoint_flier/config/waypoint_flier.yaml rename to cpp/waypoint_flier/config/waypoint_flier.yaml diff --git a/waypoint_flier/launch/waypoint_flier.launch b/cpp/waypoint_flier/launch/waypoint_flier.launch similarity index 100% rename from waypoint_flier/launch/waypoint_flier.launch rename to cpp/waypoint_flier/launch/waypoint_flier.launch diff --git a/waypoint_flier/nodelets.xml b/cpp/waypoint_flier/nodelets.xml similarity index 100% rename from waypoint_flier/nodelets.xml rename to cpp/waypoint_flier/nodelets.xml diff --git a/waypoint_flier/package.xml b/cpp/waypoint_flier/package.xml similarity index 100% rename from waypoint_flier/package.xml rename to cpp/waypoint_flier/package.xml diff --git a/waypoint_flier/src/waypoint_flier.cpp b/cpp/waypoint_flier/src/waypoint_flier.cpp similarity index 100% rename from waypoint_flier/src/waypoint_flier.cpp rename to cpp/waypoint_flier/src/waypoint_flier.cpp diff --git a/waypoint_flier/tmux/config/automatic_start.yaml b/cpp/waypoint_flier/tmux/config/automatic_start.yaml similarity index 100% rename from waypoint_flier/tmux/config/automatic_start.yaml rename to cpp/waypoint_flier/tmux/config/automatic_start.yaml diff --git a/waypoint_flier/tmux/config/custom_config.yaml b/cpp/waypoint_flier/tmux/config/custom_config.yaml similarity index 100% rename from waypoint_flier/tmux/config/custom_config.yaml rename to cpp/waypoint_flier/tmux/config/custom_config.yaml diff --git a/waypoint_flier/tmux/config/hw_api.yaml b/cpp/waypoint_flier/tmux/config/hw_api.yaml similarity index 100% rename from waypoint_flier/tmux/config/hw_api.yaml rename to cpp/waypoint_flier/tmux/config/hw_api.yaml diff --git a/waypoint_flier/tmux/config/network_config.yaml b/cpp/waypoint_flier/tmux/config/network_config.yaml similarity index 100% rename from waypoint_flier/tmux/config/network_config.yaml rename to cpp/waypoint_flier/tmux/config/network_config.yaml diff --git a/waypoint_flier/tmux/config/simulator.yaml b/cpp/waypoint_flier/tmux/config/simulator.yaml similarity index 100% rename from waypoint_flier/tmux/config/simulator.yaml rename to cpp/waypoint_flier/tmux/config/simulator.yaml diff --git a/waypoint_flier/tmux/config/world_config.yaml b/cpp/waypoint_flier/tmux/config/world_config.yaml similarity index 100% rename from waypoint_flier/tmux/config/world_config.yaml rename to cpp/waypoint_flier/tmux/config/world_config.yaml diff --git a/waypoint_flier/tmux/kill.sh b/cpp/waypoint_flier/tmux/kill.sh similarity index 100% rename from waypoint_flier/tmux/kill.sh rename to cpp/waypoint_flier/tmux/kill.sh diff --git a/waypoint_flier/tmux/layout.json b/cpp/waypoint_flier/tmux/layout.json similarity index 100% rename from waypoint_flier/tmux/layout.json rename to cpp/waypoint_flier/tmux/layout.json diff --git a/waypoint_flier/tmux/session.yml b/cpp/waypoint_flier/tmux/session.yml similarity index 100% rename from waypoint_flier/tmux/session.yml rename to cpp/waypoint_flier/tmux/session.yml diff --git a/waypoint_flier/tmux/start.sh b/cpp/waypoint_flier/tmux/start.sh similarity index 100% rename from waypoint_flier/tmux/start.sh rename to cpp/waypoint_flier/tmux/start.sh diff --git a/waypoint_flier_simple/CMakeLists.txt b/cpp/waypoint_flier_simple/CMakeLists.txt similarity index 100% rename from waypoint_flier_simple/CMakeLists.txt rename to cpp/waypoint_flier_simple/CMakeLists.txt diff --git a/waypoint_flier_simple/README.md b/cpp/waypoint_flier_simple/README.md similarity index 93% rename from waypoint_flier_simple/README.md rename to cpp/waypoint_flier_simple/README.md index 744452f..007230f 100644 --- a/waypoint_flier_simple/README.md +++ b/cpp/waypoint_flier_simple/README.md @@ -9,6 +9,14 @@ You can test the program in simulation (see our [simulation tutorial](https://ct * Service `start_waypoint_following` will activate the nodelet * The area in which random waypoints are generated is configurable with a separate config file See [.yaml files](http://wiki.ros.org/rosparam) +## How to start + +```bash +./tmux/start.sh +``` + +The call the services prepared in the terminal window. + ## Package structure See [ROS packages](http://wiki.ros.org/Packages) diff --git a/waypoint_flier_simple/config/waypoint_flier.yaml b/cpp/waypoint_flier_simple/config/waypoint_flier.yaml similarity index 100% rename from waypoint_flier_simple/config/waypoint_flier.yaml rename to cpp/waypoint_flier_simple/config/waypoint_flier.yaml diff --git a/waypoint_flier_simple/launch/waypoint_flier_simple.launch b/cpp/waypoint_flier_simple/launch/waypoint_flier_simple.launch similarity index 100% rename from waypoint_flier_simple/launch/waypoint_flier_simple.launch rename to cpp/waypoint_flier_simple/launch/waypoint_flier_simple.launch diff --git a/waypoint_flier_simple/nodelets.xml b/cpp/waypoint_flier_simple/nodelets.xml similarity index 100% rename from waypoint_flier_simple/nodelets.xml rename to cpp/waypoint_flier_simple/nodelets.xml diff --git a/waypoint_flier_simple/package.xml b/cpp/waypoint_flier_simple/package.xml similarity index 100% rename from waypoint_flier_simple/package.xml rename to cpp/waypoint_flier_simple/package.xml diff --git a/waypoint_flier_simple/src/waypoint_flier_simple.cpp b/cpp/waypoint_flier_simple/src/waypoint_flier_simple.cpp similarity index 100% rename from waypoint_flier_simple/src/waypoint_flier_simple.cpp rename to cpp/waypoint_flier_simple/src/waypoint_flier_simple.cpp diff --git a/waypoint_flier_simple/tmux/config/automatic_start.yaml b/cpp/waypoint_flier_simple/tmux/config/automatic_start.yaml similarity index 100% rename from waypoint_flier_simple/tmux/config/automatic_start.yaml rename to cpp/waypoint_flier_simple/tmux/config/automatic_start.yaml diff --git a/waypoint_flier_simple/tmux/config/custom_config.yaml b/cpp/waypoint_flier_simple/tmux/config/custom_config.yaml similarity index 100% rename from waypoint_flier_simple/tmux/config/custom_config.yaml rename to cpp/waypoint_flier_simple/tmux/config/custom_config.yaml diff --git a/waypoint_flier_simple/tmux/config/hw_api.yaml b/cpp/waypoint_flier_simple/tmux/config/hw_api.yaml similarity index 100% rename from waypoint_flier_simple/tmux/config/hw_api.yaml rename to cpp/waypoint_flier_simple/tmux/config/hw_api.yaml diff --git a/waypoint_flier_simple/tmux/config/network_config.yaml b/cpp/waypoint_flier_simple/tmux/config/network_config.yaml similarity index 100% rename from waypoint_flier_simple/tmux/config/network_config.yaml rename to cpp/waypoint_flier_simple/tmux/config/network_config.yaml diff --git a/waypoint_flier_simple/tmux/config/simulator.yaml b/cpp/waypoint_flier_simple/tmux/config/simulator.yaml similarity index 100% rename from waypoint_flier_simple/tmux/config/simulator.yaml rename to cpp/waypoint_flier_simple/tmux/config/simulator.yaml diff --git a/waypoint_flier_simple/tmux/config/world_config.yaml b/cpp/waypoint_flier_simple/tmux/config/world_config.yaml similarity index 100% rename from waypoint_flier_simple/tmux/config/world_config.yaml rename to cpp/waypoint_flier_simple/tmux/config/world_config.yaml diff --git a/waypoint_flier_simple/tmux/kill.sh b/cpp/waypoint_flier_simple/tmux/kill.sh similarity index 100% rename from waypoint_flier_simple/tmux/kill.sh rename to cpp/waypoint_flier_simple/tmux/kill.sh diff --git a/waypoint_flier_simple/tmux/layout.json b/cpp/waypoint_flier_simple/tmux/layout.json similarity index 100% rename from waypoint_flier_simple/tmux/layout.json rename to cpp/waypoint_flier_simple/tmux/layout.json diff --git a/waypoint_flier_simple/tmux/session.yml b/cpp/waypoint_flier_simple/tmux/session.yml similarity index 100% rename from waypoint_flier_simple/tmux/session.yml rename to cpp/waypoint_flier_simple/tmux/session.yml diff --git a/waypoint_flier_simple/tmux/start.sh b/cpp/waypoint_flier_simple/tmux/start.sh similarity index 100% rename from waypoint_flier_simple/tmux/start.sh rename to cpp/waypoint_flier_simple/tmux/start.sh diff --git a/python/README.md b/python/README.md new file mode 100644 index 0000000..f3f6717 --- /dev/null +++ b/python/README.md @@ -0,0 +1 @@ +# MRS Python Examples diff --git a/python/sweeping_generator/CMakeLists.txt b/python/sweeping_generator/CMakeLists.txt new file mode 100644 index 0000000..b46d2f0 --- /dev/null +++ b/python/sweeping_generator/CMakeLists.txt @@ -0,0 +1,36 @@ +cmake_minimum_required(VERSION 3.15.0) +project(example_sweeping_generator) + +set(CMAKE_CXX_STANDARD 17) +set(CMAKE_CXX_STANDARD_REQUIRED ON) + +set(CATKIN_DEPENDENCIES + rospy + mrs_msgs + ) + +find_package(catkin REQUIRED COMPONENTS + ${CATKIN_DEPENDENCIES} + ) + +catkin_package( + CATKIN_DEPENDS ${CATKIN_DEPENDENCIES} + ) + +## -------------------------------------------------------------- +## | Install | +## -------------------------------------------------------------- + +install(DIRECTORY launch config + DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION} + ) + +install(DIRECTORY scripts/ + USE_SOURCE_PERMISSIONS + DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION} + ) + +install(DIRECTORY scripts + USE_SOURCE_PERMISSIONS + DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION} + ) diff --git a/python/sweeping_generator/README.md b/python/sweeping_generator/README.md new file mode 100644 index 0000000..14fd3b6 --- /dev/null +++ b/python/sweeping_generator/README.md @@ -0,0 +1,12 @@ +# Sweeping Generator + +## How to start + +```bash +./tmux/start.sh +``` + +When ready, call the service prepared in the bottom terminal window: +```bash +rosservice call /$UAV_NAME/sweeping_generator/start 3.0 +``` diff --git a/python/sweeping_generator/config/sweeping_generator.yaml b/python/sweeping_generator/config/sweeping_generator.yaml new file mode 100644 index 0000000..dc02cb7 --- /dev/null +++ b/python/sweeping_generator/config/sweeping_generator.yaml @@ -0,0 +1,13 @@ +frame_id: "world_origin" + +timer_main: + rate: 1.0 # [Hz] + +center: + x: 0.0 # [m] + y: 0.0 # [m] + z: 2.0 # [m] + +dimensions: + x: 20.0 # [m] + y: 20.0 # [m] diff --git a/python/sweeping_generator/launch/sweeping_generator.launch b/python/sweeping_generator/launch/sweeping_generator.launch new file mode 100644 index 0000000..46d55f1 --- /dev/null +++ b/python/sweeping_generator/launch/sweeping_generator.launch @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/python/sweeping_generator/package.xml b/python/sweeping_generator/package.xml new file mode 100644 index 0000000..2f9087a --- /dev/null +++ b/python/sweeping_generator/package.xml @@ -0,0 +1,21 @@ + + + + example_sweeping_generator + 1.0.0 + The Python Example for Sweeping Generator + + Tomas Baca + Tomas Baca + + MIT + + catkin + + rospy + mrs_msgs + + + + + diff --git a/python/sweeping_generator/scripts/sweeping_generator.py b/python/sweeping_generator/scripts/sweeping_generator.py new file mode 100755 index 0000000..e6c9423 --- /dev/null +++ b/python/sweeping_generator/scripts/sweeping_generator.py @@ -0,0 +1,167 @@ +#!/usr/bin/python3 + +import rospy +import numpy + +from mrs_msgs.msg import ControlManagerDiagnostics,Reference +from mrs_msgs.srv import PathSrv,PathSrvRequest +from mrs_msgs.srv import Vec1,Vec1Response + +class Node: + + # #{ __init__(self) + + def __init__(self): + + rospy.init_node("sweeping_generator", anonymous=True) + + ## | --------------------- load parameters -------------------- | + + self.frame_id = rospy.get_param("~frame_id") + + self.center_x = rospy.get_param("~center/x") + self.center_y = rospy.get_param("~center/y") + self.center_z = rospy.get_param("~center/z") + + self.dimensions_x = rospy.get_param("~dimensions/x") + self.dimensions_y = rospy.get_param("~dimensions/y") + + self.timer_main_rate = rospy.get_param("~timer_main/rate") + + rospy.loginfo('[SweepingGenerator]: initialized') + + ## | ----------------------- subscribers ---------------------- | + + self.sub_control_manager_diag = rospy.Subscriber("~control_manager_diag_in", ControlManagerDiagnostics, self.callbackControlManagerDiagnostics) + + ## | --------------------- service servers -------------------- | + + self.ss_start = rospy.Service('~start_in', Vec1, self.callbackStart) + + ## | --------------------- service clients -------------------- | + + self.sc_path = rospy.ServiceProxy('~path_out', PathSrv) + + ## | ------------------------- timers ------------------------- | + + self.timer_main = rospy.Timer(rospy.Duration(1.0/self.timer_main_rate), self.timerMain) + + ## | -------------------- spin till the end ------------------- | + + self.is_initialized = True + + rospy.spin() + + # #} end of __init__() + + ## | ------------------------- methods ------------------------ | + + # #{ planPath() + + def planPath(self, step_size): + + rospy.loginfo('[SweepingGenerator]: planning path') + + # https://ctu-mrs.github.io/mrs_msgs/srv/PathSrv.html + # -> https://ctu-mrs.github.io/mrs_msgs/msg/Path.html + path_msg = PathSrvRequest() + + path_msg.path.header.frame_id = self.frame_id + path_msg.path.header.stamp = rospy.Time.now() + + path_msg.path.fly_now = True + + path_msg.path.use_heading = True + + sign = 1.0 + + # fill in the path with a sweeping pattern + for i in numpy.arange(-self.dimensions_x/2.0, self.dimensions_x/2.0, step_size): + + for j in numpy.arange(-self.dimensions_y/2.0, self.dimensions_y/2.0, step_size): + + # https://ctu-mrs.github.io/mrs_msgs/msg/Reference.html + point = Reference() + + point.position.x = self.center_x + i + point.position.y = self.center_y + j*sign + point.position.z = self.center_z + point.heading = 0.0 + + path_msg.path.points.append(point) + + if sign > 0.0: + sign = -1.0 + else: + sign = 1.0 + + return path_msg + + # #} end of planPath() + + ## | ------------------------ callbacks ----------------------- | + + # #{ callbackControlManagerDiagnostics(): + + def callbackControlManagerDiagnostics(self, msg): + + if not self.is_initialized: + return + + rospy.loginfo_once('[SweepingGenerator]: getting ControlManager diagnostics') + + self.sub_control_manager_diag = msg + + # #} end of + + # #{ callbackStart(): + + def callbackStart(self, req): + + if not self.is_initialized: + return Vec1Response(False, "not initialized") + + # set the step size based on the service data + step_size = req.goal + + path_msg = self.planPath(step_size) + + try: + response = self.sc_path.call(path_msg) + except: + rospy.logerr('[SweepingGenerator]: path service not callable') + pass + + if response.success: + rospy.loginfo('[SweepingGenerator]: path set') + else: + rospy.loginfo('[SweepingGenerator]: path setting failed, message: {}'.format(response.message)) + + return Vec1Response(True, "starting") + + # #} end of + + ## | ------------------------- timers ------------------------- | + + # #{ timerMain() + + def timerMain(self, event=None): + + if not self.is_initialized: + return + + rospy.loginfo_once('[SweepingGenerator]: main timer spinning') + + if isinstance(self.sub_control_manager_diag, ControlManagerDiagnostics): + if self.sub_control_manager_diag.tracker_status.have_goal: + rospy.loginfo('[SweepingGenerator]: tracker has goal') + else: + rospy.loginfo('[SweepingGenerator]: waiting for command') + + # #} end of timerMain() + +if __name__ == '__main__': + try: + node = Node() + except rospy.ROSInterruptException: + pass diff --git a/python/sweeping_generator/tmux/config/automatic_start.yaml b/python/sweeping_generator/tmux/config/automatic_start.yaml new file mode 100644 index 0000000..d351868 --- /dev/null +++ b/python/sweeping_generator/tmux/config/automatic_start.yaml @@ -0,0 +1,5 @@ +# A timeout between the takeoff being triggered and the UAV actually taking off +# while the timeout is counting down, the takeoff can be aborted by switching off +# the offboard mode. +# default = 5 sec +safety_timeout: 1.0 # [s] diff --git a/python/sweeping_generator/tmux/config/custom_config.yaml b/python/sweeping_generator/tmux/config/custom_config.yaml new file mode 100644 index 0000000..c1f518c --- /dev/null +++ b/python/sweeping_generator/tmux/config/custom_config.yaml @@ -0,0 +1,39 @@ +# GET ALL PARAMETERS USABLE FOR CUSTOM CONFIG BY RUNNING: +## -------------------------------------------------------------- +## | rosrun mrs_uav_core get_public_params.py # +## -------------------------------------------------------------- + +mrs_uav_managers: + + estimation_manager: + + # loaded state estimator plugins + state_estimators: [ + "gps_garmin", + "gps_baro", + ] + + initial_state_estimator: "gps_baro" # will be used as the first state estimator + agl_height_estimator: "garmin_agl" # only slightly filtered height for checking min height (not used in control feedback) + + uav_manager: + + takeoff: + + during_takeoff: + controller: "MpcController" + tracker: "LandoffTracker" + + after_takeoff: + controller: "Se3Controller" + tracker: "MpcTracker" + + midair_activation: + + during_activation: + controller: "MidairActivationController" + tracker: "MidairActivationTracker" + + after_activation: + controller: "Se3Controller" + tracker: "MpcTracker" diff --git a/python/sweeping_generator/tmux/config/hw_api.yaml b/python/sweeping_generator/tmux/config/hw_api.yaml new file mode 100644 index 0000000..30a6919 --- /dev/null +++ b/python/sweeping_generator/tmux/config/hw_api.yaml @@ -0,0 +1,28 @@ +input_mode: + actuators: false + control_group: false + attitude_rate: true + attitude: true + acceleration_hdg_rate: false + acceleration_hdg: false + velocity_hdg_rate: false + velocity_hdg: false + position: false + + feedforward: true + +outputs: + distance_sensor: true + gnss: true + rtk: true + imu: true + altitude: true + magnetometer_heading: true + rc_channels: true + battery_state: true + position: true + orientation: true + velocity: true + angular_velocity: true + odometry: true + ground_truth: true diff --git a/python/sweeping_generator/tmux/config/network_config.yaml b/python/sweeping_generator/tmux/config/network_config.yaml new file mode 100644 index 0000000..88d3e9f --- /dev/null +++ b/python/sweeping_generator/tmux/config/network_config.yaml @@ -0,0 +1,20 @@ +# 1. This list is used by NimbroNetwork for mutual communication of the UAVs +# The names of the robots have to match hostnames described in /etc/hosts. +# +# 2. This list is used by MpcTracker for mutual collision avoidance of the UAVs. +# The names should match the true "UAV_NAMES" (the topic prefixes). +# +# network_config:=~/config/network_config.yaml +# +# to the core.launch and nimbro.launch. + +network: + + robot_names: [ + + uav1, + uav2, + uav3, + uav4, + + ] diff --git a/python/sweeping_generator/tmux/config/simulator.yaml b/python/sweeping_generator/tmux/config/simulator.yaml new file mode 100644 index 0000000..7f7346a --- /dev/null +++ b/python/sweeping_generator/tmux/config/simulator.yaml @@ -0,0 +1,20 @@ +simulation_rate: 250 +clock_rate: 250 +realtime_factor: 1.0 + +iterate_without_input: true + +individual_takeoff_platform: + enabled: false + +uav_names: [ + "uav1", +] + +uav1: + type: "x500" + spawn: + x: 10.0 + y: 15.0 + z: 2.0 + heading: 0 diff --git a/python/sweeping_generator/tmux/config/world_config.yaml b/python/sweeping_generator/tmux/config/world_config.yaml new file mode 100644 index 0000000..9b55067 --- /dev/null +++ b/python/sweeping_generator/tmux/config/world_config.yaml @@ -0,0 +1,34 @@ +world_origin: + + units: "LATLON" # {"UTM, "LATLON"} + + origin_x: 47.397743 + origin_y: 8.545594 + +safety_area: + + enabled: true + + horizontal: + + # the frame of reference in which the points are expressed + frame_name: "world_origin" + + # polygon + # + # x, y [m] for any frame_name except latlon_origin + # x = latitude, y = longitude [deg] for frame_name=="latlon_origin" + points: [ + -50, -50, + 50, -50, + 50, 50, + -50, 50, + ] + + vertical: + + # the frame of reference in which the max&min z is expressed + frame_name: "world_origin" + + max_z: 15.0 + min_z: 0.5 diff --git a/python/sweeping_generator/tmux/kill.sh b/python/sweeping_generator/tmux/kill.sh new file mode 100755 index 0000000..28d50b0 --- /dev/null +++ b/python/sweeping_generator/tmux/kill.sh @@ -0,0 +1,14 @@ +#!/bin/bash + +# Absolute path to this script. /home/user/bin/foo.sh +SCRIPT=$(readlink -f $0) +# Absolute path this script is in. /home/user/bin +SCRIPTPATH=`dirname $SCRIPT` +cd "$SCRIPTPATH" + +export TMUX_SESSION_NAME=simulation +export TMUX_SOCKET_NAME=mrs + +# just attach to the session +tmux -L $TMUX_SOCKET_NAME split-window -t $TMUX_SESSION_NAME +tmux -L $TMUX_SOCKET_NAME send-keys -t $TMUX_SESSION_NAME "sleep 1; tmux list-panes -s -F \"#{pane_pid} #{pane_current_command}\" | grep -v tmux | cut -d\" \" -f1 | while read in; do killp \$in; done; exit" ENTER diff --git a/python/sweeping_generator/tmux/layout.json b/python/sweeping_generator/tmux/layout.json new file mode 100644 index 0000000..5664ebd --- /dev/null +++ b/python/sweeping_generator/tmux/layout.json @@ -0,0 +1,50 @@ +[ +{ + "border": "normal", + "floating": "auto_off", + "fullscreen_mode": 0, + "layout": "splitv", + "percent": 0.285714285714286, + "type": "con", + "nodes": [ + { + "border": "pixel", + "current_border_width": 3, + "floating": "auto_off", + "geometry": { + "height": 1030, + "width": 936, + "x": 4806, + "y": 32 + }, + "name": "rviz.rviz* - RViz", + "percent": 0.5, + "swallows": [ + { + "instance": "^rviz$" + } + ], + "type": "con" + }, + { + "border": "pixel", + "current_border_width": 3, + "floating": "auto_off", + "geometry": { + "height": 460, + "width": 724, + "x": 0, + "y": 0 + }, + "name": "./start.sh", + "percent": 0.5, + "swallows": [ + { + "instance": "^urxvt$" + } + ], + "type": "con" + } + ] +} +] diff --git a/python/sweeping_generator/tmux/session.yml b/python/sweeping_generator/tmux/session.yml new file mode 100644 index 0000000..0e107e5 --- /dev/null +++ b/python/sweeping_generator/tmux/session.yml @@ -0,0 +1,54 @@ +# do not modify these +root: ./ +name: simulation +socket_name: mrs +attach: false +tmux_options: -f /etc/ctu-mrs/tmux.conf +# you can modify these +pre_window: export UAV_NAME=uav1; export RUN_TYPE=simulation; export UAV_TYPE=x500 +startup_window: sweeping_generator +windows: + - roscore: + layout: tiled + panes: + - roscore + - simulator: + layout: tiled + panes: + - waitForRos; roslaunch mrs_multirotor_simulator multirotor_simulator.launch custom_config:=./config/simulator.yaml + - hw_api: + layout: tiled + panes: + - waitForTime; roslaunch mrs_multirotor_simulator hw_api.launch custom_config:=./config/hw_api.yaml + - takeoff: + layout: tiled + panes: + - waitForHw; roslaunch mrs_uav_autostart automatic_start.launch custom_config:=./config/automatic_start.yaml + - waitForControl; rosservice call /$UAV_NAME/hw_api/arming 1; sleep 2; rosservice call /$UAV_NAME/hw_api/offboard + - status: + layout: tiled + panes: + - waitForHw; roslaunch mrs_uav_status status.launch + - control: + layout: tiled + panes: + - waitForHw; roslaunch mrs_uav_core core.launch + platform_config:=`rospack find mrs_multirotor_simulator`/config/mrs_uav_system/$UAV_TYPE.yaml + custom_config:=./config/custom_config.yaml + world_config:=./config/world_config.yaml + network_config:=./config/network_config.yaml + - sweeping_generator: + layout: tiled + panes: + - waitForControl; roslaunch example_sweeping_generator sweeping_generator.launch + - 'history -s rosservice call /$UAV_NAME/sweeping_generator/start 3.0' + - rviz: + layout: tiled + panes: + - waitForControl; roslaunch mrs_uav_core rviz.launch + - waitForControl; roslaunch mrs_rviz_plugins load_robot.launch + - waitForControl; waitForControl; roslaunch mrs_rviz_plugins rviz_interface.launch + - layout: + layout: tiled + panes: + - waitForControl; sleep 5; ~/.i3/layout_manager.sh ./layout.json diff --git a/python/sweeping_generator/tmux/start.sh b/python/sweeping_generator/tmux/start.sh new file mode 100755 index 0000000..5bb2275 --- /dev/null +++ b/python/sweeping_generator/tmux/start.sh @@ -0,0 +1,27 @@ +#!/bin/bash + +# Absolute path to this script. /home/user/bin/foo.sh +SCRIPT=$(readlink -f $0) +# Absolute path this script is in. /home/user/bin +SCRIPTPATH=`dirname $SCRIPT` +cd "$SCRIPTPATH" + +export TMUX_SESSION_NAME=simulation +export TMUX_SOCKET_NAME=mrs + +# start tmuxinator +tmuxinator start -p ./session.yml + +# if we are not in tmux +if [ -z $TMUX ]; then + + # just attach to the session + tmux -L $TMUX_SOCKET_NAME a -t $TMUX_SESSION_NAME + +# if we are in tmux +else + + # switch to the newly-started session + tmux detach-client -E "tmux -L $TMUX_SOCKET_NAME a -t $TMUX_SESSION_NAME" + +fi diff --git a/tracker_plugin/README.md b/tracker_plugin/README.md deleted file mode 100644 index 5583fa7..0000000 --- a/tracker_plugin/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# example_tracker_plugin - -Example tracker plugin for the MRS Control Manager.