diff --git a/.nojekyll b/.nojekyll
new file mode 100644
index 0000000..e69de29
diff --git a/annotated.html b/annotated.html
new file mode 100644
index 0000000..d12c043
--- /dev/null
+++ b/annotated.html
@@ -0,0 +1,111 @@
+
+
+
+
+
+
+
+mrs_uav_hw_api: Class List
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_uav_hw_api
+
+ An abstraction layer between the MRS UAV System and a low-level Flight Controller
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Here are the classes, structs, unions and interfaces with brief descriptions:
+
[detail level 1 2 ]
+ ▼ N mrs_uav_hw_api
+ C CommonHandlers_t A structure with methods and variables provided to the HW API Plugin
+ C DummyApi
+ C HwApiManager
+ C MrsUavHwApi Interface for the HW API Plugin
+ C Publishers_t A structure with publisher methods provided to the HW API Plugin. The plugin can call these methods at will to provided data to the MRS UAV System. In case the HW API Plugin intents to publish data, the respective varible "produces_***" in the HW API Capabilities of the plugin is supposed to be fill in
+
+
+
+
+
+
+
+
diff --git a/annotated_dup.js b/annotated_dup.js
new file mode 100644
index 0000000..96a86c3
--- /dev/null
+++ b/annotated_dup.js
@@ -0,0 +1,10 @@
+var annotated_dup =
+[
+ [ "mrs_uav_hw_api", null, [
+ [ "CommonHandlers_t", "structmrs__uav__hw__api_1_1CommonHandlers__t.html", "structmrs__uav__hw__api_1_1CommonHandlers__t" ],
+ [ "DummyApi", "classmrs__uav__hw__api_1_1DummyApi.html", "classmrs__uav__hw__api_1_1DummyApi" ],
+ [ "HwApiManager", "classmrs__uav__hw__api_1_1HwApiManager.html", "classmrs__uav__hw__api_1_1HwApiManager" ],
+ [ "MrsUavHwApi", "classmrs__uav__hw__api_1_1MrsUavHwApi.html", "classmrs__uav__hw__api_1_1MrsUavHwApi" ],
+ [ "Publishers_t", "structmrs__uav__hw__api_1_1Publishers__t.html", "structmrs__uav__hw__api_1_1Publishers__t" ]
+ ] ]
+];
\ No newline at end of file
diff --git a/api_8h_source.html b/api_8h_source.html
new file mode 100644
index 0000000..2785c07
--- /dev/null
+++ b/api_8h_source.html
@@ -0,0 +1,195 @@
+
+
+
+
+
+
+
+mrs_uav_hw_api: include/mrs_uav_hw_api/api.h Source File
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_uav_hw_api
+
+ An abstraction layer between the MRS UAV System and a low-level Flight Controller
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
1 #ifndef MRS_UAV_HW_API_H
+
2 #define MRS_UAV_HW_API_H
+
+
+
+
+
+
8 #include <mrs_lib/subscribe_handler.h>
+
+
10 #include <mrs_uav_hw_api/common_handlers.h>
+
+
12 #include <mrs_msgs/HwApiActuatorCmd.h>
+
13 #include <mrs_msgs/HwApiControlGroupCmd.h>
+
14 #include <mrs_msgs/HwApiAttitudeCmd.h>
+
15 #include <mrs_msgs/HwApiAttitudeRateCmd.h>
+
16 #include <mrs_msgs/HwApiAccelerationHdgRateCmd.h>
+
17 #include <mrs_msgs/HwApiAccelerationHdgCmd.h>
+
18 #include <mrs_msgs/HwApiVelocityHdgRateCmd.h>
+
19 #include <mrs_msgs/HwApiVelocityHdgCmd.h>
+
20 #include <mrs_msgs/HwApiPositionCmd.h>
+
21 #include <mrs_msgs/HwApiStatus.h>
+
22 #include <mrs_msgs/HwApiCapabilities.h>
+
23 #include <mrs_msgs/TrackerCommand.h>
+
+
+
+
27 namespace mrs_uav_hw_api
+
+
+
+
+
+
42 virtual void initialize (
const ros::NodeHandle& parent_nh, std::shared_ptr<mrs_uav_hw_api::CommonHandlers_t> common_handlers) = 0;
+
+
50 virtual mrs_msgs::HwApiStatus
getStatus () = 0;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
163 virtual std::tuple<bool, std::string>
callbackArming (
const bool & request) = 0;
+
+
+
+
+
+
+
+
+
+
+
+virtual bool callbackAccelerationHdgRateCmd(const mrs_msgs::HwApiAccelerationHdgRateCmd::ConstPtr msg)=0
Callback for the incoming Acceleration+HdgRateCmd control reference.
+virtual mrs_msgs::HwApiCapabilities getCapabilities()=0
Method for obtaining the capabilities of the HW API Plugin. This method will be called repeatedly (af...
+virtual bool callbackActuatorCmd(const mrs_msgs::HwApiActuatorCmd::ConstPtr msg)=0
Callback for the incoming ActuatorCmd control reference.
+virtual bool callbackVelocityHdgRateCmd(const mrs_msgs::HwApiVelocityHdgRateCmd::ConstPtr msg)=0
Callback for the incoming Velocity+HdgRateCmd control reference.
+virtual bool callbackAttitudeCmd(const mrs_msgs::HwApiAttitudeCmd::ConstPtr msg)=0
Callback for the incoming Attitude+ThrottleCmd control reference.
+virtual ~MrsUavHwApi()=default
Destructor.
+virtual void initialize(const ros::NodeHandle &parent_nh, std::shared_ptr< mrs_uav_hw_api::CommonHandlers_t > common_handlers)=0
The initialization method. This will be called only once at the beginning of the lifetime of the plug...
+virtual bool callbackPositionCmd(const mrs_msgs::HwApiPositionCmd::ConstPtr msg)=0
Callback for the incoming Velocity+PositionCmd control reference.
+virtual std::tuple< bool, std::string > callbackArming(const bool &request)=0
Callback for a service call for arming/disarming the flight controller.
+virtual bool callbackAccelerationHdgCmd(const mrs_msgs::HwApiAccelerationHdgCmd::ConstPtr msg)=0
Callback for the incoming Acceleration+HdgCmd control reference.
+Interface for the HW API Plugin.
Definition: api.h:33
+virtual std::tuple< bool, std::string > callbackOffboard(void)=0
Callback for a service call for switching the flight controller to the "offboard" mode....
+virtual bool callbackControlGroupCmd(const mrs_msgs::HwApiControlGroupCmd::ConstPtr msg)=0
Callback for the incoming ControlGroupCmd control reference.
+virtual bool callbackAttitudeRateCmd(const mrs_msgs::HwApiAttitudeRateCmd::ConstPtr msg)=0
Callback for the incoming AttitudeRate+ThrottleCmd control reference.
+virtual mrs_msgs::HwApiStatus getStatus()=0
Method for acquiring the HW API plugin's status. This method will be called repeatedly to obtain the ...
+virtual bool callbackVelocityHdgCmd(const mrs_msgs::HwApiVelocityHdgCmd::ConstPtr msg)=0
Callback for the incoming Velocity+HdgCmd control reference.
+virtual void callbackTrackerCmd(const mrs_msgs::TrackerCommand::ConstPtr msg)=0
Callback for the incoming TrackerCommand. The tracker command is provided by the reference generator ...
+
+
+
+
diff --git a/bc_s.png b/bc_s.png
new file mode 100644
index 0000000..224b29a
Binary files /dev/null and b/bc_s.png differ
diff --git a/bdwn.png b/bdwn.png
new file mode 100644
index 0000000..940a0b9
Binary files /dev/null and b/bdwn.png differ
diff --git a/classes.html b/classes.html
new file mode 100644
index 0000000..cef6042
--- /dev/null
+++ b/classes.html
@@ -0,0 +1,124 @@
+
+
+
+
+
+
+
+mrs_uav_hw_api: Class Index
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_uav_hw_api
+
+ An abstraction layer between the MRS UAV System and a low-level Flight Controller
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/classmrs__uav__hw__api_1_1DummyApi-members.html b/classmrs__uav__hw__api_1_1DummyApi-members.html
new file mode 100644
index 0000000..f4a8d57
--- /dev/null
+++ b/classmrs__uav__hw__api_1_1DummyApi-members.html
@@ -0,0 +1,120 @@
+
+
+
+
+
+
+
+mrs_uav_hw_api: Member List
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_uav_hw_api
+
+ An abstraction layer between the MRS UAV System and a low-level Flight Controller
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
This is the complete list of members for mrs_uav_hw_api::DummyApi , including all inherited members.
+
+
+
+
+
+
diff --git a/classmrs__uav__hw__api_1_1DummyApi.html b/classmrs__uav__hw__api_1_1DummyApi.html
new file mode 100644
index 0000000..c52536a
--- /dev/null
+++ b/classmrs__uav__hw__api_1_1DummyApi.html
@@ -0,0 +1,729 @@
+
+
+
+
+
+
+
+mrs_uav_hw_api: mrs_uav_hw_api::DummyApi Class Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_uav_hw_api
+
+ An abstraction layer between the MRS UAV System and a low-level Flight Controller
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+void initialize (const ros::NodeHandle &parent_nh, std::shared_ptr< mrs_uav_hw_api::CommonHandlers_t > common_handlers)
+ The initialization method. This will be called only once at the beginning of the lifetime of the plugin (after initialize() ). More...
+
+mrs_msgs::HwApiStatus getStatus ()
+ Method for acquiring the HW API plugin's status. This method will be called repeatedly to obtain the status, which will be publisher by the plugin manager. More...
+
+mrs_msgs::HwApiCapabilities getCapabilities ()
+ Method for obtaining the capabilities of the HW API Plugin. This method will be called repeatedly (after initialize() ). More...
+
+bool callbackActuatorCmd (const mrs_msgs::HwApiActuatorCmd::ConstPtr msg)
+ Callback for the incoming ActuatorCmd control reference. More...
+
+bool callbackControlGroupCmd (const mrs_msgs::HwApiControlGroupCmd::ConstPtr msg)
+ Callback for the incoming ControlGroupCmd control reference. More...
+
+bool callbackAttitudeRateCmd (const mrs_msgs::HwApiAttitudeRateCmd::ConstPtr msg)
+ Callback for the incoming AttitudeRate+ThrottleCmd control reference. More...
+
+bool callbackAttitudeCmd (const mrs_msgs::HwApiAttitudeCmd::ConstPtr msg)
+ Callback for the incoming Attitude+ThrottleCmd control reference. More...
+
+bool callbackAccelerationHdgRateCmd (const mrs_msgs::HwApiAccelerationHdgRateCmd::ConstPtr msg)
+ Callback for the incoming Acceleration+HdgRateCmd control reference. More...
+
+bool callbackAccelerationHdgCmd (const mrs_msgs::HwApiAccelerationHdgCmd::ConstPtr msg)
+ Callback for the incoming Acceleration+HdgCmd control reference. More...
+
+bool callbackVelocityHdgRateCmd (const mrs_msgs::HwApiVelocityHdgRateCmd::ConstPtr msg)
+ Callback for the incoming Velocity+HdgRateCmd control reference. More...
+
+bool callbackVelocityHdgCmd (const mrs_msgs::HwApiVelocityHdgCmd::ConstPtr msg)
+ Callback for the incoming Velocity+HdgCmd control reference. More...
+
+bool callbackPositionCmd (const mrs_msgs::HwApiPositionCmd::ConstPtr msg)
+ Callback for the incoming Velocity+PositionCmd control reference. More...
+
+void callbackTrackerCmd (const mrs_msgs::TrackerCommand::ConstPtr msg)
+ Callback for the incoming TrackerCommand. The tracker command is provided by the reference generator of the MRS UAV System and it can be used as a source for feed forward control action. More...
+
+std::tuple< bool, std::string > callbackArming (const bool &request)
+ Callback for a service call for arming/disarming the flight controller. More...
+
+std::tuple< bool, std::string > callbackOffboard (void)
+ Callback for a service call for switching the flight controller to the "offboard" mode. When in offboard mode, the flight controller is using the provided reference commands for control. More...
+
+
+
+virtual ~MrsUavHwApi ()=default
+ Destructor.
+
+
+
+
+
◆ callbackAccelerationHdgCmd()
+
+
+
+
+
+
+
+
+ bool mrs_uav_hw_api::DummyApi::callbackAccelerationHdgCmd
+ (
+ const mrs_msgs::HwApiAccelerationHdgCmd::ConstPtr
+ msg )
+
+
+
+
+
+virtual
+
+
+
+
+
Callback for the incoming Acceleration+HdgCmd control reference.
+
Parameters
+
+ msg incoming ROS message
+
+
+
+
Returns success (true if processed).
+
+
Implements mrs_uav_hw_api::MrsUavHwApi .
+
+
+
+
+
◆ callbackAccelerationHdgRateCmd()
+
+
+
+
+
+
+
+
+ bool mrs_uav_hw_api::DummyApi::callbackAccelerationHdgRateCmd
+ (
+ const mrs_msgs::HwApiAccelerationHdgRateCmd::ConstPtr
+ msg )
+
+
+
+
+
+virtual
+
+
+
+
+
Callback for the incoming Acceleration+HdgRateCmd control reference.
+
Parameters
+
+ msg incoming ROS message
+
+
+
+
Returns success (true if processed).
+
+
Implements mrs_uav_hw_api::MrsUavHwApi .
+
+
+
+
+
◆ callbackActuatorCmd()
+
+
+
+
+
+
+
+
+ bool mrs_uav_hw_api::DummyApi::callbackActuatorCmd
+ (
+ const mrs_msgs::HwApiActuatorCmd::ConstPtr
+ msg )
+
+
+
+
+
+virtual
+
+
+
+
+
Callback for the incoming ActuatorCmd control reference.
+
Parameters
+
+ msg incoming ROS message
+
+
+
+
Returns success (true if processed).
+
+
Implements mrs_uav_hw_api::MrsUavHwApi .
+
+
+
+
+
◆ callbackArming()
+
+
+
+
+
+
+
+
+ std::tuple< bool, std::string > mrs_uav_hw_api::DummyApi::callbackArming
+ (
+ const bool &
+ request )
+
+
+
+
+
+virtual
+
+
+
+
+
Callback for a service call for arming/disarming the flight controller.
+
Parameters
+
+
+
+
Returns tuple(succes, message)
+
+
Implements mrs_uav_hw_api::MrsUavHwApi .
+
+
+
+
+
◆ callbackAttitudeCmd()
+
+
+
+
+
+
+
+
+ bool mrs_uav_hw_api::DummyApi::callbackAttitudeCmd
+ (
+ const mrs_msgs::HwApiAttitudeCmd::ConstPtr
+ msg )
+
+
+
+
+
+virtual
+
+
+
+
+
Callback for the incoming Attitude+ThrottleCmd control reference.
+
Parameters
+
+ msg incoming ROS message
+
+
+
+
Returns success (true if processed).
+
+
Implements mrs_uav_hw_api::MrsUavHwApi .
+
+
+
+
+
◆ callbackAttitudeRateCmd()
+
+
+
+
+
+
+
+
+ bool mrs_uav_hw_api::DummyApi::callbackAttitudeRateCmd
+ (
+ const mrs_msgs::HwApiAttitudeRateCmd::ConstPtr
+ msg )
+
+
+
+
+
+virtual
+
+
+
+
+
Callback for the incoming AttitudeRate+ThrottleCmd control reference.
+
Parameters
+
+ msg incoming ROS message
+
+
+
+
Returns success (true if processed).
+
+
Implements mrs_uav_hw_api::MrsUavHwApi .
+
+
+
+
+
◆ callbackControlGroupCmd()
+
+
+
+
+
+
+
+
+ bool mrs_uav_hw_api::DummyApi::callbackControlGroupCmd
+ (
+ const mrs_msgs::HwApiControlGroupCmd::ConstPtr
+ msg )
+
+
+
+
+
+virtual
+
+
+
+
+
Callback for the incoming ControlGroupCmd control reference.
+
Parameters
+
+ msg incoming ROS message
+
+
+
+
Returns success (true if processed).
+
+
Implements mrs_uav_hw_api::MrsUavHwApi .
+
+
+
+
+
◆ callbackOffboard()
+
+
+
+
+
+
+
+
+ std::tuple< bool, std::string > mrs_uav_hw_api::DummyApi::callbackOffboard
+ (
+ void
+ )
+
+
+
+
+
+virtual
+
+
+
+
+
Callback for a service call for switching the flight controller to the "offboard" mode. When in offboard mode, the flight controller is using the provided reference commands for control.
+
Returns tuple(succes, message)
+
+
Implements mrs_uav_hw_api::MrsUavHwApi .
+
+
+
+
+
◆ callbackPositionCmd()
+
+
+
+
+
+
+
+
+ bool mrs_uav_hw_api::DummyApi::callbackPositionCmd
+ (
+ const mrs_msgs::HwApiPositionCmd::ConstPtr
+ msg )
+
+
+
+
+
+virtual
+
+
+
+
+
Callback for the incoming Velocity+PositionCmd control reference.
+
Parameters
+
+ msg incoming ROS message
+
+
+
+
Returns success (true if processed).
+
+
Implements mrs_uav_hw_api::MrsUavHwApi .
+
+
+
+
+
◆ callbackTrackerCmd()
+
+
+
+
+
+
+
+
+ void mrs_uav_hw_api::DummyApi::callbackTrackerCmd
+ (
+ const mrs_msgs::TrackerCommand::ConstPtr
+ msg )
+
+
+
+
+
+virtual
+
+
+
+
+
Callback for the incoming TrackerCommand. The tracker command is provided by the reference generator of the MRS UAV System and it can be used as a source for feed forward control action.
+
Parameters
+
+ msg incoming ROS message
+
+
+
+
+
Implements mrs_uav_hw_api::MrsUavHwApi .
+
+
+
+
+
◆ callbackVelocityHdgCmd()
+
+
+
+
+
+
+
+
+ bool mrs_uav_hw_api::DummyApi::callbackVelocityHdgCmd
+ (
+ const mrs_msgs::HwApiVelocityHdgCmd::ConstPtr
+ msg )
+
+
+
+
+
+virtual
+
+
+
+
+
Callback for the incoming Velocity+HdgCmd control reference.
+
Parameters
+
+ msg incoming ROS message
+
+
+
+
Returns success (true if processed).
+
+
Implements mrs_uav_hw_api::MrsUavHwApi .
+
+
+
+
+
◆ callbackVelocityHdgRateCmd()
+
+
+
+
+
+
+
+
+ bool mrs_uav_hw_api::DummyApi::callbackVelocityHdgRateCmd
+ (
+ const mrs_msgs::HwApiVelocityHdgRateCmd::ConstPtr
+ msg )
+
+
+
+
+
+virtual
+
+
+
+
+
Callback for the incoming Velocity+HdgRateCmd control reference.
+
Parameters
+
+ msg incoming ROS message
+
+
+
+
Returns success (true if processed).
+
+
Implements mrs_uav_hw_api::MrsUavHwApi .
+
+
+
+
+
◆ getCapabilities()
+
+
+
+
+
+
+
+
+ mrs_msgs::HwApiCapabilities mrs_uav_hw_api::DummyApi::getCapabilities
+ (
+ )
+
+
+
+
+
+virtual
+
+
+
+
+
Method for obtaining the capabilities of the HW API Plugin. This method will be called repeatedly (after initialize() ).
+
Returns The capabilities ROS message.
+
+
Implements mrs_uav_hw_api::MrsUavHwApi .
+
+
+
+
+
◆ getStatus()
+
+
+
+
+
+
+
+
+ mrs_msgs::HwApiStatus mrs_uav_hw_api::DummyApi::getStatus
+ (
+ )
+
+
+
+
+
+virtual
+
+
+
+
+
Method for acquiring the HW API plugin's status. This method will be called repeatedly to obtain the status, which will be publisher by the plugin manager.
+
Returns The status ROS message.
+
+
Implements mrs_uav_hw_api::MrsUavHwApi .
+
+
+
+
+
◆ initialize()
+
+
+
+
+
+
+
+
+ void mrs_uav_hw_api::DummyApi::initialize
+ (
+ const ros::NodeHandle &
+ parent_nh ,
+
+
+
+
+ std::shared_ptr< mrs_uav_hw_api::CommonHandlers_t >
+ common_handlers
+
+
+
+ )
+
+
+
+
+
+virtual
+
+
+
+
+
The initialization method. This will be called only once at the beginning of the lifetime of the plugin (after initialize() ).
+
Parameters
+
+ parent_nh Node handle of the HW API plugin manager. Use this to create subscibers, publisher, etc.
+ common_handlers Structure pre-filled with useful variables, methods and objects that the plugin can use.
+
+
+
+
+
Implements mrs_uav_hw_api::MrsUavHwApi .
+
+
+
+
The documentation for this class was generated from the following file:
+
+
+
+
+
+
diff --git a/classmrs__uav__hw__api_1_1DummyApi.js b/classmrs__uav__hw__api_1_1DummyApi.js
new file mode 100644
index 0000000..a728e19
--- /dev/null
+++ b/classmrs__uav__hw__api_1_1DummyApi.js
@@ -0,0 +1,18 @@
+var classmrs__uav__hw__api_1_1DummyApi =
+[
+ [ "callbackAccelerationHdgCmd", "classmrs__uav__hw__api_1_1DummyApi.html#ac904bff4c9b37aa2b5ee8aa30d922f79", null ],
+ [ "callbackAccelerationHdgRateCmd", "classmrs__uav__hw__api_1_1DummyApi.html#af8681be68b7f7e7cdbf12c8ce22fbe31", null ],
+ [ "callbackActuatorCmd", "classmrs__uav__hw__api_1_1DummyApi.html#ac87d448f75cbd8a1b8d4da0467d163e9", null ],
+ [ "callbackArming", "classmrs__uav__hw__api_1_1DummyApi.html#a565c955f9541ccb72a904f67bd02f83c", null ],
+ [ "callbackAttitudeCmd", "classmrs__uav__hw__api_1_1DummyApi.html#afd1ca6edaef8e060de452de555422191", null ],
+ [ "callbackAttitudeRateCmd", "classmrs__uav__hw__api_1_1DummyApi.html#a4c628110de00a3df84e44cad7190e364", null ],
+ [ "callbackControlGroupCmd", "classmrs__uav__hw__api_1_1DummyApi.html#a218c3ffb446ca0b45f241e2790a4b684", null ],
+ [ "callbackOffboard", "classmrs__uav__hw__api_1_1DummyApi.html#a1c8081a81f3f1a684cafecd627e75e22", null ],
+ [ "callbackPositionCmd", "classmrs__uav__hw__api_1_1DummyApi.html#ad6ef3a2c6514595361959664cf6af850", null ],
+ [ "callbackTrackerCmd", "classmrs__uav__hw__api_1_1DummyApi.html#aa022a02c75d33e4e93f112537a1fdf86", null ],
+ [ "callbackVelocityHdgCmd", "classmrs__uav__hw__api_1_1DummyApi.html#a9dbd76d8646e8414c4c4b6405e988f00", null ],
+ [ "callbackVelocityHdgRateCmd", "classmrs__uav__hw__api_1_1DummyApi.html#a3cbaa93b72033097ece1f833d022968f", null ],
+ [ "getCapabilities", "classmrs__uav__hw__api_1_1DummyApi.html#a3328034dca690d917ce2689c1eb13b52", null ],
+ [ "getStatus", "classmrs__uav__hw__api_1_1DummyApi.html#af7bbab47dba560abd5a76a273c07e157", null ],
+ [ "initialize", "classmrs__uav__hw__api_1_1DummyApi.html#a12c9b64ebdd7787cb78f23f75892d76d", null ]
+];
\ No newline at end of file
diff --git a/classmrs__uav__hw__api_1_1DummyApi__coll__graph.map b/classmrs__uav__hw__api_1_1DummyApi__coll__graph.map
new file mode 100644
index 0000000..905ba0a
--- /dev/null
+++ b/classmrs__uav__hw__api_1_1DummyApi__coll__graph.map
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/classmrs__uav__hw__api_1_1DummyApi__coll__graph.md5 b/classmrs__uav__hw__api_1_1DummyApi__coll__graph.md5
new file mode 100644
index 0000000..936291d
--- /dev/null
+++ b/classmrs__uav__hw__api_1_1DummyApi__coll__graph.md5
@@ -0,0 +1 @@
+5d3f612062590287f59255e19b5f03fa
\ No newline at end of file
diff --git a/classmrs__uav__hw__api_1_1DummyApi__coll__graph.png b/classmrs__uav__hw__api_1_1DummyApi__coll__graph.png
new file mode 100644
index 0000000..54e84f0
Binary files /dev/null and b/classmrs__uav__hw__api_1_1DummyApi__coll__graph.png differ
diff --git a/classmrs__uav__hw__api_1_1DummyApi__inherit__graph.map b/classmrs__uav__hw__api_1_1DummyApi__inherit__graph.map
new file mode 100644
index 0000000..905ba0a
--- /dev/null
+++ b/classmrs__uav__hw__api_1_1DummyApi__inherit__graph.map
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/classmrs__uav__hw__api_1_1DummyApi__inherit__graph.md5 b/classmrs__uav__hw__api_1_1DummyApi__inherit__graph.md5
new file mode 100644
index 0000000..936291d
--- /dev/null
+++ b/classmrs__uav__hw__api_1_1DummyApi__inherit__graph.md5
@@ -0,0 +1 @@
+5d3f612062590287f59255e19b5f03fa
\ No newline at end of file
diff --git a/classmrs__uav__hw__api_1_1DummyApi__inherit__graph.png b/classmrs__uav__hw__api_1_1DummyApi__inherit__graph.png
new file mode 100644
index 0000000..54e84f0
Binary files /dev/null and b/classmrs__uav__hw__api_1_1DummyApi__inherit__graph.png differ
diff --git a/classmrs__uav__hw__api_1_1HwApiManager-members.html b/classmrs__uav__hw__api_1_1HwApiManager-members.html
new file mode 100644
index 0000000..8324b51
--- /dev/null
+++ b/classmrs__uav__hw__api_1_1HwApiManager-members.html
@@ -0,0 +1,105 @@
+
+
+
+
+
+
+
+mrs_uav_hw_api: Member List
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_uav_hw_api
+
+ An abstraction layer between the MRS UAV System and a low-level Flight Controller
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
This is the complete list of members for mrs_uav_hw_api::HwApiManager , including all inherited members.
+
+
+
+
+
+
diff --git a/classmrs__uav__hw__api_1_1HwApiManager.html b/classmrs__uav__hw__api_1_1HwApiManager.html
new file mode 100644
index 0000000..3b0b43a
--- /dev/null
+++ b/classmrs__uav__hw__api_1_1HwApiManager.html
@@ -0,0 +1,137 @@
+
+
+
+
+
+
+
+mrs_uav_hw_api: mrs_uav_hw_api::HwApiManager Class Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_uav_hw_api
+
+ An abstraction layer between the MRS UAV System and a low-level Flight Controller
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+virtual void onInit ()
+
+
+
The documentation for this class was generated from the following file:
+src/hw_api_manager.cpp
+
+
+
+
+
+
+
diff --git a/classmrs__uav__hw__api_1_1HwApiManager.js b/classmrs__uav__hw__api_1_1HwApiManager.js
new file mode 100644
index 0000000..3147d51
--- /dev/null
+++ b/classmrs__uav__hw__api_1_1HwApiManager.js
@@ -0,0 +1,4 @@
+var classmrs__uav__hw__api_1_1HwApiManager =
+[
+ [ "onInit", "classmrs__uav__hw__api_1_1HwApiManager.html#ad9caf16a0e5b196a476b2b870af92627", null ]
+];
\ No newline at end of file
diff --git a/classmrs__uav__hw__api_1_1HwApiManager__coll__graph.map b/classmrs__uav__hw__api_1_1HwApiManager__coll__graph.map
new file mode 100644
index 0000000..489681a
--- /dev/null
+++ b/classmrs__uav__hw__api_1_1HwApiManager__coll__graph.map
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/classmrs__uav__hw__api_1_1HwApiManager__coll__graph.md5 b/classmrs__uav__hw__api_1_1HwApiManager__coll__graph.md5
new file mode 100644
index 0000000..ffb437c
--- /dev/null
+++ b/classmrs__uav__hw__api_1_1HwApiManager__coll__graph.md5
@@ -0,0 +1 @@
+2554979daf08ced293db3ecfe016a414
\ No newline at end of file
diff --git a/classmrs__uav__hw__api_1_1HwApiManager__coll__graph.png b/classmrs__uav__hw__api_1_1HwApiManager__coll__graph.png
new file mode 100644
index 0000000..b83dc88
Binary files /dev/null and b/classmrs__uav__hw__api_1_1HwApiManager__coll__graph.png differ
diff --git a/classmrs__uav__hw__api_1_1HwApiManager__inherit__graph.map b/classmrs__uav__hw__api_1_1HwApiManager__inherit__graph.map
new file mode 100644
index 0000000..489681a
--- /dev/null
+++ b/classmrs__uav__hw__api_1_1HwApiManager__inherit__graph.map
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/classmrs__uav__hw__api_1_1HwApiManager__inherit__graph.md5 b/classmrs__uav__hw__api_1_1HwApiManager__inherit__graph.md5
new file mode 100644
index 0000000..ffb437c
--- /dev/null
+++ b/classmrs__uav__hw__api_1_1HwApiManager__inherit__graph.md5
@@ -0,0 +1 @@
+2554979daf08ced293db3ecfe016a414
\ No newline at end of file
diff --git a/classmrs__uav__hw__api_1_1HwApiManager__inherit__graph.png b/classmrs__uav__hw__api_1_1HwApiManager__inherit__graph.png
new file mode 100644
index 0000000..b83dc88
Binary files /dev/null and b/classmrs__uav__hw__api_1_1HwApiManager__inherit__graph.png differ
diff --git a/classmrs__uav__hw__api_1_1MrsUavHwApi-members.html b/classmrs__uav__hw__api_1_1MrsUavHwApi-members.html
new file mode 100644
index 0000000..e345c37
--- /dev/null
+++ b/classmrs__uav__hw__api_1_1MrsUavHwApi-members.html
@@ -0,0 +1,120 @@
+
+
+
+
+
+
+
+mrs_uav_hw_api: Member List
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_uav_hw_api
+
+ An abstraction layer between the MRS UAV System and a low-level Flight Controller
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
This is the complete list of members for mrs_uav_hw_api::MrsUavHwApi , including all inherited members.
+
+
+
+
+
+
diff --git a/classmrs__uav__hw__api_1_1MrsUavHwApi.html b/classmrs__uav__hw__api_1_1MrsUavHwApi.html
new file mode 100644
index 0000000..a69a1f8
--- /dev/null
+++ b/classmrs__uav__hw__api_1_1MrsUavHwApi.html
@@ -0,0 +1,724 @@
+
+
+
+
+
+
+
+mrs_uav_hw_api: mrs_uav_hw_api::MrsUavHwApi Class Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_uav_hw_api
+
+ An abstraction layer between the MRS UAV System and a low-level Flight Controller
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Interface for the HW API Plugin.
+ More...
+
+
#include <api.h >
+
+
+
+
+
+
+virtual void initialize (const ros::NodeHandle &parent_nh, std::shared_ptr< mrs_uav_hw_api::CommonHandlers_t > common_handlers)=0
+ The initialization method. This will be called only once at the beginning of the lifetime of the plugin (after initialize() ). More...
+
+virtual mrs_msgs::HwApiStatus getStatus ()=0
+ Method for acquiring the HW API plugin's status. This method will be called repeatedly to obtain the status, which will be publisher by the plugin manager. More...
+
+virtual mrs_msgs::HwApiCapabilities getCapabilities ()=0
+ Method for obtaining the capabilities of the HW API Plugin. This method will be called repeatedly (after initialize() ). More...
+
+virtual bool callbackActuatorCmd (const mrs_msgs::HwApiActuatorCmd::ConstPtr msg)=0
+ Callback for the incoming ActuatorCmd control reference. More...
+
+virtual bool callbackControlGroupCmd (const mrs_msgs::HwApiControlGroupCmd::ConstPtr msg)=0
+ Callback for the incoming ControlGroupCmd control reference. More...
+
+virtual bool callbackAttitudeRateCmd (const mrs_msgs::HwApiAttitudeRateCmd::ConstPtr msg)=0
+ Callback for the incoming AttitudeRate+ThrottleCmd control reference. More...
+
+virtual bool callbackAttitudeCmd (const mrs_msgs::HwApiAttitudeCmd::ConstPtr msg)=0
+ Callback for the incoming Attitude+ThrottleCmd control reference. More...
+
+virtual bool callbackAccelerationHdgRateCmd (const mrs_msgs::HwApiAccelerationHdgRateCmd::ConstPtr msg)=0
+ Callback for the incoming Acceleration+HdgRateCmd control reference. More...
+
+virtual bool callbackAccelerationHdgCmd (const mrs_msgs::HwApiAccelerationHdgCmd::ConstPtr msg)=0
+ Callback for the incoming Acceleration+HdgCmd control reference. More...
+
+virtual bool callbackVelocityHdgRateCmd (const mrs_msgs::HwApiVelocityHdgRateCmd::ConstPtr msg)=0
+ Callback for the incoming Velocity+HdgRateCmd control reference. More...
+
+virtual bool callbackVelocityHdgCmd (const mrs_msgs::HwApiVelocityHdgCmd::ConstPtr msg)=0
+ Callback for the incoming Velocity+HdgCmd control reference. More...
+
+virtual bool callbackPositionCmd (const mrs_msgs::HwApiPositionCmd::ConstPtr msg)=0
+ Callback for the incoming Velocity+PositionCmd control reference. More...
+
+virtual void callbackTrackerCmd (const mrs_msgs::TrackerCommand::ConstPtr msg)=0
+ Callback for the incoming TrackerCommand. The tracker command is provided by the reference generator of the MRS UAV System and it can be used as a source for feed forward control action. More...
+
+virtual std::tuple< bool, std::string > callbackArming (const bool &request)=0
+ Callback for a service call for arming/disarming the flight controller. More...
+
+virtual std::tuple< bool, std::string > callbackOffboard (void)=0
+ Callback for a service call for switching the flight controller to the "offboard" mode. When in offboard mode, the flight controller is using the provided reference commands for control. More...
+
+
+virtual ~MrsUavHwApi ()=default
+ Destructor.
+
+
+
+
Interface for the HW API Plugin.
+
+
+
◆ callbackAccelerationHdgCmd()
+
+
+
+
+
+
+
+
+ virtual bool mrs_uav_hw_api::MrsUavHwApi::callbackAccelerationHdgCmd
+ (
+ const mrs_msgs::HwApiAccelerationHdgCmd::ConstPtr
+ msg )
+
+
+
+
+
+pure virtual
+
+
+
+
+
Callback for the incoming Acceleration+HdgCmd control reference.
+
Parameters
+
+ msg incoming ROS message
+
+
+
+
Returns success (true if processed).
+
+
Implemented in mrs_uav_hw_api::DummyApi .
+
+
+
+
+
◆ callbackAccelerationHdgRateCmd()
+
+
+
+
+
+
+
+
+ virtual bool mrs_uav_hw_api::MrsUavHwApi::callbackAccelerationHdgRateCmd
+ (
+ const mrs_msgs::HwApiAccelerationHdgRateCmd::ConstPtr
+ msg )
+
+
+
+
+
+pure virtual
+
+
+
+
+
Callback for the incoming Acceleration+HdgRateCmd control reference.
+
Parameters
+
+ msg incoming ROS message
+
+
+
+
Returns success (true if processed).
+
+
Implemented in mrs_uav_hw_api::DummyApi .
+
+
+
+
+
◆ callbackActuatorCmd()
+
+
+
+
+
+
+
+
+ virtual bool mrs_uav_hw_api::MrsUavHwApi::callbackActuatorCmd
+ (
+ const mrs_msgs::HwApiActuatorCmd::ConstPtr
+ msg )
+
+
+
+
+
+pure virtual
+
+
+
+
+
Callback for the incoming ActuatorCmd control reference.
+
Parameters
+
+ msg incoming ROS message
+
+
+
+
Returns success (true if processed).
+
+
Implemented in mrs_uav_hw_api::DummyApi .
+
+
+
+
+
◆ callbackArming()
+
+
+
+
+
+
+
+
+ virtual std::tuple<bool, std::string> mrs_uav_hw_api::MrsUavHwApi::callbackArming
+ (
+ const bool &
+ request )
+
+
+
+
+
+pure virtual
+
+
+
+
+
Callback for a service call for arming/disarming the flight controller.
+
Parameters
+
+
+
+
Returns tuple(succes, message)
+
+
Implemented in mrs_uav_hw_api::DummyApi .
+
+
+
+
+
◆ callbackAttitudeCmd()
+
+
+
+
+
+
+
+
+ virtual bool mrs_uav_hw_api::MrsUavHwApi::callbackAttitudeCmd
+ (
+ const mrs_msgs::HwApiAttitudeCmd::ConstPtr
+ msg )
+
+
+
+
+
+pure virtual
+
+
+
+
+
Callback for the incoming Attitude+ThrottleCmd control reference.
+
Parameters
+
+ msg incoming ROS message
+
+
+
+
Returns success (true if processed).
+
+
Implemented in mrs_uav_hw_api::DummyApi .
+
+
+
+
+
◆ callbackAttitudeRateCmd()
+
+
+
+
+
+
+
+
+ virtual bool mrs_uav_hw_api::MrsUavHwApi::callbackAttitudeRateCmd
+ (
+ const mrs_msgs::HwApiAttitudeRateCmd::ConstPtr
+ msg )
+
+
+
+
+
+pure virtual
+
+
+
+
+
Callback for the incoming AttitudeRate+ThrottleCmd control reference.
+
Parameters
+
+ msg incoming ROS message
+
+
+
+
Returns success (true if processed).
+
+
Implemented in mrs_uav_hw_api::DummyApi .
+
+
+
+
+
◆ callbackControlGroupCmd()
+
+
+
+
+
+
+
+
+ virtual bool mrs_uav_hw_api::MrsUavHwApi::callbackControlGroupCmd
+ (
+ const mrs_msgs::HwApiControlGroupCmd::ConstPtr
+ msg )
+
+
+
+
+
+pure virtual
+
+
+
+
+
Callback for the incoming ControlGroupCmd control reference.
+
Parameters
+
+ msg incoming ROS message
+
+
+
+
Returns success (true if processed).
+
+
Implemented in mrs_uav_hw_api::DummyApi .
+
+
+
+
+
◆ callbackOffboard()
+
+
+
+
+
+
+
+
+ virtual std::tuple<bool, std::string> mrs_uav_hw_api::MrsUavHwApi::callbackOffboard
+ (
+ void
+ )
+
+
+
+
+
+pure virtual
+
+
+
+
+
Callback for a service call for switching the flight controller to the "offboard" mode. When in offboard mode, the flight controller is using the provided reference commands for control.
+
Returns tuple(succes, message)
+
+
Implemented in mrs_uav_hw_api::DummyApi .
+
+
+
+
+
◆ callbackPositionCmd()
+
+
+
+
+
+
+
+
+ virtual bool mrs_uav_hw_api::MrsUavHwApi::callbackPositionCmd
+ (
+ const mrs_msgs::HwApiPositionCmd::ConstPtr
+ msg )
+
+
+
+
+
+pure virtual
+
+
+
+
+
Callback for the incoming Velocity+PositionCmd control reference.
+
Parameters
+
+ msg incoming ROS message
+
+
+
+
Returns success (true if processed).
+
+
Implemented in mrs_uav_hw_api::DummyApi .
+
+
+
+
+
◆ callbackTrackerCmd()
+
+
+
+
+
+
+
+
+ virtual void mrs_uav_hw_api::MrsUavHwApi::callbackTrackerCmd
+ (
+ const mrs_msgs::TrackerCommand::ConstPtr
+ msg )
+
+
+
+
+
+pure virtual
+
+
+
+
+
Callback for the incoming TrackerCommand. The tracker command is provided by the reference generator of the MRS UAV System and it can be used as a source for feed forward control action.
+
Parameters
+
+ msg incoming ROS message
+
+
+
+
+
Implemented in mrs_uav_hw_api::DummyApi .
+
+
+
+
+
◆ callbackVelocityHdgCmd()
+
+
+
+
+
+
+
+
+ virtual bool mrs_uav_hw_api::MrsUavHwApi::callbackVelocityHdgCmd
+ (
+ const mrs_msgs::HwApiVelocityHdgCmd::ConstPtr
+ msg )
+
+
+
+
+
+pure virtual
+
+
+
+
+
Callback for the incoming Velocity+HdgCmd control reference.
+
Parameters
+
+ msg incoming ROS message
+
+
+
+
Returns success (true if processed).
+
+
Implemented in mrs_uav_hw_api::DummyApi .
+
+
+
+
+
◆ callbackVelocityHdgRateCmd()
+
+
+
+
+
+
+
+
+ virtual bool mrs_uav_hw_api::MrsUavHwApi::callbackVelocityHdgRateCmd
+ (
+ const mrs_msgs::HwApiVelocityHdgRateCmd::ConstPtr
+ msg )
+
+
+
+
+
+pure virtual
+
+
+
+
+
Callback for the incoming Velocity+HdgRateCmd control reference.
+
Parameters
+
+ msg incoming ROS message
+
+
+
+
Returns success (true if processed).
+
+
Implemented in mrs_uav_hw_api::DummyApi .
+
+
+
+
+
◆ getCapabilities()
+
+
+
+
+
+
+
+
+ virtual mrs_msgs::HwApiCapabilities mrs_uav_hw_api::MrsUavHwApi::getCapabilities
+ (
+ )
+
+
+
+
+
+pure virtual
+
+
+
+
+
Method for obtaining the capabilities of the HW API Plugin. This method will be called repeatedly (after initialize() ).
+
Returns The capabilities ROS message.
+
+
Implemented in mrs_uav_hw_api::DummyApi .
+
+
+
+
+
◆ getStatus()
+
+
+
+
+
+
+
+
+ virtual mrs_msgs::HwApiStatus mrs_uav_hw_api::MrsUavHwApi::getStatus
+ (
+ )
+
+
+
+
+
+pure virtual
+
+
+
+
+
Method for acquiring the HW API plugin's status. This method will be called repeatedly to obtain the status, which will be publisher by the plugin manager.
+
Returns The status ROS message.
+
+
Implemented in mrs_uav_hw_api::DummyApi .
+
+
+
+
+
◆ initialize()
+
+
+
+
+
+
+
+
+ virtual void mrs_uav_hw_api::MrsUavHwApi::initialize
+ (
+ const ros::NodeHandle &
+ parent_nh ,
+
+
+
+
+ std::shared_ptr< mrs_uav_hw_api::CommonHandlers_t >
+ common_handlers
+
+
+
+ )
+
+
+
+
+
+pure virtual
+
+
+
+
+
The initialization method. This will be called only once at the beginning of the lifetime of the plugin (after initialize() ).
+
Parameters
+
+ parent_nh Node handle of the HW API plugin manager. Use this to create subscibers, publisher, etc.
+ common_handlers Structure pre-filled with useful variables, methods and objects that the plugin can use.
+
+
+
+
+
Implemented in mrs_uav_hw_api::DummyApi .
+
+
+
+
The documentation for this class was generated from the following file:
+include/mrs_uav_hw_api/api.h
+
+
+
+
+
+
+
diff --git a/classmrs__uav__hw__api_1_1MrsUavHwApi.js b/classmrs__uav__hw__api_1_1MrsUavHwApi.js
new file mode 100644
index 0000000..c723da5
--- /dev/null
+++ b/classmrs__uav__hw__api_1_1MrsUavHwApi.js
@@ -0,0 +1,19 @@
+var classmrs__uav__hw__api_1_1MrsUavHwApi =
+[
+ [ "~MrsUavHwApi", "classmrs__uav__hw__api_1_1MrsUavHwApi.html#ac56c138bfac82f134d2c67558d49e51d", null ],
+ [ "callbackAccelerationHdgCmd", "classmrs__uav__hw__api_1_1MrsUavHwApi.html#af88b2aa16a8e88662cf6c16747acdf82", null ],
+ [ "callbackAccelerationHdgRateCmd", "classmrs__uav__hw__api_1_1MrsUavHwApi.html#a5903740fdd654da8e0b1f0fcd34d852b", null ],
+ [ "callbackActuatorCmd", "classmrs__uav__hw__api_1_1MrsUavHwApi.html#a397145b920c1600b974fa3a5d107411a", null ],
+ [ "callbackArming", "classmrs__uav__hw__api_1_1MrsUavHwApi.html#ad549fd61bfa9996b1aaa49946d814156", null ],
+ [ "callbackAttitudeCmd", "classmrs__uav__hw__api_1_1MrsUavHwApi.html#a537f4a53b84aee069bc3a8dd6a6620f7", null ],
+ [ "callbackAttitudeRateCmd", "classmrs__uav__hw__api_1_1MrsUavHwApi.html#afb549fb51dbf0c05b082b1de9cd6c30b", null ],
+ [ "callbackControlGroupCmd", "classmrs__uav__hw__api_1_1MrsUavHwApi.html#ada32d79a7512a6cba1b38d48a7926f18", null ],
+ [ "callbackOffboard", "classmrs__uav__hw__api_1_1MrsUavHwApi.html#aa4e0e43507391daf90f115d941b5aaee", null ],
+ [ "callbackPositionCmd", "classmrs__uav__hw__api_1_1MrsUavHwApi.html#abfaa7f3e38b567f9005152e8bacb23fb", null ],
+ [ "callbackTrackerCmd", "classmrs__uav__hw__api_1_1MrsUavHwApi.html#a610c4698eb909da8a5ab05b730347318", null ],
+ [ "callbackVelocityHdgCmd", "classmrs__uav__hw__api_1_1MrsUavHwApi.html#a624d2ec97c6c02118e214216614572b7", null ],
+ [ "callbackVelocityHdgRateCmd", "classmrs__uav__hw__api_1_1MrsUavHwApi.html#a47d1818995e6bc815f4e8cad789c4232", null ],
+ [ "getCapabilities", "classmrs__uav__hw__api_1_1MrsUavHwApi.html#a654f724908c2a601f69b66f44f94092f", null ],
+ [ "getStatus", "classmrs__uav__hw__api_1_1MrsUavHwApi.html#a7d8267f792fffb3a6118df0db21d1202", null ],
+ [ "initialize", "classmrs__uav__hw__api_1_1MrsUavHwApi.html#a8889e80844000735944372644daf4a19", null ]
+];
\ No newline at end of file
diff --git a/classmrs__uav__hw__api_1_1MrsUavHwApi__inherit__graph.map b/classmrs__uav__hw__api_1_1MrsUavHwApi__inherit__graph.map
new file mode 100644
index 0000000..a3d2711
--- /dev/null
+++ b/classmrs__uav__hw__api_1_1MrsUavHwApi__inherit__graph.map
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/classmrs__uav__hw__api_1_1MrsUavHwApi__inherit__graph.md5 b/classmrs__uav__hw__api_1_1MrsUavHwApi__inherit__graph.md5
new file mode 100644
index 0000000..4109d98
--- /dev/null
+++ b/classmrs__uav__hw__api_1_1MrsUavHwApi__inherit__graph.md5
@@ -0,0 +1 @@
+6361212c8ebb26c526480482053a988a
\ No newline at end of file
diff --git a/classmrs__uav__hw__api_1_1MrsUavHwApi__inherit__graph.png b/classmrs__uav__hw__api_1_1MrsUavHwApi__inherit__graph.png
new file mode 100644
index 0000000..68f676b
Binary files /dev/null and b/classmrs__uav__hw__api_1_1MrsUavHwApi__inherit__graph.png differ
diff --git a/closed.png b/closed.png
new file mode 100644
index 0000000..98cc2c9
Binary files /dev/null and b/closed.png differ
diff --git a/common__handlers_8h_source.html b/common__handlers_8h_source.html
new file mode 100644
index 0000000..39dd404
--- /dev/null
+++ b/common__handlers_8h_source.html
@@ -0,0 +1,140 @@
+
+
+
+
+
+
+
+mrs_uav_hw_api: include/mrs_uav_hw_api/common_handlers.h Source File
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_uav_hw_api
+
+ An abstraction layer between the MRS UAV System and a low-level Flight Controller
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
1 #ifndef COMMON_HANDLERS_H
+
2 #define COMMON_HANDLERS_H
+
+
4 #include <mrs_uav_hw_api/publishers.h>
+
5 #include <mrs_lib/transformer.h>
+
+
7 namespace mrs_uav_hw_api
+
+
+
+
+
12 typedef std::function<std::string(
void )> getUavName_t;
+
13 typedef std::function<std::string(
void )> getBodyFrameName_t;
+
14 typedef std::function<std::string(
void )> getWorldFrameName_t;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
50 #endif // COMMON_HANDLERS_H
+
+
+std::shared_ptr< mrs_lib::Transformer > transformer
The mrs_lib's TF2 transformer wrapper.
Definition: common_handlers.h:29
+A structure with publisher methods provided to the HW API Plugin. The plugin can call these methods a...
Definition: publishers.h:54
+getUavName_t getUavName
Method for obtaining the current "UAV_NAME" (the one set from the $UAV_NAME env variable).
Definition: common_handlers.h:34
+A structure with methods and variables provided to the HW API Plugin.
Definition: common_handlers.h:19
+getBodyFrameName_t getBodyFrameName
Method for obtaining the body-fixed frame_id (as it is called by the MRS UAV System)....
Definition: common_handlers.h:40
+Publishers_t publishers
A structure with publishers that the plugin should use to provide data to the MRS UAV System.
Definition: common_handlers.h:24
+getWorldFrameName_t getWorldFrameName
Method for obtaining the world-frame for marking the flight-controller's data, e.g....
Definition: common_handlers.h:45
+
+
+
+
diff --git a/dir_61f64665b750523b32e515e683b7cce6.html b/dir_61f64665b750523b32e515e683b7cce6.html
new file mode 100644
index 0000000..b3e6311
--- /dev/null
+++ b/dir_61f64665b750523b32e515e683b7cce6.html
@@ -0,0 +1,102 @@
+
+
+
+
+
+
+
+mrs_uav_hw_api: include/mrs_uav_hw_api Directory Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_uav_hw_api
+
+ An abstraction layer between the MRS UAV System and a low-level Flight Controller
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/dir_61f64665b750523b32e515e683b7cce6.js b/dir_61f64665b750523b32e515e683b7cce6.js
new file mode 100644
index 0000000..de501c2
--- /dev/null
+++ b/dir_61f64665b750523b32e515e683b7cce6.js
@@ -0,0 +1,6 @@
+var dir_61f64665b750523b32e515e683b7cce6 =
+[
+ [ "api.h", "api_8h_source.html", null ],
+ [ "common_handlers.h", "common__handlers_8h_source.html", null ],
+ [ "publishers.h", "publishers_8h_source.html", null ]
+];
\ No newline at end of file
diff --git a/dir_68267d1309a1af8e8297ef4c3efbcdba.html b/dir_68267d1309a1af8e8297ef4c3efbcdba.html
new file mode 100644
index 0000000..13248b1
--- /dev/null
+++ b/dir_68267d1309a1af8e8297ef4c3efbcdba.html
@@ -0,0 +1,102 @@
+
+
+
+
+
+
+
+mrs_uav_hw_api: src Directory Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_uav_hw_api
+
+ An abstraction layer between the MRS UAV System and a low-level Flight Controller
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/dir_d44c64559bbebec7f509842c48db8b23.html b/dir_d44c64559bbebec7f509842c48db8b23.html
new file mode 100644
index 0000000..0d826ea
--- /dev/null
+++ b/dir_d44c64559bbebec7f509842c48db8b23.html
@@ -0,0 +1,106 @@
+
+
+
+
+
+
+
+mrs_uav_hw_api: include Directory Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_uav_hw_api
+
+ An abstraction layer between the MRS UAV System and a low-level Flight Controller
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/dir_d44c64559bbebec7f509842c48db8b23.js b/dir_d44c64559bbebec7f509842c48db8b23.js
new file mode 100644
index 0000000..7b5c558
--- /dev/null
+++ b/dir_d44c64559bbebec7f509842c48db8b23.js
@@ -0,0 +1,4 @@
+var dir_d44c64559bbebec7f509842c48db8b23 =
+[
+ [ "mrs_uav_hw_api", "dir_61f64665b750523b32e515e683b7cce6.html", "dir_61f64665b750523b32e515e683b7cce6" ]
+];
\ No newline at end of file
diff --git a/doc.png b/doc.png
new file mode 100644
index 0000000..17edabf
Binary files /dev/null and b/doc.png differ
diff --git a/doxygen.css b/doxygen.css
new file mode 100644
index 0000000..73ecbb2
--- /dev/null
+++ b/doxygen.css
@@ -0,0 +1,1771 @@
+/* The standard CSS for doxygen 1.8.17 */
+
+body, table, div, p, dl {
+ font: 400 14px/22px Roboto,sans-serif;
+}
+
+p.reference, p.definition {
+ font: 400 14px/22px Roboto,sans-serif;
+}
+
+/* @group Heading Levels */
+
+h1.groupheader {
+ font-size: 150%;
+}
+
+.title {
+ font: 400 14px/28px Roboto,sans-serif;
+ font-size: 150%;
+ font-weight: bold;
+ margin: 10px 2px;
+}
+
+h2.groupheader {
+ border-bottom: 1px solid #879ECB;
+ color: #354C7B;
+ font-size: 150%;
+ font-weight: normal;
+ margin-top: 1.75em;
+ padding-top: 8px;
+ padding-bottom: 4px;
+ width: 100%;
+}
+
+h3.groupheader {
+ font-size: 100%;
+}
+
+h1, h2, h3, h4, h5, h6 {
+ -webkit-transition: text-shadow 0.5s linear;
+ -moz-transition: text-shadow 0.5s linear;
+ -ms-transition: text-shadow 0.5s linear;
+ -o-transition: text-shadow 0.5s linear;
+ transition: text-shadow 0.5s linear;
+ margin-right: 15px;
+}
+
+h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow {
+ text-shadow: 0 0 15px cyan;
+}
+
+dt {
+ font-weight: bold;
+}
+
+ul.multicol {
+ -moz-column-gap: 1em;
+ -webkit-column-gap: 1em;
+ column-gap: 1em;
+ -moz-column-count: 3;
+ -webkit-column-count: 3;
+ column-count: 3;
+}
+
+p.startli, p.startdd {
+ margin-top: 2px;
+}
+
+th p.starttd, p.intertd, p.endtd {
+ font-size: 100%;
+ font-weight: 700;
+}
+
+p.starttd {
+ margin-top: 0px;
+}
+
+p.endli {
+ margin-bottom: 0px;
+}
+
+p.enddd {
+ margin-bottom: 4px;
+}
+
+p.endtd {
+ margin-bottom: 2px;
+}
+
+p.interli {
+}
+
+p.interdd {
+}
+
+p.intertd {
+}
+
+/* @end */
+
+caption {
+ font-weight: bold;
+}
+
+span.legend {
+ font-size: 70%;
+ text-align: center;
+}
+
+h3.version {
+ font-size: 90%;
+ text-align: center;
+}
+
+div.qindex, div.navtab{
+ background-color: #EBEFF6;
+ border: 1px solid #A3B4D7;
+ text-align: center;
+}
+
+div.qindex, div.navpath {
+ width: 100%;
+ line-height: 140%;
+}
+
+div.navtab {
+ margin-right: 15px;
+}
+
+/* @group Link Styling */
+
+a {
+ color: #3D578C;
+ font-weight: normal;
+ text-decoration: none;
+}
+
+.contents a:visited {
+ color: #4665A2;
+}
+
+a:hover {
+ text-decoration: underline;
+}
+
+a.qindex {
+ font-weight: bold;
+}
+
+a.qindexHL {
+ font-weight: bold;
+ background-color: #9CAFD4;
+ color: #FFFFFF;
+ border: 1px double #869DCA;
+}
+
+.contents a.qindexHL:visited {
+ color: #FFFFFF;
+}
+
+a.el {
+ font-weight: bold;
+}
+
+a.elRef {
+}
+
+a.code, a.code:visited, a.line, a.line:visited {
+ color: #4665A2;
+}
+
+a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited {
+ color: #4665A2;
+}
+
+/* @end */
+
+dl.el {
+ margin-left: -1cm;
+}
+
+ul {
+ overflow: hidden; /*Fixed: list item bullets overlap floating elements*/
+}
+
+#side-nav ul {
+ overflow: visible; /* reset ul rule for scroll bar in GENERATE_TREEVIEW window */
+}
+
+#main-nav ul {
+ overflow: visible; /* reset ul rule for the navigation bar drop down lists */
+}
+
+.fragment {
+ text-align: left;
+ direction: ltr;
+ overflow-x: auto; /*Fixed: fragment lines overlap floating elements*/
+ overflow-y: hidden;
+}
+
+pre.fragment {
+ border: 1px solid #C4CFE5;
+ background-color: #FBFCFD;
+ padding: 4px 6px;
+ margin: 4px 8px 4px 2px;
+ overflow: auto;
+ word-wrap: break-word;
+ font-size: 9pt;
+ line-height: 125%;
+ font-family: monospace, fixed;
+ font-size: 105%;
+}
+
+div.fragment {
+ padding: 0 0 1px 0; /*Fixed: last line underline overlap border*/
+ margin: 4px 8px 4px 2px;
+ background-color: #FBFCFD;
+ border: 1px solid #C4CFE5;
+}
+
+div.line {
+ font-family: monospace, fixed;
+ font-size: 13px;
+ min-height: 13px;
+ line-height: 1.0;
+ text-wrap: unrestricted;
+ white-space: -moz-pre-wrap; /* Moz */
+ white-space: -pre-wrap; /* Opera 4-6 */
+ white-space: -o-pre-wrap; /* Opera 7 */
+ white-space: pre-wrap; /* CSS3 */
+ word-wrap: break-word; /* IE 5.5+ */
+ text-indent: -53px;
+ padding-left: 53px;
+ padding-bottom: 0px;
+ margin: 0px;
+ -webkit-transition-property: background-color, box-shadow;
+ -webkit-transition-duration: 0.5s;
+ -moz-transition-property: background-color, box-shadow;
+ -moz-transition-duration: 0.5s;
+ -ms-transition-property: background-color, box-shadow;
+ -ms-transition-duration: 0.5s;
+ -o-transition-property: background-color, box-shadow;
+ -o-transition-duration: 0.5s;
+ transition-property: background-color, box-shadow;
+ transition-duration: 0.5s;
+}
+
+div.line:after {
+ content:"\000A";
+ white-space: pre;
+}
+
+div.line.glow {
+ background-color: cyan;
+ box-shadow: 0 0 10px cyan;
+}
+
+
+span.lineno {
+ padding-right: 4px;
+ text-align: right;
+ border-right: 2px solid #0F0;
+ background-color: #E8E8E8;
+ white-space: pre;
+}
+span.lineno a {
+ background-color: #D8D8D8;
+}
+
+span.lineno a:hover {
+ background-color: #C8C8C8;
+}
+
+.lineno {
+ -webkit-touch-callout: none;
+ -webkit-user-select: none;
+ -khtml-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+
+div.ah, span.ah {
+ background-color: black;
+ font-weight: bold;
+ color: #FFFFFF;
+ margin-bottom: 3px;
+ margin-top: 3px;
+ padding: 0.2em;
+ border: solid thin #333;
+ border-radius: 0.5em;
+ -webkit-border-radius: .5em;
+ -moz-border-radius: .5em;
+ box-shadow: 2px 2px 3px #999;
+ -webkit-box-shadow: 2px 2px 3px #999;
+ -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px;
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444));
+ background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000 110%);
+}
+
+div.classindex ul {
+ list-style: none;
+ padding-left: 0;
+}
+
+div.classindex span.ai {
+ display: inline-block;
+}
+
+div.groupHeader {
+ margin-left: 16px;
+ margin-top: 12px;
+ font-weight: bold;
+}
+
+div.groupText {
+ margin-left: 16px;
+ font-style: italic;
+}
+
+body {
+ background-color: white;
+ color: black;
+ margin: 0;
+}
+
+div.contents {
+ margin-top: 10px;
+ margin-left: 12px;
+ margin-right: 8px;
+}
+
+td.indexkey {
+ background-color: #EBEFF6;
+ font-weight: bold;
+ border: 1px solid #C4CFE5;
+ margin: 2px 0px 2px 0;
+ padding: 2px 10px;
+ white-space: nowrap;
+ vertical-align: top;
+}
+
+td.indexvalue {
+ background-color: #EBEFF6;
+ border: 1px solid #C4CFE5;
+ padding: 2px 10px;
+ margin: 2px 0px;
+}
+
+tr.memlist {
+ background-color: #EEF1F7;
+}
+
+p.formulaDsp {
+ text-align: center;
+}
+
+img.formulaDsp {
+
+}
+
+img.formulaInl, img.inline {
+ vertical-align: middle;
+}
+
+div.center {
+ text-align: center;
+ margin-top: 0px;
+ margin-bottom: 0px;
+ padding: 0px;
+}
+
+div.center img {
+ border: 0px;
+}
+
+address.footer {
+ text-align: right;
+ padding-right: 12px;
+}
+
+img.footer {
+ border: 0px;
+ vertical-align: middle;
+}
+
+/* @group Code Colorization */
+
+span.keyword {
+ color: #008000
+}
+
+span.keywordtype {
+ color: #604020
+}
+
+span.keywordflow {
+ color: #e08000
+}
+
+span.comment {
+ color: #800000
+}
+
+span.preprocessor {
+ color: #806020
+}
+
+span.stringliteral {
+ color: #002080
+}
+
+span.charliteral {
+ color: #008080
+}
+
+span.vhdldigit {
+ color: #ff00ff
+}
+
+span.vhdlchar {
+ color: #000000
+}
+
+span.vhdlkeyword {
+ color: #700070
+}
+
+span.vhdllogic {
+ color: #ff0000
+}
+
+blockquote {
+ background-color: #F7F8FB;
+ border-left: 2px solid #9CAFD4;
+ margin: 0 24px 0 4px;
+ padding: 0 12px 0 16px;
+}
+
+blockquote.DocNodeRTL {
+ border-left: 0;
+ border-right: 2px solid #9CAFD4;
+ margin: 0 4px 0 24px;
+ padding: 0 16px 0 12px;
+}
+
+/* @end */
+
+/*
+.search {
+ color: #003399;
+ font-weight: bold;
+}
+
+form.search {
+ margin-bottom: 0px;
+ margin-top: 0px;
+}
+
+input.search {
+ font-size: 75%;
+ color: #000080;
+ font-weight: normal;
+ background-color: #e8eef2;
+}
+*/
+
+td.tiny {
+ font-size: 75%;
+}
+
+.dirtab {
+ padding: 4px;
+ border-collapse: collapse;
+ border: 1px solid #A3B4D7;
+}
+
+th.dirtab {
+ background: #EBEFF6;
+ font-weight: bold;
+}
+
+hr {
+ height: 0px;
+ border: none;
+ border-top: 1px solid #4A6AAA;
+}
+
+hr.footer {
+ height: 1px;
+}
+
+/* @group Member Descriptions */
+
+table.memberdecls {
+ border-spacing: 0px;
+ padding: 0px;
+}
+
+.memberdecls td, .fieldtable tr {
+ -webkit-transition-property: background-color, box-shadow;
+ -webkit-transition-duration: 0.5s;
+ -moz-transition-property: background-color, box-shadow;
+ -moz-transition-duration: 0.5s;
+ -ms-transition-property: background-color, box-shadow;
+ -ms-transition-duration: 0.5s;
+ -o-transition-property: background-color, box-shadow;
+ -o-transition-duration: 0.5s;
+ transition-property: background-color, box-shadow;
+ transition-duration: 0.5s;
+}
+
+.memberdecls td.glow, .fieldtable tr.glow {
+ background-color: cyan;
+ box-shadow: 0 0 15px cyan;
+}
+
+.mdescLeft, .mdescRight,
+.memItemLeft, .memItemRight,
+.memTemplItemLeft, .memTemplItemRight, .memTemplParams {
+ background-color: #F9FAFC;
+ border: none;
+ margin: 4px;
+ padding: 1px 0 0 8px;
+}
+
+.mdescLeft, .mdescRight {
+ padding: 0px 8px 4px 8px;
+ color: #555;
+}
+
+.memSeparator {
+ border-bottom: 1px solid #DEE4F0;
+ line-height: 1px;
+ margin: 0px;
+ padding: 0px;
+}
+
+.memItemLeft, .memTemplItemLeft {
+ white-space: nowrap;
+}
+
+.memItemRight, .memTemplItemRight {
+ width: 100%;
+}
+
+.memTemplParams {
+ color: #4665A2;
+ white-space: nowrap;
+ font-size: 80%;
+}
+
+/* @end */
+
+/* @group Member Details */
+
+/* Styles for detailed member documentation */
+
+.memtitle {
+ padding: 8px;
+ border-top: 1px solid #A8B8D9;
+ border-left: 1px solid #A8B8D9;
+ border-right: 1px solid #A8B8D9;
+ border-top-right-radius: 4px;
+ border-top-left-radius: 4px;
+ margin-bottom: -1px;
+ background-image: url('nav_f.png');
+ background-repeat: repeat-x;
+ background-color: #E2E8F2;
+ line-height: 1.25;
+ font-weight: 300;
+ float:left;
+}
+
+.permalink
+{
+ font-size: 65%;
+ display: inline-block;
+ vertical-align: middle;
+}
+
+.memtemplate {
+ font-size: 80%;
+ color: #4665A2;
+ font-weight: normal;
+ margin-left: 9px;
+}
+
+.memnav {
+ background-color: #EBEFF6;
+ border: 1px solid #A3B4D7;
+ text-align: center;
+ margin: 2px;
+ margin-right: 15px;
+ padding: 2px;
+}
+
+.mempage {
+ width: 100%;
+}
+
+.memitem {
+ padding: 0;
+ margin-bottom: 10px;
+ margin-right: 5px;
+ -webkit-transition: box-shadow 0.5s linear;
+ -moz-transition: box-shadow 0.5s linear;
+ -ms-transition: box-shadow 0.5s linear;
+ -o-transition: box-shadow 0.5s linear;
+ transition: box-shadow 0.5s linear;
+ display: table !important;
+ width: 100%;
+}
+
+.memitem.glow {
+ box-shadow: 0 0 15px cyan;
+}
+
+.memname {
+ font-weight: 400;
+ margin-left: 6px;
+}
+
+.memname td {
+ vertical-align: bottom;
+}
+
+.memproto, dl.reflist dt {
+ border-top: 1px solid #A8B8D9;
+ border-left: 1px solid #A8B8D9;
+ border-right: 1px solid #A8B8D9;
+ padding: 6px 0px 6px 0px;
+ color: #253555;
+ font-weight: bold;
+ text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9);
+ background-color: #DFE5F1;
+ /* opera specific markup */
+ box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
+ border-top-right-radius: 4px;
+ /* firefox specific markup */
+ -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px;
+ -moz-border-radius-topright: 4px;
+ /* webkit specific markup */
+ -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
+ -webkit-border-top-right-radius: 4px;
+
+}
+
+.overload {
+ font-family: "courier new",courier,monospace;
+ font-size: 65%;
+}
+
+.memdoc, dl.reflist dd {
+ border-bottom: 1px solid #A8B8D9;
+ border-left: 1px solid #A8B8D9;
+ border-right: 1px solid #A8B8D9;
+ padding: 6px 10px 2px 10px;
+ background-color: #FBFCFD;
+ border-top-width: 0;
+ background-image:url('nav_g.png');
+ background-repeat:repeat-x;
+ background-color: #FFFFFF;
+ /* opera specific markup */
+ border-bottom-left-radius: 4px;
+ border-bottom-right-radius: 4px;
+ box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
+ /* firefox specific markup */
+ -moz-border-radius-bottomleft: 4px;
+ -moz-border-radius-bottomright: 4px;
+ -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px;
+ /* webkit specific markup */
+ -webkit-border-bottom-left-radius: 4px;
+ -webkit-border-bottom-right-radius: 4px;
+ -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
+}
+
+dl.reflist dt {
+ padding: 5px;
+}
+
+dl.reflist dd {
+ margin: 0px 0px 10px 0px;
+ padding: 5px;
+}
+
+.paramkey {
+ text-align: right;
+}
+
+.paramtype {
+ white-space: nowrap;
+}
+
+.paramname {
+ color: #602020;
+ white-space: nowrap;
+}
+.paramname em {
+ font-style: normal;
+}
+.paramname code {
+ line-height: 14px;
+}
+
+.params, .retval, .exception, .tparams {
+ margin-left: 0px;
+ padding-left: 0px;
+}
+
+.params .paramname, .retval .paramname, .tparams .paramname, .exception .paramname {
+ font-weight: bold;
+ vertical-align: top;
+}
+
+.params .paramtype, .tparams .paramtype {
+ font-style: italic;
+ vertical-align: top;
+}
+
+.params .paramdir, .tparams .paramdir {
+ font-family: "courier new",courier,monospace;
+ vertical-align: top;
+}
+
+table.mlabels {
+ border-spacing: 0px;
+}
+
+td.mlabels-left {
+ width: 100%;
+ padding: 0px;
+}
+
+td.mlabels-right {
+ vertical-align: bottom;
+ padding: 0px;
+ white-space: nowrap;
+}
+
+span.mlabels {
+ margin-left: 8px;
+}
+
+span.mlabel {
+ background-color: #728DC1;
+ border-top:1px solid #5373B4;
+ border-left:1px solid #5373B4;
+ border-right:1px solid #C4CFE5;
+ border-bottom:1px solid #C4CFE5;
+ text-shadow: none;
+ color: white;
+ margin-right: 4px;
+ padding: 2px 3px;
+ border-radius: 3px;
+ font-size: 7pt;
+ white-space: nowrap;
+ vertical-align: middle;
+}
+
+
+
+/* @end */
+
+/* these are for tree view inside a (index) page */
+
+div.directory {
+ margin: 10px 0px;
+ border-top: 1px solid #9CAFD4;
+ border-bottom: 1px solid #9CAFD4;
+ width: 100%;
+}
+
+.directory table {
+ border-collapse:collapse;
+}
+
+.directory td {
+ margin: 0px;
+ padding: 0px;
+ vertical-align: top;
+}
+
+.directory td.entry {
+ white-space: nowrap;
+ padding-right: 6px;
+ padding-top: 3px;
+}
+
+.directory td.entry a {
+ outline:none;
+}
+
+.directory td.entry a img {
+ border: none;
+}
+
+.directory td.desc {
+ width: 100%;
+ padding-left: 6px;
+ padding-right: 6px;
+ padding-top: 3px;
+ border-left: 1px solid rgba(0,0,0,0.05);
+}
+
+.directory tr.even {
+ padding-left: 6px;
+ background-color: #F7F8FB;
+}
+
+.directory img {
+ vertical-align: -30%;
+}
+
+.directory .levels {
+ white-space: nowrap;
+ width: 100%;
+ text-align: right;
+ font-size: 9pt;
+}
+
+.directory .levels span {
+ cursor: pointer;
+ padding-left: 2px;
+ padding-right: 2px;
+ color: #3D578C;
+}
+
+.arrow {
+ color: #9CAFD4;
+ -webkit-user-select: none;
+ -khtml-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ cursor: pointer;
+ font-size: 80%;
+ display: inline-block;
+ width: 16px;
+ height: 22px;
+}
+
+.icon {
+ font-family: Arial, Helvetica;
+ font-weight: bold;
+ font-size: 12px;
+ height: 14px;
+ width: 16px;
+ display: inline-block;
+ background-color: #728DC1;
+ color: white;
+ text-align: center;
+ border-radius: 4px;
+ margin-left: 2px;
+ margin-right: 2px;
+}
+
+.icona {
+ width: 24px;
+ height: 22px;
+ display: inline-block;
+}
+
+.iconfopen {
+ width: 24px;
+ height: 18px;
+ margin-bottom: 4px;
+ background-image:url('folderopen.png');
+ background-position: 0px -4px;
+ background-repeat: repeat-y;
+ vertical-align:top;
+ display: inline-block;
+}
+
+.iconfclosed {
+ width: 24px;
+ height: 18px;
+ margin-bottom: 4px;
+ background-image:url('folderclosed.png');
+ background-position: 0px -4px;
+ background-repeat: repeat-y;
+ vertical-align:top;
+ display: inline-block;
+}
+
+.icondoc {
+ width: 24px;
+ height: 18px;
+ margin-bottom: 4px;
+ background-image:url('doc.png');
+ background-position: 0px -4px;
+ background-repeat: repeat-y;
+ vertical-align:top;
+ display: inline-block;
+}
+
+table.directory {
+ font: 400 14px Roboto,sans-serif;
+}
+
+/* @end */
+
+div.dynheader {
+ margin-top: 8px;
+ -webkit-touch-callout: none;
+ -webkit-user-select: none;
+ -khtml-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+
+address {
+ font-style: normal;
+ color: #2A3D61;
+}
+
+table.doxtable caption {
+ caption-side: top;
+}
+
+table.doxtable {
+ border-collapse:collapse;
+ margin-top: 4px;
+ margin-bottom: 4px;
+}
+
+table.doxtable td, table.doxtable th {
+ border: 1px solid #2D4068;
+ padding: 3px 7px 2px;
+}
+
+table.doxtable th {
+ background-color: #374F7F;
+ color: #FFFFFF;
+ font-size: 110%;
+ padding-bottom: 4px;
+ padding-top: 5px;
+}
+
+table.fieldtable {
+ /*width: 100%;*/
+ margin-bottom: 10px;
+ border: 1px solid #A8B8D9;
+ border-spacing: 0px;
+ -moz-border-radius: 4px;
+ -webkit-border-radius: 4px;
+ border-radius: 4px;
+ -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px;
+ -webkit-box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15);
+ box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15);
+}
+
+.fieldtable td, .fieldtable th {
+ padding: 3px 7px 2px;
+}
+
+.fieldtable td.fieldtype, .fieldtable td.fieldname {
+ white-space: nowrap;
+ border-right: 1px solid #A8B8D9;
+ border-bottom: 1px solid #A8B8D9;
+ vertical-align: top;
+}
+
+.fieldtable td.fieldname {
+ padding-top: 3px;
+}
+
+.fieldtable td.fielddoc {
+ border-bottom: 1px solid #A8B8D9;
+ /*width: 100%;*/
+}
+
+.fieldtable td.fielddoc p:first-child {
+ margin-top: 0px;
+}
+
+.fieldtable td.fielddoc p:last-child {
+ margin-bottom: 2px;
+}
+
+.fieldtable tr:last-child td {
+ border-bottom: none;
+}
+
+.fieldtable th {
+ background-image:url('nav_f.png');
+ background-repeat:repeat-x;
+ background-color: #E2E8F2;
+ font-size: 90%;
+ color: #253555;
+ padding-bottom: 4px;
+ padding-top: 5px;
+ text-align:left;
+ font-weight: 400;
+ -moz-border-radius-topleft: 4px;
+ -moz-border-radius-topright: 4px;
+ -webkit-border-top-left-radius: 4px;
+ -webkit-border-top-right-radius: 4px;
+ border-top-left-radius: 4px;
+ border-top-right-radius: 4px;
+ border-bottom: 1px solid #A8B8D9;
+}
+
+
+.tabsearch {
+ top: 0px;
+ left: 10px;
+ height: 36px;
+ background-image: url('tab_b.png');
+ z-index: 101;
+ overflow: hidden;
+ font-size: 13px;
+}
+
+.navpath ul
+{
+ font-size: 11px;
+ background-image:url('tab_b.png');
+ background-repeat:repeat-x;
+ background-position: 0 -5px;
+ height:30px;
+ line-height:30px;
+ color:#8AA0CC;
+ border:solid 1px #C2CDE4;
+ overflow:hidden;
+ margin:0px;
+ padding:0px;
+}
+
+.navpath li
+{
+ list-style-type:none;
+ float:left;
+ padding-left:10px;
+ padding-right:15px;
+ background-image:url('bc_s.png');
+ background-repeat:no-repeat;
+ background-position:right;
+ color:#364D7C;
+}
+
+.navpath li.navelem a
+{
+ height:32px;
+ display:block;
+ text-decoration: none;
+ outline: none;
+ color: #283A5D;
+ font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif;
+ text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9);
+ text-decoration: none;
+}
+
+.navpath li.navelem a:hover
+{
+ color:#6884BD;
+}
+
+.navpath li.footer
+{
+ list-style-type:none;
+ float:right;
+ padding-left:10px;
+ padding-right:15px;
+ background-image:none;
+ background-repeat:no-repeat;
+ background-position:right;
+ color:#364D7C;
+ font-size: 8pt;
+}
+
+
+div.summary
+{
+ float: right;
+ font-size: 8pt;
+ padding-right: 5px;
+ width: 50%;
+ text-align: right;
+}
+
+div.summary a
+{
+ white-space: nowrap;
+}
+
+table.classindex
+{
+ margin: 10px;
+ white-space: nowrap;
+ margin-left: 3%;
+ margin-right: 3%;
+ width: 94%;
+ border: 0;
+ border-spacing: 0;
+ padding: 0;
+}
+
+div.ingroups
+{
+ font-size: 8pt;
+ width: 50%;
+ text-align: left;
+}
+
+div.ingroups a
+{
+ white-space: nowrap;
+}
+
+div.header
+{
+ background-image:url('nav_h.png');
+ background-repeat:repeat-x;
+ background-color: #F9FAFC;
+ margin: 0px;
+ border-bottom: 1px solid #C4CFE5;
+}
+
+div.headertitle
+{
+ padding: 5px 5px 5px 10px;
+}
+
+.PageDocRTL-title div.headertitle {
+ text-align: right;
+ direction: rtl;
+}
+
+dl {
+ padding: 0 0 0 0;
+}
+
+/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug, dl.examples */
+dl.section {
+ margin-left: 0px;
+ padding-left: 0px;
+}
+
+dl.section.DocNodeRTL {
+ margin-right: 0px;
+ padding-right: 0px;
+}
+
+dl.note {
+ margin-left: -7px;
+ padding-left: 3px;
+ border-left: 4px solid;
+ border-color: #D0C000;
+}
+
+dl.note.DocNodeRTL {
+ margin-left: 0;
+ padding-left: 0;
+ border-left: 0;
+ margin-right: -7px;
+ padding-right: 3px;
+ border-right: 4px solid;
+ border-color: #D0C000;
+}
+
+dl.warning, dl.attention {
+ margin-left: -7px;
+ padding-left: 3px;
+ border-left: 4px solid;
+ border-color: #FF0000;
+}
+
+dl.warning.DocNodeRTL, dl.attention.DocNodeRTL {
+ margin-left: 0;
+ padding-left: 0;
+ border-left: 0;
+ margin-right: -7px;
+ padding-right: 3px;
+ border-right: 4px solid;
+ border-color: #FF0000;
+}
+
+dl.pre, dl.post, dl.invariant {
+ margin-left: -7px;
+ padding-left: 3px;
+ border-left: 4px solid;
+ border-color: #00D000;
+}
+
+dl.pre.DocNodeRTL, dl.post.DocNodeRTL, dl.invariant.DocNodeRTL {
+ margin-left: 0;
+ padding-left: 0;
+ border-left: 0;
+ margin-right: -7px;
+ padding-right: 3px;
+ border-right: 4px solid;
+ border-color: #00D000;
+}
+
+dl.deprecated {
+ margin-left: -7px;
+ padding-left: 3px;
+ border-left: 4px solid;
+ border-color: #505050;
+}
+
+dl.deprecated.DocNodeRTL {
+ margin-left: 0;
+ padding-left: 0;
+ border-left: 0;
+ margin-right: -7px;
+ padding-right: 3px;
+ border-right: 4px solid;
+ border-color: #505050;
+}
+
+dl.todo {
+ margin-left: -7px;
+ padding-left: 3px;
+ border-left: 4px solid;
+ border-color: #00C0E0;
+}
+
+dl.todo.DocNodeRTL {
+ margin-left: 0;
+ padding-left: 0;
+ border-left: 0;
+ margin-right: -7px;
+ padding-right: 3px;
+ border-right: 4px solid;
+ border-color: #00C0E0;
+}
+
+dl.test {
+ margin-left: -7px;
+ padding-left: 3px;
+ border-left: 4px solid;
+ border-color: #3030E0;
+}
+
+dl.test.DocNodeRTL {
+ margin-left: 0;
+ padding-left: 0;
+ border-left: 0;
+ margin-right: -7px;
+ padding-right: 3px;
+ border-right: 4px solid;
+ border-color: #3030E0;
+}
+
+dl.bug {
+ margin-left: -7px;
+ padding-left: 3px;
+ border-left: 4px solid;
+ border-color: #C08050;
+}
+
+dl.bug.DocNodeRTL {
+ margin-left: 0;
+ padding-left: 0;
+ border-left: 0;
+ margin-right: -7px;
+ padding-right: 3px;
+ border-right: 4px solid;
+ border-color: #C08050;
+}
+
+dl.section dd {
+ margin-bottom: 6px;
+}
+
+
+#projectlogo
+{
+ text-align: center;
+ vertical-align: bottom;
+ border-collapse: separate;
+}
+
+#projectlogo img
+{
+ border: 0px none;
+}
+
+#projectalign
+{
+ vertical-align: middle;
+}
+
+#projectname
+{
+ font: 300% Tahoma, Arial,sans-serif;
+ margin: 0px;
+ padding: 2px 0px;
+}
+
+#projectbrief
+{
+ font: 120% Tahoma, Arial,sans-serif;
+ margin: 0px;
+ padding: 0px;
+}
+
+#projectnumber
+{
+ font: 50% Tahoma, Arial,sans-serif;
+ margin: 0px;
+ padding: 0px;
+}
+
+#titlearea
+{
+ padding: 0px;
+ margin: 0px;
+ width: 100%;
+ border-bottom: 1px solid #5373B4;
+}
+
+.image
+{
+ text-align: center;
+}
+
+.dotgraph
+{
+ text-align: center;
+}
+
+.mscgraph
+{
+ text-align: center;
+}
+
+.plantumlgraph
+{
+ text-align: center;
+}
+
+.diagraph
+{
+ text-align: center;
+}
+
+.caption
+{
+ font-weight: bold;
+}
+
+div.zoom
+{
+ border: 1px solid #90A5CE;
+}
+
+dl.citelist {
+ margin-bottom:50px;
+}
+
+dl.citelist dt {
+ color:#334975;
+ float:left;
+ font-weight:bold;
+ margin-right:10px;
+ padding:5px;
+}
+
+dl.citelist dd {
+ margin:2px 0;
+ padding:5px 0;
+}
+
+div.toc {
+ padding: 14px 25px;
+ background-color: #F4F6FA;
+ border: 1px solid #D8DFEE;
+ border-radius: 7px 7px 7px 7px;
+ float: right;
+ height: auto;
+ margin: 0 8px 10px 10px;
+ width: 200px;
+}
+
+.PageDocRTL-title div.toc {
+ float: left !important;
+ text-align: right;
+}
+
+div.toc li {
+ background: url("bdwn.png") no-repeat scroll 0 5px transparent;
+ font: 10px/1.2 Verdana,DejaVu Sans,Geneva,sans-serif;
+ margin-top: 5px;
+ padding-left: 10px;
+ padding-top: 2px;
+}
+
+.PageDocRTL-title div.toc li {
+ background-position-x: right !important;
+ padding-left: 0 !important;
+ padding-right: 10px;
+}
+
+div.toc h3 {
+ font: bold 12px/1.2 Arial,FreeSans,sans-serif;
+ color: #4665A2;
+ border-bottom: 0 none;
+ margin: 0;
+}
+
+div.toc ul {
+ list-style: none outside none;
+ border: medium none;
+ padding: 0px;
+}
+
+div.toc li.level1 {
+ margin-left: 0px;
+}
+
+div.toc li.level2 {
+ margin-left: 15px;
+}
+
+div.toc li.level3 {
+ margin-left: 30px;
+}
+
+div.toc li.level4 {
+ margin-left: 45px;
+}
+
+.PageDocRTL-title div.toc li.level1 {
+ margin-left: 0 !important;
+ margin-right: 0;
+}
+
+.PageDocRTL-title div.toc li.level2 {
+ margin-left: 0 !important;
+ margin-right: 15px;
+}
+
+.PageDocRTL-title div.toc li.level3 {
+ margin-left: 0 !important;
+ margin-right: 30px;
+}
+
+.PageDocRTL-title div.toc li.level4 {
+ margin-left: 0 !important;
+ margin-right: 45px;
+}
+
+.inherit_header {
+ font-weight: bold;
+ color: gray;
+ cursor: pointer;
+ -webkit-touch-callout: none;
+ -webkit-user-select: none;
+ -khtml-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+
+.inherit_header td {
+ padding: 6px 0px 2px 5px;
+}
+
+.inherit {
+ display: none;
+}
+
+tr.heading h2 {
+ margin-top: 12px;
+ margin-bottom: 4px;
+}
+
+/* tooltip related style info */
+
+.ttc {
+ position: absolute;
+ display: none;
+}
+
+#powerTip {
+ cursor: default;
+ white-space: nowrap;
+ background-color: white;
+ border: 1px solid gray;
+ border-radius: 4px 4px 4px 4px;
+ box-shadow: 1px 1px 7px gray;
+ display: none;
+ font-size: smaller;
+ max-width: 80%;
+ opacity: 0.9;
+ padding: 1ex 1em 1em;
+ position: absolute;
+ z-index: 2147483647;
+}
+
+#powerTip div.ttdoc {
+ color: grey;
+ font-style: italic;
+}
+
+#powerTip div.ttname a {
+ font-weight: bold;
+}
+
+#powerTip div.ttname {
+ font-weight: bold;
+}
+
+#powerTip div.ttdeci {
+ color: #006318;
+}
+
+#powerTip div {
+ margin: 0px;
+ padding: 0px;
+ font: 12px/16px Roboto,sans-serif;
+}
+
+#powerTip:before, #powerTip:after {
+ content: "";
+ position: absolute;
+ margin: 0px;
+}
+
+#powerTip.n:after, #powerTip.n:before,
+#powerTip.s:after, #powerTip.s:before,
+#powerTip.w:after, #powerTip.w:before,
+#powerTip.e:after, #powerTip.e:before,
+#powerTip.ne:after, #powerTip.ne:before,
+#powerTip.se:after, #powerTip.se:before,
+#powerTip.nw:after, #powerTip.nw:before,
+#powerTip.sw:after, #powerTip.sw:before {
+ border: solid transparent;
+ content: " ";
+ height: 0;
+ width: 0;
+ position: absolute;
+}
+
+#powerTip.n:after, #powerTip.s:after,
+#powerTip.w:after, #powerTip.e:after,
+#powerTip.nw:after, #powerTip.ne:after,
+#powerTip.sw:after, #powerTip.se:after {
+ border-color: rgba(255, 255, 255, 0);
+}
+
+#powerTip.n:before, #powerTip.s:before,
+#powerTip.w:before, #powerTip.e:before,
+#powerTip.nw:before, #powerTip.ne:before,
+#powerTip.sw:before, #powerTip.se:before {
+ border-color: rgba(128, 128, 128, 0);
+}
+
+#powerTip.n:after, #powerTip.n:before,
+#powerTip.ne:after, #powerTip.ne:before,
+#powerTip.nw:after, #powerTip.nw:before {
+ top: 100%;
+}
+
+#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after {
+ border-top-color: #FFFFFF;
+ border-width: 10px;
+ margin: 0px -10px;
+}
+#powerTip.n:before {
+ border-top-color: #808080;
+ border-width: 11px;
+ margin: 0px -11px;
+}
+#powerTip.n:after, #powerTip.n:before {
+ left: 50%;
+}
+
+#powerTip.nw:after, #powerTip.nw:before {
+ right: 14px;
+}
+
+#powerTip.ne:after, #powerTip.ne:before {
+ left: 14px;
+}
+
+#powerTip.s:after, #powerTip.s:before,
+#powerTip.se:after, #powerTip.se:before,
+#powerTip.sw:after, #powerTip.sw:before {
+ bottom: 100%;
+}
+
+#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after {
+ border-bottom-color: #FFFFFF;
+ border-width: 10px;
+ margin: 0px -10px;
+}
+
+#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before {
+ border-bottom-color: #808080;
+ border-width: 11px;
+ margin: 0px -11px;
+}
+
+#powerTip.s:after, #powerTip.s:before {
+ left: 50%;
+}
+
+#powerTip.sw:after, #powerTip.sw:before {
+ right: 14px;
+}
+
+#powerTip.se:after, #powerTip.se:before {
+ left: 14px;
+}
+
+#powerTip.e:after, #powerTip.e:before {
+ left: 100%;
+}
+#powerTip.e:after {
+ border-left-color: #FFFFFF;
+ border-width: 10px;
+ top: 50%;
+ margin-top: -10px;
+}
+#powerTip.e:before {
+ border-left-color: #808080;
+ border-width: 11px;
+ top: 50%;
+ margin-top: -11px;
+}
+
+#powerTip.w:after, #powerTip.w:before {
+ right: 100%;
+}
+#powerTip.w:after {
+ border-right-color: #FFFFFF;
+ border-width: 10px;
+ top: 50%;
+ margin-top: -10px;
+}
+#powerTip.w:before {
+ border-right-color: #808080;
+ border-width: 11px;
+ top: 50%;
+ margin-top: -11px;
+}
+
+@media print
+{
+ #top { display: none; }
+ #side-nav { display: none; }
+ #nav-path { display: none; }
+ body { overflow:visible; }
+ h1, h2, h3, h4, h5, h6 { page-break-after: avoid; }
+ .summary { display: none; }
+ .memitem { page-break-inside: avoid; }
+ #doc-content
+ {
+ margin-left:0 !important;
+ height:auto !important;
+ width:auto !important;
+ overflow:inherit;
+ display:inline;
+ }
+}
+
+/* @group Markdown */
+
+/*
+table.markdownTable {
+ border-collapse:collapse;
+ margin-top: 4px;
+ margin-bottom: 4px;
+}
+
+table.markdownTable td, table.markdownTable th {
+ border: 1px solid #2D4068;
+ padding: 3px 7px 2px;
+}
+
+table.markdownTableHead tr {
+}
+
+table.markdownTableBodyLeft td, table.markdownTable th {
+ border: 1px solid #2D4068;
+ padding: 3px 7px 2px;
+}
+
+th.markdownTableHeadLeft th.markdownTableHeadRight th.markdownTableHeadCenter th.markdownTableHeadNone {
+ background-color: #374F7F;
+ color: #FFFFFF;
+ font-size: 110%;
+ padding-bottom: 4px;
+ padding-top: 5px;
+}
+
+th.markdownTableHeadLeft {
+ text-align: left
+}
+
+th.markdownTableHeadRight {
+ text-align: right
+}
+
+th.markdownTableHeadCenter {
+ text-align: center
+}
+*/
+
+table.markdownTable {
+ border-collapse:collapse;
+ margin-top: 4px;
+ margin-bottom: 4px;
+}
+
+table.markdownTable td, table.markdownTable th {
+ border: 1px solid #2D4068;
+ padding: 3px 7px 2px;
+}
+
+table.markdownTable tr {
+}
+
+th.markdownTableHeadLeft, th.markdownTableHeadRight, th.markdownTableHeadCenter, th.markdownTableHeadNone {
+ background-color: #374F7F;
+ color: #FFFFFF;
+ font-size: 110%;
+ padding-bottom: 4px;
+ padding-top: 5px;
+}
+
+th.markdownTableHeadLeft, td.markdownTableBodyLeft {
+ text-align: left
+}
+
+th.markdownTableHeadRight, td.markdownTableBodyRight {
+ text-align: right
+}
+
+th.markdownTableHeadCenter, td.markdownTableBodyCenter {
+ text-align: center
+}
+
+.DocNodeRTL {
+ text-align: right;
+ direction: rtl;
+}
+
+.DocNodeLTR {
+ text-align: left;
+ direction: ltr;
+}
+
+table.DocNodeRTL {
+ width: auto;
+ margin-right: 0;
+ margin-left: auto;
+}
+
+table.DocNodeLTR {
+ width: auto;
+ margin-right: auto;
+ margin-left: 0;
+}
+
+tt, code, kbd, samp
+{
+ display: inline-block;
+ direction:ltr;
+}
+/* @end */
+
+u {
+ text-decoration: underline;
+}
+
diff --git a/doxygen.png b/doxygen.png
new file mode 100644
index 0000000..3ff17d8
Binary files /dev/null and b/doxygen.png differ
diff --git a/dynsections.js b/dynsections.js
new file mode 100644
index 0000000..ea0a7b3
--- /dev/null
+++ b/dynsections.js
@@ -0,0 +1,120 @@
+/*
+ @licstart The following is the entire license notice for the
+ JavaScript code in this file.
+
+ Copyright (C) 1997-2017 by Dimitri van Heesch
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+ @licend The above is the entire license notice
+ for the JavaScript code in this file
+ */
+function toggleVisibility(linkObj)
+{
+ var base = $(linkObj).attr('id');
+ var summary = $('#'+base+'-summary');
+ var content = $('#'+base+'-content');
+ var trigger = $('#'+base+'-trigger');
+ var src=$(trigger).attr('src');
+ if (content.is(':visible')===true) {
+ content.hide();
+ summary.show();
+ $(linkObj).addClass('closed').removeClass('opened');
+ $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png');
+ } else {
+ content.show();
+ summary.hide();
+ $(linkObj).removeClass('closed').addClass('opened');
+ $(trigger).attr('src',src.substring(0,src.length-10)+'open.png');
+ }
+ return false;
+}
+
+function updateStripes()
+{
+ $('table.directory tr').
+ removeClass('even').filter(':visible:even').addClass('even');
+}
+
+function toggleLevel(level)
+{
+ $('table.directory tr').each(function() {
+ var l = this.id.split('_').length-1;
+ var i = $('#img'+this.id.substring(3));
+ var a = $('#arr'+this.id.substring(3));
+ if (l
+
+
+
+
+
+
+mrs_uav_hw_api: File List
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_uav_hw_api
+
+ An abstraction layer between the MRS UAV System and a low-level Flight Controller
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Here is a list of all documented files with brief descriptions:
+
+
+
+
+
+
diff --git a/files_dup.js b/files_dup.js
new file mode 100644
index 0000000..f1749d9
--- /dev/null
+++ b/files_dup.js
@@ -0,0 +1,4 @@
+var files_dup =
+[
+ [ "include", "dir_d44c64559bbebec7f509842c48db8b23.html", "dir_d44c64559bbebec7f509842c48db8b23" ]
+];
\ No newline at end of file
diff --git a/folderclosed.png b/folderclosed.png
new file mode 100644
index 0000000..bb8ab35
Binary files /dev/null and b/folderclosed.png differ
diff --git a/folderopen.png b/folderopen.png
new file mode 100644
index 0000000..d6c7f67
Binary files /dev/null and b/folderopen.png differ
diff --git a/functions.html b/functions.html
new file mode 100644
index 0000000..3c8908e
--- /dev/null
+++ b/functions.html
@@ -0,0 +1,250 @@
+
+
+
+
+
+
+
+mrs_uav_hw_api: Class Members
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_uav_hw_api
+
+ An abstraction layer between the MRS UAV System and a low-level Flight Controller
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Here is a list of all documented class members with links to the class documentation for each member:
+
+
- c -
+callbackAccelerationHdgCmd()
+: mrs_uav_hw_api::DummyApi
+, mrs_uav_hw_api::MrsUavHwApi
+
+callbackAccelerationHdgRateCmd()
+: mrs_uav_hw_api::DummyApi
+, mrs_uav_hw_api::MrsUavHwApi
+
+callbackActuatorCmd()
+: mrs_uav_hw_api::DummyApi
+, mrs_uav_hw_api::MrsUavHwApi
+
+callbackArming()
+: mrs_uav_hw_api::DummyApi
+, mrs_uav_hw_api::MrsUavHwApi
+
+callbackAttitudeCmd()
+: mrs_uav_hw_api::DummyApi
+, mrs_uav_hw_api::MrsUavHwApi
+
+callbackAttitudeRateCmd()
+: mrs_uav_hw_api::DummyApi
+, mrs_uav_hw_api::MrsUavHwApi
+
+callbackControlGroupCmd()
+: mrs_uav_hw_api::DummyApi
+, mrs_uav_hw_api::MrsUavHwApi
+
+callbackOffboard()
+: mrs_uav_hw_api::DummyApi
+, mrs_uav_hw_api::MrsUavHwApi
+
+callbackPositionCmd()
+: mrs_uav_hw_api::DummyApi
+, mrs_uav_hw_api::MrsUavHwApi
+
+callbackTrackerCmd()
+: mrs_uav_hw_api::DummyApi
+, mrs_uav_hw_api::MrsUavHwApi
+
+callbackVelocityHdgCmd()
+: mrs_uav_hw_api::DummyApi
+, mrs_uav_hw_api::MrsUavHwApi
+
+callbackVelocityHdgRateCmd()
+: mrs_uav_hw_api::DummyApi
+, mrs_uav_hw_api::MrsUavHwApi
+
+
+
+
+
- g -
+
+
+
- i -
+
+
+
- p -
+
+
+
- t -
+
+
+
- ~ -
+
+
+
+
+
+
diff --git a/functions_func.html b/functions_func.html
new file mode 100644
index 0000000..bc8a5f2
--- /dev/null
+++ b/functions_func.html
@@ -0,0 +1,176 @@
+
+
+
+
+
+
+
+mrs_uav_hw_api: Class Members - Functions
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_uav_hw_api
+
+ An abstraction layer between the MRS UAV System and a low-level Flight Controller
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
- c -
+callbackAccelerationHdgCmd()
+: mrs_uav_hw_api::DummyApi
+, mrs_uav_hw_api::MrsUavHwApi
+
+callbackAccelerationHdgRateCmd()
+: mrs_uav_hw_api::DummyApi
+, mrs_uav_hw_api::MrsUavHwApi
+
+callbackActuatorCmd()
+: mrs_uav_hw_api::DummyApi
+, mrs_uav_hw_api::MrsUavHwApi
+
+callbackArming()
+: mrs_uav_hw_api::DummyApi
+, mrs_uav_hw_api::MrsUavHwApi
+
+callbackAttitudeCmd()
+: mrs_uav_hw_api::DummyApi
+, mrs_uav_hw_api::MrsUavHwApi
+
+callbackAttitudeRateCmd()
+: mrs_uav_hw_api::DummyApi
+, mrs_uav_hw_api::MrsUavHwApi
+
+callbackControlGroupCmd()
+: mrs_uav_hw_api::DummyApi
+, mrs_uav_hw_api::MrsUavHwApi
+
+callbackOffboard()
+: mrs_uav_hw_api::DummyApi
+, mrs_uav_hw_api::MrsUavHwApi
+
+callbackPositionCmd()
+: mrs_uav_hw_api::DummyApi
+, mrs_uav_hw_api::MrsUavHwApi
+
+callbackTrackerCmd()
+: mrs_uav_hw_api::DummyApi
+, mrs_uav_hw_api::MrsUavHwApi
+
+callbackVelocityHdgCmd()
+: mrs_uav_hw_api::DummyApi
+, mrs_uav_hw_api::MrsUavHwApi
+
+callbackVelocityHdgRateCmd()
+: mrs_uav_hw_api::DummyApi
+, mrs_uav_hw_api::MrsUavHwApi
+
+
+
+
+
- g -
+
+
+
- i -
+
+
+
- ~ -
+
+
+
+
+
+
diff --git a/functions_vars.html b/functions_vars.html
new file mode 100644
index 0000000..b7759c8
--- /dev/null
+++ b/functions_vars.html
@@ -0,0 +1,165 @@
+
+
+
+
+
+
+
+mrs_uav_hw_api: Class Members - Variables
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_uav_hw_api
+
+ An abstraction layer between the MRS UAV System and a low-level Flight Controller
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/graph_legend.html b/graph_legend.html
new file mode 100644
index 0000000..756e09d
--- /dev/null
+++ b/graph_legend.html
@@ -0,0 +1,161 @@
+
+
+
+
+
+
+
+mrs_uav_hw_api: Graph Legend
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_uav_hw_api
+
+ An abstraction layer between the MRS UAV System and a low-level Flight Controller
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
This page explains how to interpret the graphs that are generated by doxygen.
+
Consider the following example:
+
class Invisible { };
+
+
+
class Truncated : public Invisible { };
+
+
+
class Undocumented { };
+
+
+
class PublicBase : public Truncated { };
+
+
+
template <class T> class Templ { };
+
+
+
class ProtectedBase { };
+
+
+
class PrivateBase { };
+
+
+
class Used { };
+
+
+
class Inherited : public PublicBase,
+
protected ProtectedBase,
+
private PrivateBase,
+
public Undocumented,
+
public Templ<int>
+
{
+
private :
+
Used *m_usedClass;
+
};
+
This will result in the following graph:
+
The boxes in the above graph have the following meaning:
+
+
+A filled gray box represents the struct or class for which the graph is generated.
+
+A box with a black border denotes a documented struct or class.
+
+A box with a gray border denotes an undocumented struct or class.
+
+A box with a red border denotes a documented struct or class forwhich not all inheritance/containment relations are shown. A graph is truncated if it does not fit within the specified boundaries.
+
+
The arrows have the following meaning:
+
+
+A dark blue arrow is used to visualize a public inheritance relation between two classes.
+
+A dark green arrow is used for protected inheritance.
+
+A dark red arrow is used for private inheritance.
+
+A purple dashed arrow is used if a class is contained or used by another class. The arrow is labelled with the variable(s) through which the pointed class or struct is accessible.
+
+A yellow dashed arrow denotes a relation between a template instance and the template class it was instantiated from. The arrow is labelled with the template parameters of the instance.
+
+
+
+
+
+
+
diff --git a/graph_legend.md5 b/graph_legend.md5
new file mode 100644
index 0000000..8fcdccd
--- /dev/null
+++ b/graph_legend.md5
@@ -0,0 +1 @@
+f51bf6e9a10430aafef59831b08dcbfe
\ No newline at end of file
diff --git a/graph_legend.png b/graph_legend.png
new file mode 100644
index 0000000..7e2cbcf
Binary files /dev/null and b/graph_legend.png differ
diff --git a/hierarchy.html b/hierarchy.html
new file mode 100644
index 0000000..108e676
--- /dev/null
+++ b/hierarchy.html
@@ -0,0 +1,113 @@
+
+
+
+
+
+
+
+mrs_uav_hw_api: Class Hierarchy
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_uav_hw_api
+
+ An abstraction layer between the MRS UAV System and a low-level Flight Controller
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Go to the graphical class hierarchy
+This inheritance list is sorted roughly, but not completely, alphabetically:
+
+
+
+
+
+
diff --git a/hierarchy.js b/hierarchy.js
new file mode 100644
index 0000000..f3f61f7
--- /dev/null
+++ b/hierarchy.js
@@ -0,0 +1,11 @@
+var hierarchy =
+[
+ [ "mrs_uav_hw_api::CommonHandlers_t", "structmrs__uav__hw__api_1_1CommonHandlers__t.html", null ],
+ [ "mrs_uav_hw_api::MrsUavHwApi", "classmrs__uav__hw__api_1_1MrsUavHwApi.html", [
+ [ "mrs_uav_hw_api::DummyApi", "classmrs__uav__hw__api_1_1DummyApi.html", null ]
+ ] ],
+ [ "Nodelet", null, [
+ [ "mrs_uav_hw_api::HwApiManager", "classmrs__uav__hw__api_1_1HwApiManager.html", null ]
+ ] ],
+ [ "mrs_uav_hw_api::Publishers_t", "structmrs__uav__hw__api_1_1Publishers__t.html", null ]
+];
\ No newline at end of file
diff --git a/index.html b/index.html
new file mode 100644
index 0000000..60e4064
--- /dev/null
+++ b/index.html
@@ -0,0 +1,139 @@
+
+
+
+
+
+
+
+mrs_uav_hw_api: MRS UAV HW API (<a href="https://ctu-mrs.github.io/mrs_uav_hw_api/">Docs</a>)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_uav_hw_api
+
+ An abstraction layer between the MRS UAV System and a low-level Flight Controller
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
An abstraction layer between the MRS UAV System and a UAV flight controller.
+
+:warning: Attention please: This README is needs work.
+The MRS UAV System 1.5 is being released and this page needs updating. Please, keep in mind that the information on this page might not be valid.
+
+
+What does it do?
+
This nodes provides an interface between any UAV flight controller (and any Simulator) and the core of the MRS UAV System. On one side, the HW API provides a unified ROS interfaces for the core as if it was a generic flight controller . On the other side, the communication with a particular hardware (or simulator) can be orchestrated using whatever is required.
+
+
+Documentation
+
https://ctu-mrs.github.io/mrs_uav_hw_api/
+
+Control output from the MRS UAV System
+
The control output can be any of the following:
+
+3D Position + Heading
+3D body-frame Velocity + Heading
+3D body-frame Velocity + Heading rate
+3D body-frame Acceleration + Heading
+3D body-frame Acceleration + Heading rate
+3D world-frame Attitude + Throttle
+body-frame Attitude rate + Throttle
+Control groups
+individual Actuators' throttle
+
+
+Data provided to the MRS UAV System
+
TODO
+
+Example HW API Plugins
+
+
+
+
+
+
+
+
diff --git a/inherit_graph_0.map b/inherit_graph_0.map
new file mode 100644
index 0000000..b1dfb6b
--- /dev/null
+++ b/inherit_graph_0.map
@@ -0,0 +1,3 @@
+
+
+
diff --git a/inherit_graph_0.md5 b/inherit_graph_0.md5
new file mode 100644
index 0000000..c6bfa9e
--- /dev/null
+++ b/inherit_graph_0.md5
@@ -0,0 +1 @@
+6b7180ae7d65330a1e5c0f9c387dd2c6
\ No newline at end of file
diff --git a/inherit_graph_0.png b/inherit_graph_0.png
new file mode 100644
index 0000000..187244a
Binary files /dev/null and b/inherit_graph_0.png differ
diff --git a/inherit_graph_1.map b/inherit_graph_1.map
new file mode 100644
index 0000000..2dde71e
--- /dev/null
+++ b/inherit_graph_1.map
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/inherit_graph_1.md5 b/inherit_graph_1.md5
new file mode 100644
index 0000000..c08ca24
--- /dev/null
+++ b/inherit_graph_1.md5
@@ -0,0 +1 @@
+07fc0f972b4b3d69db4693dc149c6dff
\ No newline at end of file
diff --git a/inherit_graph_1.png b/inherit_graph_1.png
new file mode 100644
index 0000000..23b18e2
Binary files /dev/null and b/inherit_graph_1.png differ
diff --git a/inherit_graph_2.map b/inherit_graph_2.map
new file mode 100644
index 0000000..d37ad91
--- /dev/null
+++ b/inherit_graph_2.map
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/inherit_graph_2.md5 b/inherit_graph_2.md5
new file mode 100644
index 0000000..211820f
--- /dev/null
+++ b/inherit_graph_2.md5
@@ -0,0 +1 @@
+8323f6188bd0156a959cb8d20812d943
\ No newline at end of file
diff --git a/inherit_graph_2.png b/inherit_graph_2.png
new file mode 100644
index 0000000..3611a1a
Binary files /dev/null and b/inherit_graph_2.png differ
diff --git a/inherit_graph_3.map b/inherit_graph_3.map
new file mode 100644
index 0000000..4aeccd0
--- /dev/null
+++ b/inherit_graph_3.map
@@ -0,0 +1,3 @@
+
+
+
diff --git a/inherit_graph_3.md5 b/inherit_graph_3.md5
new file mode 100644
index 0000000..45cec47
--- /dev/null
+++ b/inherit_graph_3.md5
@@ -0,0 +1 @@
+28b7164be6c45f8eb41ab56d47fa802b
\ No newline at end of file
diff --git a/inherit_graph_3.png b/inherit_graph_3.png
new file mode 100644
index 0000000..285acc0
Binary files /dev/null and b/inherit_graph_3.png differ
diff --git a/inherits.html b/inherits.html
new file mode 100644
index 0000000..26ab4d3
--- /dev/null
+++ b/inherits.html
@@ -0,0 +1,127 @@
+
+
+
+
+
+
+
+mrs_uav_hw_api: Class Hierarchy
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_uav_hw_api
+
+ An abstraction layer between the MRS UAV System and a low-level Flight Controller
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/jquery.js b/jquery.js
new file mode 100644
index 0000000..103c32d
--- /dev/null
+++ b/jquery.js
@@ -0,0 +1,35 @@
+/*! jQuery v3.4.1 | (c) JS Foundation and other contributors | jquery.org/license */
+!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],E=C.document,r=Object.getPrototypeOf,s=t.slice,g=t.concat,u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.4.1",k=function(e,t){return new k.fn.init(e,t)},p=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;function d(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp($),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+$),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),ne=function(e,t,n){var r="0x"+t-65536;return r!=r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(m.childNodes),m.childNodes),t[m.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&((e?e.ownerDocument||e:m)!==C&&T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!A[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&U.test(t)){(s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=k),o=(l=h(t)).length;while(o--)l[o]="#"+s+" "+xe(l[o]);c=l.join(","),f=ee.test(t)&&ye(e.parentNode)||e}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){A(t,!0)}finally{s===k&&e.removeAttribute("id")}}}return g(t.replace(B,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[k]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:m;return r!==C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),m!==C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=k,!C.getElementsByName||!C.getElementsByName(k).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){a.appendChild(e).innerHTML=" ",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+k+"-]").length||v.push("~="),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+k+"+*").length||v.push(".#.+[+~]")}),ce(function(e){e.innerHTML=" ";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",$)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e===C||e.ownerDocument===m&&y(m,e)?-1:t===C||t.ownerDocument===m&&y(m,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===C?-1:t===C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]===m?-1:s[r]===m?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if((e.ownerDocument||e)!==C&&T(e),d.matchesSelector&&E&&!A[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){A(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=p[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&p(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?k.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?k.grep(e,function(e){return e===n!==r}):"string"!=typeof n?k.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(k.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||q,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:L.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof k?t[0]:t,k.merge(this,k.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),D.test(r[1])&&k.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(k):k.makeArray(e,this)}).prototype=k.fn,q=k(E);var H=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}k.fn.extend({has:function(e){var t=k(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i,ge={option:[1,""," "],thead:[1,""],col:[2,""],tr:[2,""],td:[3,""],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?k.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;nx",y.noCloneChecked=!!me.cloneNode(!0).lastChild.defaultValue;var Te=/^key/,Ce=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ee=/^([^.]*)(?:\.(.+)|)/;function ke(){return!0}function Se(){return!1}function Ne(e,t){return e===function(){try{return E.activeElement}catch(e){}}()==("focus"===t)}function Ae(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)Ae(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Se;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return k().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=k.guid++)),e.each(function(){k.event.add(this,t,i,r,n)})}function De(e,i,o){o?(Q.set(e,i,!1),k.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=Q.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(k.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),Q.set(this,i,r),t=o(this,i),this[i](),r!==(n=Q.get(this,i))||t?Q.set(this,i,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n.value}else r.length&&(Q.set(this,i,{value:k.event.trigger(k.extend(r[0],k.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Q.get(e,i)&&k.event.add(e,i,ke)}k.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.get(t);if(v){n.handler&&(n=(o=n).handler,i=o.selector),i&&k.find.matchesSelector(ie,i),n.guid||(n.guid=k.guid++),(u=v.events)||(u=v.events={}),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof k&&k.event.triggered!==e.type?k.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(R)||[""]).length;while(l--)d=g=(s=Ee.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=k.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=k.event.special[d]||{},c=k.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&k.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),k.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.hasData(e)&&Q.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(R)||[""]).length;while(l--)if(d=g=(s=Ee.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){f=k.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||k.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)k.event.remove(e,d+t[l],n,r,!0);k.isEmptyObject(u)&&Q.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=k.event.fix(e),u=new Array(arguments.length),l=(Q.get(this,"events")||{})[s.type]||[],c=k.event.special[s.type]||{};for(u[0]=s,t=1;t\x20\t\r\n\f]*)[^>]*)\/>/gi,qe=/
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_uav_hw_api
+
+ An abstraction layer between the MRS UAV System and a low-level Flight Controller
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
4 #include <sensor_msgs/Imu.h>
+
5 #include <sensor_msgs/NavSatFix.h>
+
6 #include <sensor_msgs/NavSatStatus.h>
+
7 #include <sensor_msgs/Range.h>
+
8 #include <sensor_msgs/BatteryState.h>
+
9 #include <sensor_msgs/MagneticField.h>
+
+
11 #include <mrs_msgs/Float64Stamped.h>
+
+
13 #include <mrs_msgs/HwApiStatus.h>
+
14 #include <mrs_msgs/HwApiRcChannels.h>
+
15 #include <mrs_msgs/RtkGps.h>
+
16 #include <mrs_msgs/RtkFixType.h>
+
+
18 #include <mrs_msgs/HwApiAltitude.h>
+
+
20 #include <nav_msgs/Odometry.h>
+
+
22 #include <geometry_msgs/QuaternionStamped.h>
+
23 #include <geometry_msgs/Vector3Stamped.h>
+
24 #include <geometry_msgs/PointStamped.h>
+
+
26 namespace mrs_uav_hw_api
+
+
+
+
+
31 typedef std::function<void(
const sensor_msgs::NavSatFix &msg)> publishGNSS_t;
+
32 typedef std::function<void(
const sensor_msgs::NavSatStatus &msg)> publishGNSSStatus_t;
+
33 typedef std::function<void(
const mrs_msgs::RtkGps &msg)> publishRTK_t;
+
34 typedef std::function<void(
const mrs_msgs::HwApiAltitude &msg)> publishAltitude_t;
+
35 typedef std::function<void(
const mrs_msgs::Float64Stamped &msg)> publishMagnetometerHeading_t;
+
36 typedef std::function<void(
const sensor_msgs::MagneticField &msg)> publishMagneticField_t;
+
37 typedef std::function<void(
const mrs_msgs::HwApiStatus &msg)> publishStatus_t;
+
38 typedef std::function<void(
const mrs_msgs::HwApiRcChannels &msg)> publishRcChannels_t;
+
39 typedef std::function<void(
const sensor_msgs::BatteryState &msg)> publishBatteryState_t;
+
40 typedef std::function<void(
const sensor_msgs::Imu &msg)> publishIMU_t;
+
41 typedef std::function<void(
const sensor_msgs::Range &msg)> publishDistanceSensor_t;
+
42 typedef std::function<void(
const geometry_msgs::Vector3Stamped &msg)> publishVelocity_t;
+
43 typedef std::function<void(
const geometry_msgs::PointStamped &msg)> publishPosition_t;
+
44 typedef std::function<void(
const geometry_msgs::QuaternionStamped &msg)> publishOrientation_t;
+
45 typedef std::function<void(
const geometry_msgs::Vector3Stamped &msg)> publishAngularVelocity_t;
+
46 typedef std::function<void(
const nav_msgs::Odometry &msg)> publishOdometry_t;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
148 #endif // PUBLISHERS_H
+
+
+publishAngularVelocity_t publishAngularVelocity
Publisher for the intrinsic angular velocity. This can be already pre-filtered. The angular velocity ...
Definition: publishers.h:131
+publishMagneticField_t publishMagneticField
Publisher for the RAW magnetometer readings.
Definition: publishers.h:94
+publishMagnetometerHeading_t publishMagnetometerHeading
Publisher for the estimated magnetometer heading.
Definition: publishers.h:89
+publishAltitude_t publishAltitude
Altitude of the UAV in AMSL (Above Mean Seal Level).
Definition: publishers.h:84
+A structure with publisher methods provided to the HW API Plugin. The plugin can call these methods a...
Definition: publishers.h:54
+publishDistanceSensor_t publishDistanceSensor
Publisher for the distance sensor readings. The distance sensor is expected to be pointing down towar...
Definition: publishers.h:79
+publishOdometry_t publishGroundTruth
Publisher for ground truth odometry which can be provided by, e.g., a simulator or a MoCap system....
Definition: publishers.h:143
+publishPosition_t publishPosition
Publisher for the UAV position as estimated by the flight controller. The position is supposed to be ...
Definition: publishers.h:115
+publishIMU_t publishIMU
Publisher for the raw IMU data.
Definition: publishers.h:59
+publishRcChannels_t publishRcChannels
Publisher for the RC Channels received by the flight controller.
Definition: publishers.h:104
+publishGNSS_t publishGNSS
Publisher for the main GNSS data.
Definition: publishers.h:64
+publishRTK_t publishRTK
Publisher for the RTK GNSS data.
Definition: publishers.h:74
+publishGNSSStatus_t publishGNSSStatus
Publisher for the GNSS status message.
Definition: publishers.h:69
+publishOdometry_t publishOdometry
Publisher for a general "odometry" message that can be used for vizualizing the state of the UAV,...
Definition: publishers.h:137
+publishStatus_t publishStatus
Publisher for the HW API Plugin status.
Definition: publishers.h:99
+publishVelocity_t publishVelocity
Publisher for the UAV velocity expressed in the body-fixed frame, provided by the common handlers.
Definition: publishers.h:125
+publishBatteryState_t publishBatteryState
Publisher for the UAV battery state.
Definition: publishers.h:109
+publishOrientation_t publishOrientation
Publisher for the UAV orientation. The orientation is supposed to be expressed in the "world frame" p...
Definition: publishers.h:120
+
+
+
+