diff --git a/.nojekyll b/.nojekyll
new file mode 100644
index 00000000..e69de29b
diff --git a/annotated.html b/annotated.html
new file mode 100644
index 00000000..e5f3ace9
--- /dev/null
+++ b/annotated.html
@@ -0,0 +1,208 @@
+
+
+
+
+
+
+
+mrs_lib: Class List
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Here are the classes, structs, unions and interfaces with brief descriptions:
+
[detail level 1 2 3 ]
+ ▼ N DynamicPublisher
+ C impl
+ ▼ N mrs_lib All mrs_lib functions, classes, variables and definitions are contained in this namespace
+ ► N geometry
+ C Cone Geometric representaiton of a cone
+ C Cuboid Geometric representation of a cuboid
+ C cyclic Implementation of the a general cyclic value (such as angles in radians/degrees etc)
+ C Cylinder Geometric representation of a cylinder
+ C degrees Convenience specialization of the cyclic class for unsigned degrees (from $0$ to $360$)
+ C Ellipse Geometric representation of an ellipse
+ C radians Convenience specialization of the cyclic class for unsigned radians (from $0$ to $2\pi$)
+ C Ray Geometric representation of a ray. Instantiate it by two input Vector3. Use static methods for from-to raycast, or a point-direction raycast
+ C Rectangle Geometric representation of a rectangle (can represent any quadrilateral)
+ C sdegrees Convenience specialization of the cyclic class for signed degrees (from $-180$ to $180$)
+ C sradians Convenience specialization of the cyclic class for signed radians (from $-\pi$ to $\pi$)
+ C Triangle Geometric representation of a triangle. Instantiate a new triangle by providing three vertices
+ ► N quadratic_throttle_model
+ C MotorParams_t
+ C AtomicScopeFlag Convenience class for automatically setting and unsetting an atomic boolean based on the object's scope. Useful e.g. for indicating whether a thread is running or not
+ ► C AttitudeConverter The main convertor class. Instantiate with any type in constructor and get the value in any other type by assigning the instance to your variable, as: tf::Quaternion tf1_quaternion = AttitudeConverter(roll, pitch, yaw); All the default Euler angles are in the extrinsic RPY notation
+ C EulerFormatException Thrown when the Euler angle format is set wrongly
+ C GetHeadingException Thrown when calculating of heading is not possible due to atan2 exception
+ C InvalidAttitudeException Thrown when the internal attitude becomes invalid
+ C MathErrorException Thrown when math breaks
+ C SetHeadingException Thrown when the heading cannot be set to an existing attitude
+ C BatchVisualizer Library for drawing large amounts of geometric objects in RVIZ at the same time
+ C DKF Implementation of the Degenerate measurement Linear Kalman filter
+ C DynamicPublisher A helper class for easy publishing of ROS messages for debugging purposes
+ C DynamicReconfigureMgr
+ C eigenvector_exception This exception may be thrown when solving the generalized eigenvalue problem with the M and N matrices
+ C EulerAttitude A small class for storing the Euler angles
+ C IirFilter
+ C ImagePubliserData
+ C ImagePublisher
+ C Intersection
+ ► C JLKF
+ C inverse_exception This exception is thrown when taking the inverse of a matrix fails
+ ► C KalmanFilter This abstract class defines common interfaces and types for a generic Kalman filter
+ C statecov_t Helper struct for passing around the state and its covariance in one variable
+ ► C KalmanFilterAloamGarm This abstract class defines common interfaces and types for a generic Kalman filter
+ C statecov_t Helper struct for passing around the state and its covariance in one variable
+ ► C LKF Implementation of the Linear Kalman filter [3]
+ C inverse_exception This exception is thrown when taking the inverse of a matrix fails
+ C LKF_MRS_odom
+ C MedianFilter Implementation of a median filter with a fixed-length buffer
+ C MRSTimer Common wrapper representing the functionality of the ros::Timer
+ C NCLKF This class implements the norm-constrained linear Kalman filter [5]
+ C NCLKF_partial This class implements the partially norm-constrained linear Kalman filter [5]
+ C NCUKF
+ C NotchFilter
+ C ParamLoader Convenience class for loading parameters from rosparam server
+ C ParamProvider
+ ► C PointObstacle
+ C WrongHeight
+ C WrongRadius
+ ► C Polygon
+ C ExtraVertices
+ C WrongNumberOfColumns
+ C WrongNumberOfVertices
+ C Profiler
+ C PublisherHandler User wrapper of the publisher handler implementation
+ C PublisherHandler_impl Implementation of the publisher handler
+ C Repredictor Implementation of the Repredictor for fusing measurements with variable delays
+ C RepredictorAloamgarm Implementation of the RepredictorAloamgarm for fusing measurements with variable delays
+ C RHEIV Implementation of the Reduced Heteroscedastic Errors In Variables surface fitting algorithm [2]
+ C RosParamProvider
+ C ROSTimer Ros::Timer wrapper. The interface is the same as with ros::Timer, except for the initialization method
+ C Routine
+ ► C SafetyZone
+ C BorderError
+ C PointObstacleError
+ C PolygonObstacleError
+ ► C ScopeTimer Simple timer which will time a duration of a scope and checkpoints inside the scope in ros time and std::chrono time
+ C time_point
+ C ScopeTimerLogger Simple file logger of scope timer and its checkpoints
+ C ServiceClientHandler User wrapper of the service client handler implementation
+ C ServiceClientHandler_impl Implementation of the service client handler
+ ► C SubscribeHandler The main class for ROS topic subscription, message timeout handling etc
+ C Impl
+ C ImplThreadsafe
+ C SubscribeHandlerOptions A helper class to simplify setup of SubscribeHandler construction. This class is passed to the SubscribeHandler constructor and specifies its common options
+ C ThreadTimer Custom thread-based Timers with the same interface as mrs_lib::ROSTimer
+ C TimeoutManager TODO
+ C TransformBroadcaster Wrapper for the tf2_ros::TransformBroadcaster. With each sendTransform() command, the message is checked against the last message with the same frame IDs. If the transform was already published in this ros::Time step, then the transform is skipped. Prevents endless stream of warnings from spamming the console output
+ C Transformer A convenience wrapper class for ROS's native TF2 API to simplify transforming of various messages
+ ► C UKF Implementation of the Unscented Kalman filter [4]
+ C inverse_exception Thrown when taking the inverse of a matrix fails during kalman gain calculation
+ C square_root_exception Thrown when taking the square root of a matrix fails during sigma generation
+ C varstepLKF
+ C Vector3Converter Converter of Vector3 representations. Instantiate it with any type of vector3 in constructor and convert it by assigning it to any other type of vector3 variable
+ C VisualObject
+ ▼ N std
+ C tuple_element< 0, mrs_lib::AttitudeConverter >
+ C tuple_element< 1, mrs_lib::AttitudeConverter >
+ C tuple_element< 2, mrs_lib::AttitudeConverter >
+ C tuple_size< mrs_lib::AttitudeConverter >
+ ▼ N ThreadTimer
+ C Impl
+ C degrees
+ C MyPoint
+ C obj_t
+ C SubObject
+ C VectorConverterTest
+
+
+
+
+
+
+
+
diff --git a/annotated_dup.js b/annotated_dup.js
new file mode 100644
index 00000000..f167bd9a
--- /dev/null
+++ b/annotated_dup.js
@@ -0,0 +1,21 @@
+var annotated_dup =
+[
+ [ "DynamicPublisher", null, [
+ [ "impl", "classDynamicPublisher_1_1impl.html", "classDynamicPublisher_1_1impl" ]
+ ] ],
+ [ "mrs_lib", "namespacemrs__lib.html", "namespacemrs__lib" ],
+ [ "std", null, [
+ [ "tuple_element< 0, mrs_lib::AttitudeConverter >", "structstd_1_1tuple__element_3_010_00_01mrs__lib_1_1AttitudeConverter_01_4.html", "structstd_1_1tuple__element_3_010_00_01mrs__lib_1_1AttitudeConverter_01_4" ],
+ [ "tuple_element< 1, mrs_lib::AttitudeConverter >", "structstd_1_1tuple__element_3_011_00_01mrs__lib_1_1AttitudeConverter_01_4.html", "structstd_1_1tuple__element_3_011_00_01mrs__lib_1_1AttitudeConverter_01_4" ],
+ [ "tuple_element< 2, mrs_lib::AttitudeConverter >", "structstd_1_1tuple__element_3_012_00_01mrs__lib_1_1AttitudeConverter_01_4.html", "structstd_1_1tuple__element_3_012_00_01mrs__lib_1_1AttitudeConverter_01_4" ],
+ [ "tuple_size< mrs_lib::AttitudeConverter >", "structstd_1_1tuple__size_3_01mrs__lib_1_1AttitudeConverter_01_4.html", null ]
+ ] ],
+ [ "ThreadTimer", null, [
+ [ "Impl", "classThreadTimer_1_1Impl.html", "classThreadTimer_1_1Impl" ]
+ ] ],
+ [ "degrees", "structdegrees.html", null ],
+ [ "MyPoint", "structMyPoint.html", "structMyPoint" ],
+ [ "obj_t", "structobj__t.html", "structobj__t" ],
+ [ "SubObject", "classSubObject.html", "classSubObject" ],
+ [ "VectorConverterTest", "classVectorConverterTest.html", null ]
+];
\ No newline at end of file
diff --git a/attitude__converter_8h.html b/attitude__converter_8h.html
new file mode 100644
index 00000000..5b9ff022
--- /dev/null
+++ b/attitude__converter_8h.html
@@ -0,0 +1,208 @@
+
+
+
+
+
+
+
+mrs_lib: include/mrs_lib/attitude_converter.h File Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Conversions between various representations of object attitude in 3D. Supports Quaternions, Euler angles, Angle-axis and Rotational matrices from tf, tf2, Eigen and geometry_msgs libraries. The default Euler angle notation is the extrinsic RPY.
+More...
+
#include <vector>
+
#include <cmath>
+
#include <Eigen/Dense>
+
#include <tuple>
+
#include <tf2_ros/transform_listener.h>
+
#include <tf2_ros/buffer.h>
+
#include <tf2_eigen/tf2_eigen.h>
+
#include <tf2_geometry_msgs/tf2_geometry_msgs.h>
+
#include <tf/transform_datatypes.h>
+
#include <tf_conversions/tf_eigen.h>
+
#include <mrs_lib/geometry/misc.h >
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Go to the source code of this file.
+
+
+ mrs_lib
+ All mrs_lib functions, classes, variables and definitions are contained in this namespace.
+
+
+
+ enum RPY_convention_t { RPY_INTRINSIC = 1,
+RPY_EXTRINSIC = 2
+ }
+
+
+
+
Conversions between various representations of object attitude in 3D. Supports Quaternions, Euler angles, Angle-axis and Rotational matrices from tf, tf2, Eigen and geometry_msgs libraries. The default Euler angle notation is the extrinsic RPY.
+
Author Tomas Baca
+
+
+
+
+
+
diff --git a/attitude__converter_8h.js b/attitude__converter_8h.js
new file mode 100644
index 00000000..64dd9e0e
--- /dev/null
+++ b/attitude__converter_8h.js
@@ -0,0 +1,19 @@
+var attitude__converter_8h =
+[
+ [ "EulerAttitude", "classmrs__lib_1_1EulerAttitude.html", "classmrs__lib_1_1EulerAttitude" ],
+ [ "Vector3Converter", "classmrs__lib_1_1Vector3Converter.html", "classmrs__lib_1_1Vector3Converter" ],
+ [ "AttitudeConverter", "classmrs__lib_1_1AttitudeConverter.html", "classmrs__lib_1_1AttitudeConverter" ],
+ [ "GetHeadingException", "structmrs__lib_1_1AttitudeConverter_1_1GetHeadingException.html", "structmrs__lib_1_1AttitudeConverter_1_1GetHeadingException" ],
+ [ "MathErrorException", "structmrs__lib_1_1AttitudeConverter_1_1MathErrorException.html", "structmrs__lib_1_1AttitudeConverter_1_1MathErrorException" ],
+ [ "InvalidAttitudeException", "structmrs__lib_1_1AttitudeConverter_1_1InvalidAttitudeException.html", "structmrs__lib_1_1AttitudeConverter_1_1InvalidAttitudeException" ],
+ [ "EulerFormatException", "structmrs__lib_1_1AttitudeConverter_1_1EulerFormatException.html", "structmrs__lib_1_1AttitudeConverter_1_1EulerFormatException" ],
+ [ "SetHeadingException", "structmrs__lib_1_1AttitudeConverter_1_1SetHeadingException.html", "structmrs__lib_1_1AttitudeConverter_1_1SetHeadingException" ],
+ [ "tuple_size< mrs_lib::AttitudeConverter >", "structstd_1_1tuple__size_3_01mrs__lib_1_1AttitudeConverter_01_4.html", null ],
+ [ "tuple_element< 0, mrs_lib::AttitudeConverter >", "structstd_1_1tuple__element_3_010_00_01mrs__lib_1_1AttitudeConverter_01_4.html", "structstd_1_1tuple__element_3_010_00_01mrs__lib_1_1AttitudeConverter_01_4" ],
+ [ "tuple_element< 1, mrs_lib::AttitudeConverter >", "structstd_1_1tuple__element_3_011_00_01mrs__lib_1_1AttitudeConverter_01_4.html", "structstd_1_1tuple__element_3_011_00_01mrs__lib_1_1AttitudeConverter_01_4" ],
+ [ "tuple_element< 2, mrs_lib::AttitudeConverter >", "structstd_1_1tuple__element_3_012_00_01mrs__lib_1_1AttitudeConverter_01_4.html", "structstd_1_1tuple__element_3_012_00_01mrs__lib_1_1AttitudeConverter_01_4" ],
+ [ "RPY_convention_t", "attitude__converter_8h.html#aeebfeed9c234fa645d39c864fa3ecaab", [
+ [ "RPY_INTRINSIC", "attitude__converter_8h.html#aeebfeed9c234fa645d39c864fa3ecaabafe6a6511417aaee7441f6a708cd217b1", null ],
+ [ "RPY_EXTRINSIC", "attitude__converter_8h.html#aeebfeed9c234fa645d39c864fa3ecaaba79f06980715846067ad2fee2cc6b8cbb", null ]
+ ] ]
+];
\ No newline at end of file
diff --git a/attitude__converter_8h__dep__incl.map b/attitude__converter_8h__dep__incl.map
new file mode 100644
index 00000000..49c47712
--- /dev/null
+++ b/attitude__converter_8h__dep__incl.map
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/attitude__converter_8h__dep__incl.md5 b/attitude__converter_8h__dep__incl.md5
new file mode 100644
index 00000000..2deb0006
--- /dev/null
+++ b/attitude__converter_8h__dep__incl.md5
@@ -0,0 +1 @@
+4a465cd595e63cbd8f2500074903ff12
\ No newline at end of file
diff --git a/attitude__converter_8h__dep__incl.png b/attitude__converter_8h__dep__incl.png
new file mode 100644
index 00000000..5dec1282
Binary files /dev/null and b/attitude__converter_8h__dep__incl.png differ
diff --git a/attitude__converter_8h__incl.map b/attitude__converter_8h__incl.map
new file mode 100644
index 00000000..a23174be
--- /dev/null
+++ b/attitude__converter_8h__incl.map
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/attitude__converter_8h__incl.md5 b/attitude__converter_8h__incl.md5
new file mode 100644
index 00000000..41575f42
--- /dev/null
+++ b/attitude__converter_8h__incl.md5
@@ -0,0 +1 @@
+c308a608ece69e9a97e1dec3570b7651
\ No newline at end of file
diff --git a/attitude__converter_8h__incl.png b/attitude__converter_8h__incl.png
new file mode 100644
index 00000000..7f09bc51
Binary files /dev/null and b/attitude__converter_8h__incl.png differ
diff --git a/attitude__converter_8h_source.html b/attitude__converter_8h_source.html
new file mode 100644
index 00000000..12f39745
--- /dev/null
+++ b/attitude__converter_8h_source.html
@@ -0,0 +1,397 @@
+
+
+
+
+
+
+
+mrs_lib: include/mrs_lib/attitude_converter.h Source File
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Go to the documentation of this file.
+
12 #ifndef ATTITUDE_CONVERTER_H
+
13 #define ATTITUDE_CONVERTER_H
+
+
+
+
17 #include <Eigen/Dense>
+
+
+
20 #include <tf2_ros/transform_listener.h>
+
21 #include <tf2_ros/buffer.h>
+
22 #include <tf2_eigen/tf2_eigen.h>
+
23 #include <tf2_geometry_msgs/tf2_geometry_msgs.h>
+
24 #include <tf/transform_datatypes.h>
+
25 #include <tf_conversions/tf_eigen.h>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
62 double roll (
void )
const ;
+
+
69 double pitch (
void )
const ;
+
+
76 double yaw (
void )
const ;
+
+
+
79 double roll_, pitch_, yaw_;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
127 operator tf2::Vector3()
const ;
+
+
134 operator Eigen::Vector3d()
const ;
+
+
141 operator geometry_msgs::Vector3()
const ;
+
+
+
144 tf2::Vector3 vector3_;
+
+
+
+
+
+
+
+
+
+
+
160 const char * what()
const throw () {
+
161 return "AttitudeConverter: can not calculate the heading, the rotated x-axis is parallel to the world's z-axis" ;
+
+
+
+
+
+
168 const char * what()
const throw () {
+
169 return "AttitudeConverter: math error" ;
+
+
+
+
+
+
176 const char * what()
const throw () {
+
177 return "AttitudeConverter: invalid attitude, the input probably constains NaNs" ;
+
+
+
+
+
+
184 const char * what()
const throw () {
+
185 return "AttitudeConverter: invalid Euler angle format" ;
+
+
+
+
+
+
192 const char * what()
const throw () {
+
193 return "AttitudeConverter: cannot set the desired heading, the thrust vector's Z component is 0" ;
+
+
+
+
+
+
+
+
209 AttitudeConverter (
const double & roll,
const double & pitch,
const double & yaw,
const RPY_convention_t& format = RPY_EXTRINSIC);
+
+
+
+
+
+
+
+
+
+
+
+
+
+
254 double angle = angle_axis.angle();
+
255 tf2::Vector3 axis(angle_axis.axis()[0], angle_axis.axis()[1], angle_axis.axis()[2]);
+
+
257 tf2_quaternion_.setRotation(axis, angle);
+
+
+
+
+
+
+
+
+
+
+
283 operator tf2::Quaternion()
const ;
+
+
290 operator tf::Quaternion()
const ;
+
+
297 operator geometry_msgs::Quaternion()
const ;
+
+
+
+
+
314 operator Eigen::AngleAxis<T>()
const {
+
+
316 double angle = tf2_quaternion_.getAngle();
+
317 Eigen::Vector3d axis(tf2_quaternion_.getAxis()[0], tf2_quaternion_.getAxis()[1], tf2_quaternion_.getAxis()[2]);
+
+
319 Eigen::AngleAxis<T> angle_axis(angle, axis);
+
+
+
+
+
+
+
333 operator Eigen::Quaternion<T>()
const {
+
+
335 return Eigen::Quaternion<T>(tf2_quaternion_.w(), tf2_quaternion_.x(), tf2_quaternion_.y(), tf2_quaternion_.z());
+
+
+
338 operator Eigen::Matrix3d()
const ;
+
+
345 operator std::tuple<double&, double&, double&>();
+
+
352 operator tf2::Matrix3x3()
const ;
+
+
359 operator tf2::Transform()
const ;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
470 template <std::
size_t I>
+
471 constexpr
auto get();
+
+
+
477 tf2::Quaternion tf2_quaternion_;
+
+
482 void calculateRPY(
void );
+
+
487 void validateOrientation(
void );
+
+
492 double roll_, pitch_, yaw_;
+
493 bool got_rpy_ =
false ;
+
+
+
+
497 template <std::
size_t I>
+
498 constexpr
auto AttitudeConverter::get() {
+
+
+
+
+
503 static_assert(I <= 2);
+
+
+
506 if constexpr (I == 0) {
+
507 return static_cast< double > (roll_);
+
508 }
else if constexpr (I == 1) {
+
509 return static_cast< double > (pitch_);
+
510 }
else if constexpr (I == 2) {
+
511 return static_cast< double > (yaw_);
+
+
+
+
+
+
+
518 struct std::tuple_size<
mrs_lib ::AttitudeConverter>
+
519 {
static constexpr
int value = 3; };
+
+
+
522 struct std::tuple_element<0,
mrs_lib ::AttitudeConverter>
+
523 {
using type = double; };
+
+
+
526 struct std::tuple_element<1,
mrs_lib ::AttitudeConverter>
+
527 {
using type = double; };
+
+
+
530 struct std::tuple_element<2,
mrs_lib ::AttitudeConverter>
+
531 {
using type = double; };
+
+
+
+
+AttitudeConverter(const double &roll, const double &pitch, const double &yaw, const RPY_convention_t &format=RPY_EXTRINSIC)
Euler angles constructor.
Definition: attitude_converter.cpp:78
+double getHeading(void)
get the angle of the rotated x-axis in the original XY plane, a.k.a
Definition: attitude_converter.cpp:254
+Vector3Converter getVectorY(void)
get a unit vector pointing in the Y direction
Definition: attitude_converter.cpp:354
+is thrown when calculating of heading is not possible due to atan2 exception
Definition: attitude_converter.h:158
+Vector3Converter(const tf2::Vector3 &vector3)
Constructor with tf2::Vector3.
Definition: attitude_converter.h:97
+AttitudeConverter(const Eigen::AngleAxis< T > angle_axis)
Eigen::AngleAxis constructor.
Definition: attitude_converter.h:253
+std::tuple< double, double, double > getIntrinsicRPY()
get the Roll, Pitch, Yaw angles in the Intrinsic convention
Definition: attitude_converter.cpp:381
+double getYawRateIntrinsic(const double &heading_rate)
get the intrinsic yaw rate from a heading rate
Definition: attitude_converter.cpp:267
+double getYaw(void)
get the yaw angle
Definition: attitude_converter.cpp:233
+is thrown when math breaks
Definition: attitude_converter.h:166
+double getRoll(void)
get the roll angle
Definition: attitude_converter.cpp:240
+The main convertor class. Instantiate with any type in constructor and get the value in any other typ...
Definition: attitude_converter.h:153
+double pitch(void) const
get the pitch angle
Definition: attitude_converter.cpp:20
+Vector3Converter getVectorZ(void)
get a unit vector pointing in the Z direction
Definition: attitude_converter.cpp:363
+std::tuple< double, double, double > getExtrinsicRPY()
get the Roll, Pitch, Yaw angles in the Extrinsic convention. The same as the default AttitudeConverte...
Definition: attitude_converter.cpp:372
+Defines useful geometry utilities and functions.
+AttitudeConverter setYaw(const double &new_yaw)
Updates the extrinsic yaw of the current orientation.
Definition: attitude_converter.cpp:394
+double roll(void) const
get the roll angle
Definition: attitude_converter.cpp:16
+EulerAttitude(const double &roll, const double &pitch, const double &yaw)
A simple class for storing the Euler angles.
Definition: attitude_converter.cpp:13
+Vector3Converter getVectorX(void)
get a unit vector pointing in the X direction
Definition: attitude_converter.cpp:345
+
+All mrs_lib functions, classes, variables and definitions are contained in this namespace.
Definition: attitude_converter.h:29
+double yaw(void) const
get the yaw angle
Definition: attitude_converter.cpp:24
+A small class for storing the Euler angles.
Definition: attitude_converter.h:46
+double getPitch(void)
get the pitch angle
Definition: attitude_converter.cpp:247
+Converter of Vector3 representations. Instantiate it with any type of vector3 in constructor and conv...
Definition: attitude_converter.h:90
+AttitudeConverter setHeading(const double &heading)
Updates the heading of the current orientation by updating the intrinsic yaw.
Definition: attitude_converter.cpp:403
+double getHeadingRate(const Vector3Converter &attitude_rate)
get heading rate base on the orientation and body-based attitude rate
Definition: attitude_converter.cpp:312
+is thrown when the heading cannot be set to an existing attitude
Definition: attitude_converter.h:190
+is thrown when the internal attitude becomes invalid
Definition: attitude_converter.h:174
+
+
+
+
diff --git a/batch__visualizer_8h.html b/batch__visualizer_8h.html
new file mode 100644
index 00000000..7c820798
--- /dev/null
+++ b/batch__visualizer_8h.html
@@ -0,0 +1,163 @@
+
+
+
+
+
+
+
+mrs_lib: include/mrs_lib/batch_visualizer.h File Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
For convenient and computationally lightweight drawing of geometry in RVIZ using marker arrays.
+More...
+
#include <vector>
+
#include <ros/ros.h>
+
#include <visualization_msgs/MarkerArray.h>
+
#include <mrs_lib/geometry/shapes.h >
+
#include <mrs_msgs/TrajectoryReference.h>
+
#include <mrs_lib/visual_object.h >
+
#include <set>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Go to the source code of this file.
+
+
+ mrs_lib
+ All mrs_lib functions, classes, variables and definitions are contained in this namespace.
+
+
+
+
+#define DEFAULT_ELLIPSE_POINTS 64
+
+
+
+
For convenient and computationally lightweight drawing of geometry in RVIZ using marker arrays.
+
Author Petr Štibinger - stibi.nosp@m. pet@.nosp@m. fel.c.nosp@m. vut..nosp@m. cz
+
+
+
+
+
+
diff --git a/batch__visualizer_8h.js b/batch__visualizer_8h.js
new file mode 100644
index 00000000..9ac69c6f
--- /dev/null
+++ b/batch__visualizer_8h.js
@@ -0,0 +1,5 @@
+var batch__visualizer_8h =
+[
+ [ "BatchVisualizer", "classmrs__lib_1_1BatchVisualizer.html", "classmrs__lib_1_1BatchVisualizer" ],
+ [ "DEFAULT_ELLIPSE_POINTS", "batch__visualizer_8h.html#a51b7645de121a21302986b8fa7ff2759", null ]
+];
\ No newline at end of file
diff --git a/batch__visualizer_8h__incl.map b/batch__visualizer_8h__incl.map
new file mode 100644
index 00000000..f76c2cd4
--- /dev/null
+++ b/batch__visualizer_8h__incl.map
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/batch__visualizer_8h__incl.md5 b/batch__visualizer_8h__incl.md5
new file mode 100644
index 00000000..cf806639
--- /dev/null
+++ b/batch__visualizer_8h__incl.md5
@@ -0,0 +1 @@
+e4ece8eb0ce4895455c2534d663bc252
\ No newline at end of file
diff --git a/batch__visualizer_8h__incl.png b/batch__visualizer_8h__incl.png
new file mode 100644
index 00000000..45b2a7a0
Binary files /dev/null and b/batch__visualizer_8h__incl.png differ
diff --git a/batch__visualizer_8h_source.html b/batch__visualizer_8h_source.html
new file mode 100644
index 00000000..e72d2368
--- /dev/null
+++ b/batch__visualizer_8h_source.html
@@ -0,0 +1,227 @@
+
+
+
+
+
+
+
+mrs_lib: include/mrs_lib/batch_visualizer.h Source File
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Go to the documentation of this file.
+
6 #ifndef BATCH_VISUALIZER_H
+
7 #define BATCH_VISUALIZER_H
+
+
+
+
11 #include <visualization_msgs/MarkerArray.h>
+
+
13 #include <mrs_msgs/TrajectoryReference.h>
+
+
+
+
17 #define DEFAULT_ELLIPSE_POINTS 64
+
+
+
+
+
+
+
+
+
+
43 BatchVisualizer (ros::NodeHandle &nh, std::string marker_topic_name, std::string parent_frame);
+
+
55 void addPoint (
const Eigen::Vector3d &point,
const double r = 0.0,
const double g = 1.0,
const double b = 0.3,
const double a = 1.0,
+
56 const ros::Duration &timeout = ros::Duration(0));
+
+
+
69 const ros::Duration &timeout = ros::Duration(0));
+
+
+
83 const bool filled =
true ,
const ros::Duration &timeout = ros::Duration(0));
+
+
+
97 const bool filled =
true ,
const ros::Duration &timeout = ros::Duration(0));
+
+
+
111 const bool filled =
true ,
const ros::Duration &timeout = ros::Duration(0));
+
+
+
126 const bool filled =
true ,
const int num_points = DEFAULT_ELLIPSE_POINTS,
const ros::Duration &timeout = ros::Duration(0));
+
+
+
142 const bool filled =
true ,
const bool capped =
true ,
const int sides = DEFAULT_ELLIPSE_POINTS,
+
143 const ros::Duration &timeout = ros::Duration(0));
+
+
158 const bool filled =
true ,
const bool capped =
true ,
const int sides = DEFAULT_ELLIPSE_POINTS,
const ros::Duration &timeout = ros::Duration(0));
+
+
171 void addTrajectory (
const mrs_msgs::TrajectoryReference &traj,
const double r = 0.3,
const double g = 1.0,
const double b = 0.3,
const double a = 1.0,
+
172 const bool filled =
true ,
const ros::Duration &timeout = ros::Duration(0));
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
226 ros::Publisher visual_pub;
+
227 visualization_msgs::MarkerArray msg;
+
+
229 std::string parent_frame;
+
230 std::string marker_topic_name;
+
+
232 std::set<VisualObject> visual_objects;
+
+
234 visualization_msgs::Marker points_marker;
+
235 visualization_msgs::Marker lines_marker;
+
236 visualization_msgs::Marker triangles_marker;
+
+
238 bool initialized =
false ;
+
+
+
241 double points_scale = 0.02;
+
242 double lines_scale = 0.04;
+
+
244 unsigned long uuid = 0;
+
+
+
+
+
+
+
+void publish()
publish the visual markers ROS message and populates it with buffer content
Definition: batch_visualizer.cpp:270
+void addEllipse(const mrs_lib::geometry::Ellipse &ellipse, const double r=0.0, const double g=1.0, const double b=1.0, const double a=1.0, const bool filled=true, const int num_points=DEFAULT_ELLIPSE_POINTS, const ros::Duration &timeout=ros::Duration(0))
add an ellipse to the buffer
Definition: batch_visualizer.cpp:136
+void addNullTriangle()
helper function for adding an invisible triangle to the buffer
Definition: batch_visualizer.cpp:211
+void addPoint(const Eigen::Vector3d &point, const double r=0.0, const double g=1.0, const double b=0.3, const double a=1.0, const ros::Duration &timeout=ros::Duration(0))
add a point to the buffer
Definition: batch_visualizer.cpp:93
+~BatchVisualizer()
destructor
Definition: batch_visualizer.cpp:12
+void setLinesScale(const double scale)
set the thickness of all lines
Definition: batch_visualizer.cpp:246
+void clearBuffers()
remove all objects from the buffer
Definition: batch_visualizer.cpp:252
+Object abstraction for the Batch Visualizer.
+geometric representation of a ray. Instantiate it by two input Vector3. Use static methods for from-t...
Definition: shapes.h:24
+void clearVisuals()
publishes an empty message. Removes all objects drawn onto the scene, but keeps them in buffer
Definition: batch_visualizer.cpp:258
+geometric representation of a cuboid
Definition: shapes.h:317
+void setParentFrame(const std::string parent_frame)
set the parent frame_id
Definition: batch_visualizer.cpp:27
+void addCuboid(const mrs_lib::geometry::Cuboid &cuboid, const double r=0.5, const double g=0.5, const double b=0.0, const double a=1.0, const bool filled=true, const ros::Duration &timeout=ros::Duration(0))
add a cuboid to the buffer
Definition: batch_visualizer.cpp:127
+void setPointsScale(const double scale)
set the scale of all points
Definition: batch_visualizer.cpp:240
+void addCylinder(const mrs_lib::geometry::Cylinder &cylinder, const double r=0.7, const double g=0.8, const double b=0.3, const double a=1.0, const bool filled=true, const bool capped=true, const int sides=DEFAULT_ELLIPSE_POINTS, const ros::Duration &timeout=ros::Duration(0))
add a cylinder to the buffer
Definition: batch_visualizer.cpp:145
+void addCone(const mrs_lib::geometry::Cone &cone, const double r=0.7, const double g=0.8, const double b=0.3, const double a=1.0, const bool filled=true, const bool capped=true, const int sides=DEFAULT_ELLIPSE_POINTS, const ros::Duration &timeout=ros::Duration(0))
add a cone to the buffer
Definition: batch_visualizer.cpp:153
+void addTriangle(const mrs_lib::geometry::Triangle &tri, const double r=0.5, const double g=0.5, const double b=0.0, const double a=1.0, const bool filled=true, const ros::Duration &timeout=ros::Duration(0))
add a triangle to the buffer
Definition: batch_visualizer.cpp:109
+geometric representation of an ellipse
Definition: shapes.h:426
+All mrs_lib functions, classes, variables and definitions are contained in this namespace.
Definition: attitude_converter.h:29
+void addNullPoint()
helper function for adding an invisible point to the object buffer
Definition: batch_visualizer.cpp:169
+geometric representation of a rectangle (can represent any quadrilateral)
Definition: shapes.h:187
+Defines various geometrical shapes and their relations.
+void addRectangle(const mrs_lib::geometry::Rectangle &rect, const double r=0.5, const double g=0.5, const double b=0.0, const double a=1.0, const bool filled=true, const ros::Duration &timeout=ros::Duration(0))
add a rectangle to the buffer
Definition: batch_visualizer.cpp:118
+void addRay(const mrs_lib::geometry::Ray &ray, const double r=1.0, const double g=0.0, const double b=0.0, const double a=1.0, const ros::Duration &timeout=ros::Duration(0))
add a ray to the buffer
Definition: batch_visualizer.cpp:101
+geometric representation of a triangle. Instantiate a new triangle by providing three vertices
Definition: shapes.h:98
+void addNullLine()
helper function for adding an invisible line to the object buffer
Definition: batch_visualizer.cpp:187
+BatchVisualizer()
dummy constructor
Definition: batch_visualizer.cpp:9
+geometric representation of a cylinder
Definition: shapes.h:490
+geometric representaiton of a cone
Definition: shapes.h:573
+void addTrajectory(const mrs_msgs::TrajectoryReference &traj, const double r=0.3, const double g=1.0, const double b=0.3, const double a=1.0, const bool filled=true, const ros::Duration &timeout=ros::Duration(0))
add a trajectory to the buffer
Definition: batch_visualizer.cpp:161
+library for drawing large amounts of geometric objects in RVIZ at the same time
Definition: batch_visualizer.h:25
+
+
+
+
diff --git a/bc_s.png b/bc_s.png
new file mode 100644
index 00000000..224b29aa
Binary files /dev/null and b/bc_s.png differ
diff --git a/bdwn.png b/bdwn.png
new file mode 100644
index 00000000..940a0b95
Binary files /dev/null and b/bdwn.png differ
diff --git a/citelist.html b/citelist.html
new file mode 100644
index 00000000..926b96f3
--- /dev/null
+++ b/citelist.html
@@ -0,0 +1,124 @@
+
+
+
+
+
+
+
+mrs_lib: Bibliography
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ [1]
+Stephen A. Chee and James R. Forbes. Norm-constrained unscented kalman filter with application to high area-to-mass ratio space-debris tracking . In AIAA Guidance, Navigation, and Control Conference , Jan 2016.
+
+
+ [2]
+W. Chojnacki, M. J. Brooks, A. van den Hengel, and D. Gawley. FNS and HEIV: relating two vision parameter estimation frameworks. In 12th International Conference on Image Analysis and Processing, 2003.Proceedings. , pages 152–157, Sep 2003.
+
+
+ [3]
+Rudolph Emil Kalman. A new approach to linear filtering and prediction problems. Transactions of the ASME–Journal of Basic Engineering , 82(Series D):35–45, 1960.
+
+
+ [4]
+E. A. Wan and R. Van Der Merwe. The unscented kalman filter for nonlinear estimation. In Proceedings of the IEEE 2000 Adaptive Systems for Signal Processing, Communications, and Control Symposium (Cat. No.00EX373) , pages 153–158, Oct 2000.
+
+
+ [5]
+Renato Zanetti, Manoranjan Majji, Robert H. Bishop, and Daniele Mortari. Norm-constrained kalman filtering . Journal of Guidance, Control, and Dynamics , 32(5):1458–1465, 2009.
+
+
+
+
+
+
+
+
+
+
diff --git a/classDynamicPublisher_1_1impl-members.html b/classDynamicPublisher_1_1impl-members.html
new file mode 100644
index 00000000..c597cd09
--- /dev/null
+++ b/classDynamicPublisher_1_1impl-members.html
@@ -0,0 +1,107 @@
+
+
+
+
+
+
+
+mrs_lib: Member List
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
This is the complete list of members for DynamicPublisher::impl , including all inherited members.
+
+
+
+
+
+
diff --git a/classDynamicPublisher_1_1impl.html b/classDynamicPublisher_1_1impl.html
new file mode 100644
index 00000000..014ac8e2
--- /dev/null
+++ b/classDynamicPublisher_1_1impl.html
@@ -0,0 +1,120 @@
+
+
+
+
+
+
+
+mrs_lib: DynamicPublisher::impl Class Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ impl (const ros::NodeHandle &nh)
+
+
+template<class T >
+void publish (const std::string name, const T &msg)
+
+
+
The documentation for this class was generated from the following file:
+
+
+
+
+
+ DynamicPublisher impl
+
+
+
+
+
diff --git a/classDynamicPublisher_1_1impl.js b/classDynamicPublisher_1_1impl.js
new file mode 100644
index 00000000..0a98de67
--- /dev/null
+++ b/classDynamicPublisher_1_1impl.js
@@ -0,0 +1,6 @@
+var classDynamicPublisher_1_1impl =
+[
+ [ "impl", "classDynamicPublisher_1_1impl.html#aaa45c2933f980559a9f92e672f325618", null ],
+ [ "impl", "classDynamicPublisher_1_1impl.html#a19f0bc67633228eb49d3fdfedab4bc6c", null ],
+ [ "publish", "classDynamicPublisher_1_1impl.html#a1fe7ec12024c0e3e1c907a34acfdfd64", null ]
+];
\ No newline at end of file
diff --git a/classSubObject-members.html b/classSubObject-members.html
new file mode 100644
index 00000000..3dd17b85
--- /dev/null
+++ b/classSubObject-members.html
@@ -0,0 +1,106 @@
+
+
+
+
+
+
+
+mrs_lib: Member List
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
This is the complete list of members for SubObject , including all inherited members.
+
+ callback_method (const std_msgs::String::ConstPtr msg) (defined in SubObject )SubObject inline
+ timeout_method (const std::string &topic_name, const ros::Time &last_msg) (defined in SubObject )SubObject inline
+
+
+
+
+
+
diff --git a/classSubObject.html b/classSubObject.html
new file mode 100644
index 00000000..ab272842
--- /dev/null
+++ b/classSubObject.html
@@ -0,0 +1,121 @@
+
+
+
+
+
+
+
+mrs_lib: SubObject Class Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+void callback_method (const std_msgs::String::ConstPtr msg)
+
+
+void timeout_method (const std::string &topic_name, const ros::Time &last_msg)
+
+
+
+
The documentation for this class was generated from the following file:
+
+
+
+
+
+
diff --git a/classSubObject.js b/classSubObject.js
new file mode 100644
index 00000000..ed378c15
--- /dev/null
+++ b/classSubObject.js
@@ -0,0 +1,5 @@
+var classSubObject =
+[
+ [ "callback_method", "classSubObject.html#ab45ed0b3758cf60c77fd488b3b4da197", null ],
+ [ "timeout_method", "classSubObject.html#a9de6e819d64fe2536b93518dd1d08134", null ]
+];
\ No newline at end of file
diff --git a/classThreadTimer_1_1Impl-members.html b/classThreadTimer_1_1Impl-members.html
new file mode 100644
index 00000000..193357e4
--- /dev/null
+++ b/classThreadTimer_1_1Impl-members.html
@@ -0,0 +1,114 @@
+
+
+
+
+
+
+
+mrs_lib: Member List
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
This is the complete list of members for ThreadTimer::Impl , including all inherited members.
+
+
+
+
+
+
diff --git a/classThreadTimer_1_1Impl.html b/classThreadTimer_1_1Impl.html
new file mode 100644
index 00000000..a0f9c13c
--- /dev/null
+++ b/classThreadTimer_1_1Impl.html
@@ -0,0 +1,144 @@
+
+
+
+
+
+
+
+mrs_lib: ThreadTimer::Impl Class Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Impl (const std::function< void(const ros::TimerEvent &)> &callback, const ros::Duration &delay_dur, const bool oneshot)
+
+
+void start ()
+
+
+void stop ()
+
+
+void setPeriod (const ros::Duration &duration, const bool reset=true)
+
+
+ Impl (const Impl &)=delete
+
+
+ Impl (Impl &&)=delete
+
+
+Impl & operator= (const Impl &)=delete
+
+
+Impl & operator= (Impl &&)=delete
+
+
+
+
+class ThreadTimer
+
+
+
The documentation for this class was generated from the following files:
+include/mrs_lib/impl/timer.hpp
+src/timer/timer.cpp
+
+
+
+
+
+
+
diff --git a/classThreadTimer_1_1Impl.js b/classThreadTimer_1_1Impl.js
new file mode 100644
index 00000000..40c52689
--- /dev/null
+++ b/classThreadTimer_1_1Impl.js
@@ -0,0 +1,13 @@
+var classThreadTimer_1_1Impl =
+[
+ [ "Impl", "classThreadTimer_1_1Impl.html#ac41581624c3ec1344bfac7069d7aa1f2", null ],
+ [ "~Impl", "classThreadTimer_1_1Impl.html#a323898b0ff0268b0adf327cfb9735921", null ],
+ [ "Impl", "classThreadTimer_1_1Impl.html#a274682763ef9406142b83725ef6ecff4", null ],
+ [ "Impl", "classThreadTimer_1_1Impl.html#a1cfc655ae5e4f4ac22a6db88a494729a", null ],
+ [ "operator=", "classThreadTimer_1_1Impl.html#a2f8003af63b8c5b9976912aa329483e8", null ],
+ [ "operator=", "classThreadTimer_1_1Impl.html#afbca04c3504c7fe8d24816a1caeca06e", null ],
+ [ "setPeriod", "classThreadTimer_1_1Impl.html#a5a0677c911b72f4316eef0d76d5bbb19", null ],
+ [ "start", "classThreadTimer_1_1Impl.html#add04d90e39bb09078c2af4e39a4d2f18", null ],
+ [ "stop", "classThreadTimer_1_1Impl.html#a2d0a406c6538f95f4d9b8fc14a6e6bab", null ],
+ [ "ThreadTimer", "classThreadTimer_1_1Impl.html#a3bfed848c47524c3e45cd469acf38701", null ]
+];
\ No newline at end of file
diff --git a/classVectorConverterTest.html b/classVectorConverterTest.html
new file mode 100644
index 00000000..802d1e43
--- /dev/null
+++ b/classVectorConverterTest.html
@@ -0,0 +1,127 @@
+
+
+
+
+
+
+
+mrs_lib: VectorConverterTest< T > Class Template Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
The documentation for this class was generated from the following file:
+test/vector_converter/test.cpp
+
+
+
+
+
+
+
diff --git a/classVectorConverterTest__coll__graph.map b/classVectorConverterTest__coll__graph.map
new file mode 100644
index 00000000..140c735e
--- /dev/null
+++ b/classVectorConverterTest__coll__graph.map
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/classVectorConverterTest__coll__graph.md5 b/classVectorConverterTest__coll__graph.md5
new file mode 100644
index 00000000..044b10c0
--- /dev/null
+++ b/classVectorConverterTest__coll__graph.md5
@@ -0,0 +1 @@
+76a94b650ded00cae09a8709fa89c221
\ No newline at end of file
diff --git a/classVectorConverterTest__coll__graph.png b/classVectorConverterTest__coll__graph.png
new file mode 100644
index 00000000..24392349
Binary files /dev/null and b/classVectorConverterTest__coll__graph.png differ
diff --git a/classVectorConverterTest__inherit__graph.map b/classVectorConverterTest__inherit__graph.map
new file mode 100644
index 00000000..140c735e
--- /dev/null
+++ b/classVectorConverterTest__inherit__graph.map
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/classVectorConverterTest__inherit__graph.md5 b/classVectorConverterTest__inherit__graph.md5
new file mode 100644
index 00000000..044b10c0
--- /dev/null
+++ b/classVectorConverterTest__inherit__graph.md5
@@ -0,0 +1 @@
+76a94b650ded00cae09a8709fa89c221
\ No newline at end of file
diff --git a/classVectorConverterTest__inherit__graph.png b/classVectorConverterTest__inherit__graph.png
new file mode 100644
index 00000000..24392349
Binary files /dev/null and b/classVectorConverterTest__inherit__graph.png differ
diff --git a/classes.html b/classes.html
new file mode 100644
index 00000000..f0602d65
--- /dev/null
+++ b/classes.html
@@ -0,0 +1,273 @@
+
+
+
+
+
+
+
+mrs_lib: Class Index
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/classmrs__lib_1_1AtomicScopeFlag-members.html b/classmrs__lib_1_1AtomicScopeFlag-members.html
new file mode 100644
index 00000000..7fcffd59
--- /dev/null
+++ b/classmrs__lib_1_1AtomicScopeFlag-members.html
@@ -0,0 +1,106 @@
+
+
+
+
+
+
+
+mrs_lib: Member List
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
This is the complete list of members for mrs_lib::AtomicScopeFlag , including all inherited members.
+
+
+
+
+
+
diff --git a/classmrs__lib_1_1AtomicScopeFlag.html b/classmrs__lib_1_1AtomicScopeFlag.html
new file mode 100644
index 00000000..9319f1ab
--- /dev/null
+++ b/classmrs__lib_1_1AtomicScopeFlag.html
@@ -0,0 +1,172 @@
+
+
+
+
+
+
+
+mrs_lib: mrs_lib::AtomicScopeFlag Class Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Convenience class for automatically setting and unsetting an atomic boolean based on the object's scope. Useful e.g. for indicating whether a thread is running or not.
+ More...
+
+
#include <utils.h >
+
+
+
Convenience class for automatically setting and unsetting an atomic boolean based on the object's scope. Useful e.g. for indicating whether a thread is running or not.
+
+
+
◆ AtomicScopeFlag()
+
+
+
+
+
+ mrs_lib::AtomicScopeFlag::AtomicScopeFlag
+ (
+ std::atomic< bool > &
+ in )
+
+
+
+
+
+
The constructor. Sets the flag in
to true
.
+
Parameters
+
+ in The flag to be set on construction of this object and reset (set to false
) on its destruction.
+
+
+
+
+
+
+
+
◆ ~AtomicScopeFlag()
+
+
+
+
+
+ mrs_lib::AtomicScopeFlag::~AtomicScopeFlag
+ (
+ )
+
+
+
+
+
+
The destructor. Resets the variable given in the constructor to false
.
+
+
+
+
The documentation for this class was generated from the following files:
+include/mrs_lib/utils.h
+src/utils/utils.cpp
+
+
+
+
+
+
+
diff --git a/classmrs__lib_1_1AtomicScopeFlag.js b/classmrs__lib_1_1AtomicScopeFlag.js
new file mode 100644
index 00000000..d92bd72f
--- /dev/null
+++ b/classmrs__lib_1_1AtomicScopeFlag.js
@@ -0,0 +1,5 @@
+var classmrs__lib_1_1AtomicScopeFlag =
+[
+ [ "AtomicScopeFlag", "classmrs__lib_1_1AtomicScopeFlag.html#a168dc1d0a0ae38b254d89a84afdc4cab", null ],
+ [ "~AtomicScopeFlag", "classmrs__lib_1_1AtomicScopeFlag.html#aafdf61c0af0bffada120eec2a8c858b1", null ]
+];
\ No newline at end of file
diff --git a/classmrs__lib_1_1AttitudeConverter-members.html b/classmrs__lib_1_1AttitudeConverter-members.html
new file mode 100644
index 00000000..825b0917
--- /dev/null
+++ b/classmrs__lib_1_1AttitudeConverter-members.html
@@ -0,0 +1,137 @@
+
+
+
+
+
+
+
+mrs_lib: Member List
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
This is the complete list of members for mrs_lib::AttitudeConverter , including all inherited members.
+
+
+
+
+
+
diff --git a/classmrs__lib_1_1AttitudeConverter.html b/classmrs__lib_1_1AttitudeConverter.html
new file mode 100644
index 00000000..382dbff0
--- /dev/null
+++ b/classmrs__lib_1_1AttitudeConverter.html
@@ -0,0 +1,1026 @@
+
+
+
+
+
+
+
+mrs_lib: mrs_lib::AttitudeConverter Class Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
The main convertor class. Instantiate with any type in constructor and get the value in any other type by assigning the instance to your variable, as: tf::Quaternion tf1_quaternion = AttitudeConverter(roll, pitch, yaw); All the default Euler angles are in the extrinsic RPY notation.
+ More...
+
+
#include <attitude_converter.h >
+
+
+ AttitudeConverter (const double &roll, const double &pitch, const double &yaw, const RPY_convention_t &format=RPY_EXTRINSIC)
+ Euler angles constructor. More...
+
+ AttitudeConverter (const tf::Quaternion quaternion)
+ tf::Quaternion constructor More...
+
+ AttitudeConverter (const geometry_msgs::Quaternion quaternion)
+ geometry_msgs::Quaternion constructor More...
+
+ AttitudeConverter (const mrs_lib::EulerAttitude &euler_attitude)
+ mrs_lib::EulerAttitude constructor More...
+
+ AttitudeConverter (const Eigen::Quaterniond quaternion)
+ Eigen::Quaterniond constructor. More...
+
+ AttitudeConverter (const Eigen::Matrix3d matrix)
+ Eigen::Matrix3d constructor. More...
+
+template<class T >
+ AttitudeConverter (const Eigen::AngleAxis< T > angle_axis)
+ Eigen::AngleAxis constructor. More...
+
+ AttitudeConverter (const tf2::Quaternion quaternion)
+ tf2::Quaternion constructor More...
+
+ AttitudeConverter (const tf2::Matrix3x3 matrix)
+ tf2::Matrix3x3 constructor More...
+
+ operator tf2::Quaternion () const
+ typecast to tf2::Quaternion More...
+
+ operator tf::Quaternion () const
+ typecast to tf::Quaternion More...
+
+ operator geometry_msgs::Quaternion () const
+ typecast to geometry_msgs::Quaternion More...
+
+ operator EulerAttitude () const
+ typecast to EulerAttitude More...
+
+template<class T >
+ operator Eigen::AngleAxis< T > () const
+ typecast to Eigen::AngleAxis More...
+
+template<class T >
+ operator Eigen::Quaternion< T > () const
+ typecast to EulerAttitude Eigen::Quaternion More...
+
+
+ operator Eigen::Matrix3d () const
+
+ operator std::tuple< double &, double &, double & > ()
+ typecase to tuple of Euler angles in extrinsic RPY More...
+
+ operator tf2::Matrix3x3 () const
+ typecase to tf2::Matrix3x3 More...
+
+ operator tf2::Transform () const
+ typecase to tf2::Transform More...
+
+double getRoll (void)
+ get the roll angle More...
+
+double getPitch (void)
+ get the pitch angle More...
+
+double getYaw (void)
+ get the yaw angle More...
+
+double getHeading (void)
+ get the angle of the rotated x-axis in the original XY plane, a.k.a More...
+
+double getHeadingRate (const Vector3Converter &attitude_rate)
+ get heading rate base on the orientation and body-based attitude rate More...
+
+double getYawRateIntrinsic (const double &heading_rate)
+ get the intrinsic yaw rate from a heading rate More...
+
+Vector3Converter getVectorX (void)
+ get a unit vector pointing in the X direction More...
+
+Vector3Converter getVectorY (void)
+ get a unit vector pointing in the Y direction More...
+
+Vector3Converter getVectorZ (void)
+ get a unit vector pointing in the Z direction More...
+
+std::tuple< double, double, double > getIntrinsicRPY ()
+ get the Roll, Pitch, Yaw angles in the Intrinsic convention More...
+
+std::tuple< double, double, double > getExtrinsicRPY ()
+ get the Roll, Pitch, Yaw angles in the Extrinsic convention. The same as the default AttitudeConverter assignment. More...
+
+AttitudeConverter setHeading (const double &heading)
+ Updates the heading of the current orientation by updating the intrinsic yaw. More...
+
+AttitudeConverter setYaw (const double &new_yaw)
+ Updates the extrinsic yaw of the current orientation. More...
+
+
+template<std::size_t I>
+constexpr auto get ()
+
+
+
+
The main convertor class. Instantiate with any type in constructor and get the value in any other type by assigning the instance to your variable, as: tf::Quaternion tf1_quaternion = AttitudeConverter(roll, pitch, yaw); All the default Euler angles are in the extrinsic RPY notation.
+
+
+
◆ AttitudeConverter() [1/9]
+
+
+
+
+
+ mrs_lib::AttitudeConverter::AttitudeConverter
+ (
+ const double &
+ roll ,
+
+
+
+
+ const double &
+ pitch ,
+
+
+
+
+ const double &
+ yaw ,
+
+
+
+
+ const RPY_convention_t &
+ format = RPY_EXTRINSIC
+
+
+
+ )
+
+
+
+
+
+
Euler angles constructor.
+
Parameters
+
+ roll
+ pitch
+ yaw
+ format optional, Euler angle convention, {"extrinsic", "intrinsic"}, defaults to "extrinsic"
+
+
+
+
+
+
+
+
◆ AttitudeConverter() [2/9]
+
+
+
+
+
+ mrs_lib::AttitudeConverter::AttitudeConverter
+ (
+ const tf::Quaternion
+ quaternion )
+
+
+
+
+
+
tf::Quaternion constructor
+
Parameters
+
+ quaternion tf::Quaternion quaternion
+
+
+
+
+
+
+
+
◆ AttitudeConverter() [3/9]
+
+
+
+
+
+ mrs_lib::AttitudeConverter::AttitudeConverter
+ (
+ const geometry_msgs::Quaternion
+ quaternion )
+
+
+
+
+
+
geometry_msgs::Quaternion constructor
+
Parameters
+
+ quaternion geometry_msgs::Quaternion quaternion
+
+
+
+
+
+
+
+
◆ AttitudeConverter() [4/9]
+
+
+
+
+
+ mrs_lib::AttitudeConverter::AttitudeConverter
+ (
+ const mrs_lib::EulerAttitude &
+ euler_attitude )
+
+
+
+
+
+
+
◆ AttitudeConverter() [5/9]
+
+
+
+
+
+ mrs_lib::AttitudeConverter::AttitudeConverter
+ (
+ const Eigen::Quaterniond
+ quaternion )
+
+
+
+
+
+
Eigen::Quaterniond constructor.
+
Parameters
+
+ quaternion Eigen::Quaterniond quaternion
+
+
+
+
+
+
+
+
◆ AttitudeConverter() [6/9]
+
+
+
+
+
+ mrs_lib::AttitudeConverter::AttitudeConverter
+ (
+ const Eigen::Matrix3d
+ matrix )
+
+
+
+
+
+
Eigen::Matrix3d constructor.
+
Parameters
+
+ matrix Eigen::Matrix3d rotational matrix
+
+
+
+
+
+
+
+
◆ AttitudeConverter() [7/9]
+
+
+
+
+template<class T >
+
+
+
+
+
+ mrs_lib::AttitudeConverter::AttitudeConverter
+ (
+ const Eigen::AngleAxis< T >
+ angle_axis )
+
+
+
+
+
+inline
+
+
+
+
+
Eigen::AngleAxis constructor.
+
Template Parameters
+
+ T angle-axis base type
+
+
+
+
Parameters
+
+ angle_axis Eigen::AngleAxis
+
+
+
+
+
+
+
+
◆ AttitudeConverter() [8/9]
+
+
+
+
+
+ mrs_lib::AttitudeConverter::AttitudeConverter
+ (
+ const tf2::Quaternion
+ quaternion )
+
+
+
+
+
+
tf2::Quaternion constructor
+
Parameters
+
+ quaternion tf2::Quaternion
+
+
+
+
+
+
+
+
◆ AttitudeConverter() [9/9]
+
+
+
+
+
+ mrs_lib::AttitudeConverter::AttitudeConverter
+ (
+ const tf2::Matrix3x3
+ matrix )
+
+
+
+
+
+
tf2::Matrix3x3 constructor
+
Parameters
+
+ quaternion tf2::Matrix3x3
+
+
+
+
+
+
+
+
+
◆ getExtrinsicRPY()
+
+
+
+
+
+ std::tuple< double, double, double > mrs_lib::AttitudeConverter::getExtrinsicRPY
+ (
+ )
+
+
+
+
+
+
get the Roll, Pitch, Yaw angles in the Extrinsic convention. The same as the default AttitudeConverter assignment.
+
Returns RPY
+
+
+
+
+
◆ getHeading()
+
+
+
+
+
+ double mrs_lib::AttitudeConverter::getHeading
+ (
+ void
+ )
+
+
+
+
+
+
get the angle of the rotated x-axis in the original XY plane, a.k.a
+
Returns heading
+
+
+
+
+
◆ getHeadingRate()
+
+
+
+
+
+ double mrs_lib::AttitudeConverter::getHeadingRate
+ (
+ const Vector3Converter &
+ attitude_rate )
+
+
+
+
+
+
get heading rate base on the orientation and body-based attitude rate
+
Parameters
+
+ attitude_rate in the body frame
+
+
+
+
Returns heading rate in the world
+
+
+
+
+
◆ getIntrinsicRPY()
+
+
+
+
+
+ std::tuple< double, double, double > mrs_lib::AttitudeConverter::getIntrinsicRPY
+ (
+ )
+
+
+
+
+
+
get the Roll, Pitch, Yaw angles in the Intrinsic convention
+
Returns RPY
+
+
+
+
+
◆ getPitch()
+
+
+
+
+
+ double mrs_lib::AttitudeConverter::getPitch
+ (
+ void
+ )
+
+
+
+
+
+
get the pitch angle
+
Returns pitch
+
+
+
+
+
◆ getRoll()
+
+
+
+
+
+ double mrs_lib::AttitudeConverter::getRoll
+ (
+ void
+ )
+
+
+
+
+
+
get the roll angle
+
Returns roll
+
+
+
+
+
◆ getVectorX()
+
+
+
+
+
+ Vector3Converter mrs_lib::AttitudeConverter::getVectorX
+ (
+ void
+ )
+
+
+
+
+
+
get a unit vector pointing in the X direction
+
Returns the vector
+
+
+
+
+
◆ getVectorY()
+
+
+
+
+
+ Vector3Converter mrs_lib::AttitudeConverter::getVectorY
+ (
+ void
+ )
+
+
+
+
+
+
get a unit vector pointing in the Y direction
+
Returns the vector
+
+
+
+
+
◆ getVectorZ()
+
+
+
+
+
+ Vector3Converter mrs_lib::AttitudeConverter::getVectorZ
+ (
+ void
+ )
+
+
+
+
+
+
get a unit vector pointing in the Z direction
+
Returns the vector
+
+
+
+
+
◆ getYaw()
+
+
+
+
+
+ double mrs_lib::AttitudeConverter::getYaw
+ (
+ void
+ )
+
+
+
+
+
+
get the yaw angle
+
Returns yaw
+
+
+
+
+
◆ getYawRateIntrinsic()
+
+
+
+
+
+ double mrs_lib::AttitudeConverter::getYawRateIntrinsic
+ (
+ const double &
+ heading_rate )
+
+
+
+
+
+
get the intrinsic yaw rate from a heading rate
+
Parameters
+
+
+
+
Returns intrinsic yaw rate
+
+
+
+
+
◆ operator Eigen::AngleAxis< T >()
+
+
+
+
+template<class T >
+
+
+
+
+
+ mrs_lib::AttitudeConverter::operator Eigen::AngleAxis< T >
+ (
+ )
+ const
+
+
+
+
+inline
+
+
+
+
+
typecast to Eigen::AngleAxis
+
Template Parameters
+
+ T angle-axis base type
+
+
+
+
Returns orientation in EulerAttitude
+
+
+
+
+
◆ operator Eigen::Quaternion< T >()
+
+
+
+
+template<class T >
+
+
+
+
+
+ mrs_lib::AttitudeConverter::operator Eigen::Quaternion< T >
+ (
+ )
+ const
+
+
+
+
+inline
+
+
+
+
+
typecast to EulerAttitude Eigen::Quaternion
+
Template Parameters
+
+ T quaternion base type
+
+
+
+
Returns orientation in Eigen::Quaternion
+
+
+
+
+
◆ operator EulerAttitude()
+
+
+
+
+
+ mrs_lib::AttitudeConverter::operator EulerAttitude
+ (
+ )
+ const
+
+
+
+
+
+
◆ operator geometry_msgs::Quaternion()
+
+
+
+
+
+ mrs_lib::AttitudeConverter::operator geometry_msgs::Quaternion
+ (
+ )
+ const
+
+
+
+
+
typecast to geometry_msgs::Quaternion
+
Returns orientation in geometry_msgs::Quaternion
+
+
+
+
+
◆ operator std::tuple< double &, double &, double & >()
+
+
+
+
+
+ mrs_lib::AttitudeConverter::operator std::tuple< double &, double &, double & >
+ (
+ )
+
+
+
+
+
+
typecase to tuple of Euler angles in extrinsic RPY
+
Returns std::tuple of extrinsic RPY
+
+
+
+
+
◆ operator tf2::Matrix3x3()
+
+
+
+
+
+ mrs_lib::AttitudeConverter::operator tf2::Matrix3x3
+ (
+ )
+ const
+
+
+
+
+
typecase to tf2::Matrix3x3
+
Returns tf2::Matrix3x3 rotational matrix
+
+
+
+
+
◆ operator tf2::Quaternion()
+
+
+
+
+
+ mrs_lib::AttitudeConverter::operator tf2::Quaternion
+ (
+ )
+ const
+
+
+
+
+
typecast to tf2::Quaternion
+
Returns orientation in tf2::Quaternion
+
+
+
+
+
◆ operator tf2::Transform()
+
+
+
+
+
+ mrs_lib::AttitudeConverter::operator tf2::Transform
+ (
+ )
+ const
+
+
+
+
+
typecase to tf2::Transform
+
Returns tf2::Transform
+
+
+
+
+
◆ operator tf::Quaternion()
+
+
+
+
+
+ mrs_lib::AttitudeConverter::operator tf::Quaternion
+ (
+ )
+ const
+
+
+
+
+
typecast to tf::Quaternion
+
Returns orientation in tf::Quaternion
+
+
+
+
+
◆ setHeading()
+
+
+
+
+
+ AttitudeConverter mrs_lib::AttitudeConverter::setHeading
+ (
+ const double &
+ heading )
+
+
+
+
+
+
Updates the heading of the current orientation by updating the intrinsic yaw.
+
Parameters
+
+
+
+
Returns the orientation
+
+
+
+
+
◆ setYaw()
+
+
+
+
+
+ AttitudeConverter mrs_lib::AttitudeConverter::setYaw
+ (
+ const double &
+ new_yaw )
+
+
+
+
+
+
Updates the extrinsic yaw of the current orientation.
+
Parameters
+
+
+
+
Returns the orientation
+
+
+
+
The documentation for this class was generated from the following files:
+
+
+
+
+
+
diff --git a/classmrs__lib_1_1AttitudeConverter.js b/classmrs__lib_1_1AttitudeConverter.js
new file mode 100644
index 00000000..d67ef003
--- /dev/null
+++ b/classmrs__lib_1_1AttitudeConverter.js
@@ -0,0 +1,41 @@
+var classmrs__lib_1_1AttitudeConverter =
+[
+ [ "EulerFormatException", "structmrs__lib_1_1AttitudeConverter_1_1EulerFormatException.html", "structmrs__lib_1_1AttitudeConverter_1_1EulerFormatException" ],
+ [ "GetHeadingException", "structmrs__lib_1_1AttitudeConverter_1_1GetHeadingException.html", "structmrs__lib_1_1AttitudeConverter_1_1GetHeadingException" ],
+ [ "InvalidAttitudeException", "structmrs__lib_1_1AttitudeConverter_1_1InvalidAttitudeException.html", "structmrs__lib_1_1AttitudeConverter_1_1InvalidAttitudeException" ],
+ [ "MathErrorException", "structmrs__lib_1_1AttitudeConverter_1_1MathErrorException.html", "structmrs__lib_1_1AttitudeConverter_1_1MathErrorException" ],
+ [ "SetHeadingException", "structmrs__lib_1_1AttitudeConverter_1_1SetHeadingException.html", "structmrs__lib_1_1AttitudeConverter_1_1SetHeadingException" ],
+ [ "AttitudeConverter", "classmrs__lib_1_1AttitudeConverter.html#a1a98367c2a004a298a2026d883cfc0eb", null ],
+ [ "AttitudeConverter", "classmrs__lib_1_1AttitudeConverter.html#a134453cd539536eea199763467690483", null ],
+ [ "AttitudeConverter", "classmrs__lib_1_1AttitudeConverter.html#a9f00a180ebe802b8b7e30e08cc688f26", null ],
+ [ "AttitudeConverter", "classmrs__lib_1_1AttitudeConverter.html#a28987247a78e426e03eb37d51c7b6d82", null ],
+ [ "AttitudeConverter", "classmrs__lib_1_1AttitudeConverter.html#a15e411e1c06cd3af16d10f660656718b", null ],
+ [ "AttitudeConverter", "classmrs__lib_1_1AttitudeConverter.html#ad50e60f2d412b2253221c00fbbff2ead", null ],
+ [ "AttitudeConverter", "classmrs__lib_1_1AttitudeConverter.html#a0046963fb6f70e1ecc1d50c9778fec44", null ],
+ [ "AttitudeConverter", "classmrs__lib_1_1AttitudeConverter.html#a7d3224c3f9b32c2a9c65f63f5a2644ea", null ],
+ [ "AttitudeConverter", "classmrs__lib_1_1AttitudeConverter.html#a24d9d274eb16af01c3630ecb32065652", null ],
+ [ "get", "classmrs__lib_1_1AttitudeConverter.html#a9d4a90673d6e7046dbc4b2ce340b295a", null ],
+ [ "getExtrinsicRPY", "classmrs__lib_1_1AttitudeConverter.html#a0a9b9b0d146b4ccdc50c9a9037aec346", null ],
+ [ "getHeading", "classmrs__lib_1_1AttitudeConverter.html#a6efdbb896bca9d52abdafb2eec0daf48", null ],
+ [ "getHeadingRate", "classmrs__lib_1_1AttitudeConverter.html#ab3ac6086b34f743ac5e78249640eeddd", null ],
+ [ "getIntrinsicRPY", "classmrs__lib_1_1AttitudeConverter.html#abe03466ce1c2aefb74d402a3f1433693", null ],
+ [ "getPitch", "classmrs__lib_1_1AttitudeConverter.html#a599afad1265aaa6fd32d518e4de7817f", null ],
+ [ "getRoll", "classmrs__lib_1_1AttitudeConverter.html#a82b32b4b7ff4de5bcf78b168f0c3c569", null ],
+ [ "getVectorX", "classmrs__lib_1_1AttitudeConverter.html#a131f7ba8484bd0c7465594625d19ae89", null ],
+ [ "getVectorY", "classmrs__lib_1_1AttitudeConverter.html#a901ca23ee140e6d42027b242f0dfac8b", null ],
+ [ "getVectorZ", "classmrs__lib_1_1AttitudeConverter.html#a4853f4582b8af4f224726d15a18e9fbc", null ],
+ [ "getYaw", "classmrs__lib_1_1AttitudeConverter.html#ab2e8185898d05e5c2c9f7c7bf597f9a3", null ],
+ [ "getYawRateIntrinsic", "classmrs__lib_1_1AttitudeConverter.html#afa7a3ddc0e143fe90bd966a6ba9f2913", null ],
+ [ "operator Eigen::AngleAxis< T >", "classmrs__lib_1_1AttitudeConverter.html#a10847ba4ce35fa86efbe5933ba488183", null ],
+ [ "operator Eigen::Matrix3d", "classmrs__lib_1_1AttitudeConverter.html#a7edeee77361b5991b8eff3a135b25d43", null ],
+ [ "operator Eigen::Quaternion< T >", "classmrs__lib_1_1AttitudeConverter.html#a6db421976b5060c086f495f00edca314", null ],
+ [ "operator EulerAttitude", "classmrs__lib_1_1AttitudeConverter.html#a03ef9a1c10a9963e650fa217f0f04707", null ],
+ [ "operator geometry_msgs::Quaternion", "classmrs__lib_1_1AttitudeConverter.html#abc1686c5d27246a937c661f313ca13d0", null ],
+ [ "operator std::tuple< double &, double &, double & >", "classmrs__lib_1_1AttitudeConverter.html#a8f7e3a434632e7546149d64b2ab2e191", null ],
+ [ "operator tf2::Matrix3x3", "classmrs__lib_1_1AttitudeConverter.html#a123b85369560e858a9d3aba19a49227a", null ],
+ [ "operator tf2::Quaternion", "classmrs__lib_1_1AttitudeConverter.html#a4dd088014d1f15da217c960e8a9dbd6f", null ],
+ [ "operator tf2::Transform", "classmrs__lib_1_1AttitudeConverter.html#a09cd3459f52f9071db33c1ac7a5161de", null ],
+ [ "operator tf::Quaternion", "classmrs__lib_1_1AttitudeConverter.html#a7b6d71e47ec12e76f25823ad408c704c", null ],
+ [ "setHeading", "classmrs__lib_1_1AttitudeConverter.html#ac818b4e515d614d5d473be95b5ee9024", null ],
+ [ "setYaw", "classmrs__lib_1_1AttitudeConverter.html#a945e6c80d148df27897391bfd69c0505", null ]
+];
\ No newline at end of file
diff --git a/classmrs__lib_1_1BatchVisualizer-members.html b/classmrs__lib_1_1BatchVisualizer-members.html
new file mode 100644
index 00000000..a1ad8a2f
--- /dev/null
+++ b/classmrs__lib_1_1BatchVisualizer-members.html
@@ -0,0 +1,125 @@
+
+
+
+
+
+
+
+mrs_lib: Member List
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
This is the complete list of members for mrs_lib::BatchVisualizer , including all inherited members.
+
+ addCone (const mrs_lib::geometry::Cone &cone, const double r=0.7, const double g=0.8, const double b=0.3, const double a=1.0, const bool filled=true, const bool capped=true, const int sides=DEFAULT_ELLIPSE_POINTS, const ros::Duration &timeout=ros::Duration(0))mrs_lib::BatchVisualizer
+ addCuboid (const mrs_lib::geometry::Cuboid &cuboid, const double r=0.5, const double g=0.5, const double b=0.0, const double a=1.0, const bool filled=true, const ros::Duration &timeout=ros::Duration(0))mrs_lib::BatchVisualizer
+ addCylinder (const mrs_lib::geometry::Cylinder &cylinder, const double r=0.7, const double g=0.8, const double b=0.3, const double a=1.0, const bool filled=true, const bool capped=true, const int sides=DEFAULT_ELLIPSE_POINTS, const ros::Duration &timeout=ros::Duration(0))mrs_lib::BatchVisualizer
+ addEllipse (const mrs_lib::geometry::Ellipse &ellipse, const double r=0.0, const double g=1.0, const double b=1.0, const double a=1.0, const bool filled=true, const int num_points=DEFAULT_ELLIPSE_POINTS, const ros::Duration &timeout=ros::Duration(0))mrs_lib::BatchVisualizer
+ addNullLine ()mrs_lib::BatchVisualizer
+ addNullPoint ()mrs_lib::BatchVisualizer
+ addNullTriangle ()mrs_lib::BatchVisualizer
+ addPoint (const Eigen::Vector3d &point, const double r=0.0, const double g=1.0, const double b=0.3, const double a=1.0, const ros::Duration &timeout=ros::Duration(0))mrs_lib::BatchVisualizer
+ addRay (const mrs_lib::geometry::Ray &ray, const double r=1.0, const double g=0.0, const double b=0.0, const double a=1.0, const ros::Duration &timeout=ros::Duration(0))mrs_lib::BatchVisualizer
+ addRectangle (const mrs_lib::geometry::Rectangle &rect, const double r=0.5, const double g=0.5, const double b=0.0, const double a=1.0, const bool filled=true, const ros::Duration &timeout=ros::Duration(0))mrs_lib::BatchVisualizer
+ addTrajectory (const mrs_msgs::TrajectoryReference &traj, const double r=0.3, const double g=1.0, const double b=0.3, const double a=1.0, const bool filled=true, const ros::Duration &timeout=ros::Duration(0))mrs_lib::BatchVisualizer
+ addTriangle (const mrs_lib::geometry::Triangle &tri, const double r=0.5, const double g=0.5, const double b=0.0, const double a=1.0, const bool filled=true, const ros::Duration &timeout=ros::Duration(0))mrs_lib::BatchVisualizer
+ BatchVisualizer ()mrs_lib::BatchVisualizer
+ BatchVisualizer (ros::NodeHandle &nh, std::string marker_topic_name, std::string parent_frame)mrs_lib::BatchVisualizer
+ clearBuffers ()mrs_lib::BatchVisualizer
+ clearVisuals ()mrs_lib::BatchVisualizer
+ publish ()mrs_lib::BatchVisualizer
+ setLinesScale (const double scale)mrs_lib::BatchVisualizer
+ setParentFrame (const std::string parent_frame)mrs_lib::BatchVisualizer
+ setPointsScale (const double scale)mrs_lib::BatchVisualizer
+ ~BatchVisualizer ()mrs_lib::BatchVisualizer
+
+
+
+
+
+
diff --git a/classmrs__lib_1_1BatchVisualizer.html b/classmrs__lib_1_1BatchVisualizer.html
new file mode 100644
index 00000000..0ff89028
--- /dev/null
+++ b/classmrs__lib_1_1BatchVisualizer.html
@@ -0,0 +1,984 @@
+
+
+
+
+
+
+
+mrs_lib: mrs_lib::BatchVisualizer Class Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
library for drawing large amounts of geometric objects in RVIZ at the same time
+ More...
+
+
#include <batch_visualizer.h >
+
+
+
+ BatchVisualizer ()
+ dummy constructor
+
+
+ ~BatchVisualizer ()
+ destructor
+
+ BatchVisualizer (ros::NodeHandle &nh, std::string marker_topic_name, std::string parent_frame)
+ constructor to initialize the visualizer More...
+
+void addPoint (const Eigen::Vector3d &point, const double r=0.0, const double g=1.0, const double b=0.3, const double a=1.0, const ros::Duration &timeout=ros::Duration(0))
+ add a point to the buffer More...
+
+void addRay (const mrs_lib::geometry::Ray &ray, const double r=1.0, const double g=0.0, const double b=0.0, const double a=1.0, const ros::Duration &timeout=ros::Duration(0))
+ add a ray to the buffer More...
+
+void addTriangle (const mrs_lib::geometry::Triangle &tri, const double r=0.5, const double g=0.5, const double b=0.0, const double a=1.0, const bool filled=true, const ros::Duration &timeout=ros::Duration(0))
+ add a triangle to the buffer More...
+
+void addRectangle (const mrs_lib::geometry::Rectangle &rect, const double r=0.5, const double g=0.5, const double b=0.0, const double a=1.0, const bool filled=true, const ros::Duration &timeout=ros::Duration(0))
+ add a rectangle to the buffer More...
+
+void addCuboid (const mrs_lib::geometry::Cuboid &cuboid, const double r=0.5, const double g=0.5, const double b=0.0, const double a=1.0, const bool filled=true, const ros::Duration &timeout=ros::Duration(0))
+ add a cuboid to the buffer More...
+
+void addEllipse (const mrs_lib::geometry::Ellipse &ellipse, const double r=0.0, const double g=1.0, const double b=1.0, const double a=1.0, const bool filled=true, const int num_points=DEFAULT_ELLIPSE_POINTS, const ros::Duration &timeout=ros::Duration(0))
+ add an ellipse to the buffer More...
+
+void addCylinder (const mrs_lib::geometry::Cylinder &cylinder, const double r=0.7, const double g=0.8, const double b=0.3, const double a=1.0, const bool filled=true, const bool capped=true, const int sides=DEFAULT_ELLIPSE_POINTS, const ros::Duration &timeout=ros::Duration(0))
+ add a cylinder to the buffer More...
+
+void addCone (const mrs_lib::geometry::Cone &cone, const double r=0.7, const double g=0.8, const double b=0.3, const double a=1.0, const bool filled=true, const bool capped=true, const int sides=DEFAULT_ELLIPSE_POINTS, const ros::Duration &timeout=ros::Duration(0))
+ add a cone to the buffer More...
+
+void addTrajectory (const mrs_msgs::TrajectoryReference &traj, const double r=0.3, const double g=1.0, const double b=0.3, const double a=1.0, const bool filled=true, const ros::Duration &timeout=ros::Duration(0))
+ add a trajectory to the buffer More...
+
+
+void addNullPoint ()
+ helper function for adding an invisible point to the object buffer
+
+
+void addNullLine ()
+ helper function for adding an invisible line to the object buffer
+
+
+void addNullTriangle ()
+ helper function for adding an invisible triangle to the buffer
+
+void setPointsScale (const double scale)
+ set the scale of all points More...
+
+void setParentFrame (const std::string parent_frame)
+ set the parent frame_id More...
+
+void setLinesScale (const double scale)
+ set the thickness of all lines More...
+
+
+void clearBuffers ()
+ remove all objects from the buffer
+
+
+void clearVisuals ()
+ publishes an empty message. Removes all objects drawn onto the scene, but keeps them in buffer
+
+
+void publish ()
+ publish the visual markers ROS message and populates it with buffer content
+
+
+
+
library for drawing large amounts of geometric objects in RVIZ at the same time
+
+
+
◆ BatchVisualizer()
+
+
+
+
+
+ mrs_lib::BatchVisualizer::BatchVisualizer
+ (
+ ros::NodeHandle &
+ nh ,
+
+
+
+
+ std::string
+ marker_topic_name ,
+
+
+
+
+ std::string
+ parent_frame
+
+
+
+ )
+
+
+
+
+
+
constructor to initialize the visualizer
+
Parameters
+
+ nh ROS node to connect our publisher to ROS
+ marker_topic_name name of the topic on which the markers will be published
+ parent_frame name of the frame to which the markers will be linked
+
+
+
+
+
+
+
+
+
◆ addCone()
+
+
+
+
+
+ void mrs_lib::BatchVisualizer::addCone
+ (
+ const mrs_lib::geometry::Cone &
+ cone ,
+
+
+
+
+ const double
+ r = 0.7
,
+
+
+
+
+ const double
+ g = 0.8
,
+
+
+
+
+ const double
+ b = 0.3
,
+
+
+
+
+ const double
+ a = 1.0
,
+
+
+
+
+ const bool
+ filled = true
,
+
+
+
+
+ const bool
+ capped = true
,
+
+
+
+
+ const int
+ sides = DEFAULT_ELLIPSE_POINTS
,
+
+
+
+
+ const ros::Duration &
+ timeout = ros::Duration(0)
+
+
+
+ )
+
+
+
+
+
+
add a cone to the buffer
+
Parameters
+
+ cone cone to be added
+ r red color in range <0,1>
+ g green color in range <0,1>
+ b blue color in range <0,1>
+ a alpha in range <0,1> (0 is fully transparent)
+ filled bool to set fill. True = face visible, False = outline visible
+ capped bool to set caps on/off. True = cap drawn, False = base cap missing
+ sides number of points to approximate the round shape
+ timeout time in seconds after which the object should be removed from buffer
+
+
+
+
+
+
+
+
◆ addCuboid()
+
+
+
+
+
+ void mrs_lib::BatchVisualizer::addCuboid
+ (
+ const mrs_lib::geometry::Cuboid &
+ cuboid ,
+
+
+
+
+ const double
+ r = 0.5
,
+
+
+
+
+ const double
+ g = 0.5
,
+
+
+
+
+ const double
+ b = 0.0
,
+
+
+
+
+ const double
+ a = 1.0
,
+
+
+
+
+ const bool
+ filled = true
,
+
+
+
+
+ const ros::Duration &
+ timeout = ros::Duration(0)
+
+
+
+ )
+
+
+
+
+
+
add a cuboid to the buffer
+
Parameters
+
+ cuboid cuboid to be added
+ r red color in range <0,1>
+ g green color in range <0,1>
+ b blue color in range <0,1>
+ a alpha in range <0,1> (0 is fully transparent)
+ filled bool to set fill. True = face visible, False = outline visible
+ timeout time in seconds after which the object should be removed from buffer
+
+
+
+
+
+
+
+
◆ addCylinder()
+
+
+
+
+
+ void mrs_lib::BatchVisualizer::addCylinder
+ (
+ const mrs_lib::geometry::Cylinder &
+ cylinder ,
+
+
+
+
+ const double
+ r = 0.7
,
+
+
+
+
+ const double
+ g = 0.8
,
+
+
+
+
+ const double
+ b = 0.3
,
+
+
+
+
+ const double
+ a = 1.0
,
+
+
+
+
+ const bool
+ filled = true
,
+
+
+
+
+ const bool
+ capped = true
,
+
+
+
+
+ const int
+ sides = DEFAULT_ELLIPSE_POINTS
,
+
+
+
+
+ const ros::Duration &
+ timeout = ros::Duration(0)
+
+
+
+ )
+
+
+
+
+
+
add a cylinder to the buffer
+
Parameters
+
+ cylinder cylinder to be added
+ r red color in range <0,1>
+ g green color in range <0,1>
+ b blue color in range <0,1>
+ a alpha in range <0,1> (0 is fully transparent)
+ filled bool to set fill. True = face visible, False = outline visible
+ capped bool to set caps on/off. True = caps drawn, False = hollow cylinder
+ sides number of points to approximate the round shape
+ timeout time in seconds after which the object should be removed from buffer
+
+
+
+
+
+
+
+
◆ addEllipse()
+
+
+
+
+
+ void mrs_lib::BatchVisualizer::addEllipse
+ (
+ const mrs_lib::geometry::Ellipse &
+ ellipse ,
+
+
+
+
+ const double
+ r = 0.0
,
+
+
+
+
+ const double
+ g = 1.0
,
+
+
+
+
+ const double
+ b = 1.0
,
+
+
+
+
+ const double
+ a = 1.0
,
+
+
+
+
+ const bool
+ filled = true
,
+
+
+
+
+ const int
+ num_points = DEFAULT_ELLIPSE_POINTS
,
+
+
+
+
+ const ros::Duration &
+ timeout = ros::Duration(0)
+
+
+
+ )
+
+
+
+
+
+
add an ellipse to the buffer
+
Parameters
+
+ ellipse ellipse to be added
+ r red color in range <0,1>
+ g green color in range <0,1>
+ b blue color in range <0,1>
+ a alpha in range <0,1> (0 is fully transparent)
+ filled bool to set fill. True = face visible, False = outline visible
+ num_points number of points to approximate the round shape
+ timeout time in seconds after which the object should be removed from buffer
+
+
+
+
+
+
+
+
◆ addPoint()
+
+
+
+
+
+ void mrs_lib::BatchVisualizer::addPoint
+ (
+ const Eigen::Vector3d &
+ point ,
+
+
+
+
+ const double
+ r = 0.0
,
+
+
+
+
+ const double
+ g = 1.0
,
+
+
+
+
+ const double
+ b = 0.3
,
+
+
+
+
+ const double
+ a = 1.0
,
+
+
+
+
+ const ros::Duration &
+ timeout = ros::Duration(0)
+
+
+
+ )
+
+
+
+
+
+
add a point to the buffer
+
Parameters
+
+ point coordinates of the point
+ r red color in range <0,1>
+ g green color in range <0,1>
+ b blue color in range <0,1>
+ a alpha in range <0,1> (0 is fully transparent)
+ timeout time in seconds after which the object should be removed from buffer
+
+
+
+
+
+
+
+
◆ addRay()
+
+
+
+
+
+ void mrs_lib::BatchVisualizer::addRay
+ (
+ const mrs_lib::geometry::Ray &
+ ray ,
+
+
+
+
+ const double
+ r = 1.0
,
+
+
+
+
+ const double
+ g = 0.0
,
+
+
+
+
+ const double
+ b = 0.0
,
+
+
+
+
+ const double
+ a = 1.0
,
+
+
+
+
+ const ros::Duration &
+ timeout = ros::Duration(0)
+
+
+
+ )
+
+
+
+
+
+
add a ray to the buffer
+
Parameters
+
+ ray ray to be added
+ r red color in range <0,1>
+ g green color in range <0,1>
+ b blue color in range <0,1>
+ a alpha in range <0,1> (0 is fully transparent)
+ timeout time in seconds after which the object should be removed from buffer
+
+
+
+
+
+
+
+
◆ addRectangle()
+
+
+
+
+
+ void mrs_lib::BatchVisualizer::addRectangle
+ (
+ const mrs_lib::geometry::Rectangle &
+ rect ,
+
+
+
+
+ const double
+ r = 0.5
,
+
+
+
+
+ const double
+ g = 0.5
,
+
+
+
+
+ const double
+ b = 0.0
,
+
+
+
+
+ const double
+ a = 1.0
,
+
+
+
+
+ const bool
+ filled = true
,
+
+
+
+
+ const ros::Duration &
+ timeout = ros::Duration(0)
+
+
+
+ )
+
+
+
+
+
+
add a rectangle to the buffer
+
Parameters
+
+ rect rectangle to be added
+ r red color in range <0,1>
+ g green color in range <0,1>
+ b blue color in range <0,1>
+ a alpha in range <0,1> (0 is fully transparent)
+ filled bool to set fill. True = face visible, False = outline visible
+ timeout time in seconds after which the object should be removed from buffer
+
+
+
+
+
+
+
+
◆ addTrajectory()
+
+
+
+
+
+ void mrs_lib::BatchVisualizer::addTrajectory
+ (
+ const mrs_msgs::TrajectoryReference &
+ traj ,
+
+
+
+
+ const double
+ r = 0.3
,
+
+
+
+
+ const double
+ g = 1.0
,
+
+
+
+
+ const double
+ b = 0.3
,
+
+
+
+
+ const double
+ a = 1.0
,
+
+
+
+
+ const bool
+ filled = true
,
+
+
+
+
+ const ros::Duration &
+ timeout = ros::Duration(0)
+
+
+
+ )
+
+
+
+
+
+
add a trajectory to the buffer
+
Parameters
+
+ traj trajectory reference to be added
+ r red color in range <0,1>
+ g green color in range <0,1>
+ b blue color in range <0,1>
+ a alpha in range <0,1> (0 is fully transparent)
+ filled bool to set fill. True = continuous line, False = only visualize points
+ timeout time in seconds after which the object should be removed from buffer
+
+
+
+
+
+
+
+
◆ addTriangle()
+
+
+
+
+
+ void mrs_lib::BatchVisualizer::addTriangle
+ (
+ const mrs_lib::geometry::Triangle &
+ tri ,
+
+
+
+
+ const double
+ r = 0.5
,
+
+
+
+
+ const double
+ g = 0.5
,
+
+
+
+
+ const double
+ b = 0.0
,
+
+
+
+
+ const double
+ a = 1.0
,
+
+
+
+
+ const bool
+ filled = true
,
+
+
+
+
+ const ros::Duration &
+ timeout = ros::Duration(0)
+
+
+
+ )
+
+
+
+
+
+
add a triangle to the buffer
+
Parameters
+
+ tri triangle to be added
+ r red color in range <0,1>
+ g green color in range <0,1>
+ b blue color in range <0,1>
+ a alpha in range <0,1> (0 is fully transparent)
+ filled bool to set fill. True = face visible, False = outline visible
+ timeout time in seconds after which the object should be removed from buffer
+
+
+
+
+
+
+
+
◆ setLinesScale()
+
+
+
+
+
+ void mrs_lib::BatchVisualizer::setLinesScale
+ (
+ const double
+ scale )
+
+
+
+
+
+
set the thickness of all lines
+
Parameters
+
+
+
+
+
+
+
+
◆ setParentFrame()
+
+
+
+
+
+ void mrs_lib::BatchVisualizer::setParentFrame
+ (
+ const std::string
+ parent_frame )
+
+
+
+
+
+
set the parent frame_id
+
Parameters
+
+
+
+
+
+
+
+
◆ setPointsScale()
+
+
+
+
+
+ void mrs_lib::BatchVisualizer::setPointsScale
+ (
+ const double
+ scale )
+
+
+
+
+
+
set the scale of all points
+
Parameters
+
+
+
+
+
+
+
The documentation for this class was generated from the following files:
+
+
+
+
+
+
diff --git a/classmrs__lib_1_1BatchVisualizer.js b/classmrs__lib_1_1BatchVisualizer.js
new file mode 100644
index 00000000..3b2a136b
--- /dev/null
+++ b/classmrs__lib_1_1BatchVisualizer.js
@@ -0,0 +1,24 @@
+var classmrs__lib_1_1BatchVisualizer =
+[
+ [ "BatchVisualizer", "classmrs__lib_1_1BatchVisualizer.html#a2a426c62b02dec6430362920db0d6c80", null ],
+ [ "~BatchVisualizer", "classmrs__lib_1_1BatchVisualizer.html#a83a3baa46f7a3c22079a1d80aaed4459", null ],
+ [ "BatchVisualizer", "classmrs__lib_1_1BatchVisualizer.html#a3a857713e5516bec553b5380eaa423f8", null ],
+ [ "addCone", "classmrs__lib_1_1BatchVisualizer.html#a937c831f9caac50bc84f671c3260f1a7", null ],
+ [ "addCuboid", "classmrs__lib_1_1BatchVisualizer.html#ab5aba26d50dbe7fe22cd4c0549a99051", null ],
+ [ "addCylinder", "classmrs__lib_1_1BatchVisualizer.html#abd2f9394a4cb63da0478ad1621ed7e79", null ],
+ [ "addEllipse", "classmrs__lib_1_1BatchVisualizer.html#ac03c515ed44761d88f43a2af446c26b7", null ],
+ [ "addNullLine", "classmrs__lib_1_1BatchVisualizer.html#a7f4d6d1ae967d6a5c15351969d9e4592", null ],
+ [ "addNullPoint", "classmrs__lib_1_1BatchVisualizer.html#a7556fd856cd4be7d0bdea9a4c0c6e1fc", null ],
+ [ "addNullTriangle", "classmrs__lib_1_1BatchVisualizer.html#a6a844cdffd1474570988e8d1a87126cb", null ],
+ [ "addPoint", "classmrs__lib_1_1BatchVisualizer.html#ac9c76c18ef837dc7b87cf20f5e2511b9", null ],
+ [ "addRay", "classmrs__lib_1_1BatchVisualizer.html#ae3c2f932f592a0e61da8e51643cc686a", null ],
+ [ "addRectangle", "classmrs__lib_1_1BatchVisualizer.html#a5a68c474ce18a4fccbc8f14066267d73", null ],
+ [ "addTrajectory", "classmrs__lib_1_1BatchVisualizer.html#a5dad7ddef02d959da350385544b98063", null ],
+ [ "addTriangle", "classmrs__lib_1_1BatchVisualizer.html#ae2cf4d2a0578711a060f7f398179a677", null ],
+ [ "clearBuffers", "classmrs__lib_1_1BatchVisualizer.html#a317a263d7a57b88805a3d264976b4c9f", null ],
+ [ "clearVisuals", "classmrs__lib_1_1BatchVisualizer.html#aacda752bbfd192279da0fe15f001b0bb", null ],
+ [ "publish", "classmrs__lib_1_1BatchVisualizer.html#a3b7e6b602bdaf7d42e1c48ea511aa93b", null ],
+ [ "setLinesScale", "classmrs__lib_1_1BatchVisualizer.html#af36566a7f7267a2cdb167a533e4cb856", null ],
+ [ "setParentFrame", "classmrs__lib_1_1BatchVisualizer.html#a284c94fdfec8f359704d92f9ef79cd74", null ],
+ [ "setPointsScale", "classmrs__lib_1_1BatchVisualizer.html#ac613c22b8ed79cd169636e6aafacf2dc", null ]
+];
\ No newline at end of file
diff --git a/classmrs__lib_1_1DKF-members.html b/classmrs__lib_1_1DKF-members.html
new file mode 100644
index 00000000..7071ab54
--- /dev/null
+++ b/classmrs__lib_1_1DKF-members.html
@@ -0,0 +1,141 @@
+
+
+
+
+
+
+
+mrs_lib: Member List
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
This is the complete list of members for mrs_lib::DKF , including all inherited members.
+
+ A mrs_lib::LKF< 3, -1, 2 >
+ A_t typedefmrs_lib::DKF
+ B mrs_lib::LKF< 3, -1, 2 >
+ B_t typedefmrs_lib::DKF
+ Base_class typedefmrs_lib::DKF
+ computeKalmanGain (const statecov_t &sc,[[maybe_unused]] const z_t &z, const R_t &R, const H_t &H) const (defined in mrs_lib::LKF< 3, -1, 2 > )mrs_lib::LKF< 3, -1, 2 > inline protected virtual
+ correct (const statecov_t &sc, const z_t &z, const R_t &R) const overridemrs_lib::LKF< 3, -1, 2 > inline virtual
+ mrs_lib::KalmanFilter::correct (const statecov_t &sc, const z_t &z, const R_t &R) const =0mrs_lib::KalmanFilter< n_states, n_inputs, n_measurements > pure virtual
+ correction_impl (const statecov_t &sc, const z_t &z, const R_t &R, const H_t &H) const (defined in mrs_lib::LKF< 3, -1, 2 > )mrs_lib::LKF< 3, -1, 2 > inline protected
+ correctLine (const statecov_t &sc, const pt3_t &line_origin, const vec3_t &line_direction, const double line_variance) constmrs_lib::DKF inline virtual
+ covariance_predict (const A_t &A, const P_t &P, const Q_t &Q, const double dt) (defined in mrs_lib::LKF< 3, -1, 2 > )mrs_lib::LKF< 3, -1, 2 > inline protected static
+ DKF ()mrs_lib::DKF inline
+ DKF (const A_t &A, const B_t &B)mrs_lib::DKF inline
+ H mrs_lib::LKF< 3, -1, 2 >
+ H_t typedefmrs_lib::DKF
+ invert_W (R_t W) (defined in mrs_lib::LKF< 3, -1, 2 > )mrs_lib::LKF< 3, -1, 2 > inline protected static
+ K_t typedefmrs_lib::DKF
+ LKF ()mrs_lib::LKF< 3, -1, 2 > inline
+ LKF (const A_t &A, const B_t &B, const H_t &H)mrs_lib::LKF< 3, -1, 2 > inline
+ m mrs_lib::DKF static
+ mat2_t typedef (defined in mrs_lib::DKF )mrs_lib::DKF
+ mat3_t typedef (defined in mrs_lib::DKF )mrs_lib::DKF
+ n mrs_lib::DKF static
+ p mrs_lib::DKF static
+ P_t typedefmrs_lib::DKF
+ predict (const statecov_t &sc, const u_t &u, const Q_t &Q,[[maybe_unused]] double dt) const overridemrs_lib::LKF< 3, -1, 2 > inline virtual
+ mrs_lib::KalmanFilter::predict (const statecov_t &sc, const u_t &u, const Q_t &Q, double dt) const =0mrs_lib::KalmanFilter< n_states, n_inputs, n_measurements > pure virtual
+ pt3_t typedef (defined in mrs_lib::DKF )mrs_lib::DKF
+ Q_t typedefmrs_lib::DKF
+ R_t typedefmrs_lib::DKF
+ state_predict (const A_t &A, const x_t &x,[[maybe_unused]] const B_t &B,[[maybe_unused]] const u_t &u) (defined in mrs_lib::LKF< 3, -1, 2 > )mrs_lib::LKF< 3, -1, 2 > inline protected static
+ state_predict (const A_t &A, const x_t &x, const B_t &B, const u_t &u) (defined in mrs_lib::LKF< 3, -1, 2 > )mrs_lib::LKF< 3, -1, 2 > inline protected static
+ statecov_t typedefmrs_lib::DKF
+ u_t typedefmrs_lib::DKF
+ vec3_t typedef (defined in mrs_lib::DKF )mrs_lib::DKF
+ x_t typedefmrs_lib::DKF
+ z_t typedefmrs_lib::DKF
+
+
+
+
+
+
diff --git a/classmrs__lib_1_1DKF.html b/classmrs__lib_1_1DKF.html
new file mode 100644
index 00000000..60253697
--- /dev/null
+++ b/classmrs__lib_1_1DKF.html
@@ -0,0 +1,532 @@
+
+
+
+
+
+
+
+mrs_lib: mrs_lib::DKF Class Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Implementation of the Degenerate measurement Linear Kalman filter.
+ More...
+
+
#include <dkf.h >
+
+
+
+
+
+
+
+
+
+
+
+using Base_class = LKF < n , m , p >
+ Base class of this class.
+
+
+using x_t = typename Base_class::x_t
+ State vector type .
+
+
+using u_t = typename Base_class::u_t
+ Input vector type .
+
+
+using z_t = typename Base_class::z_t
+ Measurement vector type .
+
+
+using P_t = typename Base_class::P_t
+ State uncertainty covariance matrix type .
+
+
+using R_t = typename Base_class::R_t
+ Measurement noise covariance matrix type .
+
+
+using Q_t = typename Base_class::Q_t
+ Process noise covariance matrix type .
+
+
+using statecov_t = typename Base_class::statecov_t
+ Helper struct for passing around the state and its covariance in one variable.
+
+
+typedef Eigen::Matrix< double, n , n > A_t
+ System transition matrix type .
+
+
+typedef Eigen::Matrix< double, n , m > B_t
+ Input to state mapping matrix type .
+
+
+typedef Eigen::Matrix< double, p , n > H_t
+ State to measurement mapping matrix type .
+
+
+typedef Eigen::Matrix< double, n , p > K_t
+ Kalman gain matrix type .
+
+
+using mat2_t = Eigen::Matrix< double, 2, 2 >
+
+
+using mat3_t = Eigen::Matrix< double, 3, 3 >
+
+
+using pt3_t = mrs_lib::geometry::vec3_t
+
+
+using vec3_t = mrs_lib::geometry::vec3_t
+
+
+
+using Base_class = KalmanFilter < n , m , p >
+ Base class of this class.
+
+
+using x_t = typename Base_class::x_t
+ State vector type .
+
+
+using u_t = typename Base_class::u_t
+ Input vector type .
+
+
+using z_t = typename Base_class::z_t
+ Measurement vector type .
+
+
+using P_t = typename Base_class::P_t
+ State uncertainty covariance matrix type .
+
+
+using R_t = typename Base_class::R_t
+ Measurement noise covariance matrix type .
+
+
+using Q_t = typename Base_class::Q_t
+ Process noise covariance matrix type .
+
+
+using statecov_t = typename Base_class::statecov_t
+ Helper struct for passing around the state and its covariance in one variable.
+
+
+typedef Eigen::Matrix< double, n , n > A_t
+ System transition matrix type .
+
+
+typedef Eigen::Matrix< double, n , m > B_t
+ Input to state mapping matrix type .
+
+
+typedef Eigen::Matrix< double, p , n > H_t
+ State to measurement mapping matrix type .
+
+
+typedef Eigen::Matrix< double, n , p > K_t
+ Kalman gain matrix type .
+
+
+
+typedef Eigen::Matrix< double, n , 1 > x_t
+ State vector type .
+
+
+typedef Eigen::Matrix< double, m , 1 > u_t
+ Input vector type .
+
+
+typedef Eigen::Matrix< double, p , 1 > z_t
+ Measurement vector type .
+
+
+typedef Eigen::Matrix< double, n , n > P_t
+ State uncertainty covariance matrix type .
+
+
+typedef Eigen::Matrix< double, p , p > R_t
+ Measurement noise covariance matrix type .
+
+
+typedef Eigen::Matrix< double, n , n > Q_t
+ Process noise covariance matrix type .
+
+
+
+ DKF ()
+ Convenience default constructor. More...
+
+ DKF (const A_t &A , const B_t &B )
+ The main constructor. More...
+
+virtual statecov_t correctLine (const statecov_t &sc, const pt3_t &line_origin, const vec3_t &line_direction, const double line_variance) const
+ Applies the correction (update, measurement, data) step of the Kalman filter. More...
+
+
+ LKF ()
+ Convenience default constructor. More...
+
+ LKF (const A_t &A , const B_t &B , const H_t &H )
+ The main constructor. More...
+
+virtual statecov_t correct (const statecov_t &sc, const z_t &z, const R_t &R) const override
+ Applies the correction (update, measurement, data) step of the Kalman filter. More...
+
+virtual statecov_t predict (const statecov_t &sc, const u_t &u, const Q_t &Q,[[maybe_unused]] double dt) const override
+ Applies the prediction (time) step of the Kalman filter. More...
+
+
+virtual statecov_t correct (const statecov_t &sc, const z_t &z, const R_t &R) const =0
+ Applies the correction (update, measurement, data) step of the Kalman filter. More...
+
+virtual statecov_t predict (const statecov_t &sc, const u_t &u, const Q_t &Q, double dt) const =0
+ Applies the prediction (time) step of the Kalman filter. More...
+
+
+
+
+static constexpr int n = Base_class::n
+ Length of the state vector of the system.
+
+
+static constexpr int m = Base_class::m
+ Length of the input vector of the system.
+
+
+static constexpr int p = Base_class::p
+ Length of the measurement vector of the system.
+
+
+
+static constexpr int n
+ Length of the state vector of the system.
+
+
+static constexpr int m
+ Length of the input vector of the system.
+
+
+static constexpr int p
+ Length of the measurement vector of the system.
+
+
+
+static const int n = n_states
+ Length of the state vector of the system.
+
+
+static const int m = n_inputs
+ Length of the input vector of the system.
+
+
+static const int p = n_measurements
+ Length of the measurement vector of the system.
+
+
+
+
+
+A_t A
+ The system transition matrix .
+
+
+B_t B
+ The input to state mapping matrix .
+
+
+H_t H
+ The state to measurement mapping matrix .
+
+
+
+virtual K_t computeKalmanGain (const statecov_t &sc,[[maybe_unused]] const z_t &z, const R_t &R, const H_t &H ) const
+
+
+statecov_t ::type correction_impl (const statecov_t &sc, const z_t &z, const R_t &R, const H_t &H ) const
+
+
+
+static P_t covariance_predict (const A_t &A , const P_t &P, const Q_t &Q, const double dt)
+
+
+static std::enable_if< check==0, x_t >::type state_predict (const A_t &A , const x_t &x,[[maybe_unused]] const B_t &B ,[[maybe_unused]] const u_t &u)
+
+
+static std::enable_if< check !=0, x_t >::type state_predict (const A_t &A , const x_t &x, const B_t &B , const u_t &u)
+
+
+static R_t invert_W (R_t W)
+
+
+
+
Implementation of the Degenerate measurement Linear Kalman filter.
+
Template Parameters
+
+ n_states number of states of the system (length of the vector).
+ n_inputs number of inputs of the system (length of the vector).
+ n_measurements number of measurements of the system (length of the vector).
+
+
+
+
+
+
◆ DKF() [1/2]
+
+
+
+
+
+
+
+
+ mrs_lib::DKF::DKF
+ (
+ )
+
+
+
+
+
+inline
+
+
+
+
+
Convenience default constructor.
+
This constructor should not be used if applicable. If used, the main constructor has to be called afterwards, before using this class, otherwise the LKF object is invalid (not initialized).
+
+
+
+
+
◆ DKF() [2/2]
+
+
+
+
+
+
+
+
+ mrs_lib::DKF::DKF
+ (
+ const A_t &
+ A ,
+
+
+
+
+ const B_t &
+ B
+
+
+
+ )
+
+
+
+
+
+inline
+
+
+
+
+
The main constructor.
+
Parameters
+
+ A The state transition matrix.
+ B The input to state mapping transition matrix.
+ H The state to measurement mapping transition matrix.
+
+
+
+
+
+
+
+
+
◆ correctLine()
+
+
+
+
+
+
+
+
+ virtual statecov_t mrs_lib::DKF::correctLine
+ (
+ const statecov_t &
+ sc ,
+
+
+
+
+ const pt3_t &
+ line_origin ,
+
+
+
+
+ const vec3_t &
+ line_direction ,
+
+
+
+
+ const double
+ line_variance
+
+
+
+ )
+ const
+
+
+
+
+inline virtual
+
+
+
+
+
Applies the correction (update, measurement, data) step of the Kalman filter.
+
This method applies the linear Kalman filter correction step to the state and covariance passed in sc
using the measurement z
and measurement noise R
. The parameter param
is ignored in this implementation. The updated state and covariance after the correction step is returned.
+
Parameters
+
+ sc The state and covariance to which the correction step is to be applied.
+ z The measurement vector to be used for correction.
+ R The measurement noise covariance matrix to be used for correction.
+
+
+
+
Returns The state and covariance after the correction update.
+
+
+
+
The documentation for this class was generated from the following file:
+
+
+
+
+
+
diff --git a/classmrs__lib_1_1DKF.js b/classmrs__lib_1_1DKF.js
new file mode 100644
index 00000000..e4a9417f
--- /dev/null
+++ b/classmrs__lib_1_1DKF.js
@@ -0,0 +1,22 @@
+var classmrs__lib_1_1DKF =
+[
+ [ "A_t", "classmrs__lib_1_1DKF.html#a1d615e5b5aef4c5a00de9b42eef43c1b", null ],
+ [ "B_t", "classmrs__lib_1_1DKF.html#a5de2bdb0aa87e268361e19206849bb22", null ],
+ [ "Base_class", "classmrs__lib_1_1DKF.html#ad7e6756be6a89592151d092f20d19811", null ],
+ [ "H_t", "classmrs__lib_1_1DKF.html#aaee9d5c96d921fa7854f24460edf58ab", null ],
+ [ "K_t", "classmrs__lib_1_1DKF.html#a87d3b7863fbd0b392f9c831fcaf8e345", null ],
+ [ "mat2_t", "classmrs__lib_1_1DKF.html#a3f7ce3b4407d784fcaf95f43b7685202", null ],
+ [ "mat3_t", "classmrs__lib_1_1DKF.html#ac3b0581c4ada64f5bfaf8b59514ad06c", null ],
+ [ "P_t", "classmrs__lib_1_1DKF.html#aa351bed9f3bdac26c6ed2526a5b2ac01", null ],
+ [ "pt3_t", "classmrs__lib_1_1DKF.html#a3104e749a86237eb1193b25d975ac68d", null ],
+ [ "Q_t", "classmrs__lib_1_1DKF.html#a59afcc2127ecd2a9dba8a53ca505f97a", null ],
+ [ "R_t", "classmrs__lib_1_1DKF.html#a6c1a5e6a6cdcb52271774b566957f948", null ],
+ [ "statecov_t", "classmrs__lib_1_1DKF.html#a1408b975fe2e4bd3fc5009c80d43f06b", null ],
+ [ "u_t", "classmrs__lib_1_1DKF.html#a5998af081256d469dbd4ac5a1d4d7fd7", null ],
+ [ "vec3_t", "classmrs__lib_1_1DKF.html#ade9f06e25f9c50c5c7c19628afefd454", null ],
+ [ "x_t", "classmrs__lib_1_1DKF.html#a094cf9bcb768de6db47e4c2703bede20", null ],
+ [ "z_t", "classmrs__lib_1_1DKF.html#ad919f1d7a6f5d8be7361a8336aa6fd85", null ],
+ [ "DKF", "classmrs__lib_1_1DKF.html#a75bd345a8f4e3856d35d23d3b85b12cd", null ],
+ [ "DKF", "classmrs__lib_1_1DKF.html#a68c0d27c7ae1897c6b54cea9e75b95ec", null ],
+ [ "correctLine", "classmrs__lib_1_1DKF.html#a7e5d887496dea33a60b8cf2a0acc5fec", null ]
+];
\ No newline at end of file
diff --git a/classmrs__lib_1_1DKF__coll__graph.map b/classmrs__lib_1_1DKF__coll__graph.map
new file mode 100644
index 00000000..9aed0a8c
--- /dev/null
+++ b/classmrs__lib_1_1DKF__coll__graph.map
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/classmrs__lib_1_1DKF__coll__graph.md5 b/classmrs__lib_1_1DKF__coll__graph.md5
new file mode 100644
index 00000000..7707cd62
--- /dev/null
+++ b/classmrs__lib_1_1DKF__coll__graph.md5
@@ -0,0 +1 @@
+492c4fc945b482dde86c495ac5b2677b
\ No newline at end of file
diff --git a/classmrs__lib_1_1DKF__coll__graph.png b/classmrs__lib_1_1DKF__coll__graph.png
new file mode 100644
index 00000000..c4aacf26
Binary files /dev/null and b/classmrs__lib_1_1DKF__coll__graph.png differ
diff --git a/classmrs__lib_1_1DKF__inherit__graph.map b/classmrs__lib_1_1DKF__inherit__graph.map
new file mode 100644
index 00000000..9aed0a8c
--- /dev/null
+++ b/classmrs__lib_1_1DKF__inherit__graph.map
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/classmrs__lib_1_1DKF__inherit__graph.md5 b/classmrs__lib_1_1DKF__inherit__graph.md5
new file mode 100644
index 00000000..7707cd62
--- /dev/null
+++ b/classmrs__lib_1_1DKF__inherit__graph.md5
@@ -0,0 +1 @@
+492c4fc945b482dde86c495ac5b2677b
\ No newline at end of file
diff --git a/classmrs__lib_1_1DKF__inherit__graph.png b/classmrs__lib_1_1DKF__inherit__graph.png
new file mode 100644
index 00000000..c4aacf26
Binary files /dev/null and b/classmrs__lib_1_1DKF__inherit__graph.png differ
diff --git a/classmrs__lib_1_1DynamicPublisher-members.html b/classmrs__lib_1_1DynamicPublisher-members.html
new file mode 100644
index 00000000..dc56352a
--- /dev/null
+++ b/classmrs__lib_1_1DynamicPublisher-members.html
@@ -0,0 +1,107 @@
+
+
+
+
+
+
+
+mrs_lib: Member List
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
This is the complete list of members for mrs_lib::DynamicPublisher , including all inherited members.
+
+
+
+
+
+
diff --git a/classmrs__lib_1_1DynamicPublisher.html b/classmrs__lib_1_1DynamicPublisher.html
new file mode 100644
index 00000000..8875488d
--- /dev/null
+++ b/classmrs__lib_1_1DynamicPublisher.html
@@ -0,0 +1,213 @@
+
+
+
+
+
+
+
+mrs_lib: mrs_lib::DynamicPublisher Class Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
A helper class for easy publishing of ROS messages for debugging purposes.
+ More...
+
+
#include <dynamic_publisher.h >
+
+
+
A helper class for easy publishing of ROS messages for debugging purposes.
+
This class enables you to just call the publish() method with a topic name and a message without the need to advertise the topic.
+
Note This class should only be used for debugging and not for regular publishing as it introduces some overhead.
+
Examples dynamic_publisher/example.cpp .
+
+
+
+
◆ DynamicPublisher() [1/2]
+
+
+
+
+
+ mrs_lib::DynamicPublisher::DynamicPublisher
+ (
+ )
+
+
+
+
+
+
A no-parameter constructor.
+
This overload will use a ros::NodeHandle with default arguments for advertising new topics, so remappings, namespaces etc. will be ignored.
+
+
+
+
+
◆ DynamicPublisher() [2/2]
+
+
+
+
+
+ mrs_lib::DynamicPublisher::DynamicPublisher
+ (
+ const ros::NodeHandle &
+ nh )
+
+
+
+
+
+
The main constructor.
+
This overload uses the ros::NodeHandle that you provided for advertising new topics. The recommended way of constructing a DynamicPublisher .
+
+
+
+
+
+
◆ publish()
+
+
+
+
+template<class T >
+
+
+ void mrs_lib::DynamicPublisher::publish
+ (
+ const std::string
+ name ,
+
+
+
+
+ const T &
+ msg
+
+
+
+ )
+
+
+
+
+
+
Publishes a message to a topic, advertising the topic if necessary.
+
The topic is advertised with the type of the first message published to it. If you try to publish a different type of message on the topic, it will be ignored.
+
Warning Take care to always publish the same message type to the topic to avoid being spammed with errors.
+
Examples dynamic_publisher/example.cpp .
+
+
+
+
+
The documentation for this class was generated from the following files:
+
+
+
+
+
+
diff --git a/classmrs__lib_1_1DynamicPublisher.js b/classmrs__lib_1_1DynamicPublisher.js
new file mode 100644
index 00000000..3ecb5f6e
--- /dev/null
+++ b/classmrs__lib_1_1DynamicPublisher.js
@@ -0,0 +1,6 @@
+var classmrs__lib_1_1DynamicPublisher =
+[
+ [ "DynamicPublisher", "classmrs__lib_1_1DynamicPublisher.html#a2c671b4d99d4bb6bde12e7a1d8717687", null ],
+ [ "DynamicPublisher", "classmrs__lib_1_1DynamicPublisher.html#a6a17d49f4d7203f8b8693c6ceb2fb1d9", null ],
+ [ "publish", "classmrs__lib_1_1DynamicPublisher.html#a57946b630bcf2892658f754ecb6b735d", null ]
+];
\ No newline at end of file
diff --git a/classmrs__lib_1_1DynamicReconfigureMgr-members.html b/classmrs__lib_1_1DynamicReconfigureMgr-members.html
new file mode 100644
index 00000000..a9bffc85
--- /dev/null
+++ b/classmrs__lib_1_1DynamicReconfigureMgr-members.html
@@ -0,0 +1,113 @@
+
+
+
+
+
+
+
+mrs_lib: Member List
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
This is the complete list of members for mrs_lib::DynamicReconfigureMgr< ConfigType > , including all inherited members.
+
+
+
+
+
+
diff --git a/classmrs__lib_1_1DynamicReconfigureMgr.html b/classmrs__lib_1_1DynamicReconfigureMgr.html
new file mode 100644
index 00000000..b6da9b6b
--- /dev/null
+++ b/classmrs__lib_1_1DynamicReconfigureMgr.html
@@ -0,0 +1,150 @@
+
+
+
+
+
+
+
+mrs_lib: mrs_lib::DynamicReconfigureMgr< ConfigType > Class Template Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
#include <dynamic_reconfigure_mgr.h >
+
+
+
+ DynamicReconfigureMgr (const ros::NodeHandle &nh=ros::NodeHandle("~"), bool print_values=true, std::string node_name=std::string(), const callback_t &user_callback={})
+
+
+ DynamicReconfigureMgr (const ros::NodeHandle &nh, std::string node_name)
+
+
+ DynamicReconfigureMgr (const ros::NodeHandle &nh, const char *node_name)
+
+
+ DynamicReconfigureMgr (std::string node_name)
+
+
+void update_config (const ConfigType &cfg)
+
+
+void update_config ()
+
+
+void publish_descriptions ()
+
+
+bool loaded_successfully ()
+
+
+
+
+ConfigType config
+
+
+
+
template<typename ConfigType>
+class mrs_lib::DynamicReconfigureMgr< ConfigType >
+
+
DynamicReconfigureMgr CLASS //{
+
The documentation for this class was generated from the following file:
+
+
+
+
+
+
diff --git a/classmrs__lib_1_1DynamicReconfigureMgr.js b/classmrs__lib_1_1DynamicReconfigureMgr.js
new file mode 100644
index 00000000..8d223731
--- /dev/null
+++ b/classmrs__lib_1_1DynamicReconfigureMgr.js
@@ -0,0 +1,12 @@
+var classmrs__lib_1_1DynamicReconfigureMgr =
+[
+ [ "DynamicReconfigureMgr", "classmrs__lib_1_1DynamicReconfigureMgr.html#a2f7e6a43035ce3066bf01e42cab37030", null ],
+ [ "DynamicReconfigureMgr", "classmrs__lib_1_1DynamicReconfigureMgr.html#ad97f2a0f3083911c830514dedb9ac15e", null ],
+ [ "DynamicReconfigureMgr", "classmrs__lib_1_1DynamicReconfigureMgr.html#a490a18abe58b19610203a48f7682b377", null ],
+ [ "DynamicReconfigureMgr", "classmrs__lib_1_1DynamicReconfigureMgr.html#a43dfdd75290a853fd1c53944d787c391", null ],
+ [ "loaded_successfully", "classmrs__lib_1_1DynamicReconfigureMgr.html#aa0368ef6c49fcf909296290612b09d4f", null ],
+ [ "publish_descriptions", "classmrs__lib_1_1DynamicReconfigureMgr.html#a1020e218921f8cbdca345a6c71c684d6", null ],
+ [ "update_config", "classmrs__lib_1_1DynamicReconfigureMgr.html#ad0c89b6bab776a28647ccb9c11b08f60", null ],
+ [ "update_config", "classmrs__lib_1_1DynamicReconfigureMgr.html#a47d76d8eb2dc7969f80f5840d72b0b2e", null ],
+ [ "config", "classmrs__lib_1_1DynamicReconfigureMgr.html#a67b3f78c6b5f53a23c735c758fac302a", null ]
+];
\ No newline at end of file
diff --git a/classmrs__lib_1_1EulerAttitude-members.html b/classmrs__lib_1_1EulerAttitude-members.html
new file mode 100644
index 00000000..883c64c1
--- /dev/null
+++ b/classmrs__lib_1_1EulerAttitude-members.html
@@ -0,0 +1,108 @@
+
+
+
+
+
+
+
+mrs_lib: Member List
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
This is the complete list of members for mrs_lib::EulerAttitude , including all inherited members.
+
+
+
+
+
+
diff --git a/classmrs__lib_1_1EulerAttitude.html b/classmrs__lib_1_1EulerAttitude.html
new file mode 100644
index 00000000..c0af83c4
--- /dev/null
+++ b/classmrs__lib_1_1EulerAttitude.html
@@ -0,0 +1,241 @@
+
+
+
+
+
+
+
+mrs_lib: mrs_lib::EulerAttitude Class Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
A small class for storing the Euler angles.
+ More...
+
+
#include <attitude_converter.h >
+
+
+
A small class for storing the Euler angles.
+
+
+
◆ EulerAttitude()
+
+
+
+
+
+ mrs_lib::EulerAttitude::EulerAttitude
+ (
+ const double &
+ roll ,
+
+
+
+
+ const double &
+ pitch ,
+
+
+
+
+ const double &
+ yaw
+
+
+
+ )
+
+
+
+
+
+
A simple class for storing the Euler angles.
+
Parameters
+
+
+
+
+
+
+
+
+
◆ pitch()
+
+
+
+
+
+ double mrs_lib::EulerAttitude::pitch
+ (
+ void
+ )
+ const
+
+
+
+
+
get the pitch angle
+
Returns pitch
+
+
+
+
+
◆ roll()
+
+
+
+
+
+ double mrs_lib::EulerAttitude::roll
+ (
+ void
+ )
+ const
+
+
+
+
+
get the roll angle
+
Returns roll
+
+
+
+
+
◆ yaw()
+
+
+
+
+
+ double mrs_lib::EulerAttitude::yaw
+ (
+ void
+ )
+ const
+
+
+
+
+
get the yaw angle
+
Returns yaw
+
+
+
+
The documentation for this class was generated from the following files:
+
+
+
+
+
+
diff --git a/classmrs__lib_1_1EulerAttitude.js b/classmrs__lib_1_1EulerAttitude.js
new file mode 100644
index 00000000..f9e7ce16
--- /dev/null
+++ b/classmrs__lib_1_1EulerAttitude.js
@@ -0,0 +1,7 @@
+var classmrs__lib_1_1EulerAttitude =
+[
+ [ "EulerAttitude", "classmrs__lib_1_1EulerAttitude.html#ac4da09217c4956043801841737da8521", null ],
+ [ "pitch", "classmrs__lib_1_1EulerAttitude.html#abbed482a509d21505dfd1e608cd362fe", null ],
+ [ "roll", "classmrs__lib_1_1EulerAttitude.html#a7d62c8be0341555c3e03e124a617d765", null ],
+ [ "yaw", "classmrs__lib_1_1EulerAttitude.html#ab29c3b0fb567107c23eff485e8f2578d", null ]
+];
\ No newline at end of file
diff --git a/classmrs__lib_1_1IirFilter-members.html b/classmrs__lib_1_1IirFilter-members.html
new file mode 100644
index 00000000..6e00a9f0
--- /dev/null
+++ b/classmrs__lib_1_1IirFilter-members.html
@@ -0,0 +1,106 @@
+
+
+
+
+
+
+
+mrs_lib: Member List
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
This is the complete list of members for mrs_lib::IirFilter , including all inherited members.
+
+
+
+
+
+
diff --git a/classmrs__lib_1_1IirFilter.html b/classmrs__lib_1_1IirFilter.html
new file mode 100644
index 00000000..24043d54
--- /dev/null
+++ b/classmrs__lib_1_1IirFilter.html
@@ -0,0 +1,119 @@
+
+
+
+
+
+
+
+mrs_lib: mrs_lib::IirFilter Class Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ IirFilter (const std::vector< double > &a, const std::vector< double > &b)
+
+
+double iterate (const double &input)
+
+
+
The documentation for this class was generated from the following files:
+include/mrs_lib/iir_filter.h
+src/iir_filter/iir_filter.cpp
+
+
+
+
+
+
+
diff --git a/classmrs__lib_1_1IirFilter.js b/classmrs__lib_1_1IirFilter.js
new file mode 100644
index 00000000..524005b8
--- /dev/null
+++ b/classmrs__lib_1_1IirFilter.js
@@ -0,0 +1,5 @@
+var classmrs__lib_1_1IirFilter =
+[
+ [ "IirFilter", "classmrs__lib_1_1IirFilter.html#a675dd4ebe1bf007f019a703cd049412e", null ],
+ [ "iterate", "classmrs__lib_1_1IirFilter.html#aa304784bf3e3150e89fa1266e35863f9", null ]
+];
\ No newline at end of file
diff --git a/classmrs__lib_1_1ImagePublisher-members.html b/classmrs__lib_1_1ImagePublisher-members.html
new file mode 100644
index 00000000..70a069a8
--- /dev/null
+++ b/classmrs__lib_1_1ImagePublisher-members.html
@@ -0,0 +1,106 @@
+
+
+
+
+
+
+
+mrs_lib: Member List
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
This is the complete list of members for mrs_lib::ImagePublisher , including all inherited members.
+
+
+
+
+
+
diff --git a/classmrs__lib_1_1ImagePublisher.html b/classmrs__lib_1_1ImagePublisher.html
new file mode 100644
index 00000000..3f9b2dc6
--- /dev/null
+++ b/classmrs__lib_1_1ImagePublisher.html
@@ -0,0 +1,119 @@
+
+
+
+
+
+
+
+mrs_lib: mrs_lib::ImagePublisher Class Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ImagePublisher (ros::NodeHandlePtr nh_)
+
+
+bool publish (std::string topic_name, double throttle_period, cv::Mat &image, bool bgr_order=false)
+
+
+
The documentation for this class was generated from the following files:
+
+
+
+
+
+
diff --git a/classmrs__lib_1_1ImagePublisher.js b/classmrs__lib_1_1ImagePublisher.js
new file mode 100644
index 00000000..4cd8d500
--- /dev/null
+++ b/classmrs__lib_1_1ImagePublisher.js
@@ -0,0 +1,5 @@
+var classmrs__lib_1_1ImagePublisher =
+[
+ [ "ImagePublisher", "classmrs__lib_1_1ImagePublisher.html#a00ec635f8012086fc7df35d06bb1d4b5", null ],
+ [ "publish", "classmrs__lib_1_1ImagePublisher.html#ad95770e8691002b0443b73806a9fe76a", null ]
+];
\ No newline at end of file
diff --git a/classmrs__lib_1_1JLKF-members.html b/classmrs__lib_1_1JLKF-members.html
new file mode 100644
index 00000000..252a7160
--- /dev/null
+++ b/classmrs__lib_1_1JLKF-members.html
@@ -0,0 +1,131 @@
+
+
+
+
+
+
+
+mrs_lib: Member List
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
This is the complete list of members for mrs_lib::JLKF< n_states, n_inputs, n_measurements, n_biases > , including all inherited members.
+
+ A_t typedefmrs_lib::JLKF< n_states, n_inputs, n_measurements, n_biases >
+ B_t typedefmrs_lib::JLKF< n_states, n_inputs, n_measurements, n_biases >
+ Base_class typedef (defined in mrs_lib::JLKF< n_states, n_inputs, n_measurements, n_biases > )mrs_lib::JLKF< n_states, n_inputs, n_measurements, n_biases >
+ C_t typedefmrs_lib::JLKF< n_states, n_inputs, n_measurements, n_biases >
+ computeKalmanGain (const statecov_t &sc, [[maybe_unused]] const z_t &z, const R_t &R, const H_t &H, double &nis, H_t &H_out, const double &nis_thr, const double &nis_avg_thr) const (defined in mrs_lib::JLKF< n_states, n_inputs, n_measurements, n_biases > )mrs_lib::JLKF< n_states, n_inputs, n_measurements, n_biases > inline protected virtual
+ correct (const statecov_t &sc, const z_t &z, const R_t &R) const overridemrs_lib::JLKF< n_states, n_inputs, n_measurements, n_biases > inline virtual
+ mrs_lib::KalmanFilterAloamGarm::correct (const statecov_t &sc, const z_t &z, const R_t &R) const =0mrs_lib::KalmanFilterAloamGarm< n_states, n_inputs, n_measurements > pure virtual
+ correction_impl (const statecov_t &sc, const z_t &z, const R_t &R, const H_t &H) const (defined in mrs_lib::JLKF< n_states, n_inputs, n_measurements, n_biases > )mrs_lib::JLKF< n_states, n_inputs, n_measurements, n_biases > inline protected
+ D_t typedefmrs_lib::JLKF< n_states, n_inputs, n_measurements, n_biases >
+ generateA_t typedef (defined in mrs_lib::JLKF< n_states, n_inputs, n_measurements, n_biases > )mrs_lib::JLKF< n_states, n_inputs, n_measurements, n_biases >
+ generateB_t typedef (defined in mrs_lib::JLKF< n_states, n_inputs, n_measurements, n_biases > )mrs_lib::JLKF< n_states, n_inputs, n_measurements, n_biases >
+ H_t typedefmrs_lib::JLKF< n_states, n_inputs, n_measurements, n_biases >
+ invert_W (R_t W) (defined in mrs_lib::JLKF< n_states, n_inputs, n_measurements, n_biases > )mrs_lib::JLKF< n_states, n_inputs, n_measurements, n_biases > inline protected static
+ JLKF (const generateA_t &generateA, const generateB_t &generateB, const H_t &H, const ros::NodeHandle &nh, const double &nis_thr, const double &nis_avg_thr)mrs_lib::JLKF< n_states, n_inputs, n_measurements, n_biases > inline
+ K_t typedefmrs_lib::JLKF< n_states, n_inputs, n_measurements, n_biases >
+ m (defined in mrs_lib::JLKF< n_states, n_inputs, n_measurements, n_biases > )mrs_lib::JLKF< n_states, n_inputs, n_measurements, n_biases > static
+ n (defined in mrs_lib::JLKF< n_states, n_inputs, n_measurements, n_biases > )mrs_lib::JLKF< n_states, n_inputs, n_measurements, n_biases > static
+ p (defined in mrs_lib::JLKF< n_states, n_inputs, n_measurements, n_biases > )mrs_lib::JLKF< n_states, n_inputs, n_measurements, n_biases > static
+ P_t typedef (defined in mrs_lib::JLKF< n_states, n_inputs, n_measurements, n_biases > )mrs_lib::JLKF< n_states, n_inputs, n_measurements, n_biases >
+ predict (const statecov_t &sc, const u_t &u, const Q_t &Q, double dt) const overridemrs_lib::JLKF< n_states, n_inputs, n_measurements, n_biases > inline virtual
+ mrs_lib::KalmanFilterAloamGarm::predict (const statecov_t &sc, const u_t &u, const Q_t &Q, double dt) const =0mrs_lib::KalmanFilterAloamGarm< n_states, n_inputs, n_measurements > pure virtual
+ Q_t typedef (defined in mrs_lib::JLKF< n_states, n_inputs, n_measurements, n_biases > )mrs_lib::JLKF< n_states, n_inputs, n_measurements, n_biases >
+ R_t typedef (defined in mrs_lib::JLKF< n_states, n_inputs, n_measurements, n_biases > )mrs_lib::JLKF< n_states, n_inputs, n_measurements, n_biases >
+ statecov_t typedef (defined in mrs_lib::JLKF< n_states, n_inputs, n_measurements, n_biases > )mrs_lib::JLKF< n_states, n_inputs, n_measurements, n_biases >
+ u_t typedef (defined in mrs_lib::JLKF< n_states, n_inputs, n_measurements, n_biases > )mrs_lib::JLKF< n_states, n_inputs, n_measurements, n_biases >
+ x_t typedef (defined in mrs_lib::JLKF< n_states, n_inputs, n_measurements, n_biases > )mrs_lib::JLKF< n_states, n_inputs, n_measurements, n_biases >
+ z_t typedef (defined in mrs_lib::JLKF< n_states, n_inputs, n_measurements, n_biases > )mrs_lib::JLKF< n_states, n_inputs, n_measurements, n_biases >
+
+
+
+
+
+
diff --git a/classmrs__lib_1_1JLKF.html b/classmrs__lib_1_1JLKF.html
new file mode 100644
index 00000000..6c83d0d9
--- /dev/null
+++ b/classmrs__lib_1_1JLKF.html
@@ -0,0 +1,477 @@
+
+
+
+
+
+
+
+mrs_lib: mrs_lib::JLKF< n_states, n_inputs, n_measurements, n_biases > Class Template Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+using Base_class = KalmanFilterAloamGarm < n, m, p >
+
+
+using x_t = typename Base_class::x_t
+
+
+using u_t = typename Base_class::u_t
+
+
+using z_t = typename Base_class::z_t
+
+
+using P_t = typename Base_class::P_t
+
+
+using R_t = typename Base_class::R_t
+
+
+using statecov_t = typename Base_class::statecov_t
+
+
+using Q_t = typename Base_class::Q_t
+
+
+typedef Eigen::Matrix< double, n, n > A_t
+ System transition matrix type .
+
+
+typedef Eigen::Matrix< double, n, m > B_t
+ Input to state mapping matrix type .
+
+
+typedef Eigen::Matrix< double, p, n > H_t
+ State to measurement mapping matrix type .
+
+
+typedef Eigen::Matrix< double, n, p > K_t
+ Kalman gain matrix type .
+
+
+typedef Eigen::Matrix< double, p, p > C_t
+ correntropy gain
+
+
+typedef Eigen::Matrix< double, n, n > D_t
+ D .
+
+
+using generateA_t = std::function< A_t (double)>
+
+
+using generateB_t = std::function< B_t (double)>
+
+
+
+typedef Eigen::Matrix< double, n , 1 > x_t
+ State vector type .
+
+
+typedef Eigen::Matrix< double, m , 1 > u_t
+ Input vector type .
+
+
+typedef Eigen::Matrix< double, p , 1 > z_t
+ Measurement vector type .
+
+
+typedef Eigen::Matrix< double, n , n > P_t
+ State uncertainty covariance matrix type .
+
+
+typedef Eigen::Matrix< double, p , p > R_t
+ Measurement noise covariance matrix type .
+
+
+typedef Eigen::Matrix< double, n , n > Q_t
+ Process noise covariance matrix type .
+
+
+
+ JLKF (const generateA_t &generateA, const generateB_t &generateB, const H_t &H, const ros::NodeHandle &nh, const double &nis_thr, const double &nis_avg_thr)
+ The main constructor. More...
+
+virtual statecov_t predict (const statecov_t &sc, const u_t &u, const Q_t &Q, double dt) const override
+ Applies the prediction (time) step of the Kalman filter. More...
+
+virtual statecov_t correct (const statecov_t &sc, const z_t &z, const R_t &R) const override
+ Applies the correction (update, measurement, data) step of the Kalman filter. More...
+
+
+virtual statecov_t correct (const statecov_t &sc, const z_t &z, const R_t &R) const =0
+ Applies the correction (update, measurement, data) step of the Kalman filter. More...
+
+virtual statecov_t predict (const statecov_t &sc, const u_t &u, const Q_t &Q, double dt) const =0
+ Applies the prediction (time) step of the Kalman filter. More...
+
+
+
+
+static const int n = n_states
+
+
+static const int m = n_inputs
+
+
+static const int p = n_measurements
+
+
+
+static const int n = n_states
+ Length of the state vector of the system.
+
+
+static const int m = n_inputs
+ Length of the input vector of the system.
+
+
+static const int p = n_measurements
+ Length of the measurement vector of the system.
+
+
+
+
+virtual K_t computeKalmanGain (const statecov_t &sc, [[maybe_unused]] const z_t &z, const R_t &R, const H_t &H, double &nis, H_t &H_out, const double &nis_thr, const double &nis_avg_thr) const
+
+
+statecov_t ::type correction_impl (const statecov_t &sc, const z_t &z, const R_t &R, const H_t &H) const
+
+
+
+
+static R_t invert_W (R_t W)
+
+
+
+
+
◆ JLKF()
+
+
+
+
+template<int n_states, int n_inputs, int n_measurements, int n_biases>
+
+
+
+
+
+ mrs_lib::JLKF < n_states, n_inputs, n_measurements, n_biases >::JLKF
+ (
+ const generateA_t &
+ generateA ,
+
+
+
+
+ const generateB_t &
+ generateB ,
+
+
+
+
+ const H_t &
+ H ,
+
+
+
+
+ const ros::NodeHandle &
+ nh ,
+
+
+
+
+ const double &
+ nis_thr ,
+
+
+
+
+ const double &
+ nis_avg_thr
+
+
+
+ )
+
+
+
+
+
+inline
+
+
+
+
+
The main constructor.
+
Parameters
+
+ generateA a function, which returns the state transition matrix A
based on the time difference dt
.
+ generateB a function, which returns the input to state mapping matrix B
based on the time difference dt
.
+ H the state to measurement mapping matrix.
+
+
+
+
+
+
+
+
+
◆ correct()
+
+
+
+
+template<int n_states, int n_inputs, int n_measurements, int n_biases>
+
+
+
+
+
+ virtual statecov_t mrs_lib::JLKF < n_states, n_inputs, n_measurements, n_biases >::correct
+ (
+ const statecov_t &
+ sc ,
+
+
+
+
+ const z_t &
+ z ,
+
+
+
+
+ const R_t &
+ R
+
+
+
+ )
+ const
+
+
+
+
+inline override virtual
+
+
+
+
+
Applies the correction (update, measurement, data) step of the Kalman filter.
+
This method applies the linear Kalman filter correction step to the state and covariance passed in sc
using the measurement z
and measurement noise R
. The updated state and covariance after the correction step is returned.
+
Parameters
+
+ sc The state and covariance to which the correction step is to be applied.
+ z The measurement vector to be used for correction.
+ R The measurement noise covariance matrix to be used for correction.
+
+
+
+
Returns The state and covariance after the correction update.
+
+
+
+
+
◆ predict()
+
+
+
+
+template<int n_states, int n_inputs, int n_measurements, int n_biases>
+
+
+
+
+
+ virtual statecov_t mrs_lib::JLKF < n_states, n_inputs, n_measurements, n_biases >::predict
+ (
+ const statecov_t &
+ sc ,
+
+
+
+
+ const u_t &
+ u ,
+
+
+
+
+ const Q_t &
+ Q ,
+
+
+
+
+ double
+ dt
+
+
+
+ )
+ const
+
+
+
+
+inline override virtual
+
+
+
+
+
Applies the prediction (time) step of the Kalman filter.
+
This method applies the linear Kalman filter prediction step to the state and covariance passed in sc
using the input u
and process noise Q
. The process noise covariance Q
is scaled by the dt
parameter. The updated state and covariance after the prediction step is returned.
+
Parameters
+
+ sc The state and covariance to which the prediction step is to be applied.
+ u The input vector to be used for prediction.
+ Q The process noise covariance matrix to be used for prediction.
+ dt Used to scale the process noise covariance Q
and to generate the state transition and input to state mapping matrices A
and \B using the functions, passed in the object's constructor.
+
+
+
+
Returns The state and covariance after the prediction step.
+
Note Note that the dt
parameter is used to scale the process noise covariance Q
and to generate the system matrices #A or #B using the functions, passed in the constructor!
+
+
+
+
The documentation for this class was generated from the following file:
+
+
+
+
+
+
diff --git a/classmrs__lib_1_1JLKF.js b/classmrs__lib_1_1JLKF.js
new file mode 100644
index 00000000..dd31242c
--- /dev/null
+++ b/classmrs__lib_1_1JLKF.js
@@ -0,0 +1,25 @@
+var classmrs__lib_1_1JLKF =
+[
+ [ "inverse_exception", "structmrs__lib_1_1JLKF_1_1inverse__exception.html", "structmrs__lib_1_1JLKF_1_1inverse__exception" ],
+ [ "A_t", "classmrs__lib_1_1JLKF.html#a72ceb375903022d0dfc396b6f1ead479", null ],
+ [ "B_t", "classmrs__lib_1_1JLKF.html#ac8971eebc826cd62aadd45d4b64d216c", null ],
+ [ "Base_class", "classmrs__lib_1_1JLKF.html#a7a362bd5a3713025f631d2694d63e52d", null ],
+ [ "C_t", "classmrs__lib_1_1JLKF.html#af34d34f55cb8804bd4e873a16c9e9a08", null ],
+ [ "D_t", "classmrs__lib_1_1JLKF.html#ac047c1625da963988acfc47edc200a57", null ],
+ [ "generateA_t", "classmrs__lib_1_1JLKF.html#ac35cdcce67580306048f3faf848c52ce", null ],
+ [ "generateB_t", "classmrs__lib_1_1JLKF.html#aa346736b0780db11650afa85c8837fdc", null ],
+ [ "H_t", "classmrs__lib_1_1JLKF.html#a7599ec962b434fe92534a58d48cdfacb", null ],
+ [ "K_t", "classmrs__lib_1_1JLKF.html#a20be98f26b355640d078f196f9495fd5", null ],
+ [ "P_t", "classmrs__lib_1_1JLKF.html#a554f05f2ecc9d93ce5c24a351fd92ffb", null ],
+ [ "Q_t", "classmrs__lib_1_1JLKF.html#afdb5e239ba807f51c141a66e0c1531a2", null ],
+ [ "R_t", "classmrs__lib_1_1JLKF.html#a34b9b5334801adc3f6a658bfa7767528", null ],
+ [ "statecov_t", "classmrs__lib_1_1JLKF.html#a62e33a1002c24ac5624faf8bede53606", null ],
+ [ "u_t", "classmrs__lib_1_1JLKF.html#a583b079513c03b057857d6a81c023de1", null ],
+ [ "x_t", "classmrs__lib_1_1JLKF.html#a13187c4d74326b888098a956811b9dc3", null ],
+ [ "z_t", "classmrs__lib_1_1JLKF.html#a2ff6765f3b9e0960932433e861222a10", null ],
+ [ "JLKF", "classmrs__lib_1_1JLKF.html#a0c21f3599fe8ccfb1164ee204a0ae606", null ],
+ [ "computeKalmanGain", "classmrs__lib_1_1JLKF.html#a06fc93782bb0f77f5f5d3400e785d729", null ],
+ [ "correct", "classmrs__lib_1_1JLKF.html#a6aa1475ecb42a4ee97e8d7e93cb5c523", null ],
+ [ "correction_impl", "classmrs__lib_1_1JLKF.html#a0a877719d7fb1bcf4fd03e063eaea3d2", null ],
+ [ "predict", "classmrs__lib_1_1JLKF.html#acb856c6a2d7378bc6abd46af99efe580", null ]
+];
\ No newline at end of file
diff --git a/classmrs__lib_1_1JLKF__coll__graph.map b/classmrs__lib_1_1JLKF__coll__graph.map
new file mode 100644
index 00000000..01e911d5
--- /dev/null
+++ b/classmrs__lib_1_1JLKF__coll__graph.map
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/classmrs__lib_1_1JLKF__coll__graph.md5 b/classmrs__lib_1_1JLKF__coll__graph.md5
new file mode 100644
index 00000000..bab53702
--- /dev/null
+++ b/classmrs__lib_1_1JLKF__coll__graph.md5
@@ -0,0 +1 @@
+921d466054faada3c50ed70a6984c77a
\ No newline at end of file
diff --git a/classmrs__lib_1_1JLKF__coll__graph.png b/classmrs__lib_1_1JLKF__coll__graph.png
new file mode 100644
index 00000000..a440d02f
Binary files /dev/null and b/classmrs__lib_1_1JLKF__coll__graph.png differ
diff --git a/classmrs__lib_1_1JLKF__inherit__graph.map b/classmrs__lib_1_1JLKF__inherit__graph.map
new file mode 100644
index 00000000..01e911d5
--- /dev/null
+++ b/classmrs__lib_1_1JLKF__inherit__graph.map
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/classmrs__lib_1_1JLKF__inherit__graph.md5 b/classmrs__lib_1_1JLKF__inherit__graph.md5
new file mode 100644
index 00000000..bab53702
--- /dev/null
+++ b/classmrs__lib_1_1JLKF__inherit__graph.md5
@@ -0,0 +1 @@
+921d466054faada3c50ed70a6984c77a
\ No newline at end of file
diff --git a/classmrs__lib_1_1JLKF__inherit__graph.png b/classmrs__lib_1_1JLKF__inherit__graph.png
new file mode 100644
index 00000000..a440d02f
Binary files /dev/null and b/classmrs__lib_1_1JLKF__inherit__graph.png differ
diff --git a/classmrs__lib_1_1KalmanFilter-members.html b/classmrs__lib_1_1KalmanFilter-members.html
new file mode 100644
index 00000000..727d2824
--- /dev/null
+++ b/classmrs__lib_1_1KalmanFilter-members.html
@@ -0,0 +1,115 @@
+
+
+
+
+
+
+
+mrs_lib: Member List
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
This is the complete list of members for mrs_lib::KalmanFilter< n_states, n_inputs, n_measurements > , including all inherited members.
+
+ correct (const statecov_t &sc, const z_t &z, const R_t &R) const =0mrs_lib::KalmanFilter< n_states, n_inputs, n_measurements > pure virtual
+ m mrs_lib::KalmanFilter< n_states, n_inputs, n_measurements > static
+ n mrs_lib::KalmanFilter< n_states, n_inputs, n_measurements > static
+ p mrs_lib::KalmanFilter< n_states, n_inputs, n_measurements > static
+ P_t typedefmrs_lib::KalmanFilter< n_states, n_inputs, n_measurements >
+ predict (const statecov_t &sc, const u_t &u, const Q_t &Q, double dt) const =0mrs_lib::KalmanFilter< n_states, n_inputs, n_measurements > pure virtual
+ Q_t typedefmrs_lib::KalmanFilter< n_states, n_inputs, n_measurements >
+ R_t typedefmrs_lib::KalmanFilter< n_states, n_inputs, n_measurements >
+ u_t typedefmrs_lib::KalmanFilter< n_states, n_inputs, n_measurements >
+ x_t typedefmrs_lib::KalmanFilter< n_states, n_inputs, n_measurements >
+ z_t typedefmrs_lib::KalmanFilter< n_states, n_inputs, n_measurements >
+
+
+
+
+
+
diff --git a/classmrs__lib_1_1KalmanFilter.html b/classmrs__lib_1_1KalmanFilter.html
new file mode 100644
index 00000000..5591cf9a
--- /dev/null
+++ b/classmrs__lib_1_1KalmanFilter.html
@@ -0,0 +1,327 @@
+
+
+
+
+
+
+
+mrs_lib: mrs_lib::KalmanFilter< n_states, n_inputs, n_measurements > Class Template Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
This abstract class defines common interfaces and types for a generic Kalman filter.
+ More...
+
+
#include <kalman_filter.h >
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
[legend ]
+
+
+struct statecov_t
+ Helper struct for passing around the state and its covariance in one variable. More...
+
+
+
+
+typedef Eigen::Matrix< double, n , 1 > x_t
+ State vector type .
+
+
+typedef Eigen::Matrix< double, m , 1 > u_t
+ Input vector type .
+
+
+typedef Eigen::Matrix< double, p , 1 > z_t
+ Measurement vector type .
+
+
+typedef Eigen::Matrix< double, n , n > P_t
+ State uncertainty covariance matrix type .
+
+
+typedef Eigen::Matrix< double, p , p > R_t
+ Measurement noise covariance matrix type .
+
+
+typedef Eigen::Matrix< double, n , n > Q_t
+ Process noise covariance matrix type .
+
+
+
+
+static const int n = n_states
+ Length of the state vector of the system.
+
+
+static const int m = n_inputs
+ Length of the input vector of the system.
+
+
+static const int p = n_measurements
+ Length of the measurement vector of the system.
+
+
+
+
template<int n_states, int n_inputs, int n_measurements>
+class mrs_lib::KalmanFilter< n_states, n_inputs, n_measurements >
+
+
This abstract class defines common interfaces and types for a generic Kalman filter.
+
Template Parameters
+
+ n_states number of states of the system (length of the vector).
+ n_inputs number of inputs of the system (length of the vector).
+ n_measurements number of measurements of the system (length of the vector).
+
+
+
+
+
+
◆ correct()
+
+
+
+
+template<int n_states, int n_inputs, int n_measurements>
+
+
+
+
+
+
+pure virtual
+
+
+
+
+
Applies the correction (update, measurement, data) step of the Kalman filter.
+
This method applies the correction step to the state and covariance passed in sc
using the measurement z
and measurement noise R
. An optional parameter param
may be used by some implementations, but it is usually ignored. The updated state and covariance after the correction step is returned.
+
Parameters
+
+ sc The state and covariance to which the correction step is to be applied.
+ z The measurement vector to be used for correction.
+ R The measurement noise covariance matrix to be used for correction.
+
+
+
+
Returns The state and covariance after the correction update.
+
+
+
+
+
◆ predict()
+
+
+
+
+template<int n_states, int n_inputs, int n_measurements>
+
+
+
+
+
+
+pure virtual
+
+
+
+
+
Applies the prediction (time) step of the Kalman filter.
+
This method applies the prediction step to the state and covariance passed in sc
using the input u
and process noise Q
. The state and covariance are updated by dt
into the future, if applicable to the implementation. An optional parameter param
may be used by some implementations, but it is usually ignored. The updated state and covariance after the prediction step is returned.
+
Parameters
+
+ sc The state and covariance to which the prediction step is to be applied.
+ u The input vector to be used for prediction.
+ Q The process noise covariance matrix to be used for prediction.
+ dt The time step for the prediction update (the state and covariance will be predicted by dt into the future).
+
+
+
+
Returns The state and covariance after the prediction step.
+
+
+
+
The documentation for this class was generated from the following file:
+
+
+
+
+
+
diff --git a/classmrs__lib_1_1KalmanFilter.js b/classmrs__lib_1_1KalmanFilter.js
new file mode 100644
index 00000000..475a9915
--- /dev/null
+++ b/classmrs__lib_1_1KalmanFilter.js
@@ -0,0 +1,12 @@
+var classmrs__lib_1_1KalmanFilter =
+[
+ [ "statecov_t", "structmrs__lib_1_1KalmanFilter_1_1statecov__t.html", "structmrs__lib_1_1KalmanFilter_1_1statecov__t" ],
+ [ "P_t", "classmrs__lib_1_1KalmanFilter.html#a8f5e50ea6668129218bd4113f4ffdf6f", null ],
+ [ "Q_t", "classmrs__lib_1_1KalmanFilter.html#ab2c5ddabe3fc919334595ec1e535c848", null ],
+ [ "R_t", "classmrs__lib_1_1KalmanFilter.html#a1e4c8aa79cfcea707876d85950132450", null ],
+ [ "u_t", "classmrs__lib_1_1KalmanFilter.html#ad92ac4f280e849986554bc593e5ab96e", null ],
+ [ "x_t", "classmrs__lib_1_1KalmanFilter.html#a5b8f47081daf208496a19a4364e6509c", null ],
+ [ "z_t", "classmrs__lib_1_1KalmanFilter.html#a0825f38a6a4ddc522239bb7bf6279737", null ],
+ [ "correct", "classmrs__lib_1_1KalmanFilter.html#a66c1e0d2e496f304a4f6166e7b894aac", null ],
+ [ "predict", "classmrs__lib_1_1KalmanFilter.html#a7c8e64828a78d1a680d1ef467633d9d5", null ]
+];
\ No newline at end of file
diff --git a/classmrs__lib_1_1KalmanFilterAloamGarm-members.html b/classmrs__lib_1_1KalmanFilterAloamGarm-members.html
new file mode 100644
index 00000000..f40164be
--- /dev/null
+++ b/classmrs__lib_1_1KalmanFilterAloamGarm-members.html
@@ -0,0 +1,115 @@
+
+
+
+
+
+
+
+mrs_lib: Member List
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
This is the complete list of members for mrs_lib::KalmanFilterAloamGarm< n_states, n_inputs, n_measurements > , including all inherited members.
+
+ correct (const statecov_t &sc, const z_t &z, const R_t &R) const =0mrs_lib::KalmanFilterAloamGarm< n_states, n_inputs, n_measurements > pure virtual
+ m mrs_lib::KalmanFilterAloamGarm< n_states, n_inputs, n_measurements > static
+ n mrs_lib::KalmanFilterAloamGarm< n_states, n_inputs, n_measurements > static
+ p mrs_lib::KalmanFilterAloamGarm< n_states, n_inputs, n_measurements > static
+ P_t typedefmrs_lib::KalmanFilterAloamGarm< n_states, n_inputs, n_measurements >
+ predict (const statecov_t &sc, const u_t &u, const Q_t &Q, double dt) const =0mrs_lib::KalmanFilterAloamGarm< n_states, n_inputs, n_measurements > pure virtual
+ Q_t typedefmrs_lib::KalmanFilterAloamGarm< n_states, n_inputs, n_measurements >
+ R_t typedefmrs_lib::KalmanFilterAloamGarm< n_states, n_inputs, n_measurements >
+ u_t typedefmrs_lib::KalmanFilterAloamGarm< n_states, n_inputs, n_measurements >
+ x_t typedefmrs_lib::KalmanFilterAloamGarm< n_states, n_inputs, n_measurements >
+ z_t typedefmrs_lib::KalmanFilterAloamGarm< n_states, n_inputs, n_measurements >
+
+
+
+
+
+
diff --git a/classmrs__lib_1_1KalmanFilterAloamGarm.html b/classmrs__lib_1_1KalmanFilterAloamGarm.html
new file mode 100644
index 00000000..ce807dd7
--- /dev/null
+++ b/classmrs__lib_1_1KalmanFilterAloamGarm.html
@@ -0,0 +1,318 @@
+
+
+
+
+
+
+
+mrs_lib: mrs_lib::KalmanFilterAloamGarm< n_states, n_inputs, n_measurements > Class Template Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
This abstract class defines common interfaces and types for a generic Kalman filter.
+ More...
+
+
#include <kalman_filter_aloamgarm.h >
+
+
+
+
+
+
+struct statecov_t
+ Helper struct for passing around the state and its covariance in one variable. More...
+
+
+
+
+typedef Eigen::Matrix< double, n , 1 > x_t
+ State vector type .
+
+
+typedef Eigen::Matrix< double, m , 1 > u_t
+ Input vector type .
+
+
+typedef Eigen::Matrix< double, p , 1 > z_t
+ Measurement vector type .
+
+
+typedef Eigen::Matrix< double, n , n > P_t
+ State uncertainty covariance matrix type .
+
+
+typedef Eigen::Matrix< double, p , p > R_t
+ Measurement noise covariance matrix type .
+
+
+typedef Eigen::Matrix< double, n , n > Q_t
+ Process noise covariance matrix type .
+
+
+
+
+static const int n = n_states
+ Length of the state vector of the system.
+
+
+static const int m = n_inputs
+ Length of the input vector of the system.
+
+
+static const int p = n_measurements
+ Length of the measurement vector of the system.
+
+
+
+
template<int n_states, int n_inputs, int n_measurements>
+class mrs_lib::KalmanFilterAloamGarm< n_states, n_inputs, n_measurements >
+
+
This abstract class defines common interfaces and types for a generic Kalman filter.
+
Template Parameters
+
+ n_states number of states of the system (length of the vector).
+ n_inputs number of inputs of the system (length of the vector).
+ n_measurements number of measurements of the system (length of the vector).
+
+
+
+
+
+
◆ correct()
+
+
+
+
+template<int n_states, int n_inputs, int n_measurements>
+
+
+
+
+
+
+pure virtual
+
+
+
+
+
Applies the correction (update, measurement, data) step of the Kalman filter.
+
This method applies the correction step to the state and covariance passed in sc
using the measurement z
and measurement noise R
. An optional parameter param
may be used by some implementations, but it is usually ignored. The updated state and covariance after the correction step is returned.
+
Parameters
+
+ sc The state and covariance to which the correction step is to be applied.
+ z The measurement vector to be used for correction.
+ R The measurement noise covariance matrix to be used for correction.
+
+
+
+
Returns The state and covariance after the correction update.
+
+
+
+
+
◆ predict()
+
+
+
+
+template<int n_states, int n_inputs, int n_measurements>
+
+
+
+
+
+
+pure virtual
+
+
+
+
+
Applies the prediction (time) step of the Kalman filter.
+
This method applies the prediction step to the state and covariance passed in sc
using the input u
and process noise Q
. The state and covariance are updated by dt
into the future, if applicable to the implementation. An optional parameter param
may be used by some implementations, but it is usually ignored. The updated state and covariance after the prediction step is returned.
+
Parameters
+
+ sc The state and covariance to which the prediction step is to be applied.
+ u The input vector to be used for prediction.
+ Q The process noise covariance matrix to be used for prediction.
+ dt The time step for the prediction update (the state and covariance will be predicted by dt into the future).
+
+
+
+
Returns The state and covariance after the prediction step.
+
+
+
+
The documentation for this class was generated from the following file:
+
+
+
+
+
+
diff --git a/classmrs__lib_1_1KalmanFilterAloamGarm.js b/classmrs__lib_1_1KalmanFilterAloamGarm.js
new file mode 100644
index 00000000..ae589e5a
--- /dev/null
+++ b/classmrs__lib_1_1KalmanFilterAloamGarm.js
@@ -0,0 +1,12 @@
+var classmrs__lib_1_1KalmanFilterAloamGarm =
+[
+ [ "statecov_t", "structmrs__lib_1_1KalmanFilterAloamGarm_1_1statecov__t.html", "structmrs__lib_1_1KalmanFilterAloamGarm_1_1statecov__t" ],
+ [ "P_t", "classmrs__lib_1_1KalmanFilterAloamGarm.html#a9b8488ef81812059a366fcc2e92e04f6", null ],
+ [ "Q_t", "classmrs__lib_1_1KalmanFilterAloamGarm.html#ab9efcd795fc6c47ef94c20f9ff9547dc", null ],
+ [ "R_t", "classmrs__lib_1_1KalmanFilterAloamGarm.html#ab6bf1e91bfeb633b08038f54b2b5d0fa", null ],
+ [ "u_t", "classmrs__lib_1_1KalmanFilterAloamGarm.html#ae680d65b40883e1678e0365ed3924c16", null ],
+ [ "x_t", "classmrs__lib_1_1KalmanFilterAloamGarm.html#a0e19e15226a8e251452cd486153fba12", null ],
+ [ "z_t", "classmrs__lib_1_1KalmanFilterAloamGarm.html#ae7fc4baaa223bf1ccebebc20c4b02bcc", null ],
+ [ "correct", "classmrs__lib_1_1KalmanFilterAloamGarm.html#a3e541e3ec53df99c77f8cc7031728d6f", null ],
+ [ "predict", "classmrs__lib_1_1KalmanFilterAloamGarm.html#a139f8d4f64e9e45ca68b9141ecae8c99", null ]
+];
\ No newline at end of file
diff --git a/classmrs__lib_1_1KalmanFilterAloamGarm__inherit__graph.map b/classmrs__lib_1_1KalmanFilterAloamGarm__inherit__graph.map
new file mode 100644
index 00000000..1f6ec346
--- /dev/null
+++ b/classmrs__lib_1_1KalmanFilterAloamGarm__inherit__graph.map
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/classmrs__lib_1_1KalmanFilterAloamGarm__inherit__graph.md5 b/classmrs__lib_1_1KalmanFilterAloamGarm__inherit__graph.md5
new file mode 100644
index 00000000..590ab51f
--- /dev/null
+++ b/classmrs__lib_1_1KalmanFilterAloamGarm__inherit__graph.md5
@@ -0,0 +1 @@
+ab54fd2f3ac94a1d3866399bc8e1fa9e
\ No newline at end of file
diff --git a/classmrs__lib_1_1KalmanFilterAloamGarm__inherit__graph.png b/classmrs__lib_1_1KalmanFilterAloamGarm__inherit__graph.png
new file mode 100644
index 00000000..89eab45c
Binary files /dev/null and b/classmrs__lib_1_1KalmanFilterAloamGarm__inherit__graph.png differ
diff --git a/classmrs__lib_1_1KalmanFilter__inherit__graph.map b/classmrs__lib_1_1KalmanFilter__inherit__graph.map
new file mode 100644
index 00000000..4ed9bef3
--- /dev/null
+++ b/classmrs__lib_1_1KalmanFilter__inherit__graph.map
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/classmrs__lib_1_1KalmanFilter__inherit__graph.md5 b/classmrs__lib_1_1KalmanFilter__inherit__graph.md5
new file mode 100644
index 00000000..e55449a8
--- /dev/null
+++ b/classmrs__lib_1_1KalmanFilter__inherit__graph.md5
@@ -0,0 +1 @@
+dfff49ecc4577c9dc4e93323728b37f3
\ No newline at end of file
diff --git a/classmrs__lib_1_1KalmanFilter__inherit__graph.png b/classmrs__lib_1_1KalmanFilter__inherit__graph.png
new file mode 100644
index 00000000..f34f81f0
Binary files /dev/null and b/classmrs__lib_1_1KalmanFilter__inherit__graph.png differ
diff --git a/classmrs__lib_1_1LKF-members.html b/classmrs__lib_1_1LKF-members.html
new file mode 100644
index 00000000..5f658f57
--- /dev/null
+++ b/classmrs__lib_1_1LKF-members.html
@@ -0,0 +1,134 @@
+
+
+
+
+
+
+
+mrs_lib: Member List
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
This is the complete list of members for mrs_lib::LKF< n_states, n_inputs, n_measurements > , including all inherited members.
+
+ A mrs_lib::LKF< n_states, n_inputs, n_measurements >
+ A_t typedefmrs_lib::LKF< n_states, n_inputs, n_measurements >
+ B mrs_lib::LKF< n_states, n_inputs, n_measurements >
+ B_t typedefmrs_lib::LKF< n_states, n_inputs, n_measurements >
+ Base_class typedefmrs_lib::LKF< n_states, n_inputs, n_measurements >
+ computeKalmanGain (const statecov_t &sc, [[maybe_unused]] const z_t &z, const R_t &R, const H_t &H) const (defined in mrs_lib::LKF< n_states, n_inputs, n_measurements > )mrs_lib::LKF< n_states, n_inputs, n_measurements > inline protected virtual
+ correct (const statecov_t &sc, const z_t &z, const R_t &R) const overridemrs_lib::LKF< n_states, n_inputs, n_measurements > inline virtual
+ mrs_lib::KalmanFilter::correct (const statecov_t &sc, const z_t &z, const R_t &R) const =0mrs_lib::KalmanFilter< n_states, n_inputs, n_measurements > pure virtual
+ correction_impl (const statecov_t &sc, const z_t &z, const R_t &R, const H_t &H) const (defined in mrs_lib::LKF< n_states, n_inputs, n_measurements > )mrs_lib::LKF< n_states, n_inputs, n_measurements > inline protected
+ covariance_predict (const A_t &A, const P_t &P, const Q_t &Q, const double dt) (defined in mrs_lib::LKF< n_states, n_inputs, n_measurements > )mrs_lib::LKF< n_states, n_inputs, n_measurements > inline protected static
+ H mrs_lib::LKF< n_states, n_inputs, n_measurements >
+ H_t typedefmrs_lib::LKF< n_states, n_inputs, n_measurements >
+ invert_W (R_t W) (defined in mrs_lib::LKF< n_states, n_inputs, n_measurements > )mrs_lib::LKF< n_states, n_inputs, n_measurements > inline protected static
+ K_t typedefmrs_lib::LKF< n_states, n_inputs, n_measurements >
+ LKF ()mrs_lib::LKF< n_states, n_inputs, n_measurements > inline
+ LKF (const A_t &A, const B_t &B, const H_t &H)mrs_lib::LKF< n_states, n_inputs, n_measurements > inline
+ m mrs_lib::LKF< n_states, n_inputs, n_measurements > static
+ n mrs_lib::LKF< n_states, n_inputs, n_measurements > static
+ p mrs_lib::LKF< n_states, n_inputs, n_measurements > static
+ P_t typedefmrs_lib::LKF< n_states, n_inputs, n_measurements >
+ predict (const statecov_t &sc, const u_t &u, const Q_t &Q, [[maybe_unused]] double dt) const overridemrs_lib::LKF< n_states, n_inputs, n_measurements > inline virtual
+ mrs_lib::KalmanFilter::predict (const statecov_t &sc, const u_t &u, const Q_t &Q, double dt) const =0mrs_lib::KalmanFilter< n_states, n_inputs, n_measurements > pure virtual
+ Q_t typedefmrs_lib::LKF< n_states, n_inputs, n_measurements >
+ R_t typedefmrs_lib::LKF< n_states, n_inputs, n_measurements >
+ state_predict (const A_t &A, const x_t &x, [[maybe_unused]] const B_t &B, [[maybe_unused]] const u_t &u) (defined in mrs_lib::LKF< n_states, n_inputs, n_measurements > )mrs_lib::LKF< n_states, n_inputs, n_measurements > inline protected static
+ state_predict (const A_t &A, const x_t &x, const B_t &B, const u_t &u) (defined in mrs_lib::LKF< n_states, n_inputs, n_measurements > )mrs_lib::LKF< n_states, n_inputs, n_measurements > inline protected static
+ statecov_t typedefmrs_lib::LKF< n_states, n_inputs, n_measurements >
+ u_t typedefmrs_lib::LKF< n_states, n_inputs, n_measurements >
+ x_t typedefmrs_lib::LKF< n_states, n_inputs, n_measurements >
+ z_t typedefmrs_lib::LKF< n_states, n_inputs, n_measurements >
+
+
+
+
+
+
diff --git a/classmrs__lib_1_1LKF.html b/classmrs__lib_1_1LKF.html
new file mode 100644
index 00000000..2ea38802
--- /dev/null
+++ b/classmrs__lib_1_1LKF.html
@@ -0,0 +1,541 @@
+
+
+
+
+
+
+
+mrs_lib: mrs_lib::LKF< n_states, n_inputs, n_measurements > Class Template Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Implementation of the Linear Kalman filter [3] .
+ More...
+
+
#include <lkf.h >
+
+
+
+
+
+
+
+
+
+
+
+
+
[legend ]
+
+
+
+
+
+
+
+using Base_class = KalmanFilter < n , m , p >
+ Base class of this class.
+
+
+using x_t = typename Base_class::x_t
+ State vector type .
+
+
+using u_t = typename Base_class::u_t
+ Input vector type .
+
+
+using z_t = typename Base_class::z_t
+ Measurement vector type .
+
+
+using P_t = typename Base_class::P_t
+ State uncertainty covariance matrix type .
+
+
+using R_t = typename Base_class::R_t
+ Measurement noise covariance matrix type .
+
+
+using Q_t = typename Base_class::Q_t
+ Process noise covariance matrix type .
+
+
+using statecov_t = typename Base_class::statecov_t
+ Helper struct for passing around the state and its covariance in one variable.
+
+
+typedef Eigen::Matrix< double, n , n > A_t
+ System transition matrix type .
+
+
+typedef Eigen::Matrix< double, n , m > B_t
+ Input to state mapping matrix type .
+
+
+typedef Eigen::Matrix< double, p , n > H_t
+ State to measurement mapping matrix type .
+
+
+typedef Eigen::Matrix< double, n , p > K_t
+ Kalman gain matrix type .
+
+
+
+typedef Eigen::Matrix< double, n , 1 > x_t
+ State vector type .
+
+
+typedef Eigen::Matrix< double, m , 1 > u_t
+ Input vector type .
+
+
+typedef Eigen::Matrix< double, p , 1 > z_t
+ Measurement vector type .
+
+
+typedef Eigen::Matrix< double, n , n > P_t
+ State uncertainty covariance matrix type .
+
+
+typedef Eigen::Matrix< double, p , p > R_t
+ Measurement noise covariance matrix type .
+
+
+typedef Eigen::Matrix< double, n , n > Q_t
+ Process noise covariance matrix type .
+
+
+
+ LKF ()
+ Convenience default constructor. More...
+
+ LKF (const A_t &A , const B_t &B , const H_t &H )
+ The main constructor. More...
+
+virtual statecov_t correct (const statecov_t &sc, const z_t &z, const R_t &R) const override
+ Applies the correction (update, measurement, data) step of the Kalman filter. More...
+
+virtual statecov_t predict (const statecov_t &sc, const u_t &u, const Q_t &Q, [[maybe_unused]] double dt) const override
+ Applies the prediction (time) step of the Kalman filter. More...
+
+
+virtual statecov_t correct (const statecov_t &sc, const z_t &z, const R_t &R) const =0
+ Applies the correction (update, measurement, data) step of the Kalman filter. More...
+
+virtual statecov_t predict (const statecov_t &sc, const u_t &u, const Q_t &Q, double dt) const =0
+ Applies the prediction (time) step of the Kalman filter. More...
+
+
+
+
+A_t A
+ The system transition matrix .
+
+
+B_t B
+ The input to state mapping matrix .
+
+
+H_t H
+ The state to measurement mapping matrix .
+
+
+
+
+static constexpr int n = n_states
+ Length of the state vector of the system.
+
+
+static constexpr int m = n_inputs
+ Length of the input vector of the system.
+
+
+static constexpr int p = n_measurements
+ Length of the measurement vector of the system.
+
+
+
+static const int n = n_states
+ Length of the state vector of the system.
+
+
+static const int m = n_inputs
+ Length of the input vector of the system.
+
+
+static const int p = n_measurements
+ Length of the measurement vector of the system.
+
+
+
+
+static P_t covariance_predict (const A_t &A , const P_t &P, const Q_t &Q, const double dt)
+
+
+template<int check = n_inputs>
+static std::enable_if< check==0, x_t >::type state_predict (const A_t &A , const x_t &x, [[maybe_unused]] const B_t &B , [[maybe_unused]] const u_t &u)
+
+
+template<int check = n_inputs>
+static std::enable_if< check !=0, x_t >::type state_predict (const A_t &A , const x_t &x, const B_t &B , const u_t &u)
+
+
+static R_t invert_W (R_t W)
+
+
+
+
template<int n_states, int n_inputs, int n_measurements>
+class mrs_lib::LKF< n_states, n_inputs, n_measurements >
+
+
Implementation of the Linear Kalman filter [3] .
+
The Linear Kalman filter (abbreviated LKF , [3] ) may be used for state filtration or estimation of linear stochastic discrete systems. It assumes that noise variables are sampled from multivariate gaussian distributions and takes into account apriori known parameters of these distributions (namely zero means and covariance matrices, which have to be specified by the user and are tunable parameters).
+
The LKF C++ class itself is templated. This has its advantages and disadvantages. Main disadvantage is that it may be harder to use if you're not familiar with C++ templates, which, admittedly, can get somewhat messy, espetially during compilation. Another disadvantage is that if used unwisely, the compilation times can get much higher when using templates. The main advantage is compile-time checking (if it compiles, then it has a lower chance of crashing at runtime) and enabling more effective optimalizations during compilation. Also in case of Eigen, the code is arguably more readable when you use aliases to the specific Matrix instances instead of having Eigen::MatrixXd and Eigen::VectorXd everywhere.
+
Template Parameters
+
+ n_states number of states of the system (length of the vector).
+ n_inputs number of inputs of the system (length of the vector).
+ n_measurements number of measurements of the system (length of the vector).
+
+
+
+
Examples lkf/example.cpp .
+
+
+
+
◆ LKF() [1/2]
+
+
+
+
+template<int n_states, int n_inputs, int n_measurements>
+
+
+
+
Convenience default constructor.
+
This constructor should not be used if applicable. If used, the main constructor has to be called afterwards, before using this class, otherwise the LKF object is invalid (not initialized).
+
+
+
+
+
◆ LKF() [2/2]
+
+
+
+
+template<int n_states, int n_inputs, int n_measurements>
+
+
+
+
+
+ mrs_lib::LKF < n_states, n_inputs, n_measurements >::LKF
+ (
+ const A_t &
+ A ,
+
+
+
+
+ const B_t &
+ B ,
+
+
+
+
+ const H_t &
+ H
+
+
+
+ )
+
+
+
+
+
+inline
+
+
+
+
+
The main constructor.
+
Parameters
+
+ A The state transition matrix.
+ B The input to state mapping matrix.
+ H The state to measurement mapping matrix.
+
+
+
+
+
+
+
+
+
◆ correct()
+
+
+
+
+template<int n_states, int n_inputs, int n_measurements>
+
+
+
+
+
+
+inline override virtual
+
+
+
+
+
Applies the correction (update, measurement, data) step of the Kalman filter.
+
This method applies the linear Kalman filter correction step to the state and covariance passed in sc
using the measurement z
and measurement noise R
. The updated state and covariance after the correction step is returned.
+
Parameters
+
+ sc The state and covariance to which the correction step is to be applied.
+ z The measurement vector to be used for correction.
+ R The measurement noise covariance matrix to be used for correction.
+
+
+
+
Returns The state and covariance after the correction update.
+
+
+
+
+
◆ predict()
+
+
+
+
+template<int n_states, int n_inputs, int n_measurements>
+
+
+
+
+
+ virtual statecov_t mrs_lib::LKF < n_states, n_inputs, n_measurements >::predict
+ (
+ const statecov_t &
+ sc ,
+
+
+
+
+ const u_t &
+ u ,
+
+
+
+
+ const Q_t &
+ Q ,
+
+
+
+
+ [[maybe_unused] ] double
+ dt
+
+
+
+ )
+ const
+
+
+
+
+inline override virtual
+
+
+
+
+
Applies the prediction (time) step of the Kalman filter.
+
This method applies the linear Kalman filter prediction step to the state and covariance passed in sc
using the input u
and process noise Q
. The process noise covariance Q
is scaled by the dt
parameter. The updated state and covariance after the prediction step is returned.
+
Parameters
+
+ sc The state and covariance to which the prediction step is to be applied.
+ u The input vector to be used for prediction.
+ Q The process noise covariance matrix to be used for prediction.
+ dt Used to scale the process noise covariance Q
.
+
+
+
+
Returns The state and covariance after the prediction step.
+
Note Note that the dt
parameter is only used to scale the process noise covariance Q
it does not change the system matrices A or B (because there is no unambiguous way to do this)! If you have a changing time step duration and a dynamic system, you have to change the A and B matrices manually.
+
+
+
+
The documentation for this class was generated from the following file:
+
+
+
+
+
+
diff --git a/classmrs__lib_1_1LKF.js b/classmrs__lib_1_1LKF.js
new file mode 100644
index 00000000..f410cfce
--- /dev/null
+++ b/classmrs__lib_1_1LKF.js
@@ -0,0 +1,25 @@
+var classmrs__lib_1_1LKF =
+[
+ [ "inverse_exception", "structmrs__lib_1_1LKF_1_1inverse__exception.html", "structmrs__lib_1_1LKF_1_1inverse__exception" ],
+ [ "A_t", "classmrs__lib_1_1LKF.html#aa5c83985c5c7685ebe2af0e445fbc0ad", null ],
+ [ "B_t", "classmrs__lib_1_1LKF.html#a5ca7805e401bd7b718b510269a6ce7bf", null ],
+ [ "Base_class", "classmrs__lib_1_1LKF.html#ae54a2cc807bafeee1777ffdbd37e3c02", null ],
+ [ "H_t", "classmrs__lib_1_1LKF.html#a78733a13f277480c5c8c42228d440df7", null ],
+ [ "K_t", "classmrs__lib_1_1LKF.html#a33b80f4e1b9b7eb7243b71a4ae6d99c6", null ],
+ [ "P_t", "classmrs__lib_1_1LKF.html#a5d5cee075e30da36ffb946cffcfca688", null ],
+ [ "Q_t", "classmrs__lib_1_1LKF.html#a5df2fd299b9da75a872e8d9194da1ca9", null ],
+ [ "R_t", "classmrs__lib_1_1LKF.html#a5d2cb5ed042b660f1a44bdb9f4d2612f", null ],
+ [ "statecov_t", "classmrs__lib_1_1LKF.html#a54b2b4a3932510daad92da5a2b1274c1", null ],
+ [ "u_t", "classmrs__lib_1_1LKF.html#a98e130a3d14cd93b01b0b942de8af10c", null ],
+ [ "x_t", "classmrs__lib_1_1LKF.html#abfad09fe2386fb87eaea7b4dd8b24409", null ],
+ [ "z_t", "classmrs__lib_1_1LKF.html#af4318056f5e0c024651bb882b60ec640", null ],
+ [ "LKF", "classmrs__lib_1_1LKF.html#aecd505e79c0102609c9e5ffbd91a7cc3", null ],
+ [ "LKF", "classmrs__lib_1_1LKF.html#a8bb9eee4045a176b56c28bc7e0113fa0", null ],
+ [ "computeKalmanGain", "classmrs__lib_1_1LKF.html#adcdde06220c8b30b2b74cb50d988c71b", null ],
+ [ "correct", "classmrs__lib_1_1LKF.html#a8ba4552b6fa909e5d899d2fe8c8fdaa5", null ],
+ [ "correction_impl", "classmrs__lib_1_1LKF.html#a3fdb4e57a1b930fd7e98f7a2c49aa052", null ],
+ [ "predict", "classmrs__lib_1_1LKF.html#af4027c4bef5dda2a12af1f728e92c45a", null ],
+ [ "A", "classmrs__lib_1_1LKF.html#a0926533d35a53410b4302fda99a45321", null ],
+ [ "B", "classmrs__lib_1_1LKF.html#a2d88249f1992d772631026387a45445a", null ],
+ [ "H", "classmrs__lib_1_1LKF.html#a552fedb99ce43148c212c809dcd8191f", null ]
+];
\ No newline at end of file
diff --git a/classmrs__lib_1_1LKF__MRS__odom-members.html b/classmrs__lib_1_1LKF__MRS__odom-members.html
new file mode 100644
index 00000000..97019e84
--- /dev/null
+++ b/classmrs__lib_1_1LKF__MRS__odom-members.html
@@ -0,0 +1,143 @@
+
+
+
+
+
+
+
+mrs_lib: Member List
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
This is the complete list of members for mrs_lib::LKF_MRS_odom , including all inherited members.
+
+ A mrs_lib::LKF< 3, 1, 1 >
+ A_t typedef (defined in mrs_lib::LKF_MRS_odom )mrs_lib::LKF_MRS_odom
+ B mrs_lib::LKF< 3, 1, 1 >
+ B_t typedef (defined in mrs_lib::LKF_MRS_odom )mrs_lib::LKF_MRS_odom
+ Base_class typedef (defined in mrs_lib::LKF_MRS_odom )mrs_lib::LKF_MRS_odom
+ coeff_A_t typedef (defined in mrs_lib::LKF_MRS_odom )mrs_lib::LKF_MRS_odom
+ coeff_B_t typedef (defined in mrs_lib::LKF_MRS_odom )mrs_lib::LKF_MRS_odom
+ computeKalmanGain (const statecov_t &sc,[[maybe_unused]] const z_t &z, const R_t &R, const H_t &H) const (defined in mrs_lib::LKF< 3, 1, 1 > )mrs_lib::LKF< 3, 1, 1 > inline protected virtual
+ correct (const statecov_t &sc, const z_t &z, const R_t &R, int param=0) const (defined in mrs_lib::LKF_MRS_odom )mrs_lib::LKF_MRS_odom virtual
+ LKF< 3, 1, 1 >::correct (const statecov_t &sc, const z_t &z, const R_t &R) const overridemrs_lib::LKF< 3, 1, 1 > inline virtual
+ mrs_lib::KalmanFilter::correct (const statecov_t &sc, const z_t &z, const R_t &R) const =0mrs_lib::KalmanFilter< n_states, n_inputs, n_measurements > pure virtual
+ correction_impl (const statecov_t &sc, const z_t &z, const R_t &R, const H_t &H) const (defined in mrs_lib::LKF< 3, 1, 1 > )mrs_lib::LKF< 3, 1, 1 > inline protected
+ covariance_predict (const A_t &A, const P_t &P, const Q_t &Q, const double dt) (defined in mrs_lib::LKF< 3, 1, 1 > )mrs_lib::LKF< 3, 1, 1 > inline protected static
+ covariance_predict_optimized (const P_t &P, const Q_t &Q, double dt) const (defined in mrs_lib::LKF_MRS_odom )mrs_lib::LKF_MRS_odom
+ dtexp_A_t typedef (defined in mrs_lib::LKF_MRS_odom )mrs_lib::LKF_MRS_odom
+ dtexp_B_t typedef (defined in mrs_lib::LKF_MRS_odom )mrs_lib::LKF_MRS_odom
+ H mrs_lib::LKF< 3, 1, 1 >
+ H_t typedef (defined in mrs_lib::LKF_MRS_odom )mrs_lib::LKF_MRS_odom
+ invert_W (R_t W) (defined in mrs_lib::LKF< 3, 1, 1 > )mrs_lib::LKF< 3, 1, 1 > inline protected static
+ K_t typedefmrs_lib::LKF< 3, 1, 1 >
+ LKF ()mrs_lib::LKF< 3, 1, 1 > inline
+ LKF (const A_t &A, const B_t &B, const H_t &H)mrs_lib::LKF< 3, 1, 1 > inline
+ LKF_MRS_odom (const std::vector< H_t > &Hs, const double default_dt=1) (defined in mrs_lib::LKF_MRS_odom )mrs_lib::LKF_MRS_odom
+ m (defined in mrs_lib::LKF_MRS_odom )mrs_lib::LKF_MRS_odom static
+ n (defined in mrs_lib::LKF_MRS_odom )mrs_lib::LKF_MRS_odom static
+ p (defined in mrs_lib::LKF_MRS_odom )mrs_lib::LKF_MRS_odom static
+ P_t typedef (defined in mrs_lib::LKF_MRS_odom )mrs_lib::LKF_MRS_odom
+ predict (const statecov_t &sc, const u_t &u, const Q_t &Q, double dt) const override (defined in mrs_lib::LKF_MRS_odom )mrs_lib::LKF_MRS_odom virtual
+ LKF< 3, 1, 1 >::predict (const statecov_t &sc, const u_t &u, const Q_t &Q,[[maybe_unused]] double dt) const overridemrs_lib::LKF< 3, 1, 1 > inline virtual
+ mrs_lib::KalmanFilter::predict (const statecov_t &sc, const u_t &u, const Q_t &Q, double dt) const =0mrs_lib::KalmanFilter< n_states, n_inputs, n_measurements > pure virtual
+ Q_t typedef (defined in mrs_lib::LKF_MRS_odom )mrs_lib::LKF_MRS_odom
+ R_t typedef (defined in mrs_lib::LKF_MRS_odom )mrs_lib::LKF_MRS_odom
+ state_predict (const A_t &A, const x_t &x,[[maybe_unused]] const B_t &B,[[maybe_unused]] const u_t &u) (defined in mrs_lib::LKF< 3, 1, 1 > )mrs_lib::LKF< 3, 1, 1 > inline protected static
+ state_predict (const A_t &A, const x_t &x, const B_t &B, const u_t &u) (defined in mrs_lib::LKF< 3, 1, 1 > )mrs_lib::LKF< 3, 1, 1 > inline protected static
+ state_predict_optimized (const x_t &x_prev, const u_t &u, double dt) const (defined in mrs_lib::LKF_MRS_odom )mrs_lib::LKF_MRS_odom
+ statecov_t typedef (defined in mrs_lib::LKF_MRS_odom )mrs_lib::LKF_MRS_odom
+ u_t typedef (defined in mrs_lib::LKF_MRS_odom )mrs_lib::LKF_MRS_odom
+ x_t typedef (defined in mrs_lib::LKF_MRS_odom )mrs_lib::LKF_MRS_odom
+ z_t typedef (defined in mrs_lib::LKF_MRS_odom )mrs_lib::LKF_MRS_odom
+
+
+
+
+
+
diff --git a/classmrs__lib_1_1LKF__MRS__odom.html b/classmrs__lib_1_1LKF__MRS__odom.html
new file mode 100644
index 00000000..d30999d1
--- /dev/null
+++ b/classmrs__lib_1_1LKF__MRS__odom.html
@@ -0,0 +1,370 @@
+
+
+
+
+
+
+
+mrs_lib: mrs_lib::LKF_MRS_odom Class Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+using Base_class = LKF < n, m, p >
+
+
+using x_t = typename Base_class::x_t
+
+
+using u_t = typename Base_class::u_t
+
+
+using z_t = typename Base_class::z_t
+
+
+using P_t = typename Base_class::P_t
+
+
+using R_t = typename Base_class::R_t
+
+
+using statecov_t = typename Base_class::statecov_t
+
+
+using A_t = typename Base_class::A_t
+
+
+using B_t = typename Base_class::B_t
+
+
+using H_t = typename Base_class::H_t
+
+
+using Q_t = typename Base_class::Q_t
+
+
+using coeff_A_t = A_t
+
+
+typedef Eigen::Matrix< unsigned, n, n > dtexp_A_t
+
+
+using coeff_B_t = B_t
+
+
+typedef Eigen::Matrix< unsigned, n, m > dtexp_B_t
+
+
+
+using Base_class = KalmanFilter < n , m , p >
+ Base class of this class.
+
+
+using x_t = typename Base_class::x_t
+ State vector type .
+
+
+using u_t = typename Base_class::u_t
+ Input vector type .
+
+
+using z_t = typename Base_class::z_t
+ Measurement vector type .
+
+
+using P_t = typename Base_class::P_t
+ State uncertainty covariance matrix type .
+
+
+using R_t = typename Base_class::R_t
+ Measurement noise covariance matrix type .
+
+
+using Q_t = typename Base_class::Q_t
+ Process noise covariance matrix type .
+
+
+using statecov_t = typename Base_class::statecov_t
+ Helper struct for passing around the state and its covariance in one variable.
+
+
+typedef Eigen::Matrix< double, n , n > A_t
+ System transition matrix type .
+
+
+typedef Eigen::Matrix< double, n , m > B_t
+ Input to state mapping matrix type .
+
+
+typedef Eigen::Matrix< double, p , n > H_t
+ State to measurement mapping matrix type .
+
+
+typedef Eigen::Matrix< double, n , p > K_t
+ Kalman gain matrix type .
+
+
+
+typedef Eigen::Matrix< double, n , 1 > x_t
+ State vector type .
+
+
+typedef Eigen::Matrix< double, m , 1 > u_t
+ Input vector type .
+
+
+typedef Eigen::Matrix< double, p , 1 > z_t
+ Measurement vector type .
+
+
+typedef Eigen::Matrix< double, n , n > P_t
+ State uncertainty covariance matrix type .
+
+
+typedef Eigen::Matrix< double, p , p > R_t
+ Measurement noise covariance matrix type .
+
+
+typedef Eigen::Matrix< double, n , n > Q_t
+ Process noise covariance matrix type .
+
+
+
+
+ LKF_MRS_odom (const std::vector< H_t > &Hs, const double default_dt=1)
+
+
+virtual statecov_t predict (const statecov_t &sc, const u_t &u, const Q_t &Q, double dt) const override
+
+
+virtual statecov_t correct (const statecov_t &sc, const z_t &z, const R_t &R, int param=0) const
+
+
+x_t state_predict_optimized (const x_t &x_prev, const u_t &u, double dt) const
+
+
+P_t covariance_predict_optimized (const P_t &P, const Q_t &Q, double dt) const
+
+
+ LKF ()
+ Convenience default constructor. More...
+
+ LKF (const A_t &A , const B_t &B , const H_t &H )
+ The main constructor. More...
+
+virtual statecov_t correct (const statecov_t &sc, const z_t &z, const R_t &R) const override
+ Applies the correction (update, measurement, data) step of the Kalman filter. More...
+
+virtual statecov_t predict (const statecov_t &sc, const u_t &u, const Q_t &Q,[[maybe_unused]] double dt) const override
+ Applies the prediction (time) step of the Kalman filter. More...
+
+
+virtual statecov_t correct (const statecov_t &sc, const z_t &z, const R_t &R) const =0
+ Applies the correction (update, measurement, data) step of the Kalman filter. More...
+
+virtual statecov_t predict (const statecov_t &sc, const u_t &u, const Q_t &Q, double dt) const =0
+ Applies the prediction (time) step of the Kalman filter. More...
+
+
+
+
+static const int n = 3
+
+
+static const int m = 1
+
+
+static const int p = 1
+
+
+
+static constexpr int n
+ Length of the state vector of the system.
+
+
+static constexpr int m
+ Length of the input vector of the system.
+
+
+static constexpr int p
+ Length of the measurement vector of the system.
+
+
+
+static const int n = n_states
+ Length of the state vector of the system.
+
+
+static const int m = n_inputs
+ Length of the input vector of the system.
+
+
+static const int p = n_measurements
+ Length of the measurement vector of the system.
+
+
+
+
+
+A_t A
+ The system transition matrix .
+
+
+B_t B
+ The input to state mapping matrix .
+
+
+H_t H
+ The state to measurement mapping matrix .
+
+
+
+virtual K_t computeKalmanGain (const statecov_t &sc,[[maybe_unused]] const z_t &z, const R_t &R, const H_t &H ) const
+
+
+statecov_t ::type correction_impl (const statecov_t &sc, const z_t &z, const R_t &R, const H_t &H ) const
+
+
+
+static P_t covariance_predict (const A_t &A , const P_t &P, const Q_t &Q, const double dt)
+
+
+static std::enable_if< check==0, x_t >::type state_predict (const A_t &A , const x_t &x,[[maybe_unused]] const B_t &B ,[[maybe_unused]] const u_t &u)
+
+
+static std::enable_if< check !=0, x_t >::type state_predict (const A_t &A , const x_t &x, const B_t &B , const u_t &u)
+
+
+static R_t invert_W (R_t W)
+
+
+
The documentation for this class was generated from the following files:
+include/mrs_lib/lkf.h
+src/lkf/LKF_MRS_odom.cpp
+
+
+
+
+
+
+
diff --git a/classmrs__lib_1_1LKF__MRS__odom.js b/classmrs__lib_1_1LKF__MRS__odom.js
new file mode 100644
index 00000000..28aae3df
--- /dev/null
+++ b/classmrs__lib_1_1LKF__MRS__odom.js
@@ -0,0 +1,23 @@
+var classmrs__lib_1_1LKF__MRS__odom =
+[
+ [ "A_t", "classmrs__lib_1_1LKF__MRS__odom.html#a09aecefb7fb87d7e9e9dc9e3663a25ba", null ],
+ [ "B_t", "classmrs__lib_1_1LKF__MRS__odom.html#a96aa8d8e7cabbf158ef5a3b2f801474c", null ],
+ [ "Base_class", "classmrs__lib_1_1LKF__MRS__odom.html#aeb66a3e27ef38bc25498f98e66ba8169", null ],
+ [ "coeff_A_t", "classmrs__lib_1_1LKF__MRS__odom.html#a97ea9790fa2fd495ceddf0af9f6c5280", null ],
+ [ "coeff_B_t", "classmrs__lib_1_1LKF__MRS__odom.html#a6409e849ae9fab7aeef866c9acaa7730", null ],
+ [ "dtexp_A_t", "classmrs__lib_1_1LKF__MRS__odom.html#a0a22b36fff8f0160a14c586da4b8387e", null ],
+ [ "dtexp_B_t", "classmrs__lib_1_1LKF__MRS__odom.html#a7e5f00e6dbc4f50accac220a597ade44", null ],
+ [ "H_t", "classmrs__lib_1_1LKF__MRS__odom.html#a6790100be5843d9702159f185a516e4f", null ],
+ [ "P_t", "classmrs__lib_1_1LKF__MRS__odom.html#a78259b00ba8e37ccfd4fb520ff4945b2", null ],
+ [ "Q_t", "classmrs__lib_1_1LKF__MRS__odom.html#a38089d1d8f42e93afadd3ca54b738e26", null ],
+ [ "R_t", "classmrs__lib_1_1LKF__MRS__odom.html#aab73a89d85dabeaf370b34597829c449", null ],
+ [ "statecov_t", "classmrs__lib_1_1LKF__MRS__odom.html#a64fb6aad88554272313f57133e54d77c", null ],
+ [ "u_t", "classmrs__lib_1_1LKF__MRS__odom.html#aff31793f0ceacb7755ff658a1a0a91d7", null ],
+ [ "x_t", "classmrs__lib_1_1LKF__MRS__odom.html#af2a13b4d363aee6830af4f913cefaa77", null ],
+ [ "z_t", "classmrs__lib_1_1LKF__MRS__odom.html#a6f33958aa554e958c622cbd04d3347d5", null ],
+ [ "LKF_MRS_odom", "classmrs__lib_1_1LKF__MRS__odom.html#a8046db3503fe0c724164714bd309cad4", null ],
+ [ "correct", "classmrs__lib_1_1LKF__MRS__odom.html#a668f845e05a934e46185e768b4669ca5", null ],
+ [ "covariance_predict_optimized", "classmrs__lib_1_1LKF__MRS__odom.html#a19a12aa3c13ce269ad52f3206c9ee329", null ],
+ [ "predict", "classmrs__lib_1_1LKF__MRS__odom.html#a6761cb7486eb9c99510805e17d5c2d1c", null ],
+ [ "state_predict_optimized", "classmrs__lib_1_1LKF__MRS__odom.html#a072921264c196f192b8dba85c78b43bc", null ]
+];
\ No newline at end of file
diff --git a/classmrs__lib_1_1LKF__MRS__odom__coll__graph.map b/classmrs__lib_1_1LKF__MRS__odom__coll__graph.map
new file mode 100644
index 00000000..2d7a6b10
--- /dev/null
+++ b/classmrs__lib_1_1LKF__MRS__odom__coll__graph.map
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/classmrs__lib_1_1LKF__MRS__odom__coll__graph.md5 b/classmrs__lib_1_1LKF__MRS__odom__coll__graph.md5
new file mode 100644
index 00000000..8f02d5f8
--- /dev/null
+++ b/classmrs__lib_1_1LKF__MRS__odom__coll__graph.md5
@@ -0,0 +1 @@
+0e33aa7954d5ff9d60495f236e9ecb76
\ No newline at end of file
diff --git a/classmrs__lib_1_1LKF__MRS__odom__coll__graph.png b/classmrs__lib_1_1LKF__MRS__odom__coll__graph.png
new file mode 100644
index 00000000..e8db05b9
Binary files /dev/null and b/classmrs__lib_1_1LKF__MRS__odom__coll__graph.png differ
diff --git a/classmrs__lib_1_1LKF__MRS__odom__inherit__graph.map b/classmrs__lib_1_1LKF__MRS__odom__inherit__graph.map
new file mode 100644
index 00000000..2d7a6b10
--- /dev/null
+++ b/classmrs__lib_1_1LKF__MRS__odom__inherit__graph.map
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/classmrs__lib_1_1LKF__MRS__odom__inherit__graph.md5 b/classmrs__lib_1_1LKF__MRS__odom__inherit__graph.md5
new file mode 100644
index 00000000..8f02d5f8
--- /dev/null
+++ b/classmrs__lib_1_1LKF__MRS__odom__inherit__graph.md5
@@ -0,0 +1 @@
+0e33aa7954d5ff9d60495f236e9ecb76
\ No newline at end of file
diff --git a/classmrs__lib_1_1LKF__MRS__odom__inherit__graph.png b/classmrs__lib_1_1LKF__MRS__odom__inherit__graph.png
new file mode 100644
index 00000000..e8db05b9
Binary files /dev/null and b/classmrs__lib_1_1LKF__MRS__odom__inherit__graph.png differ
diff --git a/classmrs__lib_1_1LKF__coll__graph.map b/classmrs__lib_1_1LKF__coll__graph.map
new file mode 100644
index 00000000..34f8b72e
--- /dev/null
+++ b/classmrs__lib_1_1LKF__coll__graph.map
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/classmrs__lib_1_1LKF__coll__graph.md5 b/classmrs__lib_1_1LKF__coll__graph.md5
new file mode 100644
index 00000000..d8849876
--- /dev/null
+++ b/classmrs__lib_1_1LKF__coll__graph.md5
@@ -0,0 +1 @@
+7f8d1d83e87a8e1ea9fdc8523881a04a
\ No newline at end of file
diff --git a/classmrs__lib_1_1LKF__coll__graph.png b/classmrs__lib_1_1LKF__coll__graph.png
new file mode 100644
index 00000000..86f92f1d
Binary files /dev/null and b/classmrs__lib_1_1LKF__coll__graph.png differ
diff --git a/classmrs__lib_1_1LKF__inherit__graph.map b/classmrs__lib_1_1LKF__inherit__graph.map
new file mode 100644
index 00000000..707d58f2
--- /dev/null
+++ b/classmrs__lib_1_1LKF__inherit__graph.map
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/classmrs__lib_1_1LKF__inherit__graph.md5 b/classmrs__lib_1_1LKF__inherit__graph.md5
new file mode 100644
index 00000000..4cda1a06
--- /dev/null
+++ b/classmrs__lib_1_1LKF__inherit__graph.md5
@@ -0,0 +1 @@
+708b85a4fb102a73d75148021f8cb01b
\ No newline at end of file
diff --git a/classmrs__lib_1_1LKF__inherit__graph.png b/classmrs__lib_1_1LKF__inherit__graph.png
new file mode 100644
index 00000000..2fa7e49e
Binary files /dev/null and b/classmrs__lib_1_1LKF__inherit__graph.png differ
diff --git a/classmrs__lib_1_1MRSTimer-members.html b/classmrs__lib_1_1MRSTimer-members.html
new file mode 100644
index 00000000..22918d9b
--- /dev/null
+++ b/classmrs__lib_1_1MRSTimer-members.html
@@ -0,0 +1,115 @@
+
+
+
+
+
+
+
+mrs_lib: Member List
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
This is the complete list of members for mrs_lib::MRSTimer , including all inherited members.
+
+
+
+
+
+
diff --git a/classmrs__lib_1_1MRSTimer.html b/classmrs__lib_1_1MRSTimer.html
new file mode 100644
index 00000000..04b4597f
--- /dev/null
+++ b/classmrs__lib_1_1MRSTimer.html
@@ -0,0 +1,244 @@
+
+
+
+
+
+
+
+mrs_lib: mrs_lib::MRSTimer Class Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Common wrapper representing the functionality of the ros::Timer.
+ More...
+
+
#include <timer.h >
+
+
+
+
+
+
+
+using callback_t = std::function< void(const ros::TimerEvent &)>
+
+
+
+
+virtual void stop ()=0
+ stop the timer
+
+
+virtual void start ()=0
+ start the timer
+
+virtual void setPeriod (const ros::Duration &duration, const bool reset=true)=0
+ set the timer period/duration More...
+
+virtual bool running ()=0
+ returns true if callbacks should be called More...
+
+
+ MRSTimer (const MRSTimer &)=default
+
+
+ MRSTimer (MRSTimer &&)=default
+
+
+MRSTimer & operator= (const MRSTimer &)=default
+
+
+MRSTimer & operator= (MRSTimer &&)=default
+
+
+
+
Common wrapper representing the functionality of the ros::Timer.
+
The implementation can then use either ros::Timer (the ROSTimer class) or threads and synchronization primitives from the C++ standard library (the ThreadTimer class). Both these variants implement the same interface.
+
Note Functionality of the two implementations differs in some details.
+
+
+
◆ running()
+
+
+
+
+
+
+
+
+ virtual bool mrs_lib::MRSTimer::running
+ (
+ )
+
+
+
+
+
+pure virtual
+
+
+
+
+
+
◆ setPeriod()
+
+
+
+
+
+
+
+
+ virtual void mrs_lib::MRSTimer::setPeriod
+ (
+ const ros::Duration &
+ duration ,
+
+
+
+
+ const bool
+ reset = true
+
+
+
+ )
+
+
+
+
+
+pure virtual
+
+
+
+
+
The documentation for this class was generated from the following file:
+
+
+
+
+
+
diff --git a/classmrs__lib_1_1MRSTimer.js b/classmrs__lib_1_1MRSTimer.js
new file mode 100644
index 00000000..5b89c350
--- /dev/null
+++ b/classmrs__lib_1_1MRSTimer.js
@@ -0,0 +1,14 @@
+var classmrs__lib_1_1MRSTimer =
+[
+ [ "callback_t", "classmrs__lib_1_1MRSTimer.html#ae519667943aa8289e9c75b8182c75322", null ],
+ [ "~MRSTimer", "classmrs__lib_1_1MRSTimer.html#a45659d46a9d71bb68a20b3152c42b9aa", null ],
+ [ "MRSTimer", "classmrs__lib_1_1MRSTimer.html#ab8c67e675c0f51ff31bad5e898d90d33", null ],
+ [ "MRSTimer", "classmrs__lib_1_1MRSTimer.html#ae06c621b106897104698b62c28b67b84", null ],
+ [ "MRSTimer", "classmrs__lib_1_1MRSTimer.html#a11e9f9e577d68ab084762d549c5d9a52", null ],
+ [ "operator=", "classmrs__lib_1_1MRSTimer.html#acf622f64026f1e7dbdeeec3b5512e8fb", null ],
+ [ "operator=", "classmrs__lib_1_1MRSTimer.html#ae455e462fc33b2021fb2ce0bc768a75e", null ],
+ [ "running", "classmrs__lib_1_1MRSTimer.html#a54461ff4541da2848c3263e646ff928a", null ],
+ [ "setPeriod", "classmrs__lib_1_1MRSTimer.html#acf818ea5cffe17b89ed00866ca7cbeff", null ],
+ [ "start", "classmrs__lib_1_1MRSTimer.html#afda0c038cd360ccaa71b95227e413b44", null ],
+ [ "stop", "classmrs__lib_1_1MRSTimer.html#aeda0660a5031f17bb57f55f4166e737e", null ]
+];
\ No newline at end of file
diff --git a/classmrs__lib_1_1MRSTimer__inherit__graph.map b/classmrs__lib_1_1MRSTimer__inherit__graph.map
new file mode 100644
index 00000000..161319f3
--- /dev/null
+++ b/classmrs__lib_1_1MRSTimer__inherit__graph.map
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/classmrs__lib_1_1MRSTimer__inherit__graph.md5 b/classmrs__lib_1_1MRSTimer__inherit__graph.md5
new file mode 100644
index 00000000..d179a26a
--- /dev/null
+++ b/classmrs__lib_1_1MRSTimer__inherit__graph.md5
@@ -0,0 +1 @@
+91b834a2a406e2abf555446a03879b25
\ No newline at end of file
diff --git a/classmrs__lib_1_1MRSTimer__inherit__graph.png b/classmrs__lib_1_1MRSTimer__inherit__graph.png
new file mode 100644
index 00000000..7eceeafa
Binary files /dev/null and b/classmrs__lib_1_1MRSTimer__inherit__graph.png differ
diff --git a/classmrs__lib_1_1MedianFilter-members.html b/classmrs__lib_1_1MedianFilter-members.html
new file mode 100644
index 00000000..8c35f11f
--- /dev/null
+++ b/classmrs__lib_1_1MedianFilter-members.html
@@ -0,0 +1,121 @@
+
+
+
+
+
+
+
+mrs_lib: Member List
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
This is the complete list of members for mrs_lib::MedianFilter , including all inherited members.
+
+
+
+
+
+
diff --git a/classmrs__lib_1_1MedianFilter.html b/classmrs__lib_1_1MedianFilter.html
new file mode 100644
index 00000000..3ba795ee
--- /dev/null
+++ b/classmrs__lib_1_1MedianFilter.html
@@ -0,0 +1,628 @@
+
+
+
+
+
+
+
+mrs_lib: mrs_lib::MedianFilter Class Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Implementation of a median filter with a fixed-length buffer.
+ More...
+
+
#include <median_filter.h >
+
+
+ MedianFilter (const size_t buffer_length, const double min_value=-std::numeric_limits< double >::infinity(), const double max_value=std::numeric_limits< double >::infinity(), const double max_diff=std::numeric_limits< double >::infinity())
+ The main constructor. More...
+
+ MedianFilter ()
+ A convenience empty constructor that will construct an invalid filter. More...
+
+ MedianFilter (const MedianFilter &other)
+ A convenience copy constructor. More...
+
+ MedianFilter (MedianFilter &&other)
+ A convenience move constructor. More...
+
+MedianFilter & operator= (const MedianFilter &other)
+ A convenience copy assignment operator. More...
+
+MedianFilter & operator= (MedianFilter &&other)
+ A convenience move assignment operator. More...
+
+void add (const double value)
+ Add a new value to the buffer. More...
+
+bool check (const double value)
+ Check whether a value complies with the constraints. More...
+
+bool addCheck (const double value)
+ Add a new value to the buffer and check if it complies with the constraints. More...
+
+void clear ()
+ Clear the buffer of all values. More...
+
+bool full () const
+ Check whether the buffer is filled with values. More...
+
+double median () const
+ Obtain the median. More...
+
+bool initialized () const
+ Check whether the filter was initialized with a valid buffer length. More...
+
+void setBufferLength (const size_t buffer_length)
+ Set a new size of the buffer. More...
+
+void setMinValue (const double min_value)
+ Set a new minimal threshold for new values. More...
+
+void setMaxValue (const double max_value)
+ Set a new maximal threshold for new values. More...
+
+void setMaxDifference (const double max_diff)
+ Set a new maximal difference from median for new values. More...
+
+
+
+
Implementation of a median filter with a fixed-length buffer.
+
+
+
◆ MedianFilter() [1/4]
+
+
+
+
+
+ mrs_lib::MedianFilter::MedianFilter
+ (
+ const size_t
+ buffer_length ,
+
+
+
+
+ const double
+ min_value = -std::numeric_limits<double>::infinity()
,
+
+
+
+
+ const double
+ max_value = std::numeric_limits<double>::infinity()
,
+
+
+
+
+ const double
+ max_diff = std::numeric_limits<double>::infinity()
+
+
+
+ )
+
+
+
+
+
+
The main constructor.
+
Parameters
+
+ buffer_length the number of last values to be kept in the buffer.
+ min_value values below this threshold will be discarded (won't be added to the buffer).
+ max_value values above this threshold will be discarded.
+ max_diff values that differ from the current mean by more than this threshold will be discarded.
+
+
+
+
+
+
+
+
◆ MedianFilter() [2/4]
+
+
+
+
+
+ mrs_lib::MedianFilter::MedianFilter
+ (
+ )
+
+
+
+
+
+
A convenience empty constructor that will construct an invalid filter.
+
Warning This constructor will construct an unusable filter with a zero-length buffer. To actually initialize this object, use the main constructor. You can use the initialized() method to check whether the object is valid.
+
+
+
+
+
◆ MedianFilter() [3/4]
+
+
+
+
+
+ mrs_lib::MedianFilter::MedianFilter
+ (
+ const MedianFilter &
+ other )
+
+
+
+
+
+
A convenience copy constructor.
+
This constructor copies all data from the object that is being assigned from in a thread-safe manner.
+
Parameters
+
+ other the object to assign from.
+
+
+
+
+
+
+
+
◆ MedianFilter() [4/4]
+
+
+
+
+
+ mrs_lib::MedianFilter::MedianFilter
+ (
+ MedianFilter &&
+ other )
+
+
+
+
+
+
A convenience move constructor.
+
This constructor moves all data from the object that is being assigned from in a thread-safe manner, invalidating it.
+
Parameters
+
+ other the object to assign from. It will be invalid after this method returns.
+
+
+
+
+
+
+
+
+
◆ add()
+
+
+
+
+
+ void mrs_lib::MedianFilter::add
+ (
+ const double
+ value )
+
+
+
+
+
+
Add a new value to the buffer.
+
Note The median value will not be updated until the median() method is called (lazy evaluation).
+
Parameters
+
+ value the new value to be added to the buffer.
+
+
+
+
+
+
+
+
◆ addCheck()
+
+
+
+
+
+ bool mrs_lib::MedianFilter::addCheck
+ (
+ const double
+ value )
+
+
+
+
+
+
Add a new value to the buffer and check if it complies with the constraints.
+
The value is compliant if it's above the min_value
, below the max_value
and its (absolute) difference from the current mean is below max_diff
.
+
Note The median value will not be updated until the median() method is called (lazy evaluation).
+
Parameters
+
+ value the new value to be added to the buffer and checked.
+
+
+
+
Returns true if the value is compliant, false otherwise.
+
+
+
+
+
◆ check()
+
+
+
+
+
+ bool mrs_lib::MedianFilter::check
+ (
+ const double
+ value )
+
+
+
+
+
+
Check whether a value complies with the constraints.
+
The value is compliant if it's above the min_value
, below the max_value
and its (absolute) difference from the current mean is below max_diff
.
+
Parameters
+
+ value the value to be checked.
+
+
+
+
Returns true if the value is compliant, false otherwise.
+
+
+
+
+
◆ clear()
+
+
+
+
+
+ void mrs_lib::MedianFilter::clear
+ (
+ )
+
+
+
+
+
+
Clear the buffer of all values.
+
Doesn't change the buffer's length set in the constructor or any other parameters, only clears all stored values.
+
+
+
+
+
◆ full()
+
+
+
+
+
+ bool mrs_lib::MedianFilter::full
+ (
+ )
+ const
+
+
+
+
+
Check whether the buffer is filled with values.
+
If true, adding a new value will remove the oldest value in the buffer.
+
Returns true if the buffer contains buffer_length
values.
+
+
+
+
+
◆ initialized()
+
+
+
+
+
+ bool mrs_lib::MedianFilter::initialized
+ (
+ )
+ const
+
+
+
+
+
Check whether the filter was initialized with a valid buffer length.
+
Returns true if the buffer length is larger than zero.
+
+
+
+
+
◆ median()
+
+
+
+
+
+ double mrs_lib::MedianFilter::median
+ (
+ )
+ const
+
+
+
+
+
Obtain the median.
+
If an up-to-date median value is available, it's not recalculated. Otherwise, the new median value is calculated and then returned (lazy evaluation).
+
Returns the current median value (returns nan
if the input buffer is empty).
+
+
+
+
+
◆ operator=() [1/2]
+
+
+
+
+
A convenience copy assignment operator.
+
This operator copies all data from the object that is being assigned from in a thread-safe manner.
+
Parameters
+
+ other the object to assign from.
+
+
+
+
Returns a reference to the object being assigned to.
+
+
+
+
+
◆ operator=() [2/2]
+
+
+
+
+
A convenience move assignment operator.
+
This operator moves all data from the object that is being assigned from in a thread-safe manner, invalidating it.
+
Parameters
+
+ other the object to assign from. It will be invalid after this method returns.
+
+
+
+
Returns a reference to the object being assigned to.
+
+
+
+
+
◆ setBufferLength()
+
+
+
+
+
+ void mrs_lib::MedianFilter::setBufferLength
+ (
+ const size_t
+ buffer_length )
+
+
+
+
+
+
Set a new size of the buffer.
+
Note The median value may change.
+
Parameters
+
+ buffer_length the new size of the buffer.
+
+
+
+
+
+
+
+
◆ setMaxDifference()
+
+
+
+
+
+ void mrs_lib::MedianFilter::setMaxDifference
+ (
+ const double
+ max_diff )
+
+
+
+
+
+
Set a new maximal difference from median for new values.
+
Note The current buffer is not changed - the change only applies to new values.
+
Parameters
+
+ max_diff the new maximal difference of new buffer elements from the current median.
+
+
+
+
+
+
+
+
◆ setMaxValue()
+
+
+
+
+
+ void mrs_lib::MedianFilter::setMaxValue
+ (
+ const double
+ max_value )
+
+
+
+
+
+
Set a new maximal threshold for new values.
+
Note The current buffer is not changed - the change only applies to new values.
+
Parameters
+
+ max_value the new maximal value of new buffer elements.
+
+
+
+
+
+
+
+
◆ setMinValue()
+
+
+
+
+
+ void mrs_lib::MedianFilter::setMinValue
+ (
+ const double
+ min_value )
+
+
+
+
+
+
Set a new minimal threshold for new values.
+
Note The current buffer is not changed - the change only applies to new values.
+
Parameters
+
+ min_value the new minimal value of new buffer elements.
+
+
+
+
+
+
+
The documentation for this class was generated from the following files:
+
+
+
+
+
+
diff --git a/classmrs__lib_1_1MedianFilter.js b/classmrs__lib_1_1MedianFilter.js
new file mode 100644
index 00000000..4bf0f88b
--- /dev/null
+++ b/classmrs__lib_1_1MedianFilter.js
@@ -0,0 +1,20 @@
+var classmrs__lib_1_1MedianFilter =
+[
+ [ "MedianFilter", "classmrs__lib_1_1MedianFilter.html#a6c6bd20d15d66535b900634396e99f51", null ],
+ [ "MedianFilter", "classmrs__lib_1_1MedianFilter.html#ae810bd254e4fccfeb883b4585062f166", null ],
+ [ "MedianFilter", "classmrs__lib_1_1MedianFilter.html#aa17291d605ef5364db2835745a2c669c", null ],
+ [ "MedianFilter", "classmrs__lib_1_1MedianFilter.html#a46da8f440b739a1d01710104fc38611c", null ],
+ [ "add", "classmrs__lib_1_1MedianFilter.html#aaf3d8e3bab539001962f2b29dabd314d", null ],
+ [ "addCheck", "classmrs__lib_1_1MedianFilter.html#a234342f8780bce6019f5183f798fe348", null ],
+ [ "check", "classmrs__lib_1_1MedianFilter.html#a518d744f114ad6d0b2591d3804f6f095", null ],
+ [ "clear", "classmrs__lib_1_1MedianFilter.html#a533c6e194f991a9c11b9e2aadf7087a5", null ],
+ [ "full", "classmrs__lib_1_1MedianFilter.html#acdd73f7ffc9868eb6a05e7b6aea35d85", null ],
+ [ "initialized", "classmrs__lib_1_1MedianFilter.html#a843ddc70b6daf92fa91f225fab5b36f7", null ],
+ [ "median", "classmrs__lib_1_1MedianFilter.html#a53562ea9addbf12ba3cd257cdede4af6", null ],
+ [ "operator=", "classmrs__lib_1_1MedianFilter.html#ab30170b4f0d029c66e0a616936c7b693", null ],
+ [ "operator=", "classmrs__lib_1_1MedianFilter.html#acc63d667e153c07ea9481eb0b3d74c54", null ],
+ [ "setBufferLength", "classmrs__lib_1_1MedianFilter.html#af2888fa7449ce3ebc82f3255a519fe6a", null ],
+ [ "setMaxDifference", "classmrs__lib_1_1MedianFilter.html#a82d854470b0920fac623472721b01601", null ],
+ [ "setMaxValue", "classmrs__lib_1_1MedianFilter.html#a8162e19bd901f6dcd542d4c8615732f9", null ],
+ [ "setMinValue", "classmrs__lib_1_1MedianFilter.html#a569e93d2d4be9632db2943fedb8133ba", null ]
+];
\ No newline at end of file
diff --git a/classmrs__lib_1_1NCLKF-members.html b/classmrs__lib_1_1NCLKF-members.html
new file mode 100644
index 00000000..c243d73b
--- /dev/null
+++ b/classmrs__lib_1_1NCLKF-members.html
@@ -0,0 +1,138 @@
+
+
+
+
+
+
+
+mrs_lib: Member List
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
This is the complete list of members for mrs_lib::NCLKF< n_states, n_inputs, n_measurements > , including all inherited members.
+
+ A mrs_lib::LKF< n_states, n_inputs, n_measurements >
+ A_t typedefmrs_lib::NCLKF< n_states, n_inputs, n_measurements >
+ B mrs_lib::LKF< n_states, n_inputs, n_measurements >
+ B_t typedefmrs_lib::NCLKF< n_states, n_inputs, n_measurements >
+ Base_class typedefmrs_lib::NCLKF< n_states, n_inputs, n_measurements >
+ computeKalmanGain (const statecov_t &sc, const z_t &z, const R_t &R, const H_t &H) const override (defined in mrs_lib::NCLKF< n_states, n_inputs, n_measurements > )mrs_lib::NCLKF< n_states, n_inputs, n_measurements > inline protected virtual
+ computeKalmanGain (const statecov_t &sc, [[maybe_unused]] const z_t &z, const R_t &R, const H_t &H) const (defined in mrs_lib::LKF< n_states, n_inputs, n_measurements > )mrs_lib::LKF< n_states, n_inputs, n_measurements > inline protected virtual
+ correct (const statecov_t &sc, const z_t &z, const R_t &R) const overridemrs_lib::LKF< n_states, n_inputs, n_measurements > inline virtual
+ mrs_lib::KalmanFilter::correct (const statecov_t &sc, const z_t &z, const R_t &R) const =0mrs_lib::KalmanFilter< n_states, n_inputs, n_measurements > pure virtual
+ correction_impl (const statecov_t &sc, const z_t &z, const R_t &R, const H_t &H) const (defined in mrs_lib::LKF< n_states, n_inputs, n_measurements > )mrs_lib::LKF< n_states, n_inputs, n_measurements > inline protected
+ covariance_predict (const A_t &A, const P_t &P, const Q_t &Q, const double dt) (defined in mrs_lib::LKF< n_states, n_inputs, n_measurements > )mrs_lib::LKF< n_states, n_inputs, n_measurements > inline protected static
+ H mrs_lib::LKF< n_states, n_inputs, n_measurements >
+ H_t typedefmrs_lib::NCLKF< n_states, n_inputs, n_measurements >
+ invert_W (R_t W) (defined in mrs_lib::LKF< n_states, n_inputs, n_measurements > )mrs_lib::LKF< n_states, n_inputs, n_measurements > inline protected static
+ K_t typedefmrs_lib::NCLKF< n_states, n_inputs, n_measurements >
+ l (defined in mrs_lib::NCLKF< n_states, n_inputs, n_measurements > )mrs_lib::NCLKF< n_states, n_inputs, n_measurements > protected
+ LKF ()mrs_lib::LKF< n_states, n_inputs, n_measurements > inline
+ LKF (const A_t &A, const B_t &B, const H_t &H)mrs_lib::LKF< n_states, n_inputs, n_measurements > inline
+ m mrs_lib::NCLKF< n_states, n_inputs, n_measurements > static
+ n mrs_lib::NCLKF< n_states, n_inputs, n_measurements > static
+ NCLKF ()mrs_lib::NCLKF< n_states, n_inputs, n_measurements > inline
+ NCLKF (const A_t &A, const B_t &B, const H_t &H, const double l)mrs_lib::NCLKF< n_states, n_inputs, n_measurements > inline
+ p mrs_lib::NCLKF< n_states, n_inputs, n_measurements > static
+ P_t typedefmrs_lib::NCLKF< n_states, n_inputs, n_measurements >
+ predict (const statecov_t &sc, const u_t &u, const Q_t &Q, [[maybe_unused]] double dt) const overridemrs_lib::LKF< n_states, n_inputs, n_measurements > inline virtual
+ mrs_lib::KalmanFilter::predict (const statecov_t &sc, const u_t &u, const Q_t &Q, double dt) const =0mrs_lib::KalmanFilter< n_states, n_inputs, n_measurements > pure virtual
+ Q_t typedefmrs_lib::NCLKF< n_states, n_inputs, n_measurements >
+ R_t typedefmrs_lib::NCLKF< n_states, n_inputs, n_measurements >
+ state_predict (const A_t &A, const x_t &x, [[maybe_unused]] const B_t &B, [[maybe_unused]] const u_t &u) (defined in mrs_lib::LKF< n_states, n_inputs, n_measurements > )mrs_lib::LKF< n_states, n_inputs, n_measurements > inline protected static
+ state_predict (const A_t &A, const x_t &x, const B_t &B, const u_t &u) (defined in mrs_lib::LKF< n_states, n_inputs, n_measurements > )mrs_lib::LKF< n_states, n_inputs, n_measurements > inline protected static
+ statecov_t typedefmrs_lib::NCLKF< n_states, n_inputs, n_measurements >
+ u_t typedefmrs_lib::NCLKF< n_states, n_inputs, n_measurements >
+ x_t typedefmrs_lib::NCLKF< n_states, n_inputs, n_measurements >
+ z_t typedefmrs_lib::NCLKF< n_states, n_inputs, n_measurements >
+
+
+
+
+
+
diff --git a/classmrs__lib_1_1NCLKF.html b/classmrs__lib_1_1NCLKF.html
new file mode 100644
index 00000000..428fa65f
--- /dev/null
+++ b/classmrs__lib_1_1NCLKF.html
@@ -0,0 +1,487 @@
+
+
+
+
+
+
+
+mrs_lib: mrs_lib::NCLKF< n_states, n_inputs, n_measurements > Class Template Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
This class implements the norm-constrained linear Kalman filter [5] .
+ More...
+
+
#include <nckf.h >
+
+
+
+
+
+
+
+
+
+
+
+using Base_class = LKF < n , m , p >
+ Base class of this class.
+
+
+using x_t = typename Base_class::x_t
+ State vector type .
+
+
+using u_t = typename Base_class::u_t
+ Input vector type .
+
+
+using z_t = typename Base_class::z_t
+ Measurement vector type .
+
+
+using P_t = typename Base_class::P_t
+ State uncertainty covariance matrix type .
+
+
+using R_t = typename Base_class::R_t
+ Measurement noise covariance matrix type .
+
+
+using Q_t = typename Base_class::Q_t
+ Process noise covariance matrix type .
+
+
+using statecov_t = typename Base_class::statecov_t
+ Helper struct for passing around the state and its covariance in one variable.
+
+
+using A_t = typename Base_class::A_t
+ System transition matrix type .
+
+
+using B_t = typename Base_class::B_t
+ Input to state mapping matrix type .
+
+
+using H_t = typename Base_class::H_t
+ State to measurement mapping matrix type .
+
+
+using K_t = typename Base_class::K_t
+ Kalman gain matrix type .
+
+
+
+using Base_class = KalmanFilter < n , m , p >
+ Base class of this class.
+
+
+using x_t = typename Base_class::x_t
+ State vector type .
+
+
+using u_t = typename Base_class::u_t
+ Input vector type .
+
+
+using z_t = typename Base_class::z_t
+ Measurement vector type .
+
+
+using P_t = typename Base_class::P_t
+ State uncertainty covariance matrix type .
+
+
+using R_t = typename Base_class::R_t
+ Measurement noise covariance matrix type .
+
+
+using Q_t = typename Base_class::Q_t
+ Process noise covariance matrix type .
+
+
+using statecov_t = typename Base_class::statecov_t
+ Helper struct for passing around the state and its covariance in one variable.
+
+
+typedef Eigen::Matrix< double, n , n > A_t
+ System transition matrix type .
+
+
+typedef Eigen::Matrix< double, n , m > B_t
+ Input to state mapping matrix type .
+
+
+typedef Eigen::Matrix< double, p , n > H_t
+ State to measurement mapping matrix type .
+
+
+typedef Eigen::Matrix< double, n , p > K_t
+ Kalman gain matrix type .
+
+
+
+typedef Eigen::Matrix< double, n , 1 > x_t
+ State vector type .
+
+
+typedef Eigen::Matrix< double, m , 1 > u_t
+ Input vector type .
+
+
+typedef Eigen::Matrix< double, p , 1 > z_t
+ Measurement vector type .
+
+
+typedef Eigen::Matrix< double, n , n > P_t
+ State uncertainty covariance matrix type .
+
+
+typedef Eigen::Matrix< double, p , p > R_t
+ Measurement noise covariance matrix type .
+
+
+typedef Eigen::Matrix< double, n , n > Q_t
+ Process noise covariance matrix type .
+
+
+
+ NCLKF ()
+ Convenience default constructor. More...
+
+ NCLKF (const A_t &A , const B_t &B , const H_t &H , const double l)
+ The main constructor. More...
+
+
+ LKF ()
+ Convenience default constructor. More...
+
+ LKF (const A_t &A , const B_t &B , const H_t &H )
+ The main constructor. More...
+
+virtual statecov_t correct (const statecov_t &sc, const z_t &z, const R_t &R) const override
+ Applies the correction (update, measurement, data) step of the Kalman filter. More...
+
+virtual statecov_t predict (const statecov_t &sc, const u_t &u, const Q_t &Q, [[maybe_unused]] double dt) const override
+ Applies the prediction (time) step of the Kalman filter. More...
+
+
+virtual statecov_t correct (const statecov_t &sc, const z_t &z, const R_t &R) const =0
+ Applies the correction (update, measurement, data) step of the Kalman filter. More...
+
+virtual statecov_t predict (const statecov_t &sc, const u_t &u, const Q_t &Q, double dt) const =0
+ Applies the prediction (time) step of the Kalman filter. More...
+
+
+
+
+static const int n = n_states
+ Length of the state vector of the system.
+
+
+static const int m = n_inputs
+ Length of the input vector of the system.
+
+
+static const int p = n_measurements
+ Length of the measurement vector of the system.
+
+
+
+static constexpr int n = n_states
+ Length of the state vector of the system.
+
+
+static constexpr int m = n_inputs
+ Length of the input vector of the system.
+
+
+static constexpr int p = n_measurements
+ Length of the measurement vector of the system.
+
+
+
+static const int n = n_states
+ Length of the state vector of the system.
+
+
+static const int m = n_inputs
+ Length of the input vector of the system.
+
+
+static const int p = n_measurements
+ Length of the measurement vector of the system.
+
+
+
+
+
+A_t A
+ The system transition matrix .
+
+
+B_t B
+ The input to state mapping matrix .
+
+
+H_t H
+ The state to measurement mapping matrix .
+
+
+
+static P_t covariance_predict (const A_t &A , const P_t &P, const Q_t &Q, const double dt)
+
+
+template<int check = n_inputs>
+static std::enable_if< check==0, x_t >::type state_predict (const A_t &A , const x_t &x, [[maybe_unused]] const B_t &B , [[maybe_unused]] const u_t &u)
+
+
+template<int check = n_inputs>
+static std::enable_if< check !=0, x_t >::type state_predict (const A_t &A , const x_t &x, const B_t &B , const u_t &u)
+
+
+static R_t invert_W (R_t W)
+
+
+
+
template<int n_states, int n_inputs, int n_measurements>
+class mrs_lib::NCLKF< n_states, n_inputs, n_measurements >
+
+
This class implements the norm-constrained linear Kalman filter [5] .
+
Note that the class is templated. The template parameters specify the number of states, number of inputs and number of measurements of the system. The last template parameter specifies the number of states which are norm-constrained.
+
The norm constraint is specified in the constructor and applied to the whole state vector of the system.
+
+
+
◆ NCLKF() [1/2]
+
+
+
+
+template<int n_states, int n_inputs, int n_measurements>
+
+
+
+
Convenience default constructor.
+
This constructor should not be used if applicable. If used, the main constructor has to be called afterwards, before using this class, otherwise the object is invalid (not initialized).
+
+
+
+
+
◆ NCLKF() [2/2]
+
+
+
+
+template<int n_states, int n_inputs, int n_measurements>
+
+
+
+
+
+ mrs_lib::NCLKF < n_states, n_inputs, n_measurements >::NCLKF
+ (
+ const A_t &
+ A ,
+
+
+
+
+ const B_t &
+ B ,
+
+
+
+
+ const H_t &
+ H ,
+
+
+
+
+ const double
+ l
+
+
+
+ )
+
+
+
+
+
+inline
+
+
+
+
+
The main constructor.
+
Parameters
+
+ A State transition matrix of the system (n x n).
+ B Input to state mapping matrix of the system (n x m).
+ H State to measurement mapping matrix of the system (p x n).
+ l The norm constraint, applied to the specified states.
+
+
+
+
+
+
+
The documentation for this class was generated from the following file:
+
+
+
+
+
+
diff --git a/classmrs__lib_1_1NCLKF.js b/classmrs__lib_1_1NCLKF.js
new file mode 100644
index 00000000..76c11501
--- /dev/null
+++ b/classmrs__lib_1_1NCLKF.js
@@ -0,0 +1,19 @@
+var classmrs__lib_1_1NCLKF =
+[
+ [ "A_t", "classmrs__lib_1_1NCLKF.html#aa7b38a32abe6a319930d6392178d5e3e", null ],
+ [ "B_t", "classmrs__lib_1_1NCLKF.html#af283625e8caefbccb8ca64072dab91a8", null ],
+ [ "Base_class", "classmrs__lib_1_1NCLKF.html#aa670be9fba29c7d8d8c7c849d9d844d1", null ],
+ [ "H_t", "classmrs__lib_1_1NCLKF.html#a92eb1e6f9fe04297bb54fdfbdc74d460", null ],
+ [ "K_t", "classmrs__lib_1_1NCLKF.html#ae2d30fe948b17723e0a89450044f8f93", null ],
+ [ "P_t", "classmrs__lib_1_1NCLKF.html#a1448842265f0b39d5da536488d146db3", null ],
+ [ "Q_t", "classmrs__lib_1_1NCLKF.html#aab7df7efe1e8e70d0e79ad374c6674a0", null ],
+ [ "R_t", "classmrs__lib_1_1NCLKF.html#a4b6b964e9491ca80fdfc1afacc9b23fc", null ],
+ [ "statecov_t", "classmrs__lib_1_1NCLKF.html#abac1b51597611226f2c0642230207e71", null ],
+ [ "u_t", "classmrs__lib_1_1NCLKF.html#a8992c34838e430a64b070929e92c263a", null ],
+ [ "x_t", "classmrs__lib_1_1NCLKF.html#a8fa90de14ea4fa4125882bd49d101888", null ],
+ [ "z_t", "classmrs__lib_1_1NCLKF.html#a80db36613d09068f8daa0dc7e735dc64", null ],
+ [ "NCLKF", "classmrs__lib_1_1NCLKF.html#a5f970519deaccdbb021df412645f26d5", null ],
+ [ "NCLKF", "classmrs__lib_1_1NCLKF.html#aa4dcb47ceca9f506407e14858567ea09", null ],
+ [ "computeKalmanGain", "classmrs__lib_1_1NCLKF.html#a16d5bb9adb1708072bd039ab8355c356", null ],
+ [ "l", "classmrs__lib_1_1NCLKF.html#a9844bbffd20b73e814d54aebad840fb0", null ]
+];
\ No newline at end of file
diff --git a/classmrs__lib_1_1NCLKF__coll__graph.map b/classmrs__lib_1_1NCLKF__coll__graph.map
new file mode 100644
index 00000000..79425643
--- /dev/null
+++ b/classmrs__lib_1_1NCLKF__coll__graph.map
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/classmrs__lib_1_1NCLKF__coll__graph.md5 b/classmrs__lib_1_1NCLKF__coll__graph.md5
new file mode 100644
index 00000000..6207a81e
--- /dev/null
+++ b/classmrs__lib_1_1NCLKF__coll__graph.md5
@@ -0,0 +1 @@
+9b5f7a421a6d634d8650c925d569af45
\ No newline at end of file
diff --git a/classmrs__lib_1_1NCLKF__coll__graph.png b/classmrs__lib_1_1NCLKF__coll__graph.png
new file mode 100644
index 00000000..c1514078
Binary files /dev/null and b/classmrs__lib_1_1NCLKF__coll__graph.png differ
diff --git a/classmrs__lib_1_1NCLKF__inherit__graph.map b/classmrs__lib_1_1NCLKF__inherit__graph.map
new file mode 100644
index 00000000..4949a82c
--- /dev/null
+++ b/classmrs__lib_1_1NCLKF__inherit__graph.map
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/classmrs__lib_1_1NCLKF__inherit__graph.md5 b/classmrs__lib_1_1NCLKF__inherit__graph.md5
new file mode 100644
index 00000000..e64927bd
--- /dev/null
+++ b/classmrs__lib_1_1NCLKF__inherit__graph.md5
@@ -0,0 +1 @@
+17888d7784436d4e5ab7188880b89f72
\ No newline at end of file
diff --git a/classmrs__lib_1_1NCLKF__inherit__graph.png b/classmrs__lib_1_1NCLKF__inherit__graph.png
new file mode 100644
index 00000000..49bda7b9
Binary files /dev/null and b/classmrs__lib_1_1NCLKF__inherit__graph.png differ
diff --git a/classmrs__lib_1_1NCLKF__partial-members.html b/classmrs__lib_1_1NCLKF__partial-members.html
new file mode 100644
index 00000000..0af18870
--- /dev/null
+++ b/classmrs__lib_1_1NCLKF__partial-members.html
@@ -0,0 +1,145 @@
+
+
+
+
+
+
+
+mrs_lib: Member List
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
This is the complete list of members for mrs_lib::NCLKF_partial< n_states, n_inputs, n_measurements, n_norm_constrained_states > , including all inherited members.
+
+ A mrs_lib::LKF< n_states, n_inputs, n_measurements >
+ A_t typedefmrs_lib::NCLKF_partial< n_states, n_inputs, n_measurements, n_norm_constrained_states >
+ B mrs_lib::LKF< n_states, n_inputs, n_measurements >
+ B_t typedefmrs_lib::NCLKF_partial< n_states, n_inputs, n_measurements, n_norm_constrained_states >
+ Base_class typedefmrs_lib::NCLKF_partial< n_states, n_inputs, n_measurements, n_norm_constrained_states >
+ computeKalmanGain (const statecov_t &sc, const z_t &z, const R_t &R, const H_t &H) const override (defined in mrs_lib::NCLKF_partial< n_states, n_inputs, n_measurements, n_norm_constrained_states > )mrs_lib::NCLKF_partial< n_states, n_inputs, n_measurements, n_norm_constrained_states > inline protected virtual
+ computeKalmanGain (const statecov_t &sc, [[maybe_unused]] const z_t &z, const R_t &R, const H_t &H) const (defined in mrs_lib::LKF< n_states, n_inputs, n_measurements > )mrs_lib::LKF< n_states, n_inputs, n_measurements > inline protected virtual
+ correct (const statecov_t &sc, const z_t &z, const R_t &R) const overridemrs_lib::LKF< n_states, n_inputs, n_measurements > inline virtual
+ mrs_lib::KalmanFilter::correct (const statecov_t &sc, const z_t &z, const R_t &R) const =0mrs_lib::KalmanFilter< n_states, n_inputs, n_measurements > pure virtual
+ correction_impl (const statecov_t &sc, const z_t &z, const R_t &R, const H_t &H) const (defined in mrs_lib::LKF< n_states, n_inputs, n_measurements > )mrs_lib::LKF< n_states, n_inputs, n_measurements > inline protected
+ covariance_predict (const A_t &A, const P_t &P, const Q_t &Q, const double dt) (defined in mrs_lib::LKF< n_states, n_inputs, n_measurements > )mrs_lib::LKF< n_states, n_inputs, n_measurements > inline protected static
+ H mrs_lib::LKF< n_states, n_inputs, n_measurements >
+ H_t typedefmrs_lib::NCLKF_partial< n_states, n_inputs, n_measurements, n_norm_constrained_states >
+ Hq_t typedefmrs_lib::NCLKF_partial< n_states, n_inputs, n_measurements, n_norm_constrained_states >
+ indices_t typedefmrs_lib::NCLKF_partial< n_states, n_inputs, n_measurements, n_norm_constrained_states >
+ invert_W (R_t W) (defined in mrs_lib::LKF< n_states, n_inputs, n_measurements > )mrs_lib::LKF< n_states, n_inputs, n_measurements > inline protected static
+ K_t typedefmrs_lib::NCLKF_partial< n_states, n_inputs, n_measurements, n_norm_constrained_states >
+ Kq_t typedefmrs_lib::NCLKF_partial< n_states, n_inputs, n_measurements, n_norm_constrained_states >
+ l (defined in mrs_lib::NCLKF< n_states, n_inputs, n_measurements > )mrs_lib::NCLKF< n_states, n_inputs, n_measurements > protected
+ LKF ()mrs_lib::LKF< n_states, n_inputs, n_measurements > inline
+ LKF (const A_t &A, const B_t &B, const H_t &H)mrs_lib::LKF< n_states, n_inputs, n_measurements > inline
+ m mrs_lib::NCLKF_partial< n_states, n_inputs, n_measurements, n_norm_constrained_states > static
+ n mrs_lib::NCLKF_partial< n_states, n_inputs, n_measurements, n_norm_constrained_states > static
+ NCLKF ()mrs_lib::NCLKF< n_states, n_inputs, n_measurements > inline
+ NCLKF (const A_t &A, const B_t &B, const H_t &H, const double l)mrs_lib::NCLKF< n_states, n_inputs, n_measurements > inline
+ NCLKF_partial ()mrs_lib::NCLKF_partial< n_states, n_inputs, n_measurements, n_norm_constrained_states > inline
+ NCLKF_partial (const A_t &A, const B_t &B, const H_t &H, const double l, const indices_t &norm_constrained_indices)mrs_lib::NCLKF_partial< n_states, n_inputs, n_measurements, n_norm_constrained_states > inline
+ nq mrs_lib::NCLKF_partial< n_states, n_inputs, n_measurements, n_norm_constrained_states > static
+ p mrs_lib::NCLKF_partial< n_states, n_inputs, n_measurements, n_norm_constrained_states > static
+ P_t typedefmrs_lib::NCLKF_partial< n_states, n_inputs, n_measurements, n_norm_constrained_states >
+ predict (const statecov_t &sc, const u_t &u, const Q_t &Q, [[maybe_unused]] double dt) const overridemrs_lib::LKF< n_states, n_inputs, n_measurements > inline virtual
+ mrs_lib::KalmanFilter::predict (const statecov_t &sc, const u_t &u, const Q_t &Q, double dt) const =0mrs_lib::KalmanFilter< n_states, n_inputs, n_measurements > pure virtual
+ Q_t typedefmrs_lib::NCLKF_partial< n_states, n_inputs, n_measurements, n_norm_constrained_states >
+ R_t typedefmrs_lib::NCLKF_partial< n_states, n_inputs, n_measurements, n_norm_constrained_states >
+ state_predict (const A_t &A, const x_t &x, [[maybe_unused]] const B_t &B, [[maybe_unused]] const u_t &u) (defined in mrs_lib::LKF< n_states, n_inputs, n_measurements > )mrs_lib::LKF< n_states, n_inputs, n_measurements > inline protected static
+ state_predict (const A_t &A, const x_t &x, const B_t &B, const u_t &u) (defined in mrs_lib::LKF< n_states, n_inputs, n_measurements > )mrs_lib::LKF< n_states, n_inputs, n_measurements > inline protected static
+ statecov_t typedefmrs_lib::NCLKF_partial< n_states, n_inputs, n_measurements, n_norm_constrained_states >
+ u_t typedefmrs_lib::NCLKF_partial< n_states, n_inputs, n_measurements, n_norm_constrained_states >
+ x_t typedefmrs_lib::NCLKF_partial< n_states, n_inputs, n_measurements, n_norm_constrained_states >
+ xq_t typedefmrs_lib::NCLKF_partial< n_states, n_inputs, n_measurements, n_norm_constrained_states >
+ z_t typedefmrs_lib::NCLKF_partial< n_states, n_inputs, n_measurements, n_norm_constrained_states >
+
+
+
+
+
+
diff --git a/classmrs__lib_1_1NCLKF__partial.html b/classmrs__lib_1_1NCLKF__partial.html
new file mode 100644
index 00000000..718d9c40
--- /dev/null
+++ b/classmrs__lib_1_1NCLKF__partial.html
@@ -0,0 +1,789 @@
+
+
+
+
+
+
+
+mrs_lib: mrs_lib::NCLKF_partial< n_states, n_inputs, n_measurements, n_norm_constrained_states > Class Template Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
This class implements the partially norm-constrained linear Kalman filter [5] .
+ More...
+
+
#include <nckf.h >
+
+
+
+
+
+
+
+
+
+
+
+using Base_class = NCLKF < n , m , p >
+ Base class of this class.
+
+
+using x_t = typename Base_class::x_t
+ State vector type .
+
+
+using u_t = typename Base_class::u_t
+ Input vector type .
+
+
+using z_t = typename Base_class::z_t
+ Measurement vector type .
+
+
+using P_t = typename Base_class::P_t
+ State uncertainty covariance matrix type .
+
+
+using R_t = typename Base_class::R_t
+ Measurement noise covariance matrix type .
+
+
+using Q_t = typename Base_class::Q_t
+ Process noise covariance matrix type .
+
+
+using statecov_t = typename Base_class::statecov_t
+ Helper struct for passing around the state and its covariance in one variable.
+
+
+using A_t = typename Base_class::A_t
+ System transition matrix type .
+
+
+using B_t = typename Base_class::B_t
+ Input to state mapping matrix type .
+
+
+using H_t = typename Base_class::H_t
+ State to measurement mapping matrix type .
+
+
+using K_t = typename Base_class::K_t
+ Kalman gain matrix type .
+
+
+using indices_t = std::array< int, nq >
+ Indices of the norm-constrained states type.
+
+
+using xq_t = Eigen::Matrix< double, nq , 1 >
+ Norm-constrained states vector type .
+
+
+using Hq_t = Eigen::Matrix< double, p , nq >
+ Norm-constrained measurement mapping type .
+
+
+using Kq_t = Eigen::Matrix< double, nq , p >
+ Norm-constrained kalman gain type .
+
+
+
+using Base_class = LKF < n , m , p >
+ Base class of this class.
+
+
+using x_t = typename Base_class::x_t
+ State vector type .
+
+
+using u_t = typename Base_class::u_t
+ Input vector type .
+
+
+using z_t = typename Base_class::z_t
+ Measurement vector type .
+
+
+using P_t = typename Base_class::P_t
+ State uncertainty covariance matrix type .
+
+
+using R_t = typename Base_class::R_t
+ Measurement noise covariance matrix type .
+
+
+using Q_t = typename Base_class::Q_t
+ Process noise covariance matrix type .
+
+
+using statecov_t = typename Base_class::statecov_t
+ Helper struct for passing around the state and its covariance in one variable.
+
+
+using A_t = typename Base_class::A_t
+ System transition matrix type .
+
+
+using B_t = typename Base_class::B_t
+ Input to state mapping matrix type .
+
+
+using H_t = typename Base_class::H_t
+ State to measurement mapping matrix type .
+
+
+using K_t = typename Base_class::K_t
+ Kalman gain matrix type .
+
+
+
+using Base_class = KalmanFilter < n , m , p >
+ Base class of this class.
+
+
+using x_t = typename Base_class::x_t
+ State vector type .
+
+
+using u_t = typename Base_class::u_t
+ Input vector type .
+
+
+using z_t = typename Base_class::z_t
+ Measurement vector type .
+
+
+using P_t = typename Base_class::P_t
+ State uncertainty covariance matrix type .
+
+
+using R_t = typename Base_class::R_t
+ Measurement noise covariance matrix type .
+
+
+using Q_t = typename Base_class::Q_t
+ Process noise covariance matrix type .
+
+
+using statecov_t = typename Base_class::statecov_t
+ Helper struct for passing around the state and its covariance in one variable.
+
+
+typedef Eigen::Matrix< double, n , n > A_t
+ System transition matrix type .
+
+
+typedef Eigen::Matrix< double, n , m > B_t
+ Input to state mapping matrix type .
+
+
+typedef Eigen::Matrix< double, p , n > H_t
+ State to measurement mapping matrix type .
+
+
+typedef Eigen::Matrix< double, n , p > K_t
+ Kalman gain matrix type .
+
+
+
+typedef Eigen::Matrix< double, n , 1 > x_t
+ State vector type .
+
+
+typedef Eigen::Matrix< double, m , 1 > u_t
+ Input vector type .
+
+
+typedef Eigen::Matrix< double, p , 1 > z_t
+ Measurement vector type .
+
+
+typedef Eigen::Matrix< double, n , n > P_t
+ State uncertainty covariance matrix type .
+
+
+typedef Eigen::Matrix< double, p , p > R_t
+ Measurement noise covariance matrix type .
+
+
+typedef Eigen::Matrix< double, n , n > Q_t
+ Process noise covariance matrix type .
+
+
+
+ NCLKF_partial ()
+ Convenience default constructor. More...
+
+ NCLKF_partial (const A_t &A , const B_t &B , const H_t &H , const double l, const indices_t &norm_constrained_indices)
+ The main constructor. More...
+
+
+ NCLKF ()
+ Convenience default constructor. More...
+
+ NCLKF (const A_t &A , const B_t &B , const H_t &H , const double l)
+ The main constructor. More...
+
+
+ LKF ()
+ Convenience default constructor. More...
+
+ LKF (const A_t &A , const B_t &B , const H_t &H )
+ The main constructor. More...
+
+virtual statecov_t correct (const statecov_t &sc, const z_t &z, const R_t &R) const override
+ Applies the correction (update, measurement, data) step of the Kalman filter. More...
+
+virtual statecov_t predict (const statecov_t &sc, const u_t &u, const Q_t &Q, [[maybe_unused]] double dt) const override
+ Applies the prediction (time) step of the Kalman filter. More...
+
+
+virtual statecov_t correct (const statecov_t &sc, const z_t &z, const R_t &R) const =0
+ Applies the correction (update, measurement, data) step of the Kalman filter. More...
+
+virtual statecov_t predict (const statecov_t &sc, const u_t &u, const Q_t &Q, double dt) const =0
+ Applies the prediction (time) step of the Kalman filter. More...
+
+
+
+
+static const int n = n_states
+ Length of the state vector of the system.
+
+
+static const int m = n_inputs
+ Length of the input vector of the system.
+
+
+static const int p = n_measurements
+ Length of the measurement vector of the system.
+
+
+static const int nq = n_norm_constrained_states
+ Number of states to which the norm constraint applies.
+
+
+
+static const int n = n_states
+ Length of the state vector of the system.
+
+
+static const int m = n_inputs
+ Length of the input vector of the system.
+
+
+static const int p = n_measurements
+ Length of the measurement vector of the system.
+
+
+
+static constexpr int n = n_states
+ Length of the state vector of the system.
+
+
+static constexpr int m = n_inputs
+ Length of the input vector of the system.
+
+
+static constexpr int p = n_measurements
+ Length of the measurement vector of the system.
+
+
+
+static const int n = n_states
+ Length of the state vector of the system.
+
+
+static const int m = n_inputs
+ Length of the input vector of the system.
+
+
+static const int p = n_measurements
+ Length of the measurement vector of the system.
+
+
+
+
+
+A_t A
+ The system transition matrix .
+
+
+B_t B
+ The input to state mapping matrix .
+
+
+H_t H
+ The state to measurement mapping matrix .
+
+
+
+static P_t covariance_predict (const A_t &A , const P_t &P, const Q_t &Q, const double dt)
+
+
+template<int check = n_inputs>
+static std::enable_if< check==0, x_t >::type state_predict (const A_t &A , const x_t &x, [[maybe_unused]] const B_t &B , [[maybe_unused]] const u_t &u)
+
+
+template<int check = n_inputs>
+static std::enable_if< check !=0, x_t >::type state_predict (const A_t &A , const x_t &x, const B_t &B , const u_t &u)
+
+
+static R_t invert_W (R_t W)
+
+
+
+double l
+
+
+
+
template<int n_states, int n_inputs, int n_measurements, int n_norm_constrained_states>
+class mrs_lib::NCLKF_partial< n_states, n_inputs, n_measurements, n_norm_constrained_states >
+
+
This class implements the partially norm-constrained linear Kalman filter [5] .
+
Note that the class is templated. The template parameters specify the number of states, number of inputs and number of measurements of the system. The last template parameter specifies the number of states which are norm-constrained.
+
The norm constraint is specified in the constructor together with the indices of the states to which the constraint applies.
+
Example usage:
+
+
#include <mrs_lib/nckf.h>
+
#include <random>
+
+
+
{
+
const int n_states = -1;
+
const int n_states_norm_constrained = 2;
+
const int n_inputs = 1;
+
const int n_measurements = 4;
+
+
+
using lkf_t = NCLKF_partial<n_states, n_inputs, n_measurements, n_states_norm_constrained>;
+
}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
x_t tra_model_f(const x_t& x, const u_t& u, [[maybe_unused]] const double dt)
+
{
+
x_t ret;
+
+
auto xq = ret.block<2, 1>(0, 0);
+
xq = xq/xq.norm();
+
ret.block<2, 1>(2, 0) = xq;
+
return ret;
+
}
+
+
+
z_t obs_model_f(const x_t& x)
+
{
+
+
}
+
+
template <int rows>
+
Eigen::Matrix<double, rows, 1> normal_randmat(const Eigen::Matrix<double, rows, rows>& cov)
+
{
+
static std::random_device rd{};
+
static std::mt19937 gen{rd()};
+
static std::normal_distribution<> d{0,1};
+
Eigen::Matrix<double, rows, 1> ret(
n , 1);
+
for (int row = 0; row < rows; row++)
+
ret(row, 0) = d(gen);
+
return cov*ret;
+
}
+
+
int main()
+
{
+
srand(std::time(0));
+
const double l = 3.0;
+
+
+
const double dt = 1.0;
+
+
+
+
1e-3, 0, 0, 0,
+
0, 1e-3, 0, 0,
+
0, 0, 1e-2, 0,
+
0, 0, 0, 1e-2;
+
+
+
R_t R = 1e-2 * R_t::Ones();
+
+
+
+
+
1, dt, 0.5*dt*dt, 0.25*dt*dt*dt,
+
0, 1, dt, 0.5*dt*dt,
+
0, 0, 1, dt,
+
0, 0, 0, 0.9;
+
+
+
+
+
0,
+
0,
+
0,
+
1;
+
+
+
H =
H_t (n_measurements,
n );
+
+
1, 0, 0, 0,
+
0, 1, 0, 0,
+
0, 0, 1, 0,
+
0, 0, 0, 1;
+
+
+
x_t x0 = 100.0*x_t::Random(
n );
+
x0(2) = 0.0;
+
x0(3) = 10.0;
+
x0 = x0/x0.norm();
+
P_t P_tmp = P_t::Random(
n ,
n );
+
const P_t P0 = 10.0*P_tmp*P_tmp.transpose();
+
+
+
const lkf_t::indices_t nconst_idxs = {0,1};
+
+
+
const int n_its = 1e1;
+
std::vector<lkf_t::statecov_t> lscs;
+
std::vector<lkf_t::statecov_t> scs;
+
+
lscs.reserve(n_its+1);
+
scs.reserve(n_its+1);
+
+
lscs.push_back(sc0);
+
scs.push_back(sc0);
+
+
for (int it = 0; it < n_its; it++)
+
{
+
std::cout << "step: " << it << std::endl;
+
+
+
+
+
+
+
auto sc = scs.back();
+
sc.x = tra_model_f(sc.x, u, dt) + normal_randmat(Q);
+
sc.x = sc.x / sc.x.norm();
+
+
+
const z_t z = obs_model_f(sc.x) + normal_randmat(R);
+
+
scs.push_back(sc);
+
scs.push_back(sc);
+
std::cout << "gt state:" << std::endl << sc.x.transpose() << std::endl;
+
+
{
+
auto lsc = lscs.back();
+
try
+
{
+
std::cout << "lkf_new state:" << std::endl << lsc.x.transpose() << std::endl;
+
lsc = lkf.predict(lsc, u, Q, dt);
+
std::cout << "lkf_new predi:" << std::endl << lsc.x.transpose() << std::endl;
+
lscs.push_back(lsc);
+
lsc = lkf.correct(lsc, z, R);
+
std::cout << "lkf_new corre:" << std::endl << lsc.x.transpose() << std::endl;
+
double sum2 = 0.0;
+
for (const auto it : nconst_idxs)
+
sum2 += lsc.x(it)*lsc.x(it);
+
std::cout << "lkf_new corre norm:" << std::sqrt(sum2) << std::endl;
+
lscs.push_back(lsc);
+
}
+
catch (const std::exception& e)
+
{
+
ROS_ERROR("NEW LKF failed: %s" , e.what());
+
}
+
}
+
}
+
+
double x_diff = 0.0;
+
double P_diff = 0.0;
+
for (int it = 0; it < n_its; it++)
+
{
+
const auto lsc = lscs.at(it);
+
const auto cur_x_diff = (lsc.x-lsc.x).norm();
+
const auto cur_P_diff = (lsc.P-lsc.P).norm();
+
x_diff += cur_x_diff;
+
P_diff += cur_P_diff;
+
}
+
+
std::cout << "x diff average: " << x_diff/(n_its+1) << std::endl;
+
std::cout << "P diff average: " << P_diff/(n_its+1) << std::endl;
+
+
return 0;
+
}
+
+
+
+
◆ NCLKF_partial() [1/2]
+
+
+
+
+template<int n_states, int n_inputs, int n_measurements, int n_norm_constrained_states>
+
+
+
+
Convenience default constructor.
+
This constructor should not be used if applicable. If used, the main constructor has to be called afterwards, before using this class, otherwise the object is invalid (not initialized).
+
+
+
+
+
◆ NCLKF_partial() [2/2]
+
+
+
+
+template<int n_states, int n_inputs, int n_measurements, int n_norm_constrained_states>
+
+
+
+
+
+ mrs_lib::NCLKF_partial < n_states, n_inputs, n_measurements, n_norm_constrained_states >::NCLKF_partial
+ (
+ const A_t &
+ A ,
+
+
+
+
+ const B_t &
+ B ,
+
+
+
+
+ const H_t &
+ H ,
+
+
+
+
+ const double
+ l ,
+
+
+
+
+ const indices_t &
+ norm_constrained_indices
+
+
+
+ )
+
+
+
+
+
+inline
+
+
+
+
+
The main constructor.
+
Parameters
+
+ A State transition matrix of the system (n x n).
+ B Input to state mapping matrix of the system (n x m).
+ H State to measurement mapping matrix of the system (p x n).
+ l The norm constraint, applied to the specified states.
+ norm_constrained_indices Indices of the norm-constrained states in the state vector.
+
+
+
+
+
+
+
The documentation for this class was generated from the following file:
+
+
+typename Base_class::A_t A_t
System transition matrix type .
Definition: nckf.h:130
+typename Base_class::Q_t Q_t
Process noise covariance matrix type .
Definition: lkf.h:52
+Eigen::Matrix< double, p, n > H_t
State to measurement mapping matrix type .
Definition: lkf.h:57
+typename Base_class::P_t P_t
State uncertainty covariance matrix type .
Definition: lkf.h:50
+H_t H
The state to measurement mapping matrix .
Definition: lkf.h:150
+typename Base_class::statecov_t statecov_t
Helper struct for passing around the state and its covariance in one variable.
Definition: lkf.h:53
+typename Base_class::R_t R_t
Measurement noise covariance matrix type .
Definition: lkf.h:51
+typename Base_class::u_t u_t
Input vector type .
Definition: nckf.h:123
+static const int n
Length of the state vector of the system.
Definition: nckf.h:116
+Eigen::Matrix< double, n, m > B_t
Input to state mapping matrix type .
Definition: lkf.h:56
+typename Base_class::x_t x_t
State vector type .
Definition: lkf.h:47
+All mrs_lib functions, classes, variables and definitions are contained in this namespace.
Definition: attitude_converter.h:29
+Eigen::Matrix< double, n, n > A_t
System transition matrix type .
Definition: lkf.h:55
+B_t B
The input to state mapping matrix .
Definition: lkf.h:149
+typename Base_class::H_t H_t
State to measurement mapping matrix type .
Definition: nckf.h:132
+Implementation of the Linear Kalman filter .
Definition: lkf.h:38
+typename Base_class::B_t B_t
Input to state mapping matrix type .
Definition: nckf.h:131
+typename Base_class::z_t z_t
Measurement vector type .
Definition: lkf.h:49
+A_t A
The system transition matrix .
Definition: lkf.h:144
+typename Base_class::u_t u_t
Input vector type .
Definition: lkf.h:48
+
+
+
+
diff --git a/classmrs__lib_1_1NCLKF__partial.js b/classmrs__lib_1_1NCLKF__partial.js
new file mode 100644
index 00000000..10531a6c
--- /dev/null
+++ b/classmrs__lib_1_1NCLKF__partial.js
@@ -0,0 +1,22 @@
+var classmrs__lib_1_1NCLKF__partial =
+[
+ [ "A_t", "classmrs__lib_1_1NCLKF__partial.html#a6d62f542c4ee39019c9466e82ed0cd51", null ],
+ [ "B_t", "classmrs__lib_1_1NCLKF__partial.html#a749bb8222899e2b056e27875c0f951f6", null ],
+ [ "Base_class", "classmrs__lib_1_1NCLKF__partial.html#a13dac50b4906535f6ff5837b1057597f", null ],
+ [ "H_t", "classmrs__lib_1_1NCLKF__partial.html#a12079d59b1f0e949c535e478d8e1d88c", null ],
+ [ "Hq_t", "classmrs__lib_1_1NCLKF__partial.html#a6f311605a0470b290c6917d555bb4c9a", null ],
+ [ "indices_t", "classmrs__lib_1_1NCLKF__partial.html#a93afd8063033124c0698426cd03d4507", null ],
+ [ "K_t", "classmrs__lib_1_1NCLKF__partial.html#a47b90d150c6147ab30ae1866b66ea49c", null ],
+ [ "Kq_t", "classmrs__lib_1_1NCLKF__partial.html#a459ce71ac559eb881415485df4d622fa", null ],
+ [ "P_t", "classmrs__lib_1_1NCLKF__partial.html#aef875cb026a1a0d8df31a8fc3f02e63b", null ],
+ [ "Q_t", "classmrs__lib_1_1NCLKF__partial.html#a2ba0fce7ba12825a0c498f7676848fce", null ],
+ [ "R_t", "classmrs__lib_1_1NCLKF__partial.html#a7754b24176416b24869450c88a1328aa", null ],
+ [ "statecov_t", "classmrs__lib_1_1NCLKF__partial.html#a2bc4e99acb7f38dc41d6e63cdce5e805", null ],
+ [ "u_t", "classmrs__lib_1_1NCLKF__partial.html#a5718270798d8227ccaf76a5d3b97fda5", null ],
+ [ "x_t", "classmrs__lib_1_1NCLKF__partial.html#afaae66f623e768b19c0160fb21be9373", null ],
+ [ "xq_t", "classmrs__lib_1_1NCLKF__partial.html#a50092f2c99a521668dfd3211c999441c", null ],
+ [ "z_t", "classmrs__lib_1_1NCLKF__partial.html#ad5308432a3010edabc4598a92786fad5", null ],
+ [ "NCLKF_partial", "classmrs__lib_1_1NCLKF__partial.html#aabe13461dda8a89463ce87888fd6e428", null ],
+ [ "NCLKF_partial", "classmrs__lib_1_1NCLKF__partial.html#a1c6b3f2a9bd2d7cafe652d1bb24872e7", null ],
+ [ "computeKalmanGain", "classmrs__lib_1_1NCLKF__partial.html#a293e0195e2a651bda0b09e40e6f8d7f4", null ]
+];
\ No newline at end of file
diff --git a/classmrs__lib_1_1NCLKF__partial__coll__graph.map b/classmrs__lib_1_1NCLKF__partial__coll__graph.map
new file mode 100644
index 00000000..291304e3
--- /dev/null
+++ b/classmrs__lib_1_1NCLKF__partial__coll__graph.map
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/classmrs__lib_1_1NCLKF__partial__coll__graph.md5 b/classmrs__lib_1_1NCLKF__partial__coll__graph.md5
new file mode 100644
index 00000000..afd9120b
--- /dev/null
+++ b/classmrs__lib_1_1NCLKF__partial__coll__graph.md5
@@ -0,0 +1 @@
+77f1f25b3808c1f081f3f787e90da284
\ No newline at end of file
diff --git a/classmrs__lib_1_1NCLKF__partial__coll__graph.png b/classmrs__lib_1_1NCLKF__partial__coll__graph.png
new file mode 100644
index 00000000..0e7d24c5
Binary files /dev/null and b/classmrs__lib_1_1NCLKF__partial__coll__graph.png differ
diff --git a/classmrs__lib_1_1NCLKF__partial__inherit__graph.map b/classmrs__lib_1_1NCLKF__partial__inherit__graph.map
new file mode 100644
index 00000000..291304e3
--- /dev/null
+++ b/classmrs__lib_1_1NCLKF__partial__inherit__graph.map
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/classmrs__lib_1_1NCLKF__partial__inherit__graph.md5 b/classmrs__lib_1_1NCLKF__partial__inherit__graph.md5
new file mode 100644
index 00000000..afd9120b
--- /dev/null
+++ b/classmrs__lib_1_1NCLKF__partial__inherit__graph.md5
@@ -0,0 +1 @@
+77f1f25b3808c1f081f3f787e90da284
\ No newline at end of file
diff --git a/classmrs__lib_1_1NCLKF__partial__inherit__graph.png b/classmrs__lib_1_1NCLKF__partial__inherit__graph.png
new file mode 100644
index 00000000..0e7d24c5
Binary files /dev/null and b/classmrs__lib_1_1NCLKF__partial__inherit__graph.png differ
diff --git a/classmrs__lib_1_1NCUKF-members.html b/classmrs__lib_1_1NCUKF-members.html
new file mode 100644
index 00000000..b5cb098d
--- /dev/null
+++ b/classmrs__lib_1_1NCUKF-members.html
@@ -0,0 +1,148 @@
+
+
+
+
+
+
+
+mrs_lib: Member List
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
This is the complete list of members for mrs_lib::NCUKF< n_states, n_inputs, n_measurements > , including all inherited members.
+
+ Base_class typedef (defined in mrs_lib::NCUKF< n_states, n_inputs, n_measurements > )mrs_lib::NCUKF< n_states, n_inputs, n_measurements >
+ computeInverse (const Pzz_t &Pzz) const (defined in mrs_lib::UKF< n_states, n_inputs, n_measurements > )mrs_lib::UKF< n_states, n_inputs, n_measurements > protected
+ computeKalmanGain (const x_t &x, const z_t &inn, const K_t &Pxz, const Pzz_t &Pzz) const override (defined in mrs_lib::NCUKF< n_states, n_inputs, n_measurements > )mrs_lib::NCUKF< n_states, n_inputs, n_measurements > inline protected virtual
+ computeKalmanGain ([[maybe_unused]] const x_t &x, [[maybe_unused]] const z_t &inn, const K_t &Pxz, const Pzz_t &Pzz) const (defined in mrs_lib::UKF< n_states, n_inputs, n_measurements > )mrs_lib::UKF< n_states, n_inputs, n_measurements > protected virtual
+ computePaSqrt (const P_t &P) const (defined in mrs_lib::UKF< n_states, n_inputs, n_measurements > )mrs_lib::UKF< n_states, n_inputs, n_measurements > protected
+ computeSigmas (const x_t &x, const P_t &P) const (defined in mrs_lib::UKF< n_states, n_inputs, n_measurements > )mrs_lib::UKF< n_states, n_inputs, n_measurements > protected
+ computeWeights () (defined in mrs_lib::UKF< n_states, n_inputs, n_measurements > )mrs_lib::UKF< n_states, n_inputs, n_measurements > protected
+ correct (const statecov_t &sc, const z_t &z, const R_t &R) const overridemrs_lib::NCUKF< n_states, n_inputs, n_measurements > inline virtual
+ mrs_lib::KalmanFilter::correct (const statecov_t &sc, const z_t &z, const R_t &R) const =0mrs_lib::KalmanFilter< n_states, n_inputs, n_measurements > pure virtual
+ K_t typedef (defined in mrs_lib::NCUKF< n_states, n_inputs, n_measurements > )mrs_lib::NCUKF< n_states, n_inputs, n_measurements >
+ l (defined in mrs_lib::NCUKF< n_states, n_inputs, n_measurements > )mrs_lib::NCUKF< n_states, n_inputs, n_measurements > protected
+ m (defined in mrs_lib::NCUKF< n_states, n_inputs, n_measurements > )mrs_lib::NCUKF< n_states, n_inputs, n_measurements > static
+ m_alpha (defined in mrs_lib::UKF< n_states, n_inputs, n_measurements > )mrs_lib::UKF< n_states, n_inputs, n_measurements > protected
+ m_beta (defined in mrs_lib::UKF< n_states, n_inputs, n_measurements > )mrs_lib::UKF< n_states, n_inputs, n_measurements > protected
+ m_kappa (defined in mrs_lib::UKF< n_states, n_inputs, n_measurements > )mrs_lib::UKF< n_states, n_inputs, n_measurements > protected
+ m_lambda (defined in mrs_lib::UKF< n_states, n_inputs, n_measurements > )mrs_lib::UKF< n_states, n_inputs, n_measurements > protected
+ m_observation_model (defined in mrs_lib::UKF< n_states, n_inputs, n_measurements > )mrs_lib::UKF< n_states, n_inputs, n_measurements > protected
+ m_transition_model (defined in mrs_lib::UKF< n_states, n_inputs, n_measurements > )mrs_lib::UKF< n_states, n_inputs, n_measurements > protected
+ m_Wc (defined in mrs_lib::UKF< n_states, n_inputs, n_measurements > )mrs_lib::UKF< n_states, n_inputs, n_measurements > protected
+ m_Wm (defined in mrs_lib::UKF< n_states, n_inputs, n_measurements > )mrs_lib::UKF< n_states, n_inputs, n_measurements > protected
+ n (defined in mrs_lib::NCUKF< n_states, n_inputs, n_measurements > )mrs_lib::NCUKF< n_states, n_inputs, n_measurements > static
+ NCUKF () (defined in mrs_lib::NCUKF< n_states, n_inputs, n_measurements > )mrs_lib::NCUKF< n_states, n_inputs, n_measurements > inline
+ NCUKF (const transition_model_t &transition_model, const observation_model_t &observation_model, const double l, const double alpha=1e-3, const double kappa=1, const double beta=2) (defined in mrs_lib::NCUKF< n_states, n_inputs, n_measurements > )mrs_lib::NCUKF< n_states, n_inputs, n_measurements > inline
+ observation_model_t typedef (defined in mrs_lib::NCUKF< n_states, n_inputs, n_measurements > )mrs_lib::NCUKF< n_states, n_inputs, n_measurements >
+ p (defined in mrs_lib::NCUKF< n_states, n_inputs, n_measurements > )mrs_lib::NCUKF< n_states, n_inputs, n_measurements > static
+ P_t typedef (defined in mrs_lib::NCUKF< n_states, n_inputs, n_measurements > )mrs_lib::NCUKF< n_states, n_inputs, n_measurements >
+ predict (const statecov_t &sc, const u_t &u, const Q_t &Q, double dt) const overridemrs_lib::UKF< n_states, n_inputs, n_measurements > virtual
+ Pzz_t typedef (defined in mrs_lib::NCUKF< n_states, n_inputs, n_measurements > )mrs_lib::NCUKF< n_states, n_inputs, n_measurements >
+ Q_t typedef (defined in mrs_lib::NCUKF< n_states, n_inputs, n_measurements > )mrs_lib::NCUKF< n_states, n_inputs, n_measurements >
+ R_t typedef (defined in mrs_lib::NCUKF< n_states, n_inputs, n_measurements > )mrs_lib::NCUKF< n_states, n_inputs, n_measurements >
+ setConstants (const double alpha, const double kappa, const double beta)mrs_lib::UKF< n_states, n_inputs, n_measurements >
+ setObservationModel (const observation_model_t &observation_model)mrs_lib::UKF< n_states, n_inputs, n_measurements >
+ setTransitionModel (const transition_model_t &transition_model)mrs_lib::UKF< n_states, n_inputs, n_measurements >
+ statecov_t typedef (defined in mrs_lib::NCUKF< n_states, n_inputs, n_measurements > )mrs_lib::NCUKF< n_states, n_inputs, n_measurements >
+ transition_model_t typedef (defined in mrs_lib::NCUKF< n_states, n_inputs, n_measurements > )mrs_lib::NCUKF< n_states, n_inputs, n_measurements >
+ u_t typedef (defined in mrs_lib::NCUKF< n_states, n_inputs, n_measurements > )mrs_lib::NCUKF< n_states, n_inputs, n_measurements >
+ UKF ()mrs_lib::UKF< n_states, n_inputs, n_measurements >
+ UKF (const transition_model_t &transition_model, const observation_model_t &observation_model, const double alpha=1e-3, const double kappa=1, const double beta=2)mrs_lib::UKF< n_states, n_inputs, n_measurements >
+ w mrs_lib::UKF< n_states, n_inputs, n_measurements > protected static
+ W_t typedefmrs_lib::UKF< n_states, n_inputs, n_measurements >
+ x_t typedef (defined in mrs_lib::NCUKF< n_states, n_inputs, n_measurements > )mrs_lib::NCUKF< n_states, n_inputs, n_measurements >
+ X_t typedef (defined in mrs_lib::NCUKF< n_states, n_inputs, n_measurements > )mrs_lib::NCUKF< n_states, n_inputs, n_measurements >
+ Z_t typedef (defined in mrs_lib::NCUKF< n_states, n_inputs, n_measurements > )mrs_lib::NCUKF< n_states, n_inputs, n_measurements >
+ z_t typedef (defined in mrs_lib::NCUKF< n_states, n_inputs, n_measurements > )mrs_lib::NCUKF< n_states, n_inputs, n_measurements >
+
+
+
+
+
+
diff --git a/classmrs__lib_1_1NCUKF.html b/classmrs__lib_1_1NCUKF.html
new file mode 100644
index 00000000..a128bbaf
--- /dev/null
+++ b/classmrs__lib_1_1NCUKF.html
@@ -0,0 +1,415 @@
+
+
+
+
+
+
+
+mrs_lib: mrs_lib::NCUKF< n_states, n_inputs, n_measurements > Class Template Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ NCUKF (const transition_model_t &transition_model, const observation_model_t &observation_model, const double l, const double alpha=1e-3, const double kappa=1, const double beta=2)
+
+virtual statecov_t correct (const statecov_t &sc, const z_t &z, const R_t &R) const override
+ Implements the state correction step (measurement update). More...
+
+
+ UKF ()
+ Convenience default constructor. More...
+
+ UKF (const transition_model_t &transition_model, const observation_model_t &observation_model, const double alpha=1e-3, const double kappa=1, const double beta=2)
+ The main constructor. More...
+
+virtual statecov_t predict (const statecov_t &sc, const u_t &u, const Q_t &Q, double dt) const override
+ Implements the state prediction step (time update). More...
+
+void setConstants (const double alpha, const double kappa, const double beta)
+ Changes the Unscented Transform parameters. More...
+
+void setTransitionModel (const transition_model_t &transition_model)
+ Changes the transition model function. More...
+
+void setObservationModel (const observation_model_t &observation_model)
+ Changes the observation model function. More...
+
+
+
+
+static const int n = n_states
+
+
+static const int m = n_inputs
+
+
+static const int p = n_measurements
+
+
+
+
+virtual K_t computeKalmanGain (const x_t &x, const z_t &inn, const K_t &Pxz, const Pzz_t &Pzz) const override
+
+
+
+void computeWeights ()
+
+
+X_t computeSigmas (const x_t &x, const P_t &P) const
+
+
+P_t computePaSqrt (const P_t &P) const
+
+
+Pzz_t computeInverse (const Pzz_t &Pzz) const
+
+
+virtual K_t computeKalmanGain ([[maybe_unused]] const x_t &x, [[maybe_unused]] const z_t &inn, const K_t &Pxz, const Pzz_t &Pzz) const
+
+
+
+
+double l
+
+
+
+double m_alpha
+
+
+double m_kappa
+
+
+double m_beta
+
+
+double m_lambda
+
+
+W_t m_Wm
+
+
+W_t m_Wc
+
+
+transition_model_t m_transition_model
+
+
+observation_model_t m_observation_model
+
+
+
+
+
+using Base_class = KalmanFilter < n , m , p >
+ Base class of this class.
+
+
+using X_t = typename Eigen::Matrix< double, n , w >
+ State sigma points matrix.
+
+
+using Z_t = typename Eigen::Matrix< double, p , w >
+ Measurement sigma points matrix.
+
+
+using Pzz_t = typename Eigen::Matrix< double, p , p >
+ Pzz helper matrix.
+
+
+using K_t = typename Eigen::Matrix< double, n , p >
+ Kalman gain matrix.
+
+
+
+static constexpr int n = n_states
+ Length of the state vector of the system.
+
+
+static constexpr int m = n_inputs
+ Length of the input vector of the system.
+
+
+static constexpr int p = n_measurements
+ Length of the measurement vector of the system.
+
+
+static constexpr int w = 2 * n + 1
+ Number of sigma points/weights.
+
+
+
+
+
◆ correct()
+
+
+
+
+template<int n_states, int n_inputs, int n_measurements>
+
+
+
+
+
+ virtual statecov_t mrs_lib::NCUKF < n_states, n_inputs, n_measurements >::correct
+ (
+ const statecov_t &
+ sc ,
+
+
+
+
+ const z_t &
+ z ,
+
+
+
+
+ const R_t &
+ R
+
+
+
+ )
+ const
+
+
+
+
+inline override virtual
+
+
+
+
+
Implements the state correction step (measurement update).
+
Parameters
+
+ sc Previous estimate of the state and covariance.
+ z Measurement vector.
+ R Measurement covariance matrix.
+
+
+
+
Returns The state and covariance after applying the correction step.
+
+
Reimplemented from mrs_lib::UKF< n_states, n_inputs, n_measurements > .
+
+
+
+
The documentation for this class was generated from the following file:
+
+
+
+
+
+
diff --git a/classmrs__lib_1_1NCUKF.js b/classmrs__lib_1_1NCUKF.js
new file mode 100644
index 00000000..8e49af41
--- /dev/null
+++ b/classmrs__lib_1_1NCUKF.js
@@ -0,0 +1,22 @@
+var classmrs__lib_1_1NCUKF =
+[
+ [ "Base_class", "classmrs__lib_1_1NCUKF.html#adb3fa88b036f1fc6b80f204cb601ebc7", null ],
+ [ "K_t", "classmrs__lib_1_1NCUKF.html#a5fb979f0c5139359956a3fdd40f3f535", null ],
+ [ "observation_model_t", "classmrs__lib_1_1NCUKF.html#a45f922267ff95bcad0d4760d5dbf3e49", null ],
+ [ "P_t", "classmrs__lib_1_1NCUKF.html#a652482865a512df867d37e654b0b2d4d", null ],
+ [ "Pzz_t", "classmrs__lib_1_1NCUKF.html#a1f0e64b6d2682ae4afdc8f8e59d96674", null ],
+ [ "Q_t", "classmrs__lib_1_1NCUKF.html#acbbd4daa96d9ce0d4fca18dc114a9fb1", null ],
+ [ "R_t", "classmrs__lib_1_1NCUKF.html#a826781b0c822b0f72d8bd9ced7452f81", null ],
+ [ "statecov_t", "classmrs__lib_1_1NCUKF.html#a7d1795ff05b989b2a69b726d7958dae5", null ],
+ [ "transition_model_t", "classmrs__lib_1_1NCUKF.html#a6ad5bf2fb59a2265651708ffe2e6526c", null ],
+ [ "u_t", "classmrs__lib_1_1NCUKF.html#aa65fcd20c676be8399d3016e0203affa", null ],
+ [ "x_t", "classmrs__lib_1_1NCUKF.html#adf38e41db3b8a80c6742b2a2dd6cb7b2", null ],
+ [ "X_t", "classmrs__lib_1_1NCUKF.html#aad37acbc7a2fe813c770ff4a705abf22", null ],
+ [ "z_t", "classmrs__lib_1_1NCUKF.html#ad2b734aae3fea37fc9cfee8c752e5747", null ],
+ [ "Z_t", "classmrs__lib_1_1NCUKF.html#abf3be33e44e56e023d8475eed0062e71", null ],
+ [ "NCUKF", "classmrs__lib_1_1NCUKF.html#ab05d1bc34d4fe3715959b5797bc72bf1", null ],
+ [ "NCUKF", "classmrs__lib_1_1NCUKF.html#ae8bee52a0123cbcb1e898e4785336bf2", null ],
+ [ "computeKalmanGain", "classmrs__lib_1_1NCUKF.html#af48c26afd4a3cfabcddac78b63714946", null ],
+ [ "correct", "classmrs__lib_1_1NCUKF.html#ab12dfb8b6ad4c831c761327a3be2d814", null ],
+ [ "l", "classmrs__lib_1_1NCUKF.html#a8511740030abca1b1b1e9aa5c6451639", null ]
+];
\ No newline at end of file
diff --git a/classmrs__lib_1_1NCUKF__coll__graph.map b/classmrs__lib_1_1NCUKF__coll__graph.map
new file mode 100644
index 00000000..813f875a
--- /dev/null
+++ b/classmrs__lib_1_1NCUKF__coll__graph.map
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/classmrs__lib_1_1NCUKF__coll__graph.md5 b/classmrs__lib_1_1NCUKF__coll__graph.md5
new file mode 100644
index 00000000..73a1e972
--- /dev/null
+++ b/classmrs__lib_1_1NCUKF__coll__graph.md5
@@ -0,0 +1 @@
+459b13b13e8c8f9ebf5a85062b4d99e7
\ No newline at end of file
diff --git a/classmrs__lib_1_1NCUKF__coll__graph.png b/classmrs__lib_1_1NCUKF__coll__graph.png
new file mode 100644
index 00000000..61d78753
Binary files /dev/null and b/classmrs__lib_1_1NCUKF__coll__graph.png differ
diff --git a/classmrs__lib_1_1NCUKF__inherit__graph.map b/classmrs__lib_1_1NCUKF__inherit__graph.map
new file mode 100644
index 00000000..813f875a
--- /dev/null
+++ b/classmrs__lib_1_1NCUKF__inherit__graph.map
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/classmrs__lib_1_1NCUKF__inherit__graph.md5 b/classmrs__lib_1_1NCUKF__inherit__graph.md5
new file mode 100644
index 00000000..73a1e972
--- /dev/null
+++ b/classmrs__lib_1_1NCUKF__inherit__graph.md5
@@ -0,0 +1 @@
+459b13b13e8c8f9ebf5a85062b4d99e7
\ No newline at end of file
diff --git a/classmrs__lib_1_1NCUKF__inherit__graph.png b/classmrs__lib_1_1NCUKF__inherit__graph.png
new file mode 100644
index 00000000..61d78753
Binary files /dev/null and b/classmrs__lib_1_1NCUKF__inherit__graph.png differ
diff --git a/classmrs__lib_1_1NotchFilter-members.html b/classmrs__lib_1_1NotchFilter-members.html
new file mode 100644
index 00000000..4c00570e
--- /dev/null
+++ b/classmrs__lib_1_1NotchFilter-members.html
@@ -0,0 +1,106 @@
+
+
+
+
+
+
+
+mrs_lib: Member List
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
This is the complete list of members for mrs_lib::NotchFilter , including all inherited members.
+
+
+
+
+
+
diff --git a/classmrs__lib_1_1NotchFilter.html b/classmrs__lib_1_1NotchFilter.html
new file mode 100644
index 00000000..66bde6d8
--- /dev/null
+++ b/classmrs__lib_1_1NotchFilter.html
@@ -0,0 +1,119 @@
+
+
+
+
+
+
+
+mrs_lib: mrs_lib::NotchFilter Class Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ NotchFilter (const double &sample_rate, const double &frequency_in, const double &bandwidth_in)
+
+
+double iterate (double &sample_in)
+
+
+
The documentation for this class was generated from the following files:
+
+
+
+
+
+
diff --git a/classmrs__lib_1_1NotchFilter.js b/classmrs__lib_1_1NotchFilter.js
new file mode 100644
index 00000000..5560c791
--- /dev/null
+++ b/classmrs__lib_1_1NotchFilter.js
@@ -0,0 +1,5 @@
+var classmrs__lib_1_1NotchFilter =
+[
+ [ "NotchFilter", "classmrs__lib_1_1NotchFilter.html#aba69b0f84c898a16d853a2cdee710840", null ],
+ [ "iterate", "classmrs__lib_1_1NotchFilter.html#ada5555bb90a375ccba73f8cd2b691b3e", null ]
+];
\ No newline at end of file
diff --git a/classmrs__lib_1_1ParamLoader-members.html b/classmrs__lib_1_1ParamLoader-members.html
new file mode 100644
index 00000000..67a76334
--- /dev/null
+++ b/classmrs__lib_1_1ParamLoader-members.html
@@ -0,0 +1,142 @@
+
+
+
+
+
+
+
+mrs_lib: Member List
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
This is the complete list of members for mrs_lib::ParamLoader , including all inherited members.
+
+ addYamlFile (const std::string &filepath)mrs_lib::ParamLoader inline
+ addYamlFileFromParam (const std::string ¶m_name)mrs_lib::ParamLoader inline
+ getPrefix ()mrs_lib::ParamLoader inline
+ loadedSuccessfully ()mrs_lib::ParamLoader inline
+ loadMatrixArray (const std::string &name, std::vector< MatrixX< T >> &mat)mrs_lib::ParamLoader inline
+ loadMatrixArray (const std::string &name, std::vector< MatrixX< T >> &mat, const std::vector< MatrixX< T >> &default_value)mrs_lib::ParamLoader inline
+ loadMatrixArray2 (const std::string &name)mrs_lib::ParamLoader inline
+ loadMatrixArray2 (const std::string &name, const std::vector< MatrixX< T >> &default_value)mrs_lib::ParamLoader inline
+ loadMatrixDynamic (const std::string &name, MatrixX< T > &mat, int rows, int cols)mrs_lib::ParamLoader inline
+ loadMatrixDynamic (const std::string &name, MatrixX< T > &mat, const Eigen::MatrixBase< Derived > &default_value, int rows, int cols)mrs_lib::ParamLoader inline
+ loadMatrixDynamic2 (const std::string &name, int rows, int cols)mrs_lib::ParamLoader inline
+ loadMatrixDynamic2 (const std::string &name, const Eigen::MatrixBase< Derived > &default_value, int rows, int cols)mrs_lib::ParamLoader inline
+ loadMatrixStatic (const std::string &name, Eigen::Matrix< T, rows, cols > &mat)mrs_lib::ParamLoader inline
+ loadMatrixStatic (const std::string &name, Eigen::Matrix< T, rows, cols > &mat, const Eigen::MatrixBase< Derived > &default_value)mrs_lib::ParamLoader inline
+ loadMatrixStatic (const std::string &name, MatrixX< T > &mat, int rows, int cols)mrs_lib::ParamLoader inline
+ loadMatrixStatic (const std::string &name, MatrixX< T > &mat, const Eigen::MatrixBase< Derived > &default_value, int rows, int cols)mrs_lib::ParamLoader inline
+ loadMatrixStatic2 (const std::string &name)mrs_lib::ParamLoader inline
+ loadMatrixStatic2 (const std::string &name, const Eigen::MatrixBase< Derived > &default_value)mrs_lib::ParamLoader inline
+ loadMatrixStatic2 (const std::string &name, int rows, int cols)mrs_lib::ParamLoader inline
+ loadMatrixStatic2 (const std::string &name, const Eigen::MatrixBase< Derived > &default_value, int rows, int cols)mrs_lib::ParamLoader inline
+ loadParam (const std::string &name, T &out_value, const T &default_value)mrs_lib::ParamLoader inline
+ loadParam (const std::string &name, T &out_value)mrs_lib::ParamLoader inline
+ loadParam (const std::string &name, ros::Duration &out, const ros::Duration &default_value)mrs_lib::ParamLoader inline
+ loadParam (const std::string &name, ros::Duration &out)mrs_lib::ParamLoader inline
+ loadParam (const std::string &name, std_msgs::ColorRGBA &out, const std_msgs::ColorRGBA &default_value={})mrs_lib::ParamLoader inline
+ loadParam (const std::string &name, MatrixX< T > &mat, const MatrixX< T > &default_value)mrs_lib::ParamLoader inline
+ loadParam2 (const std::string &name, const T &default_value)mrs_lib::ParamLoader inline
+ loadParam2 (const std::string &name)mrs_lib::ParamLoader inline
+ loadParam2 (const std::string &name, const std_msgs::ColorRGBA &default_value={})mrs_lib::ParamLoader inline
+ loadParam2 (const std::string &name, const MatrixX< T > &default_value)mrs_lib::ParamLoader inline
+ loadParamReusable (const std::string &name, T &out_value, const T &default_value)mrs_lib::ParamLoader inline
+ loadParamReusable (const std::string &name, T &out_value)mrs_lib::ParamLoader inline
+ loadParamReusable2 (const std::string &name, const T &default_value)mrs_lib::ParamLoader inline
+ loadParamReusable2 (const std::string &name)mrs_lib::ParamLoader inline
+ ParamLoader (const ros::NodeHandle &nh, bool printValues=true, std::string_view node_name=std::string())mrs_lib::ParamLoader inline
+ ParamLoader (const ros::NodeHandle &nh, std::string_view node_name)mrs_lib::ParamLoader inline
+ ParamLoader (const std::string &filepath, const ros::NodeHandle &nh)mrs_lib::ParamLoader inline
+ setPrefix (const std::string &prefix)mrs_lib::ParamLoader inline
+
+
+
+
+
+
diff --git a/classmrs__lib_1_1ParamLoader.html b/classmrs__lib_1_1ParamLoader.html
new file mode 100644
index 00000000..bad5931b
--- /dev/null
+++ b/classmrs__lib_1_1ParamLoader.html
@@ -0,0 +1,2180 @@
+
+
+
+
+
+
+
+mrs_lib: mrs_lib::ParamLoader Class Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Convenience class for loading parameters from rosparam server.
+ More...
+
+
#include <param_loader.h >
+
+
+ ParamLoader (const ros::NodeHandle &nh, bool printValues=true, std::string_view node_name=std::string())
+ Main constructor. More...
+
+ ParamLoader (const ros::NodeHandle &nh, std::string_view node_name)
+ Convenience overload to enable writing ParamLoader pl(nh, node_name);. More...
+
+ ParamLoader (const std::string &filepath, const ros::NodeHandle &nh)
+ Convenience overload to enable writing ParamLoader pl(nh, "node_name");. More...
+
+void setPrefix (const std::string &prefix)
+ All loaded parameters will be prefixed with this string. More...
+
+std::string getPrefix ()
+ Returns the current parameter name prefix. More...
+
+bool addYamlFile (const std::string &filepath)
+ Adds the specified file as a source of static parameters. More...
+
+bool addYamlFileFromParam (const std::string ¶m_name)
+ Adds the specified file as a source of static parameters. More...
+
+bool loadedSuccessfully ()
+ Indicates whether all compulsory parameters were successfully loaded. More...
+
+template<typename T >
+bool loadParam (const std::string &name, T &out_value, const T &default_value)
+ Loads a parameter from the rosparam server with a default value. More...
+
+template<typename T >
+T loadParam2 (const std::string &name, const T &default_value)
+ Loads a parameter from the rosparam server with a default value. More...
+
+template<typename T >
+bool loadParamReusable (const std::string &name, T &out_value, const T &default_value)
+ Loads a parameter from the rosparam server with a default value. More...
+
+template<typename T >
+T loadParamReusable2 (const std::string &name, const T &default_value)
+ Loads an optional reusable parameter from the rosparam server. More...
+
+template<typename T >
+bool loadParam (const std::string &name, T &out_value)
+ Loads a compulsory parameter from the rosparam server. More...
+
+template<typename T >
+T loadParam2 (const std::string &name)
+ Loads a compulsory parameter from the rosparam server. More...
+
+template<typename T >
+bool loadParamReusable (const std::string &name, T &out_value)
+ Loads a compulsory parameter from the rosparam server. More...
+
+template<typename T >
+T loadParamReusable2 (const std::string &name)
+ Loads a compulsory parameter from the rosparam server. More...
+
+bool loadParam (const std::string &name, ros::Duration &out, const ros::Duration &default_value)
+ An overload for loading ros::Duration. More...
+
+bool loadParam (const std::string &name, ros::Duration &out)
+ An overload for loading ros::Duration. More...
+
+bool loadParam (const std::string &name, std_msgs::ColorRGBA &out, const std_msgs::ColorRGBA &default_value={})
+ An overload for loading std_msgs::ColorRGBA. More...
+
+std_msgs::ColorRGBA loadParam2 (const std::string &name, const std_msgs::ColorRGBA &default_value={})
+ An overload for loading std_msgs::ColorRGBA. More...
+
+template<typename T >
+void loadParam (const std::string &name, MatrixX< T > &mat, const MatrixX< T > &default_value)
+ An overload for loading Eigen matrices. More...
+
+template<typename T >
+MatrixX< T > loadParam2 (const std::string &name, const MatrixX< T > &default_value)
+ An overload for loading Eigen matrices. More...
+
+template<int rows, int cols, typename T >
+void loadMatrixStatic (const std::string &name, Eigen::Matrix< T, rows, cols > &mat)
+ Specialized method for loading compulsory Eigen matrix parameters. More...
+
+template<int rows, int cols, typename T , typename Derived >
+void loadMatrixStatic (const std::string &name, Eigen::Matrix< T, rows, cols > &mat, const Eigen::MatrixBase< Derived > &default_value)
+ Specialized method for loading Eigen matrix parameters with default value. More...
+
+template<int rows, int cols, typename T = double>
+Eigen::Matrix< T, rows, cols > loadMatrixStatic2 (const std::string &name)
+ Specialized method for loading compulsory Eigen matrix parameters. More...
+
+template<int rows, int cols, typename T , typename Derived >
+Eigen::Matrix< T, rows, cols > loadMatrixStatic2 (const std::string &name, const Eigen::MatrixBase< Derived > &default_value)
+ Specialized method for loading Eigen matrix parameters with default value. More...
+
+template<typename T >
+void loadMatrixStatic (const std::string &name, MatrixX< T > &mat, int rows, int cols)
+ Specialized method for loading compulsory Eigen matrix parameters. More...
+
+template<typename T , typename Derived >
+void loadMatrixStatic (const std::string &name, MatrixX< T > &mat, const Eigen::MatrixBase< Derived > &default_value, int rows, int cols)
+ Specialized method for loading Eigen matrix parameters with default value. More...
+
+template<typename T = double>
+MatrixX< T > loadMatrixStatic2 (const std::string &name, int rows, int cols)
+ Specialized method for loading compulsory Eigen matrix parameters. More...
+
+template<typename T , typename Derived >
+MatrixX< T > loadMatrixStatic2 (const std::string &name, const Eigen::MatrixBase< Derived > &default_value, int rows, int cols)
+ Specialized method for loading Eigen matrix parameters with default value. More...
+
+template<typename T >
+void loadMatrixDynamic (const std::string &name, MatrixX< T > &mat, int rows, int cols)
+ Specialized method for loading compulsory dynamic Eigen matrix parameters. More...
+
+template<typename T , typename Derived >
+void loadMatrixDynamic (const std::string &name, MatrixX< T > &mat, const Eigen::MatrixBase< Derived > &default_value, int rows, int cols)
+ Specialized method for loading compulsory dynamic Eigen matrix parameters. More...
+
+template<typename T = double>
+MatrixX< T > loadMatrixDynamic2 (const std::string &name, int rows, int cols)
+ Specialized method for loading compulsory dynamic Eigen matrix parameters. More...
+
+template<typename T , typename Derived >
+MatrixX< T > loadMatrixDynamic2 (const std::string &name, const Eigen::MatrixBase< Derived > &default_value, int rows, int cols)
+ Specialized method for loading compulsory dynamic Eigen matrix parameters. More...
+
+template<typename T >
+void loadMatrixArray (const std::string &name, std::vector< MatrixX< T >> &mat)
+ Specialized method for loading compulsory parameters, interpreted as an array of dynamic Eigen matrices. More...
+
+template<typename T >
+void loadMatrixArray (const std::string &name, std::vector< MatrixX< T >> &mat, const std::vector< MatrixX< T >> &default_value)
+ Specialized method for loading compulsory parameters, interpreted as an array of dynamic Eigen matrices. More...
+
+template<typename T = double>
+std::vector< MatrixX< T > > loadMatrixArray2 (const std::string &name)
+ Specialized method for loading compulsory parameters, interpreted as an array of dynamic Eigen matrices. More...
+
+template<typename T >
+std::vector< MatrixX< T > > loadMatrixArray2 (const std::string &name, const std::vector< MatrixX< T >> &default_value)
+ Specialized method for loading compulsory parameters, interpreted as an array of dynamic Eigen matrices. More...
+
+
+
+
Convenience class for loading parameters from rosparam server.
+
The parameters can be loaded as compulsory. If a compulsory parameter is not found on the rosparam server (e.g. because it is missing in the launchfile or the yaml config file), an internal flag is set to false, indicating that the parameter loading procedure failed. This flag can be checked using the loaded_successfully() method after all parameters were attempted to be loaded (see usage example usage below).
+
The loaded parameter names and corresponding values are printed to stdout by default for user convenience. Special cases such as loading of Eigen matrices or loading of std::vectors of various values are also provided.
+
To load parameters into the rosparam
server, use a launchfile prefferably. See documentation of ROS launchfiles here: http://wiki.ros.org/roslaunch/XML . Specifically, the param
XML tag is used for loading parameters directly from the launchfile: http://wiki.ros.org/roslaunch/XML/param, and the rosparam
XML tag tag is used for loading parameters from a yaml
file: http://wiki.ros.org/roslaunch/XML/rosparam .
+
Examples param_loader/example.cpp .
+
+
+
+
◆ ParamLoader() [1/3]
+
+
+
+
+
+
+
+
+ mrs_lib::ParamLoader::ParamLoader
+ (
+ const ros::NodeHandle &
+ nh ,
+
+
+
+
+ bool
+ printValues = true
,
+
+
+
+
+ std::string_view
+ node_name = std::string()
+
+
+
+ )
+
+
+
+
+
+inline
+
+
+
+
+
Main constructor.
+
Parameters
+
+ nh The parameters will be loaded from rosparam using this node handle.
+ printValues If true, the loaded values will be printed to stdout using std::cout or ROS_INFO if node_name is not empty.
+ node_name Optional node name used when printing the loaded values or loading errors.
+
+
+
+
+
+
+
+
◆ ParamLoader() [2/3]
+
+
+
+
+
+
+
+
+ mrs_lib::ParamLoader::ParamLoader
+ (
+ const ros::NodeHandle &
+ nh ,
+
+
+
+
+ std::string_view
+ node_name
+
+
+
+ )
+
+
+
+
+
+inline
+
+
+
+
+
Convenience overload to enable writing ParamLoader pl(nh, node_name);.
+
Parameters
+
+ nh The parameters will be loaded from rosparam using this node handle.
+ node_name Optional node name used when printing the loaded values or loading errors.
+
+
+
+
+
+
+
+
◆ ParamLoader() [3/3]
+
+
+
+
+
+
+
+
+ mrs_lib::ParamLoader::ParamLoader
+ (
+ const std::string &
+ filepath ,
+
+
+
+
+ const ros::NodeHandle &
+ nh
+
+
+
+ )
+
+
+
+
+
+inline
+
+
+
+
+
Convenience overload to enable writing ParamLoader pl(nh, "node_name");.
+
Parameters
+
+ nh The parameters will be loaded from rosparam using this node handle.
+ node_name Optional node name used when printing the loaded values or loading errors.
+
+
+
+
+
+
+
+
+
◆ addYamlFile()
+
+
+
+
+
+
+
+
+ bool mrs_lib::ParamLoader::addYamlFile
+ (
+ const std::string &
+ filepath )
+
+
+
+
+
+inline
+
+
+
+
+
Adds the specified file as a source of static parameters.
+
Parameters
+
+ filepath The full path to the yaml file to be loaded.
+
+
+
+
Returns true if loading and parsing the file was successful, false otherwise.
+
+
+
+
+
◆ addYamlFileFromParam()
+
+
+
+
+
+
+
+
+ bool mrs_lib::ParamLoader::addYamlFileFromParam
+ (
+ const std::string &
+ param_name )
+
+
+
+
+
+inline
+
+
+
+
+
Adds the specified file as a source of static parameters.
+
Parameters
+
+ filepath The full path to the yaml file to be loaded.
+
+
+
+
Returns true if loading and parsing the file was successful, false otherwise.
+
+
+
+
+
◆ getPrefix()
+
+
+
+
+
+
+
+
+ std::string mrs_lib::ParamLoader::getPrefix
+ (
+ )
+
+
+
+
+
+inline
+
+
+
+
+
Returns the current parameter name prefix.
+
Returns the current prefix to be applied to the loaded parameters.
+
+
+
+
+
◆ loadedSuccessfully()
+
+
+
+
+
+
+
+
+ bool mrs_lib::ParamLoader::loadedSuccessfully
+ (
+ )
+
+
+
+
+
+inline
+
+
+
+
+
Indicates whether all compulsory parameters were successfully loaded.
+
Returns false if any compulsory parameter was not loaded (is not present at rosparam server). Otherwise returns true.
+
Examples param_loader/example.cpp .
+
+
+
+
+
+
◆ loadMatrixArray() [1/2]
+
+
+
+
+template<typename T >
+
+
+
+
+
+ void mrs_lib::ParamLoader::loadMatrixArray
+ (
+ const std::string &
+ name ,
+
+
+
+
+ std::vector< MatrixX< T >> &
+ mat
+
+
+
+ )
+
+
+
+
+
+inline
+
+
+
+
+
Specialized method for loading compulsory parameters, interpreted as an array of dynamic Eigen matrices.
+
The number of rows and columns of the matrices to be loaded is specified in the rosparam
parameter. Specifically, the name/rows
value specifies the number of rows, which must be common to all the loaded matrices (i.e. it is one integer >= 0), and the name/cols
value specifies the number of columns of each matrix (i.e. it is an array of integers > 0). The name/data
array contains the values of the elements of the matrices and it must have length , where is the common number of rows and is the number of columns of the -th matrix. A typical structure of a yaml
file, specifying the matrix array to be loaded using this method, is
+
matrix_array:
+
rows: 3
+
cols: [1, 2]
+
data: [-5.0, Eigen::Dynamic0.0, 23.0,
+
-5.0, Eigen::Dynamic0.0, 12.0,
+
2.0, 4.0, 7.0]
+
which will be loaded as a std::vector
, containing one matrix and one matrix.
+
If the dimensions of the loaded matrices do not match the specified number of rows and columns, the loading process is unsuccessful (loaded_successfully() will return false). If the parameter with the specified name is not found on the rosparam
server (e.g. because it is not specified in the launchfile or yaml config file), the loading process is unsuccessful. Using this method, the parameter can only be loaded once using the same ParamLoader instance without error.
+
Parameters
+
+ name Name of the parameter in the rosparam server.
+ mat Reference to the variable to which the parameter value will be stored (such as a class member variable).
+
+
+
+
+
+
+
+
◆ loadMatrixArray() [2/2]
+
+
+
+
+template<typename T >
+
+
+
+
+
+ void mrs_lib::ParamLoader::loadMatrixArray
+ (
+ const std::string &
+ name ,
+
+
+
+
+ std::vector< MatrixX< T >> &
+ mat ,
+
+
+
+
+ const std::vector< MatrixX< T >> &
+ default_value
+
+
+
+ )
+
+
+
+
+
+inline
+
+
+
+
+
Specialized method for loading compulsory parameters, interpreted as an array of dynamic Eigen matrices.
+
This overload of the loadMatrixArray() method takes a default value for the parameter, which is used in case a rosparam
with the specified name is not found in the rosparam
server, instead of causing an unsuccessful load. This makes specifying the parameter value in the rosparam
server optional.
+
Parameters
+
+ name Name of the parameter in the rosparam server.
+ mat Reference to the variable to which the parameter value will be stored (such as a class member variable).
+ default_value The default value to be used in case the parameter is not found on the rosparam
server.
+
+
+
+
+
+
+
+
◆ loadMatrixArray2() [1/2]
+
+
+
+
+template<typename T = double>
+
+
+
+
+
+ std::vector<MatrixX<T> > mrs_lib::ParamLoader::loadMatrixArray2
+ (
+ const std::string &
+ name )
+
+
+
+
+
+inline
+
+
+
+
+
Specialized method for loading compulsory parameters, interpreted as an array of dynamic Eigen matrices.
+
This method works in the same way as the loadMatrixArray() method for compulsory parameters, except that the loaded parameter is returned and not stored in the reference parameter.
+
Parameters
+
+ name Name of the parameter in the rosparam server.
+
+
+
+
Returns The loaded parameter or a default constructed object of the respective type.
+
+
+
+
+
◆ loadMatrixArray2() [2/2]
+
+
+
+
+template<typename T >
+
+
+
+
+
+ std::vector<MatrixX<T> > mrs_lib::ParamLoader::loadMatrixArray2
+ (
+ const std::string &
+ name ,
+
+
+
+
+ const std::vector< MatrixX< T >> &
+ default_value
+
+
+
+ )
+
+
+
+
+
+inline
+
+
+
+
+
Specialized method for loading compulsory parameters, interpreted as an array of dynamic Eigen matrices.
+
This method works in the same way as the loadMatrixArray() method for optional parameters, except that the loaded parameter is returned and not stored in the reference parameter.
+
Parameters
+
+ name Name of the parameter in the rosparam server.
+ default_value The default value to be used in case the parameter is not found on the rosparam
server.
+
+
+
+
Returns The loaded parameter or the default value.
+
+
+
+
+
◆ loadMatrixDynamic() [1/2]
+
+
+
+
+template<typename T , typename Derived >
+
+
+
+
+
+ void mrs_lib::ParamLoader::loadMatrixDynamic
+ (
+ const std::string &
+ name ,
+
+
+
+
+ MatrixX< T > &
+ mat ,
+
+
+
+
+ const Eigen::MatrixBase< Derived > &
+ default_value ,
+
+
+
+
+ int
+ rows ,
+
+
+
+
+ int
+ cols
+
+
+
+ )
+
+
+
+
+
+inline
+
+
+
+
+
Specialized method for loading compulsory dynamic Eigen matrix parameters.
+
If the dimensions of the loaded matrix do not match the specified number of rows and columns, the loading process is unsuccessful (loaded_successfully() will return false). If the parameter with the specified name is not found on the rosparam server (e.g. because it is not specified in the launchfile or yaml config file), the default value is used. Using this method, the parameter can only be loaded once using the same ParamLoader instance without error.
+
Parameters
+
+ name Name of the parameter in the rosparam server.
+ default_value This value will be used if the parameter name is not found in the rosparam server.
+ mat Reference to the variable to which the parameter value will be stored (such as a class member variable).
+ rows Expected number of rows of the matrix (negative value indicates that the number of rows is to be deduced from the specified number of columns and the size of the loaded array).
+ cols Expected number of columns of the matrix (negative value indicates that the number of columns is to be deduced from the specified number of rows and the size of the loaded array).
+
+
+
+
+
+
+
+
◆ loadMatrixDynamic() [2/2]
+
+
+
+
+template<typename T >
+
+
+
+
+
+ void mrs_lib::ParamLoader::loadMatrixDynamic
+ (
+ const std::string &
+ name ,
+
+
+
+
+ MatrixX< T > &
+ mat ,
+
+
+
+
+ int
+ rows ,
+
+
+
+
+ int
+ cols
+
+
+
+ )
+
+
+
+
+
+inline
+
+
+
+
+
Specialized method for loading compulsory dynamic Eigen matrix parameters.
+
If the dimensions of the loaded matrix do not match the specified number of rows and columns, the loading process is unsuccessful (loaded_successfully() will return false). If the parameter with the specified name is not found on the rosparam server (e.g. because it is not specified in the launchfile or yaml config file), the loading process is unsuccessful. Using this method, the parameter can only be loaded once using the same ParamLoader instance without error.
+
Parameters
+
+ name Name of the parameter in the rosparam server.
+ mat Reference to the variable to which the parameter value will be stored (such as a class member variable).
+ rows Expected number of rows of the matrix (negative value indicates that the number of rows is to be deduced from the specified number of columns and the size of the loaded array).
+ cols Expected number of columns of the matrix (negative value indicates that the number of columns is to be deduced from the specified number of rows and the size of the loaded array).
+
+
+
+
+
+
+
+
◆ loadMatrixDynamic2() [1/2]
+
+
+
+
+template<typename T , typename Derived >
+
+
+
+
+
+ MatrixX<T> mrs_lib::ParamLoader::loadMatrixDynamic2
+ (
+ const std::string &
+ name ,
+
+
+
+
+ const Eigen::MatrixBase< Derived > &
+ default_value ,
+
+
+
+
+ int
+ rows ,
+
+
+
+
+ int
+ cols
+
+
+
+ )
+
+
+
+
+
+inline
+
+
+
+
+
Specialized method for loading compulsory dynamic Eigen matrix parameters.
+
If the dimensions of the loaded matrix do not match the specified number of rows and columns, the loading process is unsuccessful (loaded_successfully() will return false). If the parameter with the specified name is not found on the rosparam server (e.g. because it is not specified in the launchfile or yaml config file), the default value is used. Using this method, the parameter can only be loaded once using the same ParamLoader instance without error.
+
Parameters
+
+ name Name of the parameter in the rosparam server.
+ default_value This value will be used if the parameter name is not found in the rosparam server.
+ rows Expected number of rows of the matrix (negative value indicates that the number of rows is to be deduced from the specified number of columns and the size of the loaded array).
+ cols Expected number of columns of the matrix (negative value indicates that the number of columns is to be deduced from the specified number of rows and the size of the loaded array).
+
+
+
+
Returns The loaded parameter value.
+
+
+
+
+
◆ loadMatrixDynamic2() [2/2]
+
+
+
+
+template<typename T = double>
+
+
+
+
+
+ MatrixX<T> mrs_lib::ParamLoader::loadMatrixDynamic2
+ (
+ const std::string &
+ name ,
+
+
+
+
+ int
+ rows ,
+
+
+
+
+ int
+ cols
+
+
+
+ )
+
+
+
+
+
+inline
+
+
+
+
+
Specialized method for loading compulsory dynamic Eigen matrix parameters.
+
If the dimensions of the loaded matrix do not match the specified number of rows and columns, the loading process is unsuccessful (loaded_successfully() will return false). If the parameter with the specified name is not found on the rosparam server (e.g. because it is not specified in the launchfile or yaml config file), the loading process is unsuccessful. Using this method, the parameter can only be loaded once using the same ParamLoader instance without error.
+
Parameters
+
+ name Name of the parameter in the rosparam server.
+ rows Expected number of rows of the matrix (negative value indicates that the number of rows is to be deduced from the specified number of columns and the size of the loaded array).
+ cols Expected number of columns of the matrix (negative value indicates that the number of columns is to be deduced from the specified number of rows and the size of the loaded array).
+
+
+
+
Returns The loaded parameter value.
+
+
+
+
+
◆ loadMatrixStatic() [1/4]
+
+
+
+
+template<int rows, int cols, typename T >
+
+
+
+
+
+ void mrs_lib::ParamLoader::loadMatrixStatic
+ (
+ const std::string &
+ name ,
+
+
+
+
+ Eigen::Matrix< T, rows, cols > &
+ mat
+
+
+
+ )
+
+
+
+
+
+inline
+
+
+
+
+
Specialized method for loading compulsory Eigen matrix parameters.
+
If the dimensions of the loaded matrix do not match the specified number of rows and columns, the loading process is unsuccessful (loaded_successfully() will return false). If the parameter with the specified name is not found on the rosparam server (e.g. because it is not specified in the launchfile or yaml config file), the loading process is unsuccessful. Using this method, the parameter can only be loaded once using the same ParamLoader instance without error.
+
Template Parameters
+
+ rows Expected number of rows of the matrix.
+ cols Expected number of columns of the matrix.
+
+
+
+
Parameters
+
+ name Name of the parameter in the rosparam server.
+ mat Reference to the variable to which the parameter value will be stored (such as a class member variable).
+
+
+
+
+
+
+
+
◆ loadMatrixStatic() [2/4]
+
+
+
+
+template<int rows, int cols, typename T , typename Derived >
+
+
+
+
+
+ void mrs_lib::ParamLoader::loadMatrixStatic
+ (
+ const std::string &
+ name ,
+
+
+
+
+ Eigen::Matrix< T, rows, cols > &
+ mat ,
+
+
+
+
+ const Eigen::MatrixBase< Derived > &
+ default_value
+
+
+
+ )
+
+
+
+
+
+inline
+
+
+
+
+
Specialized method for loading Eigen matrix parameters with default value.
+
If the dimensions of the loaded matrix do not match the specified number of rows and columns, the loading process is unsuccessful (loaded_successfully() will return false). If the parameter with the specified name is not found on the rosparam server (e.g. because it is not specified in the launchfile or yaml config file), the default value is used. Using this method, the parameter can only be loaded once using the same ParamLoader instance without error.
+
Template Parameters
+
+ rows Expected number of rows of the matrix.
+ cols Expected number of columns of the matrix.
+
+
+
+
Parameters
+
+ name Name of the parameter in the rosparam server.
+ mat Reference to the variable to which the parameter value will be stored (such as a class member variable).
+ default_value This value will be used if the parameter name is not found in the rosparam server.
+
+
+
+
+
+
+
+
◆ loadMatrixStatic() [3/4]
+
+
+
+
+template<typename T , typename Derived >
+
+
+
+
+
+ void mrs_lib::ParamLoader::loadMatrixStatic
+ (
+ const std::string &
+ name ,
+
+
+
+
+ MatrixX< T > &
+ mat ,
+
+
+
+
+ const Eigen::MatrixBase< Derived > &
+ default_value ,
+
+
+
+
+ int
+ rows ,
+
+
+
+
+ int
+ cols
+
+
+
+ )
+
+
+
+
+
+inline
+
+
+
+
+
Specialized method for loading Eigen matrix parameters with default value.
+
If the dimensions of the loaded matrix do not match the specified number of rows and columns, the loading process is unsuccessful (loaded_successfully() will return false). If the parameter with the specified name is not found on the rosparam server (e.g. because it is not specified in the launchfile or yaml config file), the default value is used. Using this method, the parameter can only be loaded once using the same ParamLoader instance without error.
+
Parameters
+
+ name Name of the parameter in the rosparam server.
+ mat Reference to the variable to which the parameter value will be stored (such as a class member variable).
+ default_value This value will be used if the parameter name is not found in the rosparam server.
+ rows Expected number of rows of the matrix.
+ cols Expected number of columns of the matrix.
+
+
+
+
+
+
+
+
◆ loadMatrixStatic() [4/4]
+
+
+
+
+template<typename T >
+
+
+
+
+
+ void mrs_lib::ParamLoader::loadMatrixStatic
+ (
+ const std::string &
+ name ,
+
+
+
+
+ MatrixX< T > &
+ mat ,
+
+
+
+
+ int
+ rows ,
+
+
+
+
+ int
+ cols
+
+
+
+ )
+
+
+
+
+
+inline
+
+
+
+
+
Specialized method for loading compulsory Eigen matrix parameters.
+
If the dimensions of the loaded matrix do not match the specified number of rows and columns, the loading process is unsuccessful (loaded_successfully() will return false). If the parameter with the specified name is not found on the rosparam server (e.g. because it is not specified in the launchfile or yaml config file), the loading process is unsuccessful. Using this method, the parameter can only be loaded once using the same ParamLoader instance without error.
+
Parameters
+
+ name Name of the parameter in the rosparam server.
+ mat Reference to the variable to which the parameter value will be stored (such as a class member variable).
+ rows Expected number of rows of the matrix.
+ cols Expected number of columns of the matrix.
+
+
+
+
+
+
+
+
◆ loadMatrixStatic2() [1/4]
+
+
+
+
+template<int rows, int cols, typename T = double>
+
+
+
+
+
+ Eigen::Matrix<T, rows, cols> mrs_lib::ParamLoader::loadMatrixStatic2
+ (
+ const std::string &
+ name )
+
+
+
+
+
+inline
+
+
+
+
+
Specialized method for loading compulsory Eigen matrix parameters.
+
If the dimensions of the loaded matrix do not match the specified number of rows and columns, the loading process is unsuccessful (loaded_successfully() will return false). If the parameter with the specified name is not found on the rosparam server (e.g. because it is not specified in the launchfile or yaml config file), the loading process is unsuccessful. Using this method, the parameter can only be loaded once using the same ParamLoader instance without error.
+
Template Parameters
+
+ rows Expected number of rows of the matrix.
+ cols Expected number of columns of the matrix.
+
+
+
+
Parameters
+
+ name Name of the parameter in the rosparam server.
+
+
+
+
Returns The loaded parameter value.
+
+
+
+
+
◆ loadMatrixStatic2() [2/4]
+
+
+
+
+template<int rows, int cols, typename T , typename Derived >
+
+
+
+
+
+ Eigen::Matrix<T, rows, cols> mrs_lib::ParamLoader::loadMatrixStatic2
+ (
+ const std::string &
+ name ,
+
+
+
+
+ const Eigen::MatrixBase< Derived > &
+ default_value
+
+
+
+ )
+
+
+
+
+
+inline
+
+
+
+
+
Specialized method for loading Eigen matrix parameters with default value.
+
If the dimensions of the loaded matrix do not match the specified number of rows and columns, the loading process is unsuccessful (loaded_successfully() will return false). If the parameter with the specified name is not found on the rosparam server (e.g. because it is not specified in the launchfile or yaml config file), the default value is used. Using this method, the parameter can only be loaded once using the same ParamLoader instance without error.
+
Template Parameters
+
+ rows Expected number of rows of the matrix.
+ cols Expected number of columns of the matrix.
+
+
+
+
Parameters
+
+ name Name of the parameter in the rosparam server.
+ default_value This value will be used if the parameter name is not found in the rosparam server.
+
+
+
+
Returns The loaded parameter value.
+
+
+
+
+
◆ loadMatrixStatic2() [3/4]
+
+
+
+
+template<typename T , typename Derived >
+
+
+
+
+
+ MatrixX<T> mrs_lib::ParamLoader::loadMatrixStatic2
+ (
+ const std::string &
+ name ,
+
+
+
+
+ const Eigen::MatrixBase< Derived > &
+ default_value ,
+
+
+
+
+ int
+ rows ,
+
+
+
+
+ int
+ cols
+
+
+
+ )
+
+
+
+
+
+inline
+
+
+
+
+
Specialized method for loading Eigen matrix parameters with default value.
+
If the dimensions of the loaded matrix do not match the specified number of rows and columns, the loading process is unsuccessful (loaded_successfully() will return false). If the parameter with the specified name is not found on the rosparam server (e.g. because it is not specified in the launchfile or yaml config file), the default value is used. Using this method, the parameter can only be loaded once using the same ParamLoader instance without error.
+
Parameters
+
+ name Name of the parameter in the rosparam server.
+ default_value This value will be used if the parameter name is not found in the rosparam server.
+ rows Expected number of rows of the matrix.
+ cols Expected number of columns of the matrix.
+
+
+
+
Returns The loaded parameter value.
+
+
+
+
+
◆ loadMatrixStatic2() [4/4]
+
+
+
+
+template<typename T = double>
+
+
+
+
+
+ MatrixX<T> mrs_lib::ParamLoader::loadMatrixStatic2
+ (
+ const std::string &
+ name ,
+
+
+
+
+ int
+ rows ,
+
+
+
+
+ int
+ cols
+
+
+
+ )
+
+
+
+
+
+inline
+
+
+
+
+
Specialized method for loading compulsory Eigen matrix parameters.
+
If the dimensions of the loaded matrix do not match the specified number of rows and columns, the loading process is unsuccessful (loaded_successfully() will return false). If the parameter with the specified name is not found on the rosparam server (e.g. because it is not specified in the launchfile or yaml config file), the loading process is unsuccessful. Using this method, the parameter can only be loaded once using the same ParamLoader instance without error.
+
Parameters
+
+ name Name of the parameter in the rosparam server.
+ rows Expected number of rows of the matrix.
+ cols Expected number of columns of the matrix.
+
+
+
+
Returns The loaded parameter value.
+
+
+
+
+
◆ loadParam() [1/6]
+
+
+
+
+template<typename T >
+
+
+
+
+
+ void mrs_lib::ParamLoader::loadParam
+ (
+ const std::string &
+ name ,
+
+
+
+
+ MatrixX< T > &
+ mat ,
+
+
+
+
+ const MatrixX< T > &
+ default_value
+
+
+
+ )
+
+
+
+
+
+inline
+
+
+
+
+
An overload for loading Eigen matrices.
+
For compulsory Eigen matrices, use loadMatrixStatic() or loadMatrixDynamic() . Matrix dimensions are deduced from the provided default value. If the parameter with the specified name is not found on the rosparam server (e.g. because it is not specified in the launchfile or yaml config file), the default value is used. Using this method, the parameter can only be loaded once using the same ParamLoader instance without error.
+
Parameters
+
+ name Name of the parameter in the rosparam server.
+ out_value Reference to the variable to which the parameter value will be stored (such as a class member variable).
+ default_value This value will be used if the parameter name is not found in the rosparam server.
+
+
+
+
+
+
+
+
◆ loadParam() [2/6]
+
+
+
+
+
+
+
+
+ bool mrs_lib::ParamLoader::loadParam
+ (
+ const std::string &
+ name ,
+
+
+
+
+ ros::Duration &
+ out
+
+
+
+ )
+
+
+
+
+
+inline
+
+
+
+
+
An overload for loading ros::Duration.
+
The duration will be loaded as a double
, representing a number of seconds, and then converted to ros::Duration.
+
Parameters
+
+ name Name of the parameter in the rosparam server.
+ out_value Reference to the variable to which the parameter value will be stored (such as a class member variable).
+
+
+
+
Returns true if the parameter was loaded from rosparam
, false if the default value was used.
+
+
+
+
+
◆ loadParam() [3/6]
+
+
+
+
+
+
+
+
+ bool mrs_lib::ParamLoader::loadParam
+ (
+ const std::string &
+ name ,
+
+
+
+
+ ros::Duration &
+ out ,
+
+
+
+
+ const ros::Duration &
+ default_value
+
+
+
+ )
+
+
+
+
+
+inline
+
+
+
+
+
An overload for loading ros::Duration.
+
The duration will be loaded as a double
, representing a number of seconds, and then converted to ros::Duration.
+
Parameters
+
+ name Name of the parameter in the rosparam server.
+ out_value Reference to the variable to which the parameter value will be stored (such as a class member variable).
+ default_value This value will be used if the parameter name is not found in the rosparam server.
+
+
+
+
Returns true if the parameter was loaded from rosparam
, false if the default value was used.
+
+
+
+
+
◆ loadParam() [4/6]
+
+
+
+
+
+
+
+
+ bool mrs_lib::ParamLoader::loadParam
+ (
+ const std::string &
+ name ,
+
+
+
+
+ std_msgs::ColorRGBA &
+ out ,
+
+
+
+
+ const std_msgs::ColorRGBA &
+ default_value = {}
+
+
+
+ )
+
+
+
+
+
+inline
+
+
+
+
+
An overload for loading std_msgs::ColorRGBA.
+
The color will be loaded as several double
-typed variables, representing the R, G, B and A color elements.
+
Parameters
+
+ name Name of the parameter in the rosparam server.
+ out_value Reference to the variable to which the parameter value will be stored (such as a class member variable).
+ default_value This value will be used if the parameter name is not found in the rosparam server.
+
+
+
+
Returns true if the parameter was loaded from rosparam
, false if the default value was used.
+
+
+
+
+
◆ loadParam() [5/6]
+
+
+
+
+template<typename T >
+
+
+
+
+
+ bool mrs_lib::ParamLoader::loadParam
+ (
+ const std::string &
+ name ,
+
+
+
+
+ T &
+ out_value
+
+
+
+ )
+
+
+
+
+
+inline
+
+
+
+
+
Loads a compulsory parameter from the rosparam server.
+
If the parameter with the specified name is not found on the rosparam server (e.g. because it is not specified in the launchfile or yaml config file), the loading process is unsuccessful (loaded_successfully() will return false). Using this method, the parameter can only be loaded once using the same ParamLoader instance without error.
+
Parameters
+
+ name Name of the parameter in the rosparam server.
+ out_value Reference to the variable to which the parameter value will be stored (such as a class member variable).
+
+
+
+
Returns true if the parameter was loaded from rosparam
, false if the default value was used.
+
+
+
+
+
◆ loadParam() [6/6]
+
+
+
+
+template<typename T >
+
+
+
+
+
+ bool mrs_lib::ParamLoader::loadParam
+ (
+ const std::string &
+ name ,
+
+
+
+
+ T &
+ out_value ,
+
+
+
+
+ const T &
+ default_value
+
+
+
+ )
+
+
+
+
+
+inline
+
+
+
+
+
Loads a parameter from the rosparam server with a default value.
+
If the parameter with the specified name is not found on the rosparam server (e.g. because it is not specified in the launchfile or yaml config file), the default value is used. Using this method, the parameter can only be loaded once using the same ParamLoader instance without error.
+
Parameters
+
+ name Name of the parameter in the rosparam server.
+ out_value Reference to the variable to which the parameter value will be stored (such as a class member variable).
+ default_value This value will be used if the parameter name is not found in the rosparam server.
+
+
+
+
Returns true if the parameter was loaded from rosparam
, false if the default value was used.
+
Examples param_loader/example.cpp .
+
+
+
+
+
+
◆ loadParam2() [1/4]
+
+
+
+
+template<typename T >
+
+
+
+
+
+ T mrs_lib::ParamLoader::loadParam2
+ (
+ const std::string &
+ name )
+
+
+
+
+
+inline
+
+
+
+
+
Loads a compulsory parameter from the rosparam server.
+
If the parameter with the specified name is not found on the rosparam server (e.g. because it is not specified in the launchfile or yaml config file), the loading process is unsuccessful (loaded_successfully() will return false). Using this method, the parameter can only be loaded once using the same ParamLoader instance without error.
+
Parameters
+
+ name Name of the parameter in the rosparam server.
+
+
+
+
Returns The loaded parameter value.
+
+
+
+
+
◆ loadParam2() [2/4]
+
+
+
+
+template<typename T >
+
+
+
+
+
+ MatrixX<T> mrs_lib::ParamLoader::loadParam2
+ (
+ const std::string &
+ name ,
+
+
+
+
+ const MatrixX< T > &
+ default_value
+
+
+
+ )
+
+
+
+
+
+inline
+
+
+
+
+
An overload for loading Eigen matrices.
+
For compulsory Eigen matrices, use loadMatrixStatic() or loadMatrixDynamic() . Matrix dimensions are deduced from the provided default value. If the parameter with the specified name is not found on the rosparam server (e.g. because it is not specified in the launchfile or yaml config file), the default value is used. Using this method, the parameter can only be loaded once using the same ParamLoader instance without error.
+
Parameters
+
+ name Name of the parameter in the rosparam server.
+ default_value This value will be used if the parameter name is not found in the rosparam server.
+
+
+
+
Returns The loaded parameter value.
+
+
+
+
+
◆ loadParam2() [3/4]
+
+
+
+
+
+
+
+
+ std_msgs::ColorRGBA mrs_lib::ParamLoader::loadParam2
+ (
+ const std::string &
+ name ,
+
+
+
+
+ const std_msgs::ColorRGBA &
+ default_value = {}
+
+
+
+ )
+
+
+
+
+
+inline
+
+
+
+
+
An overload for loading std_msgs::ColorRGBA.
+
The color will be loaded as several double
-typed variables, representing the R, G, B and A color elements.
+
Parameters
+
+ name Name of the parameter in the rosparam server.
+ default_value This value will be used if the parameter name is not found in the rosparam server.
+
+
+
+
Returns The loaded parameter value.
+
+
+
+
+
◆ loadParam2() [4/4]
+
+
+
+
+template<typename T >
+
+
+
+
+
+ T mrs_lib::ParamLoader::loadParam2
+ (
+ const std::string &
+ name ,
+
+
+
+
+ const T &
+ default_value
+
+
+
+ )
+
+
+
+
+
+inline
+
+
+
+
+
Loads a parameter from the rosparam server with a default value.
+
If the parameter with the specified name is not found on the rosparam server (e.g. because it is not specified in the launchfile or yaml config file), the default value is used. Using this method, the parameter can only be loaded once using the same ParamLoader instance without error.
+
Parameters
+
+ name Name of the parameter in the rosparam server.
+ default_value This value will be used if the parameter name is not found in the rosparam server.
+
+
+
+
Returns The loaded parameter value.
+
Examples param_loader/example.cpp .
+
+
+
+
+
+
◆ loadParamReusable() [1/2]
+
+
+
+
+template<typename T >
+
+
+
+
+
+ bool mrs_lib::ParamLoader::loadParamReusable
+ (
+ const std::string &
+ name ,
+
+
+
+
+ T &
+ out_value
+
+
+
+ )
+
+
+
+
+
+inline
+
+
+
+
+
Loads a compulsory parameter from the rosparam server.
+
If the parameter with the specified name is not found on the rosparam server (e.g. because it is not specified in the launchfile or yaml config file), the loading process is unsuccessful (loaded_successfully() will return false). Using this method, the parameter can be loaded multiple times using the same ParamLoader instance without error.
+
Parameters
+
+ name Name of the parameter in the rosparam server.
+ out_value Reference to the variable to which the parameter value will be stored (such as a class member variable).
+
+
+
+
Returns true if the parameter was loaded from rosparam
, false if the default value was used.
+
+
+
+
+
◆ loadParamReusable() [2/2]
+
+
+
+
+template<typename T >
+
+
+
+
+
+ bool mrs_lib::ParamLoader::loadParamReusable
+ (
+ const std::string &
+ name ,
+
+
+
+
+ T &
+ out_value ,
+
+
+
+
+ const T &
+ default_value
+
+
+
+ )
+
+
+
+
+
+inline
+
+
+
+
+
Loads a parameter from the rosparam server with a default value.
+
If the parameter with the specified name is not found on the rosparam server (e.g. because it is not specified in the launchfile or yaml config file), the default value is used. Using this method, the parameter can be loaded multiple times using the same ParamLoader instance without error.
+
Parameters
+
+ name Name of the parameter in the rosparam server.
+ out_value Reference to the variable to which the parameter value will be stored (such as a class member variable).
+ default_value This value will be used if the parameter name is not found in the rosparam server.
+
+
+
+
Returns true if the parameter was loaded from rosparam
, false if the default value was used.
+
+
+
+
+
◆ loadParamReusable2() [1/2]
+
+
+
+
+template<typename T >
+
+
+
+
+
+ T mrs_lib::ParamLoader::loadParamReusable2
+ (
+ const std::string &
+ name )
+
+
+
+
+
+inline
+
+
+
+
+
Loads a compulsory parameter from the rosparam server.
+
If the parameter with the specified name is not found on the rosparam server (e.g. because it is not specified in the launchfile or yaml config file), the loading process is unsuccessful (loaded_successfully() will return false). Using this method, the parameter can be loaded multiple times using the same ParamLoader instance without error.
+
Parameters
+
+ name Name of the parameter in the rosparam server.
+
+
+
+
Returns The loaded parameter value.
+
+
+
+
+
◆ loadParamReusable2() [2/2]
+
+
+
+
+template<typename T >
+
+
+
+
+
+ T mrs_lib::ParamLoader::loadParamReusable2
+ (
+ const std::string &
+ name ,
+
+
+
+
+ const T &
+ default_value
+
+
+
+ )
+
+
+
+
+
+inline
+
+
+
+
+
Loads an optional reusable parameter from the rosparam server.
+
If the parameter with the specified name is not found on the rosparam server (e.g. because it is not specified in the launchfile or yaml config file), the default value is used. Using this method, the parameter can be loaded multiple times using the same ParamLoader instance without error.
+
Parameters
+
+ name Name of the parameter in the rosparam server.
+ default_value This value will be used if the parameter name is not found in the rosparam server.
+
+
+
+
Returns The loaded parameter value.
+
+
+
+
+
◆ setPrefix()
+
+
+
+
+
+
+
+
+ void mrs_lib::ParamLoader::setPrefix
+ (
+ const std::string &
+ prefix )
+
+
+
+
+
+inline
+
+
+
+
+
All loaded parameters will be prefixed with this string.
+
Parameters
+
+ prefix the prefix to be applied to all loaded parameters from now on.
+
+
+
+
+
+
+
The documentation for this class was generated from the following file:
+
+
+
+
+
+
diff --git a/classmrs__lib_1_1ParamLoader.js b/classmrs__lib_1_1ParamLoader.js
new file mode 100644
index 00000000..12d4a209
--- /dev/null
+++ b/classmrs__lib_1_1ParamLoader.js
@@ -0,0 +1,41 @@
+var classmrs__lib_1_1ParamLoader =
+[
+ [ "ParamLoader", "classmrs__lib_1_1ParamLoader.html#a26079fe045fe261add0548c40c5d3baa", null ],
+ [ "ParamLoader", "classmrs__lib_1_1ParamLoader.html#a09d03d4f79736e8269f66ba2f11356c5", null ],
+ [ "ParamLoader", "classmrs__lib_1_1ParamLoader.html#ac3de917c61f02060c4e28afb2765f71c", null ],
+ [ "addYamlFile", "classmrs__lib_1_1ParamLoader.html#a7e0a9d3c3ca4e85692999f99b51e53e7", null ],
+ [ "addYamlFileFromParam", "classmrs__lib_1_1ParamLoader.html#a3ae6c294bc7bcf0fa17557ee36e04b31", null ],
+ [ "getPrefix", "classmrs__lib_1_1ParamLoader.html#a68eb35df103229cd2de7416252723bf8", null ],
+ [ "loadedSuccessfully", "classmrs__lib_1_1ParamLoader.html#ad49130b893f09bc2247e2bc37a41f6d5", null ],
+ [ "loadMatrixArray", "classmrs__lib_1_1ParamLoader.html#af5397147ce0a3ecaf0e1f178a9435183", null ],
+ [ "loadMatrixArray", "classmrs__lib_1_1ParamLoader.html#aaeaec89a76f044b2e5fe2883ae768942", null ],
+ [ "loadMatrixArray2", "classmrs__lib_1_1ParamLoader.html#af7ffe39a26bd4a457ab01b83e5d5795d", null ],
+ [ "loadMatrixArray2", "classmrs__lib_1_1ParamLoader.html#a46bb91300eaa5c0d06d462b950f92897", null ],
+ [ "loadMatrixDynamic", "classmrs__lib_1_1ParamLoader.html#a6b1fbdb2c1ed41ac533a67abad8638d9", null ],
+ [ "loadMatrixDynamic", "classmrs__lib_1_1ParamLoader.html#aabecb03ea3643752ddc3154e6c58d390", null ],
+ [ "loadMatrixDynamic2", "classmrs__lib_1_1ParamLoader.html#a99673cb2d8f39c18da5e6db967238ec9", null ],
+ [ "loadMatrixDynamic2", "classmrs__lib_1_1ParamLoader.html#a89bdbb61a1de508cc0f247f234d824d6", null ],
+ [ "loadMatrixStatic", "classmrs__lib_1_1ParamLoader.html#a03dc26f5fad92b0fb8b7437c074b23aa", null ],
+ [ "loadMatrixStatic", "classmrs__lib_1_1ParamLoader.html#a19bc5cbd5c3ee7d4614555dfe3d96001", null ],
+ [ "loadMatrixStatic", "classmrs__lib_1_1ParamLoader.html#af96b60fd7bce95d3e1d3aa351bccba9b", null ],
+ [ "loadMatrixStatic", "classmrs__lib_1_1ParamLoader.html#aafc3bb716f3728d5a1b1cfc45b0d3ddf", null ],
+ [ "loadMatrixStatic2", "classmrs__lib_1_1ParamLoader.html#a2a78e5b64d8681a46976a6e9d0486b1a", null ],
+ [ "loadMatrixStatic2", "classmrs__lib_1_1ParamLoader.html#ab6b1b2b00e8548b092893afcfbeee79f", null ],
+ [ "loadMatrixStatic2", "classmrs__lib_1_1ParamLoader.html#af8ab00da18479e583adf86983e77c577", null ],
+ [ "loadMatrixStatic2", "classmrs__lib_1_1ParamLoader.html#af06e1f2bdf94f8a18a19ae3e77a0f99a", null ],
+ [ "loadParam", "classmrs__lib_1_1ParamLoader.html#a6ee4d78d716c92045a38c40d6ae41c4d", null ],
+ [ "loadParam", "classmrs__lib_1_1ParamLoader.html#ae4893dc129c5f6fd07fc26f6c03279cd", null ],
+ [ "loadParam", "classmrs__lib_1_1ParamLoader.html#a5368f22f9c1eee287b39bcc91b8d8f42", null ],
+ [ "loadParam", "classmrs__lib_1_1ParamLoader.html#a472acaab459f4318dc20df8416b6023d", null ],
+ [ "loadParam", "classmrs__lib_1_1ParamLoader.html#af5d9f2ac1549f9a7f03a04b9cebf9fed", null ],
+ [ "loadParam", "classmrs__lib_1_1ParamLoader.html#a9e55225fa7d9de0e948b2e64494eb229", null ],
+ [ "loadParam2", "classmrs__lib_1_1ParamLoader.html#ab8a37a3b88261e120d6ff36a6aebf960", null ],
+ [ "loadParam2", "classmrs__lib_1_1ParamLoader.html#a080f2c2605b42219c63d62d0fd8e0948", null ],
+ [ "loadParam2", "classmrs__lib_1_1ParamLoader.html#a708d62a49386efe8334d8c13af2d8f85", null ],
+ [ "loadParam2", "classmrs__lib_1_1ParamLoader.html#a7b31603059669efa75b00d8e73bc163a", null ],
+ [ "loadParamReusable", "classmrs__lib_1_1ParamLoader.html#a31b36d7e1109d2c1d663122c689359c0", null ],
+ [ "loadParamReusable", "classmrs__lib_1_1ParamLoader.html#add294058e4857eda6a8ece7e0b451390", null ],
+ [ "loadParamReusable2", "classmrs__lib_1_1ParamLoader.html#abe9a7f5aea80c8cdb2d624c12f098a90", null ],
+ [ "loadParamReusable2", "classmrs__lib_1_1ParamLoader.html#ae3e15767c2e94a1f22a9205ae3f507f1", null ],
+ [ "setPrefix", "classmrs__lib_1_1ParamLoader.html#a8ad978834d5d6d1745a96f1ecc65a759", null ]
+];
\ No newline at end of file
diff --git a/classmrs__lib_1_1ParamProvider-members.html b/classmrs__lib_1_1ParamProvider-members.html
new file mode 100644
index 00000000..60159a90
--- /dev/null
+++ b/classmrs__lib_1_1ParamProvider-members.html
@@ -0,0 +1,108 @@
+
+
+
+
+
+
+
+mrs_lib: Member List
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
This is the complete list of members for mrs_lib::ParamProvider , including all inherited members.
+
+
+
+
+
+
diff --git a/classmrs__lib_1_1ParamProvider.html b/classmrs__lib_1_1ParamProvider.html
new file mode 100644
index 00000000..a3a51f7a
--- /dev/null
+++ b/classmrs__lib_1_1ParamProvider.html
@@ -0,0 +1,138 @@
+
+
+
+
+
+
+
+mrs_lib: mrs_lib::ParamProvider Class Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+template<typename T >
+bool getParam (const std::string ¶m_name, T &value_out) const
+
+
+bool getParam (const std::string ¶m_name, XmlRpc::XmlRpcValue &value_out) const
+
+
+ ParamProvider (const ros::NodeHandle &nh, std::string node_name, const bool use_rosparam=true)
+
+
+bool addYamlFile (const std::string &filepath)
+
+
+
The documentation for this class was generated from the following files:
+
+
+
+
+
+
diff --git a/classmrs__lib_1_1ParamProvider.js b/classmrs__lib_1_1ParamProvider.js
new file mode 100644
index 00000000..5e605604
--- /dev/null
+++ b/classmrs__lib_1_1ParamProvider.js
@@ -0,0 +1,7 @@
+var classmrs__lib_1_1ParamProvider =
+[
+ [ "ParamProvider", "classmrs__lib_1_1ParamProvider.html#aa6f38dd58d2fd1093d6646134a5d6e59", null ],
+ [ "addYamlFile", "classmrs__lib_1_1ParamProvider.html#a137506901a03daeaaebcb5544de777f0", null ],
+ [ "getParam", "classmrs__lib_1_1ParamProvider.html#a6b3be6133e7eecc3f15b3c898c0911e0", null ],
+ [ "getParam", "classmrs__lib_1_1ParamProvider.html#aa3106f4d258195b890e8583d485c7547", null ]
+];
\ No newline at end of file
diff --git a/classmrs__lib_1_1ParamProvider__inherit__graph.map b/classmrs__lib_1_1ParamProvider__inherit__graph.map
new file mode 100644
index 00000000..58880610
--- /dev/null
+++ b/classmrs__lib_1_1ParamProvider__inherit__graph.map
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/classmrs__lib_1_1ParamProvider__inherit__graph.md5 b/classmrs__lib_1_1ParamProvider__inherit__graph.md5
new file mode 100644
index 00000000..39f82f91
--- /dev/null
+++ b/classmrs__lib_1_1ParamProvider__inherit__graph.md5
@@ -0,0 +1 @@
+973d673c560fb5ce6ace0e67115fcd3e
\ No newline at end of file
diff --git a/classmrs__lib_1_1ParamProvider__inherit__graph.png b/classmrs__lib_1_1ParamProvider__inherit__graph.png
new file mode 100644
index 00000000..d831db49
Binary files /dev/null and b/classmrs__lib_1_1ParamProvider__inherit__graph.png differ
diff --git a/classmrs__lib_1_1PointObstacle-members.html b/classmrs__lib_1_1PointObstacle-members.html
new file mode 100644
index 00000000..cfc6fbb6
--- /dev/null
+++ b/classmrs__lib_1_1PointObstacle-members.html
@@ -0,0 +1,111 @@
+
+
+
+
+
+
+
+mrs_lib: Member List
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
This is the complete list of members for mrs_lib::PointObstacle , including all inherited members.
+
+ doesSectionIntersect2d (const double startX, const double startY, const double endX, const double endY) (defined in mrs_lib::PointObstacle )mrs_lib::PointObstacle
+ doesSectionIntersect3d (const double startX, const double startY, const double startZ, const double endX, const double endY, const double endZ) (defined in mrs_lib::PointObstacle )mrs_lib::PointObstacle
+ getPointMessageVector (const double z) (defined in mrs_lib::PointObstacle )mrs_lib::PointObstacle
+ inflateSelf (double amount) (defined in mrs_lib::PointObstacle )mrs_lib::PointObstacle
+ isPointInside2d (const double px, const double py) (defined in mrs_lib::PointObstacle )mrs_lib::PointObstacle
+ isPointInside3d (const double px, const double py, const double pz) (defined in mrs_lib::PointObstacle )mrs_lib::PointObstacle
+ PointObstacle (const Eigen::RowVector2d center, const double r, const double height) (defined in mrs_lib::PointObstacle )mrs_lib::PointObstacle
+
+
+
+
+
+
diff --git a/classmrs__lib_1_1PointObstacle.html b/classmrs__lib_1_1PointObstacle.html
new file mode 100644
index 00000000..8b4cc76f
--- /dev/null
+++ b/classmrs__lib_1_1PointObstacle.html
@@ -0,0 +1,142 @@
+
+
+
+
+
+
+
+mrs_lib: mrs_lib::PointObstacle Class Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PointObstacle (const Eigen::RowVector2d center, const double r, const double height)
+
+
+bool isPointInside3d (const double px, const double py, const double pz)
+
+
+bool isPointInside2d (const double px, const double py)
+
+
+bool doesSectionIntersect3d (const double startX, const double startY, const double startZ, const double endX, const double endY, const double endZ)
+
+
+bool doesSectionIntersect2d (const double startX, const double startY, const double endX, const double endY)
+
+
+void inflateSelf (double amount)
+
+
+std::vector< geometry_msgs::Point > getPointMessageVector (const double z)
+
+
+
The documentation for this class was generated from the following files:
+include/mrs_lib/safety_zone/point_obstacle.h
+src/safety_zone/point_obstacle/point_obstacle.cpp
+
+
+
+
+
+
+
diff --git a/classmrs__lib_1_1PointObstacle.js b/classmrs__lib_1_1PointObstacle.js
new file mode 100644
index 00000000..ef840afa
--- /dev/null
+++ b/classmrs__lib_1_1PointObstacle.js
@@ -0,0 +1,12 @@
+var classmrs__lib_1_1PointObstacle =
+[
+ [ "WrongHeight", "structmrs__lib_1_1PointObstacle_1_1WrongHeight.html", "structmrs__lib_1_1PointObstacle_1_1WrongHeight" ],
+ [ "WrongRadius", "structmrs__lib_1_1PointObstacle_1_1WrongRadius.html", "structmrs__lib_1_1PointObstacle_1_1WrongRadius" ],
+ [ "PointObstacle", "classmrs__lib_1_1PointObstacle.html#ae23a5341163b7fc975ca1718ec773ed8", null ],
+ [ "doesSectionIntersect2d", "classmrs__lib_1_1PointObstacle.html#a063fa66d5125370dacd8bedb266b3bb4", null ],
+ [ "doesSectionIntersect3d", "classmrs__lib_1_1PointObstacle.html#ac1709da71828a8f5ffbeddae1487f7b4", null ],
+ [ "getPointMessageVector", "classmrs__lib_1_1PointObstacle.html#a5a4ef423d30e58063989bca65febae11", null ],
+ [ "inflateSelf", "classmrs__lib_1_1PointObstacle.html#a099d99ff2989ff9fe1a73a82c290172e", null ],
+ [ "isPointInside2d", "classmrs__lib_1_1PointObstacle.html#ad46fb8ee8a3db26feaf4e7acfb7518b6", null ],
+ [ "isPointInside3d", "classmrs__lib_1_1PointObstacle.html#a884a85c236840877232795080c302d90", null ]
+];
\ No newline at end of file
diff --git a/classmrs__lib_1_1Polygon-members.html b/classmrs__lib_1_1Polygon-members.html
new file mode 100644
index 00000000..c9e8b1c8
--- /dev/null
+++ b/classmrs__lib_1_1Polygon-members.html
@@ -0,0 +1,110 @@
+
+
+
+
+
+
+
+mrs_lib: Member List
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
This is the complete list of members for mrs_lib::Polygon , including all inherited members.
+
+
+
+
+
+
diff --git a/classmrs__lib_1_1Polygon.html b/classmrs__lib_1_1Polygon.html
new file mode 100644
index 00000000..348149b0
--- /dev/null
+++ b/classmrs__lib_1_1Polygon.html
@@ -0,0 +1,141 @@
+
+
+
+
+
+
+
+mrs_lib: mrs_lib::Polygon Class Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Polygon (const Eigen::MatrixXd vertices)
+
+
+bool isPointInside (const double px, const double py)
+
+
+bool doesSectionIntersect (const double startX, const double startY, const double endX, const double endY)
+
+
+bool isClockwise ()
+
+
+void inflateSelf (double amount)
+
+
+std::vector< geometry_msgs::Point > getPointMessageVector (const double z)
+
+
+
The documentation for this class was generated from the following files:
+include/mrs_lib/safety_zone/polygon.h
+src/safety_zone/polygon/polygon.cpp
+
+
+
+
+
+
+
diff --git a/classmrs__lib_1_1Polygon.js b/classmrs__lib_1_1Polygon.js
new file mode 100644
index 00000000..a77eacd6
--- /dev/null
+++ b/classmrs__lib_1_1Polygon.js
@@ -0,0 +1,12 @@
+var classmrs__lib_1_1Polygon =
+[
+ [ "ExtraVertices", "structmrs__lib_1_1Polygon_1_1ExtraVertices.html", "structmrs__lib_1_1Polygon_1_1ExtraVertices" ],
+ [ "WrongNumberOfColumns", "structmrs__lib_1_1Polygon_1_1WrongNumberOfColumns.html", "structmrs__lib_1_1Polygon_1_1WrongNumberOfColumns" ],
+ [ "WrongNumberOfVertices", "structmrs__lib_1_1Polygon_1_1WrongNumberOfVertices.html", "structmrs__lib_1_1Polygon_1_1WrongNumberOfVertices" ],
+ [ "Polygon", "classmrs__lib_1_1Polygon.html#a000afa1f46e867c63100b08fcd8656ee", null ],
+ [ "doesSectionIntersect", "classmrs__lib_1_1Polygon.html#a3a8003ab7f027475cb416e02b5772d7b", null ],
+ [ "getPointMessageVector", "classmrs__lib_1_1Polygon.html#a86a38fbc31a7218a8713c4db8aa8d990", null ],
+ [ "inflateSelf", "classmrs__lib_1_1Polygon.html#a76512a8ac70d056b7bb7661e6b7e5abc", null ],
+ [ "isClockwise", "classmrs__lib_1_1Polygon.html#a1b1b5c8674b256ca13266a92b3e09d79", null ],
+ [ "isPointInside", "classmrs__lib_1_1Polygon.html#a65e1c25641c33882c2ad6e913dbcdc84", null ]
+];
\ No newline at end of file
diff --git a/classmrs__lib_1_1Profiler-members.html b/classmrs__lib_1_1Profiler-members.html
new file mode 100644
index 00000000..d9165f5b
--- /dev/null
+++ b/classmrs__lib_1_1Profiler-members.html
@@ -0,0 +1,110 @@
+
+
+
+
+
+
+
+mrs_lib: Member List
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
This is the complete list of members for mrs_lib::Profiler , including all inherited members.
+
+
+
+
+
+
diff --git a/classmrs__lib_1_1Profiler.html b/classmrs__lib_1_1Profiler.html
new file mode 100644
index 00000000..e88a1172
--- /dev/null
+++ b/classmrs__lib_1_1Profiler.html
@@ -0,0 +1,310 @@
+
+
+
+
+
+
+
+mrs_lib: mrs_lib::Profiler Class Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
◆ Profiler() [1/2]
+
+
+
+
+
+ mrs_lib::Profiler::Profiler
+ (
+ ros::NodeHandle &
+ nh ,
+
+
+
+
+ std::string
+ node_name ,
+
+
+
+
+ bool
+ profiler_enabled
+
+
+
+ )
+
+
+
+
+
+
the full constructor
+
Parameters
+
+ nh node handle
+ node_name the node name
+ profiler_enabled if profiling is enabled
+
+
+
+
+
+
+
+
◆ Profiler() [2/2]
+
+
+
+
+
+ mrs_lib::Profiler::Profiler
+ (
+ const Profiler &
+ other )
+
+
+
+
+
+
the copy constructor
+
Parameters
+
+ other the other object
+
+
+
+
+
+
+
+
+
◆ createRoutine() [1/2]
+
+
+
+
+
+ Routine mrs_lib::Profiler::createRoutine
+ (
+ std::string
+ name )
+
+
+
+
+
+
create a routine for an aperiodic function
+
Parameters
+
+ name the function name
+
+
+
+
Returns the Routine
+
+
+
+
+
◆ createRoutine() [2/2]
+
+
+
+
+
+ Routine mrs_lib::Profiler::createRoutine
+ (
+ std::string
+ name ,
+
+
+
+
+ double
+ expected_rate ,
+
+
+
+
+ double
+ threshold ,
+
+
+
+
+ ros::TimerEvent
+ event
+
+
+
+ )
+
+
+
+
+
+
create a routine for a periodic function
+
Parameters
+
+ name the function name
+ expected_rate the expected rate in Hz
+ threshold the delay threshold to mark it as "late" in s
+ event the ros Timer event
+
+
+
+
Returns the Routine
+
+
+
+
+
◆ operator=()
+
+
+
+
+
+ Profiler & mrs_lib::Profiler::operator=
+ (
+ const Profiler &
+ other )
+
+
+
+
+
+
the assignment operator
+
Parameters
+
+ other the other object
+
+
+
+
Returns this object
+
+
+
+
The documentation for this class was generated from the following files:
+include/mrs_lib/profiler.h
+src/profiler/profiler.cpp
+
+
+
+
+
+
+
diff --git a/classmrs__lib_1_1Profiler.js b/classmrs__lib_1_1Profiler.js
new file mode 100644
index 00000000..f2801403
--- /dev/null
+++ b/classmrs__lib_1_1Profiler.js
@@ -0,0 +1,9 @@
+var classmrs__lib_1_1Profiler =
+[
+ [ "Profiler", "classmrs__lib_1_1Profiler.html#aeb0acb43639e4e29572b1ecbedf6029e", null ],
+ [ "Profiler", "classmrs__lib_1_1Profiler.html#a1a61b447fb65e1d09a0bd6dab57c73eb", null ],
+ [ "Profiler", "classmrs__lib_1_1Profiler.html#ac384b6aa30ce0f43ee8d38eaad93ca28", null ],
+ [ "createRoutine", "classmrs__lib_1_1Profiler.html#a631e75be501cf4353dc8578bd9f66029", null ],
+ [ "createRoutine", "classmrs__lib_1_1Profiler.html#aaf170ec3c6f67e11931cde978a5d3750", null ],
+ [ "operator=", "classmrs__lib_1_1Profiler.html#ae054cd2655538ee7b4a0dec35aa0cf16", null ]
+];
\ No newline at end of file
diff --git a/classmrs__lib_1_1PublisherHandler-members.html b/classmrs__lib_1_1PublisherHandler-members.html
new file mode 100644
index 00000000..586b14fd
--- /dev/null
+++ b/classmrs__lib_1_1PublisherHandler-members.html
@@ -0,0 +1,113 @@
+
+
+
+
+
+
+
+mrs_lib: Member List
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
This is the complete list of members for mrs_lib::PublisherHandler< TopicType > , including all inherited members.
+
+
+
+
+
+
diff --git a/classmrs__lib_1_1PublisherHandler.html b/classmrs__lib_1_1PublisherHandler.html
new file mode 100644
index 00000000..eab01af2
--- /dev/null
+++ b/classmrs__lib_1_1PublisherHandler.html
@@ -0,0 +1,377 @@
+
+
+
+
+
+
+
+mrs_lib: mrs_lib::PublisherHandler< TopicType > Class Template Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
user wrapper of the publisher handler implementation
+ More...
+
+
#include <publisher_handler.h >
+
+
+
template<class TopicType>
+class mrs_lib::PublisherHandler< TopicType >
+
+
user wrapper of the publisher handler implementation
+
+
+
◆ PublisherHandler() [1/2]
+
+
+
+
+template<class TopicType >
+
+
+
+
copy constructor
+
Parameters
+
+
+
+
+
+
+
+
◆ PublisherHandler() [2/2]
+
+
+
+
+template<class TopicType >
+
+
+ mrs_lib::PublisherHandler < TopicType >::PublisherHandler
+ (
+ ros::NodeHandle &
+ nh ,
+
+
+
+
+ const std::string &
+ address ,
+
+
+
+
+ const unsigned int &
+ buffer_size = 1
,
+
+
+
+
+ const bool &
+ latch = false
,
+
+
+
+
+ const double &
+ rate = 0
+
+
+
+ )
+
+
+
+
+
+
constructor
+
Parameters
+
+ nh ROS node handler
+ address topic address
+ buffer_size buffer size
+ latch latching
+
+
+
+
+
+
+
+
+
◆ getNumSubscribers()
+
+
+
+
+template<class TopicType >
+
+
+
+
get number of subscribers
+
Returns the number of subscribers
+
+
+
+
+
◆ operator=()
+
+
+
+
+template<class TopicType >
+
+
+
+
operator=
+
Parameters
+
+
+
+
Returns
+
+
+
+
+
◆ publish() [1/3]
+
+
+
+
+template<class TopicType >
+
+
+
+
publish message, boost ptr overload
+
Parameters
+
+
+
+
+
+
+
+
◆ publish() [2/3]
+
+
+
+
+template<class TopicType >
+
+
+
+
publish message, boost const ptr overload
+
Parameters
+
+
+
+
+
+
+
+
◆ publish() [3/3]
+
+
+
+
+template<class TopicType >
+
+
+
+
publish message
+
Parameters
+
+
+
+
+
+
+
The documentation for this class was generated from the following files:
+
+
+
+
+
+
diff --git a/classmrs__lib_1_1PublisherHandler.js b/classmrs__lib_1_1PublisherHandler.js
new file mode 100644
index 00000000..a0eb9aaa
--- /dev/null
+++ b/classmrs__lib_1_1PublisherHandler.js
@@ -0,0 +1,12 @@
+var classmrs__lib_1_1PublisherHandler =
+[
+ [ "PublisherHandler", "classmrs__lib_1_1PublisherHandler.html#aefafd64bd0d8a9b9717c94b76368fd0d", null ],
+ [ "~PublisherHandler", "classmrs__lib_1_1PublisherHandler.html#a9acaa1ef56768636f2163c75dd9e307e", null ],
+ [ "PublisherHandler", "classmrs__lib_1_1PublisherHandler.html#a08abb836db076c390101880ff34b8fe8", null ],
+ [ "PublisherHandler", "classmrs__lib_1_1PublisherHandler.html#a334376e25e8fb011ca27736cd2cf12b7", null ],
+ [ "getNumSubscribers", "classmrs__lib_1_1PublisherHandler.html#acae5a82536022514c6a2cefa2f7980b1", null ],
+ [ "operator=", "classmrs__lib_1_1PublisherHandler.html#a23a8578213fd78347ebaa259ee17c218", null ],
+ [ "publish", "classmrs__lib_1_1PublisherHandler.html#a3201fd4703f7e9cec24de7bc189356a5", null ],
+ [ "publish", "classmrs__lib_1_1PublisherHandler.html#ace9906a5cf9ae33115fc44af0e078f3f", null ],
+ [ "publish", "classmrs__lib_1_1PublisherHandler.html#a0c5bebc2848b0547048edb1297833290", null ]
+];
\ No newline at end of file
diff --git a/classmrs__lib_1_1PublisherHandler__impl-members.html b/classmrs__lib_1_1PublisherHandler__impl-members.html
new file mode 100644
index 00000000..d02ef64f
--- /dev/null
+++ b/classmrs__lib_1_1PublisherHandler__impl-members.html
@@ -0,0 +1,111 @@
+
+
+
+
+
+
+
+mrs_lib: Member List
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
This is the complete list of members for mrs_lib::PublisherHandler_impl< TopicType > , including all inherited members.
+
+
+
+
+
+
diff --git a/classmrs__lib_1_1PublisherHandler__impl.html b/classmrs__lib_1_1PublisherHandler__impl.html
new file mode 100644
index 00000000..81f851da
--- /dev/null
+++ b/classmrs__lib_1_1PublisherHandler__impl.html
@@ -0,0 +1,314 @@
+
+
+
+
+
+
+
+mrs_lib: mrs_lib::PublisherHandler_impl< TopicType > Class Template Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
implementation of the publisher handler
+ More...
+
+
#include <publisher_handler.h >
+
+
+
template<class TopicType>
+class mrs_lib::PublisherHandler_impl< TopicType >
+
+
implementation of the publisher handler
+
+
+
◆ PublisherHandler_impl()
+
+
+
+
+template<class TopicType >
+
+
+ mrs_lib::PublisherHandler_impl < TopicType >::PublisherHandler_impl
+ (
+ ros::NodeHandle &
+ nh ,
+
+
+
+
+ const std::string &
+ address ,
+
+
+
+
+ const unsigned int &
+ buffer_size = 1
,
+
+
+
+
+ const bool &
+ latch = false
,
+
+
+
+
+ const double &
+ rate = 0.0
+
+
+
+ )
+
+
+
+
+
+
constructor
+
Parameters
+
+ nh ROS node handler
+ address topic address
+ buffer_size buffer size
+ latch latching
+
+
+
+
+
+
+
+
+
◆ getNumSubscribers()
+
+
+
+
+template<class TopicType >
+
+
+
+
get number of subscribers
+
Returns the number of subscribers
+
+
+
+
+
◆ publish() [1/3]
+
+
+
+
+template<class TopicType >
+
+
+
+
publish message, boost ptr overload
+
Parameters
+
+
+
+
+
+
+
+
◆ publish() [2/3]
+
+
+
+
+template<class TopicType >
+
+
+
+
publish message, boost const ptr overload
+
Parameters
+
+
+
+
+
+
+
+
◆ publish() [3/3]
+
+
+
+
+template<class TopicType >
+
+
+
+
publish message
+
Parameters
+
+
+
+
+
+
+
The documentation for this class was generated from the following files:
+
+
+
+
+
+
diff --git a/classmrs__lib_1_1PublisherHandler__impl.js b/classmrs__lib_1_1PublisherHandler__impl.js
new file mode 100644
index 00000000..579f4d57
--- /dev/null
+++ b/classmrs__lib_1_1PublisherHandler__impl.js
@@ -0,0 +1,10 @@
+var classmrs__lib_1_1PublisherHandler__impl =
+[
+ [ "PublisherHandler_impl", "classmrs__lib_1_1PublisherHandler__impl.html#ab6dfde5a454ce357957a2ea8618890fc", null ],
+ [ "~PublisherHandler_impl", "classmrs__lib_1_1PublisherHandler__impl.html#a685a159577dfe363423c58a91ba92ac6", null ],
+ [ "PublisherHandler_impl", "classmrs__lib_1_1PublisherHandler__impl.html#a9168a142f84bf96f73563fe5f3589ce7", null ],
+ [ "getNumSubscribers", "classmrs__lib_1_1PublisherHandler__impl.html#a2043d0a61e0ff0dbd0acd6a64f1e4bef", null ],
+ [ "publish", "classmrs__lib_1_1PublisherHandler__impl.html#ad41ed622292e537101a2dac779c08f34", null ],
+ [ "publish", "classmrs__lib_1_1PublisherHandler__impl.html#a80c0caa745661936409fdc93277e7453", null ],
+ [ "publish", "classmrs__lib_1_1PublisherHandler__impl.html#a4404a3234f548fe9184ec43ac18c9671", null ]
+];
\ No newline at end of file
diff --git a/classmrs__lib_1_1RHEIV-members.html b/classmrs__lib_1_1RHEIV-members.html
new file mode 100644
index 00000000..7b2f1050
--- /dev/null
+++ b/classmrs__lib_1_1RHEIV-members.html
@@ -0,0 +1,130 @@
+
+
+
+
+
+
+
+mrs_lib: Member List
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
This is the complete list of members for mrs_lib::RHEIV< n_states, n_params > , including all inherited members.
+
+ dzdx_t typedefmrs_lib::RHEIV< n_states, n_params >
+ dzdxs_t typedefmrs_lib::RHEIV< n_states, n_params >
+ eta_t typedefmrs_lib::RHEIV< n_states, n_params >
+ f_dzdx_t typedefmrs_lib::RHEIV< n_states, n_params >
+ f_z_t typedefmrs_lib::RHEIV< n_states, n_params >
+ fit (const xs_t &xs, const Ps_t &Ps)mrs_lib::RHEIV< n_states, n_params > inline
+ fit (const T_it1 &xs_begin, const T_it1 &xs_end, const T_it2 &Ps_begin, const T_it2 &Ps_end)mrs_lib::RHEIV< n_states, n_params > inline
+ fit_ALS (const xs_t &xs)mrs_lib::RHEIV< n_states, n_params > inline
+ get_ALS_estimate () constmrs_lib::RHEIV< n_states, n_params > inline
+ get_last_estimate () constmrs_lib::RHEIV< n_states, n_params > inline
+ k mrs_lib::RHEIV< n_states, n_params > static
+ l mrs_lib::RHEIV< n_states, n_params > static
+ lr mrs_lib::RHEIV< n_states, n_params > static
+ P_t typedefmrs_lib::RHEIV< n_states, n_params >
+ Ps_t typedefmrs_lib::RHEIV< n_states, n_params >
+ RHEIV ()mrs_lib::RHEIV< n_states, n_params > inline
+ RHEIV (const f_z_t &f_z, const f_dzdx_t &f_dzdx, const double min_dtheta=1e-15, const unsigned max_its=100)mrs_lib::RHEIV< n_states, n_params > inline
+ RHEIV (const f_z_t &f_z, const f_dzdx_t &f_dzdx, const double min_dtheta=1e-15, const unsigned max_its=100, const time_t &timeout=std::chrono::duration_cast< time_t >(ms_t::zero()), const int debug_nth_it=-1)mrs_lib::RHEIV< n_states, n_params > inline
+ RHEIV (const f_z_t &f_z, const dzdx_t &dzdx, const double min_dtheta=1e-15, const unsigned max_its=100)mrs_lib::RHEIV< n_states, n_params > inline
+ RHEIV (const f_z_t &f_z, const dzdx_t &dzdx, const double min_dtheta=1e-15, const unsigned max_its=100, const time_t &timeout=std::chrono::duration_cast< time_t >(ms_t::zero()), const int debug_nth_it=-1)mrs_lib::RHEIV< n_states, n_params > inline
+ theta_t typedefmrs_lib::RHEIV< n_states, n_params >
+ u_t typedefmrs_lib::RHEIV< n_states, n_params >
+ x_t typedefmrs_lib::RHEIV< n_states, n_params >
+ xs_t typedefmrs_lib::RHEIV< n_states, n_params >
+ z_t typedefmrs_lib::RHEIV< n_states, n_params >
+ zs_t typedefmrs_lib::RHEIV< n_states, n_params >
+
+
+
+
+
+
diff --git a/classmrs__lib_1_1RHEIV.html b/classmrs__lib_1_1RHEIV.html
new file mode 100644
index 00000000..4bc2a114
--- /dev/null
+++ b/classmrs__lib_1_1RHEIV.html
@@ -0,0 +1,773 @@
+
+
+
+
+
+
+
+mrs_lib: mrs_lib::RHEIV< n_states, n_params > Class Template Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Implementation of the Reduced Heteroscedastic Errors In Variables surface fitting algorithm [2] .
+ More...
+
+
#include <rheiv.h >
+
+
+
+using x_t = Eigen::Matrix< double, k , 1 >
+ Input vector type .
+
+
+using xs_t = Eigen::Matrix< double, k , -1 >
+ Container type for the input data array.
+
+
+using u_t = Eigen::Matrix< double, l , 1 >
+ Transformed input vector type .
+
+
+using P_t = Eigen::Matrix< double, k , k >
+ Covariance type of the input vector .
+
+
+using Ps_t = std::vector< P_t >
+ Container type for covariances P
of the input data array.
+
+
+using z_t = Eigen::Matrix< double, lr , 1 >
+ Type of a reduced transformed input vector .
+
+
+using zs_t = Eigen::Matrix< double, lr , -1 >
+ Container type for an array of the reduced transformed input vectors z
.
+
+
+using f_z_t = typename std::function< zs_t (const xs_t &)>
+ Function signature of the mapping function.
+
+
+using dzdx_t = Eigen::Matrix< double, lr , k >
+ Type of the jacobian matrix , evaluated at .
+
+
+using dzdxs_t = std::vector< dzdx_t >
+ Contained type for an array of the jacobian matrices.
+
+
+using f_dzdx_t = typename std::function< dzdx_t (const xs_t &)>
+ Function signature of the jacobian .
+
+
+using theta_t = Eigen::Matrix< double, l , 1 >
+ Parameter vector type .
+
+
+using eta_t = z_t
+ Reduced parameter vector type .
+
+
+
+ RHEIV ()
+ Convenience default constructor. More...
+
+ RHEIV (const f_z_t &f_z, const f_dzdx_t &f_dzdx, const double min_dtheta=1e-15, const unsigned max_its=100)
+ The main constructor. More...
+
+template<typename time_t >
+ RHEIV (const f_z_t &f_z, const f_dzdx_t &f_dzdx, const double min_dtheta=1e-15, const unsigned max_its=100, const time_t &timeout=std::chrono::duration_cast< time_t >(ms_t::zero()), const int debug_nth_it=-1)
+ The main constructor. More...
+
+ RHEIV (const f_z_t &f_z, const dzdx_t &dzdx, const double min_dtheta=1e-15, const unsigned max_its=100)
+ A convenience constructor constructor. More...
+
+template<typename time_t >
+ RHEIV (const f_z_t &f_z, const dzdx_t &dzdx, const double min_dtheta=1e-15, const unsigned max_its=100, const time_t &timeout=std::chrono::duration_cast< time_t >(ms_t::zero()), const int debug_nth_it=-1)
+ A convenience constructor constructor. More...
+
+theta_t fit (const xs_t &xs, const Ps_t &Ps)
+ Fit the defined model to the provided data. More...
+
+template<class T_it1 , class T_it2 >
+theta_t fit (const T_it1 &xs_begin, const T_it1 &xs_end, const T_it2 &Ps_begin, const T_it2 &Ps_end)
+ Fit the defined model to the provided data. More...
+
+theta_t fit_ALS (const xs_t &xs)
+ Fit the defined model to the provided data using Algebraic Least Squares (not RHEIV ). More...
+
+theta_t get_last_estimate () const
+ Returns the last valid estimate of . More...
+
+theta_t get_ALS_estimate () const
+ Returns the Algebraic Least Squares estimate of . More...
+
+
+
+
+static const int k = n_states
+ Length of the state vector x
.
+
+
+static const int l = n_params
+ Length of the parameter vector .
+
+
+static const int lr = l - 1
+ Length of the reduced parameter vector .
+
+
+
+
template<int n_states, int n_params>
+class mrs_lib::RHEIV< n_states, n_params >
+
+
Implementation of the Reduced Heteroscedastic Errors In Variables surface fitting algorithm [2] .
+
This class estimates a vector of parameters of a model, which is defined by an equation , where is a data sample vector and is a vector, obtained by transforming in a problem-dependent manner.
+
Note that must fulfill two conditions:
+each element of is a quadratic form of a vector , and
+the last element of is equal to one.
+
+
Such model can be used to describe e.g. various surfaces, such as planes or conics, which makes this class a useful tool for computer vision. The model is described in the context of the RHEIV class by the length of the vector , the length of the vector , and the Jacobian matrix of , where is defined by the formula .
+
For more information, see [2] .
+
Examples rheiv/example.cpp .
+
+
+
+
◆ RHEIV() [1/5]
+
+
+
+
+template<int n_states, int n_params>
+
+
+
+
Convenience default constructor.
+
Warning This constructor should not be used if applicable. If used, the main constructor has to be called afterwards, before using this class, otherwise the RHEIV object is invalid (not initialized).
+
+
+
+
+
◆ RHEIV() [2/5]
+
+
+
+
+template<int n_states, int n_params>
+
+
+
+
+
+ mrs_lib::RHEIV < n_states, n_params >::RHEIV
+ (
+ const f_z_t &
+ f_z ,
+
+
+
+
+ const f_dzdx_t &
+ f_dzdx ,
+
+
+
+
+ const double
+ min_dtheta = 1e-15
,
+
+
+
+
+ const unsigned
+ max_its = 100
+
+
+
+ )
+
+
+
+
+
+inline
+
+
+
+
+
The main constructor.
+
The dzdx
parameter gives the relation between and . It is the full jacobian matrix .
+
The optimization algorithm is iterative with two possible stopping conditions:
+if change of the estimate of between two iterations is smaller than a defined threshold, or
+if a maximal number of iterations was reached.
+
+
Parameters
+
+ f_z the mapping function .
+ f_dzdx a function, returning the jacobian matrix of partial derivations of by , evaluated at .
+ min_dtheta if the difference of and is smaller than this number, the iteration is stopped.
+ max_its if the iteration is stopped after this number of iterations.
+
+
+
+
+
+
+
+
◆ RHEIV() [3/5]
+
+
+
+
+template<int n_states, int n_params>
+
+template<typename time_t >
+
+
+
+
+
+ mrs_lib::RHEIV < n_states, n_params >::RHEIV
+ (
+ const f_z_t &
+ f_z ,
+
+
+
+
+ const f_dzdx_t &
+ f_dzdx ,
+
+
+
+
+ const double
+ min_dtheta = 1e-15
,
+
+
+
+
+ const unsigned
+ max_its = 100
,
+
+
+
+
+ const time_t &
+ timeout = std::chrono::duration_cast<time_t>(ms_t::zero())
,
+
+
+
+
+ const int
+ debug_nth_it = -1
+
+
+
+ )
+
+
+
+
+
+inline
+
+
+
+
+
The main constructor.
+
The dzdx
parameter gives the relation between and . It is the full jacobian matrix .
+
The optimization algorithm is iterative with two possible stopping conditions:
+if change of the estimate of between two iterations is smaller than a defined threshold, or
+if a maximal number of iterations was reached.
+
+
Parameters
+
+ f_z the mapping function .
+ f_dzdx a function, returning the jacobian matrix of partial derivations of by , evaluated at .
+ min_dtheta if the difference of and is smaller than this number, the iteration is stopped.
+ max_its if the iteration is stopped after this number of iterations.
+ timeout if the calculation takes longer than this time, the iteration is stopped.
+ debug_nth_it a debug message will be printed every debug_nth_it
th iteration (negative number disables debug).
+
+
+
+
+
+
+
+
◆ RHEIV() [4/5]
+
+
+
+
+template<int n_states, int n_params>
+
+
+
+
+
+ mrs_lib::RHEIV < n_states, n_params >::RHEIV
+ (
+ const f_z_t &
+ f_z ,
+
+
+
+
+ const dzdx_t &
+ dzdx ,
+
+
+
+
+ const double
+ min_dtheta = 1e-15
,
+
+
+
+
+ const unsigned
+ max_its = 100
+
+
+
+ )
+
+
+
+
+
+inline
+
+
+
+
+
A convenience constructor constructor.
+
This constructor differs from the main one only in the parameters it takes. Instead of the function f_dzdx, it takes directly the dzdx matrix. This variant is meant to be used for systems where the jacobian matrix by does not depend on .
+
Parameters
+
+ f_z the mapping function .
+ dzdx the jacobian matrix of partial derivations of by .
+ min_dtheta if the difference of and is smaller than this number, the iteration is stopped.
+
+
+
+
+
+
+
+
◆ RHEIV() [5/5]
+
+
+
+
+template<int n_states, int n_params>
+
+template<typename time_t >
+
+
+
+
+
+ mrs_lib::RHEIV < n_states, n_params >::RHEIV
+ (
+ const f_z_t &
+ f_z ,
+
+
+
+
+ const dzdx_t &
+ dzdx ,
+
+
+
+
+ const double
+ min_dtheta = 1e-15
,
+
+
+
+
+ const unsigned
+ max_its = 100
,
+
+
+
+
+ const time_t &
+ timeout = std::chrono::duration_cast<time_t>(ms_t::zero())
,
+
+
+
+
+ const int
+ debug_nth_it = -1
+
+
+
+ )
+
+
+
+
+
+inline
+
+
+
+
+
A convenience constructor constructor.
+
This constructor differs from the main one only in the parameters it takes. Instead of the function f_dzdx, it takes directly the dzdx matrix. This variant is meant to be used for systems where the jacobian matrix by does not depend on .
+
Parameters
+
+ f_z the mapping function .
+ dzdx the jacobian matrix of partial derivations of by .
+ min_dtheta if the difference of and is smaller than this number, the iteration is stopped.
+ timeout if the calculation takes longer than this time, the iteration is stopped.
+ max_its if the iteration is stopped after this number of iterations.
+ debug_nth_it a debug message will be printed every debug_nth_it
th iteration (negative number disables debug).
+
+
+
+
+
+
+
+
+
◆ fit() [1/2]
+
+
+
+
+template<int n_states, int n_params>
+
+template<class T_it1 , class T_it2 >
+
+
+
+
+
+ theta_t mrs_lib::RHEIV < n_states, n_params >::fit
+ (
+ const T_it1 &
+ xs_begin ,
+
+
+
+
+ const T_it1 &
+ xs_end ,
+
+
+
+
+ const T_it2 &
+ Ps_begin ,
+
+
+
+
+ const T_it2 &
+ Ps_end
+
+
+
+ )
+
+
+
+
+
+inline
+
+
+
+
+
Fit the defined model to the provided data.
+
The RHEIV iterative optimization algorithm will be applied to estimate optimal parameters of the model based on the provided data. This is a conveinence overload, which takes the data points and covariances in a general container, supporting std::begin() and std::end().
+
Parameters
+
+ xs_begin begin iterator of a container, containing the data points .
+ xs_end end iterator of a container, containing the data points .
+ Ps_begin begin iterator of a container, containing the corresponding covariance matrices .
+ Ps_end end iterator of a container, containing the corresponding covariance matrices .
+
+
+
+
Returns estimate of the parameter vector .
+
Warning Note that length of xs
and Ps
must be the same!
+
+
+
+
+
◆ fit() [2/2]
+
+
+
+
+template<int n_states, int n_params>
+
+
+
+
Fit the defined model to the provided data.
+
The RHEIV iterative optimization algorithm will be applied to estimate optimal parameters of the model based on the provided data.
+
Parameters
+
+ xs the data points .
+ Ps the corresponding covariance matrices .
+
+
+
+
Returns estimate of the parameter vector .
+
Warning Note that length of xs
and Ps
must be the same!
+
+
+
+
+
◆ fit_ALS()
+
+
+
+
+template<int n_states, int n_params>
+
+
+
+
Fit the defined model to the provided data using Algebraic Least Squares (not RHEIV ).
+
Instead of using the iterative RHEIV algorithm to fit the data, just use the simple ALS (which basically does eigenvector decomposition). This can be useful in cases of degenerate data where the RHEIV algorithm fails or when covariances of the data are not available.
+
Parameters
+
+ xs the data points .
+
+
+
+
Returns estimate of the parameter vector .
+
+
+
+
+
◆ get_ALS_estimate()
+
+
+
+
+template<int n_states, int n_params>
+
+
+
+
Returns the Algebraic Least Squares estimate of .
+
You can use this method in case of an exception to retreive the Algebraic Least Squares estimate of the parameter vector, which is more stable than the RHEIV algorithm, and can be used as a more rough estimate of the parameters.
+
Returns the ALS estimate of the parameter vector .
+
Warning The fit() method must be called prior to attempting to get the last ALS estimate!
+
+
+
+
+
◆ get_last_estimate()
+
+
+
+
+template<int n_states, int n_params>
+
+
+
+
Returns the last valid estimate of .
+
You can use this method in case of an exception to retreive the last valid estimate of the parameter vector before the crash, which is sometimes useful.
+
Returns the last valid estimate of the parameter vector .
+
Warning The fit() method must be called prior to attempting to get the last valid estimate!
+
+
+
+
The documentation for this class was generated from the following file:
+
+
+
+
+
+
diff --git a/classmrs__lib_1_1RHEIV.js b/classmrs__lib_1_1RHEIV.js
new file mode 100644
index 00000000..baf07f6b
--- /dev/null
+++ b/classmrs__lib_1_1RHEIV.js
@@ -0,0 +1,26 @@
+var classmrs__lib_1_1RHEIV =
+[
+ [ "dzdx_t", "classmrs__lib_1_1RHEIV.html#abec4cb102b681ff3ec39786dc1d2bd4b", null ],
+ [ "dzdxs_t", "classmrs__lib_1_1RHEIV.html#ad85f14fb415e2fbe69ad05db0dc56e7b", null ],
+ [ "eta_t", "classmrs__lib_1_1RHEIV.html#a238b7a1a44cb7711756bd7b94a11797d", null ],
+ [ "f_dzdx_t", "classmrs__lib_1_1RHEIV.html#ac5b425f7782114173db5a275bea2c871", null ],
+ [ "f_z_t", "classmrs__lib_1_1RHEIV.html#abfea65ce9c912fcde3e805a66dc8ca42", null ],
+ [ "P_t", "classmrs__lib_1_1RHEIV.html#a9adfedc8dfbe38ccf06f556481a6c5c9", null ],
+ [ "Ps_t", "classmrs__lib_1_1RHEIV.html#aab24b461160051b3537f76e633d47d8d", null ],
+ [ "theta_t", "classmrs__lib_1_1RHEIV.html#af6d8212b941ad45ce6b53bc4e8449de1", null ],
+ [ "u_t", "classmrs__lib_1_1RHEIV.html#a3bc18fd815c8f09123b0a9083ca3b959", null ],
+ [ "x_t", "classmrs__lib_1_1RHEIV.html#a6482f5ff13cbfaef9f8dc86912c1258d", null ],
+ [ "xs_t", "classmrs__lib_1_1RHEIV.html#aee3df85ac46e5b29259f8898388324ec", null ],
+ [ "z_t", "classmrs__lib_1_1RHEIV.html#a8e01ed1580572ec20f0230d9bfe5273f", null ],
+ [ "zs_t", "classmrs__lib_1_1RHEIV.html#a3b4e40932aae907ae8185df7703d5677", null ],
+ [ "RHEIV", "classmrs__lib_1_1RHEIV.html#a057ffc158ceb64e933d3ae73e96bb033", null ],
+ [ "RHEIV", "classmrs__lib_1_1RHEIV.html#a4712a3306cdd759a73d2124b23bb388b", null ],
+ [ "RHEIV", "classmrs__lib_1_1RHEIV.html#a8c8f7b9c1b3ea4daafc08e1a29941558", null ],
+ [ "RHEIV", "classmrs__lib_1_1RHEIV.html#a66a840487d929607a3385e90b3c35ec5", null ],
+ [ "RHEIV", "classmrs__lib_1_1RHEIV.html#a9c0c437bea8612516cb37d9503b6a852", null ],
+ [ "fit", "classmrs__lib_1_1RHEIV.html#a9eaa3b7a946a9c590326d3b47295d728", null ],
+ [ "fit", "classmrs__lib_1_1RHEIV.html#aad00da516e55bb60661b5cf234487932", null ],
+ [ "fit_ALS", "classmrs__lib_1_1RHEIV.html#a2123ee2ffa07063a8a50275b998874ca", null ],
+ [ "get_ALS_estimate", "classmrs__lib_1_1RHEIV.html#a96de075c76bf79a411606d762e4b9728", null ],
+ [ "get_last_estimate", "classmrs__lib_1_1RHEIV.html#ac7f24b984bcfdee4f21de1206942f986", null ]
+];
\ No newline at end of file
diff --git a/classmrs__lib_1_1ROSTimer-members.html b/classmrs__lib_1_1ROSTimer-members.html
new file mode 100644
index 00000000..f6913ed4
--- /dev/null
+++ b/classmrs__lib_1_1ROSTimer-members.html
@@ -0,0 +1,125 @@
+
+
+
+
+
+
+
+mrs_lib: Member List
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
This is the complete list of members for mrs_lib::ROSTimer , including all inherited members.
+
+ callback_t typedef (defined in mrs_lib::MRSTimer )mrs_lib::MRSTimer
+ MRSTimer (const MRSTimer &)=default (defined in mrs_lib::MRSTimer )mrs_lib::MRSTimer
+ MRSTimer (MRSTimer &&)=default (defined in mrs_lib::MRSTimer )mrs_lib::MRSTimer
+ MRSTimer ()=default (defined in mrs_lib::MRSTimer )mrs_lib::MRSTimer protected
+ operator= (const ROSTimer &)=delete (defined in mrs_lib::ROSTimer )mrs_lib::ROSTimer
+ operator= (ROSTimer &&)=delete (defined in mrs_lib::ROSTimer )mrs_lib::ROSTimer
+ operator= (const MRSTimer &)=default (defined in mrs_lib::MRSTimer )mrs_lib::MRSTimer
+ operator= (MRSTimer &&)=default (defined in mrs_lib::MRSTimer )mrs_lib::MRSTimer
+ ROSTimer () (defined in mrs_lib::ROSTimer )mrs_lib::ROSTimer
+ ROSTimer (const ros::NodeHandle &nh, const ros::Rate &rate, void(ObjectType::*const callback)(const ros::TimerEvent &), ObjectType *const obj, const bool oneshot=false, const bool autostart=true)mrs_lib::ROSTimer
+ ROSTimer (const ros::NodeHandle &nh, const ros::Duration &duration, void(ObjectType::*const callback)(const ros::TimerEvent &), ObjectType *const obj, const bool oneshot=false, const bool autostart=true)mrs_lib::ROSTimer
+ ROSTimer (const ROSTimer &)=delete (defined in mrs_lib::ROSTimer )mrs_lib::ROSTimer
+ ROSTimer (ROSTimer &&)=delete (defined in mrs_lib::ROSTimer )mrs_lib::ROSTimer
+ ROSTimer (const ros::NodeHandle &nh, const ros::Duration &duration, void(ObjectType::*const callback)(const ros::TimerEvent &), ObjectType *const obj, const bool oneshot, const bool autostart) (defined in mrs_lib::ROSTimer )mrs_lib::ROSTimer
+ ROSTimer (const ros::NodeHandle &nh, const ros::Rate &rate, void(ObjectType::*const callback)(const ros::TimerEvent &), ObjectType *const obj, const bool oneshot, const bool autostart) (defined in mrs_lib::ROSTimer )mrs_lib::ROSTimer
+ running () overridemrs_lib::ROSTimer virtual
+ setPeriod (const ros::Duration &duration, const bool reset=true) overridemrs_lib::ROSTimer virtual
+ start () overridemrs_lib::ROSTimer virtual
+ stop () overridemrs_lib::ROSTimer virtual
+ ~MRSTimer ()=default (defined in mrs_lib::MRSTimer )mrs_lib::MRSTimer virtual
+ ~ROSTimer () override (defined in mrs_lib::ROSTimer )mrs_lib::ROSTimer inline virtual
+
+
+
+
+
+
diff --git a/classmrs__lib_1_1ROSTimer.html b/classmrs__lib_1_1ROSTimer.html
new file mode 100644
index 00000000..c62dd161
--- /dev/null
+++ b/classmrs__lib_1_1ROSTimer.html
@@ -0,0 +1,430 @@
+
+
+
+
+
+
+
+mrs_lib: mrs_lib::ROSTimer Class Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
ros::Timer wrapper. The interface is the same as with ros::Timer, except for the initialization method.
+ More...
+
+
#include <timer.h >
+
+
+
+
+
+
+
+
+
+
+template<class ObjectType >
+ ROSTimer (const ros::NodeHandle &nh, const ros::Rate &rate, void(ObjectType::*const callback)(const ros::TimerEvent &), ObjectType *const obj, const bool oneshot=false, const bool autostart=true)
+ Constructs the object. More...
+
+template<class ObjectType >
+ ROSTimer (const ros::NodeHandle &nh, const ros::Duration &duration, void(ObjectType::*const callback)(const ros::TimerEvent &), ObjectType *const obj, const bool oneshot=false, const bool autostart=true)
+ full constructor More...
+
+
+virtual void stop () override
+ stop the timer
+
+
+virtual void start () override
+ start the timer
+
+virtual void setPeriod (const ros::Duration &duration, const bool reset=true) override
+ set the timer period/duration More...
+
+virtual bool running () override
+ returns true if callbacks should be called More...
+
+
+ ROSTimer (const ROSTimer &)=delete
+
+
+ ROSTimer (ROSTimer &&)=delete
+
+
+ROSTimer & operator= (const ROSTimer &)=delete
+
+
+ROSTimer & operator= (ROSTimer &&)=delete
+
+
+template<class ObjectType >
+ ROSTimer (const ros::NodeHandle &nh, const ros::Duration &duration, void(ObjectType::*const callback)(const ros::TimerEvent &), ObjectType *const obj, const bool oneshot, const bool autostart)
+
+
+template<class ObjectType >
+ ROSTimer (const ros::NodeHandle &nh, const ros::Rate &rate, void(ObjectType::*const callback)(const ros::TimerEvent &), ObjectType *const obj, const bool oneshot, const bool autostart)
+
+
+
+ MRSTimer (const MRSTimer &)=default
+
+
+ MRSTimer (MRSTimer &&)=default
+
+
+MRSTimer & operator= (const MRSTimer &)=default
+
+
+MRSTimer & operator= (MRSTimer &&)=default
+
+
+
+
+
+using callback_t = std::function< void(const ros::TimerEvent &)>
+
+
+
+
ros::Timer wrapper. The interface is the same as with ros::Timer, except for the initialization method.
+
+
+
◆ ROSTimer() [1/2]
+
+
+
+
+template<class ObjectType >
+
+
+ mrs_lib::ROSTimer::ROSTimer
+ (
+ const ros::NodeHandle &
+ nh ,
+
+
+
+
+ const ros::Rate &
+ rate ,
+
+
+
+
+ void(ObjectType::*)(const ros::TimerEvent &)
+ callback ,
+
+
+
+
+ ObjectType *const
+ obj ,
+
+
+
+
+ const bool
+ oneshot = false
,
+
+
+
+
+ const bool
+ autostart = true
+
+
+
+ )
+
+
+
+
+
+
Constructs the object.
+
Template Parameters
+
+
+
+
Parameters
+
+ nh ROS node handle to be used for creating the underlying ros::Timer object.
+ rate rate at which the callback should be called.
+ ObjectType::*const callback callback method to be called.
+ obj object for the method.
+ oneshot whether the callback should only be called once after starting.
+ autostart whether the timer should immediately start after construction.
+
+
+
+
+
+
+
+
◆ ROSTimer() [2/2]
+
+
+
+
+template<class ObjectType >
+
+
+ mrs_lib::ROSTimer::ROSTimer
+ (
+ const ros::NodeHandle &
+ nh ,
+
+
+
+
+ const ros::Duration &
+ duration ,
+
+
+
+
+ void(ObjectType::*)(const ros::TimerEvent &)
+ callback ,
+
+
+
+
+ ObjectType *const
+ obj ,
+
+
+
+
+ const bool
+ oneshot = false
,
+
+
+
+
+ const bool
+ autostart = true
+
+
+
+ )
+
+
+
+
+
+
full constructor
+
Template Parameters
+
+
+
+
Parameters
+
+ nh ROS node handle to be used for creating the underlying ros::Timer object.
+ duration desired callback period.
+ ObjectType::*const callback callback method to be called.
+ obj object for the method.
+ oneshot whether the callback should only be called once after starting.
+ autostart whether the timer should immediately start after construction.
+
+
+
+
+
+
+
+
+
◆ running()
+
+
+
+
+
+
+
+
+ bool mrs_lib::ROSTimer::running
+ (
+ )
+
+
+
+
+
+override virtual
+
+
+
+
+
returns true if callbacks should be called
+
Returns true if timer is running
+
+
Implements mrs_lib::MRSTimer .
+
+
+
+
+
◆ setPeriod()
+
+
+
+
+
+
+
+
+ void mrs_lib::ROSTimer::setPeriod
+ (
+ const ros::Duration &
+ duration ,
+
+
+
+
+ const bool
+ reset = true
+
+
+
+ )
+
+
+
+
+
+override virtual
+
+
+
+
+
set the timer period/duration
+
Parameters
+
+
+
+
+
Implements mrs_lib::MRSTimer .
+
+
+
+
The documentation for this class was generated from the following files:
+
+
+
+
+
+
diff --git a/classmrs__lib_1_1ROSTimer.js b/classmrs__lib_1_1ROSTimer.js
new file mode 100644
index 00000000..dbb977d5
--- /dev/null
+++ b/classmrs__lib_1_1ROSTimer.js
@@ -0,0 +1,17 @@
+var classmrs__lib_1_1ROSTimer =
+[
+ [ "ROSTimer", "classmrs__lib_1_1ROSTimer.html#a279f348615fa132944657499c7430365", null ],
+ [ "ROSTimer", "classmrs__lib_1_1ROSTimer.html#aaf683893d28eca7f91e4b2333cf4eed5", null ],
+ [ "ROSTimer", "classmrs__lib_1_1ROSTimer.html#ad4913fe0402a8be9b131ad5afb9d7d05", null ],
+ [ "~ROSTimer", "classmrs__lib_1_1ROSTimer.html#af787df1a0c745a5f97b147479ed83aed", null ],
+ [ "ROSTimer", "classmrs__lib_1_1ROSTimer.html#a7c10fdefa4336a0ccaa5e3946eda6824", null ],
+ [ "ROSTimer", "classmrs__lib_1_1ROSTimer.html#a6ac090d048d684dce77c2cbf721e7a4b", null ],
+ [ "ROSTimer", "classmrs__lib_1_1ROSTimer.html#a0dfc38d13fe6c1311cad6d11ddea7443", null ],
+ [ "ROSTimer", "classmrs__lib_1_1ROSTimer.html#afe594c985a1338f4f6c6de4a37b5f0ba", null ],
+ [ "operator=", "classmrs__lib_1_1ROSTimer.html#a23c218adf410d480d424ccfc16ea6047", null ],
+ [ "operator=", "classmrs__lib_1_1ROSTimer.html#afe803ecb15e947501c86b64df4c4f5dc", null ],
+ [ "running", "classmrs__lib_1_1ROSTimer.html#af5074139258db68cf314b1bf4868243a", null ],
+ [ "setPeriod", "classmrs__lib_1_1ROSTimer.html#a7dd4d03428c7abe2de8ea260a9a4eeff", null ],
+ [ "start", "classmrs__lib_1_1ROSTimer.html#afd70b40e8e4b84b48215eeafc5e27520", null ],
+ [ "stop", "classmrs__lib_1_1ROSTimer.html#a6a774123e3400848884fa83fe01e1955", null ]
+];
\ No newline at end of file
diff --git a/classmrs__lib_1_1ROSTimer__coll__graph.map b/classmrs__lib_1_1ROSTimer__coll__graph.map
new file mode 100644
index 00000000..22799d86
--- /dev/null
+++ b/classmrs__lib_1_1ROSTimer__coll__graph.map
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/classmrs__lib_1_1ROSTimer__coll__graph.md5 b/classmrs__lib_1_1ROSTimer__coll__graph.md5
new file mode 100644
index 00000000..38fde2d5
--- /dev/null
+++ b/classmrs__lib_1_1ROSTimer__coll__graph.md5
@@ -0,0 +1 @@
+5debd548a8a8d5eedbb039dc177aaa0e
\ No newline at end of file
diff --git a/classmrs__lib_1_1ROSTimer__coll__graph.png b/classmrs__lib_1_1ROSTimer__coll__graph.png
new file mode 100644
index 00000000..fc14a2f3
Binary files /dev/null and b/classmrs__lib_1_1ROSTimer__coll__graph.png differ
diff --git a/classmrs__lib_1_1ROSTimer__inherit__graph.map b/classmrs__lib_1_1ROSTimer__inherit__graph.map
new file mode 100644
index 00000000..22799d86
--- /dev/null
+++ b/classmrs__lib_1_1ROSTimer__inherit__graph.map
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/classmrs__lib_1_1ROSTimer__inherit__graph.md5 b/classmrs__lib_1_1ROSTimer__inherit__graph.md5
new file mode 100644
index 00000000..38fde2d5
--- /dev/null
+++ b/classmrs__lib_1_1ROSTimer__inherit__graph.md5
@@ -0,0 +1 @@
+5debd548a8a8d5eedbb039dc177aaa0e
\ No newline at end of file
diff --git a/classmrs__lib_1_1ROSTimer__inherit__graph.png b/classmrs__lib_1_1ROSTimer__inherit__graph.png
new file mode 100644
index 00000000..fc14a2f3
Binary files /dev/null and b/classmrs__lib_1_1ROSTimer__inherit__graph.png differ
diff --git a/classmrs__lib_1_1Repredictor-members.html b/classmrs__lib_1_1Repredictor-members.html
new file mode 100644
index 00000000..c86c1448
--- /dev/null
+++ b/classmrs__lib_1_1Repredictor-members.html
@@ -0,0 +1,131 @@
+
+
+
+
+
+
+
+mrs_lib: Member List
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
This is the complete list of members for mrs_lib::Repredictor< Model, disable_reprediction > , including all inherited members.
+
+ addInputChange (const u_t &u, const ros::Time &stamp, const ModelPtr &model=nullptr)mrs_lib::Repredictor< Model, disable_reprediction > inline
+ addInputChange (const u_t &u, [[maybe_unused]] const ros::Time &stamp, const ModelPtr &model=nullptr)mrs_lib::Repredictor< Model, disable_reprediction > inline
+ addInputChangeWithNoise (const u_t &u, const Q_t &Q, const ros::Time &stamp, const ModelPtr &model=nullptr)mrs_lib::Repredictor< Model, disable_reprediction > inline
+ addInputChangeWithNoise (const u_t &u, const Q_t &Q, [[maybe_unused]] const ros::Time &stamp, const ModelPtr &model=nullptr)mrs_lib::Repredictor< Model, disable_reprediction > inline
+ addMeasurement (const z_t &z, const R_t &R, const ros::Time &stamp, const ModelPtr &model=nullptr, const double &meas_id=-1)mrs_lib::Repredictor< Model, disable_reprediction > inline
+ addMeasurement (const z_t &z, const R_t &R, const ros::Time &stamp, const ModelPtr &model=nullptr, const double &meas_id=-1)mrs_lib::Repredictor< Model, disable_reprediction > inline
+ addProcessNoiseChange (const Q_t &Q, const ros::Time &stamp, const ModelPtr &model=nullptr)mrs_lib::Repredictor< Model, disable_reprediction > inline
+ addProcessNoiseChange (const Q_t &Q, [[maybe_unused]] const ros::Time &stamp, const ModelPtr &model=nullptr)mrs_lib::Repredictor< Model, disable_reprediction > inline
+ checkMonotonicity (const T &buf) (defined in mrs_lib::Repredictor< Model, disable_reprediction > )mrs_lib::Repredictor< Model, disable_reprediction > inline protected
+ history_t typedef (defined in mrs_lib::Repredictor< Model, disable_reprediction > )mrs_lib::Repredictor< Model, disable_reprediction > protected
+ m_default_model (defined in mrs_lib::Repredictor< Model, disable_reprediction > )mrs_lib::Repredictor< Model, disable_reprediction > protected
+ m_history (defined in mrs_lib::Repredictor< Model, disable_reprediction > )mrs_lib::Repredictor< Model, disable_reprediction > protected
+ m_sc (defined in mrs_lib::Repredictor< Model, disable_reprediction > )mrs_lib::Repredictor< Model, disable_reprediction > protected
+ ModelPtr typedefmrs_lib::Repredictor< Model, disable_reprediction >
+ P_t typedefmrs_lib::Repredictor< Model, disable_reprediction >
+ predictTo (const ros::Time &to_stamp)mrs_lib::Repredictor< Model, disable_reprediction > inline
+ predictTo (const ros::Time &to_stamp)mrs_lib::Repredictor< Model, disable_reprediction > inline
+ printBuffer (const T &buf) (defined in mrs_lib::Repredictor< Model, disable_reprediction > )mrs_lib::Repredictor< Model, disable_reprediction > inline protected
+ Q_t typedefmrs_lib::Repredictor< Model, disable_reprediction >
+ R_t typedefmrs_lib::Repredictor< Model, disable_reprediction >
+ Repredictor (const x_t &x0, const P_t &P0, const u_t &u0, const Q_t &Q0, const ros::Time &t0, const ModelPtr &model, const unsigned hist_len)mrs_lib::Repredictor< Model, disable_reprediction > inline
+ Repredictor ()mrs_lib::Repredictor< Model, disable_reprediction > inline
+ Repredictor (const x_t &x0, const P_t &P0, const Q_t &Q0, const ros::Time &t0, const ModelPtr &model, const unsigned hist_len)mrs_lib::Repredictor< Model, disable_reprediction > inline
+ statecov_t typedefmrs_lib::Repredictor< Model, disable_reprediction >
+ u_t typedefmrs_lib::Repredictor< Model, disable_reprediction >
+ x_t typedefmrs_lib::Repredictor< Model, disable_reprediction >
+ z_t typedefmrs_lib::Repredictor< Model, disable_reprediction >
+
+
+
+
+
+
diff --git a/classmrs__lib_1_1Repredictor.html b/classmrs__lib_1_1Repredictor.html
new file mode 100644
index 00000000..01b56793
--- /dev/null
+++ b/classmrs__lib_1_1Repredictor.html
@@ -0,0 +1,1025 @@
+
+
+
+
+
+
+
+mrs_lib: mrs_lib::Repredictor< Model, disable_reprediction > Class Template Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Implementation of the Repredictor for fusing measurements with variable delays.
+ More...
+
+
#include <repredictor.h >
+
+
+
+using x_t = typename Model::x_t
+ State vector type .
+
+
+using u_t = typename Model::u_t
+ Input vector type .
+
+
+using z_t = typename Model::z_t
+ Measurement vector type .
+
+
+using P_t = typename Model::P_t
+ State uncertainty covariance matrix type .
+
+
+using R_t = typename Model::R_t
+ Measurement noise covariance matrix type .
+
+
+using Q_t = typename Model::Q_t
+ Process noise covariance matrix type .
+
+
+using statecov_t = typename Model::statecov_t
+ Helper struct for passing around the state and its covariance in one variable.
+
+
+using ModelPtr = typename std::shared_ptr< Model >
+ Shorthand type for a shared pointer-to-Model.
+
+
+
+template<bool check = disable_reprediction>
+std::enable_if_t<!check, statecov_t > predictTo (const ros::Time &to_stamp)
+ Estimates the system state and covariance matrix at the specified time. More...
+
+template<bool check = disable_reprediction>
+std::enable_if_t< check, statecov_t > predictTo (const ros::Time &to_stamp)
+ Estimates the system state and covariance matrix at the specified time. More...
+
+template<bool check = disable_reprediction>
+std::enable_if_t<!check > addInputChangeWithNoise (const u_t &u, const Q_t &Q, const ros::Time &stamp, const ModelPtr &model=nullptr)
+ Adds one system input to the history buffer, removing the oldest element in the buffer if it is full. More...
+
+template<bool check = disable_reprediction>
+std::enable_if_t< check > addInputChangeWithNoise (const u_t &u, const Q_t &Q, [[maybe_unused]] const ros::Time &stamp, const ModelPtr &model=nullptr)
+ Adds one system input to the history buffer, removing the oldest element in the buffer if it is full. More...
+
+template<bool check = disable_reprediction>
+std::enable_if_t<!check > addInputChange (const u_t &u, const ros::Time &stamp, const ModelPtr &model=nullptr)
+ Adds one system input to the history buffer, removing the oldest element in the buffer if it is full. More...
+
+template<bool check = disable_reprediction>
+std::enable_if_t< check > addInputChange (const u_t &u, [[maybe_unused]] const ros::Time &stamp, const ModelPtr &model=nullptr)
+ Adds one system input to the history buffer, removing the oldest element in the buffer if it is full. More...
+
+template<bool check = disable_reprediction>
+std::enable_if_t<!check > addProcessNoiseChange (const Q_t &Q, const ros::Time &stamp, const ModelPtr &model=nullptr)
+ Adds one system input to the history buffer, removing the oldest element in the buffer if it is full. More...
+
+template<bool check = disable_reprediction>
+std::enable_if_t< check > addProcessNoiseChange (const Q_t &Q, [[maybe_unused]] const ros::Time &stamp, const ModelPtr &model=nullptr)
+ Adds one system input to the history buffer, removing the oldest element in the buffer if it is full. More...
+
+template<bool check = disable_reprediction>
+std::enable_if_t<!check > addMeasurement (const z_t &z, const R_t &R, const ros::Time &stamp, const ModelPtr &model=nullptr, const double &meas_id=-1)
+ Adds one measurement to the history buffer, removing the oldest element in the buffer if it is full. More...
+
+template<bool check = disable_reprediction>
+std::enable_if_t< check > addMeasurement (const z_t &z, const R_t &R, const ros::Time &stamp, const ModelPtr &model=nullptr, const double &meas_id=-1)
+ Adds one measurement to the history buffer, removing the oldest element in the buffer if it is full. More...
+
+ Repredictor (const x_t &x0, const P_t &P0, const u_t &u0, const Q_t &Q0, const ros::Time &t0, const ModelPtr &model, const unsigned hist_len)
+ The main constructor. More...
+
+ Repredictor ()
+ Empty constructor. More...
+
+ Repredictor (const x_t &x0, const P_t &P0, const Q_t &Q0, const ros::Time &t0, const ModelPtr &model, const unsigned hist_len)
+ Variation of the constructor for cases without a system input. More...
+
+
+
+
+using history_t = boost::circular_buffer< info_t >
+
+
+
+
+template<typename T >
+bool checkMonotonicity (const T &buf)
+
+
+template<typename T >
+void printBuffer (const T &buf)
+
+
+
+
template<class Model, bool disable_reprediction = false>
+class mrs_lib::Repredictor< Model, disable_reprediction >
+
+
Implementation of the Repredictor for fusing measurements with variable delays.
+
A standard state-space system model is assumed for the repredictor with system inputs and measurements, generated from the system state vector. The inputs and measurements may be delayed with varying durations (an older measurement may become available after a newer one). A typical use-case scenario is when you have one "fast" but imprecise sensor and one "slow" but precise sensor and you want to use them both to get a good prediction (eg. height from the Garmin LiDAR, which comes at 100Hz, and position from a SLAM, which comes at 10Hz with a long delay). If the slow sensor is significantly slower than the fast one, fusing its measurement at the time it arrives without taking into account the sensor's delay may significantly bias your latest estimate.
+
To accomodate this, the Repredictor keeps a buffer of N last inputs and measurements (N is specified in the constructor). This buffer is then used to re-predict the desired state to a specific time, as requested by the user. Note that the re-prediction is evaluated in a lazy manner only when the user requests it, so it goes through the whole history buffer every time a prediction is requested.
+
The Repredictor utilizes a fusion Model (specified as the template parameter), which should implement the predict() and correct() methods. This Model is used for fusing the system inputs and measurements as well as for predictions. Typically, this Model will be some kind of a Kalman Filter (LKF , UKF etc.).
Note The Model should be able to accomodate predictions with varying time steps in order for the Repredictor to work correctly (see eg. the varstepLKF class).
+
Template Parameters
+
+ Model the prediction and correction model (eg. a Kalman Filter).
+ disable_reprediction if true, reprediction is disabled and the class will act like a dumb LKF (for evaluation purposes).
+
+
+
+
Examples repredictor/example.cpp .
+
+
+
+
◆ Repredictor() [1/3]
+
+
+
+
+template<class Model , bool disable_reprediction = false>
+
+
+
+
+
+ mrs_lib::Repredictor < Model, disable_reprediction >::Repredictor
+ (
+ const x_t &
+ x0 ,
+
+
+
+
+ const P_t &
+ P0 ,
+
+
+
+
+ const u_t &
+ u0 ,
+
+
+
+
+ const Q_t &
+ Q0 ,
+
+
+
+
+ const ros::Time &
+ t0 ,
+
+
+
+
+ const ModelPtr &
+ model ,
+
+
+
+
+ const unsigned
+ hist_len
+
+
+
+ )
+
+
+
+
+
+inline
+
+
+
+
+
The main constructor.
+
Initializes the Repredictor with the necessary initial and default values.
+
Parameters
+
+ x0 Initial state.
+ P0 Covariance matrix of the initial state uncertainty.
+ u0 Initial system input.
+ Q0 Default covariance matrix of the process noise.
+ t0 Time stamp of the initial state.
+ model Default prediction and correction model.
+ hist_len Length of the history buffer for system inputs and measurements.
+
+
+
+
+
+
+
+
◆ Repredictor() [2/3]
+
+
+
+
+template<class Model , bool disable_reprediction = false>
+
+
+
+
Empty constructor.
+
+
+
+
+
◆ Repredictor() [3/3]
+
+
+
+
+template<class Model , bool disable_reprediction = false>
+
+
+
+
+
+ mrs_lib::Repredictor < Model, disable_reprediction >::Repredictor
+ (
+ const x_t &
+ x0 ,
+
+
+
+
+ const P_t &
+ P0 ,
+
+
+
+
+ const Q_t &
+ Q0 ,
+
+
+
+
+ const ros::Time &
+ t0 ,
+
+
+
+
+ const ModelPtr &
+ model ,
+
+
+
+
+ const unsigned
+ hist_len
+
+
+
+ )
+
+
+
+
+
+inline
+
+
+
+
+
Variation of the constructor for cases without a system input.
+
Initializes the Repredictor with the necessary initial and default values. Assumes the system input is zero at t0.
+
Parameters
+
+ x0 Initial state.
+ P0 Covariance matrix of the initial state uncertainty.
+ Q0 Default covariance matrix of the process noise.
+ t0 Time stamp of the initial state.
+ model Default prediction and correction model.
+ hist_len Length of the history buffer for system inputs and measurements.
+
+
+
+
+
+
+
+
+
◆ addInputChange() [1/2]
+
+
+
+
+template<class Model , bool disable_reprediction = false>
+
+template<bool check = disable_reprediction>
+
+
+
+
+
+ std::enable_if_t<check> mrs_lib::Repredictor < Model, disable_reprediction >::addInputChange
+ (
+ const u_t &
+ u ,
+
+
+
+
+ [[maybe_unused] ] const ros::Time &
+ stamp ,
+
+
+
+
+ const ModelPtr &
+ model = nullptr
+
+
+
+ )
+
+
+
+
+
+inline
+
+
+
+
+
Adds one system input to the history buffer, removing the oldest element in the buffer if it is full.
+
Parameters
+
+ u The system input vector to be added.
+ stamp Time stamp of the input vector and covariance matrix.
+ model Optional pointer to a specific Model to be used with this input (eg. mapping it to different states). If it equals to nullptr, the default model specified in the constructor will be used.
+
+
+
+
Note This is the variant of the method when reprediction is disabled and will function like a dumb LKF .
+
+
+
+
+
◆ addInputChange() [2/2]
+
+
+
+
+template<class Model , bool disable_reprediction = false>
+
+template<bool check = disable_reprediction>
+
+
+
+
+
+ std::enable_if_t<!check> mrs_lib::Repredictor < Model, disable_reprediction >::addInputChange
+ (
+ const u_t &
+ u ,
+
+
+
+
+ const ros::Time &
+ stamp ,
+
+
+
+
+ const ModelPtr &
+ model = nullptr
+
+
+
+ )
+
+
+
+
+
+inline
+
+
+
+
+
Adds one system input to the history buffer, removing the oldest element in the buffer if it is full.
+
Parameters
+
+ u The system input vector to be added.
+ stamp Time stamp of the input vector and covariance matrix.
+ model Optional pointer to a specific Model to be used with this input (eg. mapping it to different states). If it equals to nullptr, the default model specified in the constructor will be used.
+
+
+
+
Note The system input vector will not be added if it is older than the oldest element in the history buffer.
+
+
+
+
+
◆ addInputChangeWithNoise() [1/2]
+
+
+
+
+template<class Model , bool disable_reprediction = false>
+
+template<bool check = disable_reprediction>
+
+
+
+
+
+ std::enable_if_t<check> mrs_lib::Repredictor < Model, disable_reprediction >::addInputChangeWithNoise
+ (
+ const u_t &
+ u ,
+
+
+
+
+ const Q_t &
+ Q ,
+
+
+
+
+ [[maybe_unused] ] const ros::Time &
+ stamp ,
+
+
+
+
+ const ModelPtr &
+ model = nullptr
+
+
+
+ )
+
+
+
+
+
+inline
+
+
+
+
+
Adds one system input to the history buffer, removing the oldest element in the buffer if it is full.
+
Parameters
+
+ u The system input vector to be added.
+ Q The process noise covariance matrix.
+ stamp Time stamp of the input vector and covariance matrix.
+ model Optional pointer to a specific Model to be used with this input (eg. mapping it to different states). If it equals to nullptr, the default model specified in the constructor will be used.
+
+
+
+
Note This is the variant of the method when reprediction is disabled and will function like a dumb LKF .
+
+
+
+
+
◆ addInputChangeWithNoise() [2/2]
+
+
+
+
+template<class Model , bool disable_reprediction = false>
+
+template<bool check = disable_reprediction>
+
+
+
+
+
+ std::enable_if_t<!check> mrs_lib::Repredictor < Model, disable_reprediction >::addInputChangeWithNoise
+ (
+ const u_t &
+ u ,
+
+
+
+
+ const Q_t &
+ Q ,
+
+
+
+
+ const ros::Time &
+ stamp ,
+
+
+
+
+ const ModelPtr &
+ model = nullptr
+
+
+
+ )
+
+
+
+
+
+inline
+
+
+
+
+
Adds one system input to the history buffer, removing the oldest element in the buffer if it is full.
+
Parameters
+
+ u The system input vector to be added.
+ Q The process noise covariance matrix.
+ stamp Time stamp of the input vector and covariance matrix.
+ model Optional pointer to a specific Model to be used with this input (eg. mapping it to different states). If it equals to nullptr, the default model specified in the constructor will be used.
+
+
+
+
Note The system input vector will not be added if it is older than the oldest element in the history buffer.
+
Examples repredictor/example.cpp .
+
+
+
+
+
+
◆ addMeasurement() [1/2]
+
+
+
+
+template<class Model , bool disable_reprediction = false>
+
+template<bool check = disable_reprediction>
+
+
+
+
+
+ std::enable_if_t<!check> mrs_lib::Repredictor < Model, disable_reprediction >::addMeasurement
+ (
+ const z_t &
+ z ,
+
+
+
+
+ const R_t &
+ R ,
+
+
+
+
+ const ros::Time &
+ stamp ,
+
+
+
+
+ const ModelPtr &
+ model = nullptr
,
+
+
+
+
+ const double &
+ meas_id = -1
+
+
+
+ )
+
+
+
+
+
+inline
+
+
+
+
+
Adds one measurement to the history buffer, removing the oldest element in the buffer if it is full.
+
Parameters
+
+ z The measurement vector to be added.
+ R The measurement noise covariance matrix, corresponding to the measurement vector.
+ stamp Time stamp of the measurement vector and covariance matrix.
+ model Optional pointer to a specific Model to be used with this measurement (eg. mapping it from different states). If it equals to nullptr, the default model specified in the constructor will be used.
+
+
+
+
Note The measurement vector will not be added if it is older than the oldest element in the history buffer.
+
Examples repredictor/example.cpp .
+
+
+
+
+
+
◆ addMeasurement() [2/2]
+
+
+
+
+template<class Model , bool disable_reprediction = false>
+
+template<bool check = disable_reprediction>
+
+
+
+
+
+ std::enable_if_t<check> mrs_lib::Repredictor < Model, disable_reprediction >::addMeasurement
+ (
+ const z_t &
+ z ,
+
+
+
+
+ const R_t &
+ R ,
+
+
+
+
+ const ros::Time &
+ stamp ,
+
+
+
+
+ const ModelPtr &
+ model = nullptr
,
+
+
+
+
+ const double &
+ meas_id = -1
+
+
+
+ )
+
+
+
+
+
+inline
+
+
+
+
+
Adds one measurement to the history buffer, removing the oldest element in the buffer if it is full.
+
Parameters
+
+ z The measurement vector to be added.
+ R The measurement noise covariance matrix, corresponding to the measurement vector.
+ stamp Time stamp of the measurement vector and covariance matrix.
+ model Optional pointer to a specific Model to be used with this measurement (eg. mapping it from different states). If it equals to nullptr, the default model specified in the constructor will be used.
+
+
+
+
Note This is the variant of the method when reprediction is disabled and will function like a dumb LKF .
+
+
+
+
+
◆ addProcessNoiseChange() [1/2]
+
+
+
+
+template<class Model , bool disable_reprediction = false>
+
+template<bool check = disable_reprediction>
+
+
+
+
+
+ std::enable_if_t<check> mrs_lib::Repredictor < Model, disable_reprediction >::addProcessNoiseChange
+ (
+ const Q_t &
+ Q ,
+
+
+
+
+ [[maybe_unused] ] const ros::Time &
+ stamp ,
+
+
+
+
+ const ModelPtr &
+ model = nullptr
+
+
+
+ )
+
+
+
+
+
+inline
+
+
+
+
+
Adds one system input to the history buffer, removing the oldest element in the buffer if it is full.
+
Parameters
+
+ Q The process noise covariance matrix.
+ stamp Time stamp of the input vector and covariance matrix.
+ model Optional pointer to a specific Model to be used with this covariance matrix (eg. mapping it to different states). If it equals to nullptr, the default model specified in the constructor will be used.
+
+
+
+
Note This is the variant of the method when reprediction is disabled and will function like a dumb LKF .
+
+
+
+
+
◆ addProcessNoiseChange() [2/2]
+
+
+
+
+template<class Model , bool disable_reprediction = false>
+
+template<bool check = disable_reprediction>
+
+
+
+
+
+ std::enable_if_t<!check> mrs_lib::Repredictor < Model, disable_reprediction >::addProcessNoiseChange
+ (
+ const Q_t &
+ Q ,
+
+
+
+
+ const ros::Time &
+ stamp ,
+
+
+
+
+ const ModelPtr &
+ model = nullptr
+
+
+
+ )
+
+
+
+
+
+inline
+
+
+
+
+
Adds one system input to the history buffer, removing the oldest element in the buffer if it is full.
+
Parameters
+
+ Q The process noise covariance matrix.
+ stamp Time stamp of the input vector and covariance matrix.
+ model Optional pointer to a specific Model to be used with this covariance matrix (eg. mapping it to different states). If it equals to nullptr, the default model specified in the constructor will be used.
+
+
+
+
Note The new element will not be added if it is older than the oldest element in the history buffer.
+
+
+
+
+
◆ predictTo() [1/2]
+
+
+
+
+template<class Model , bool disable_reprediction = false>
+
+template<bool check = disable_reprediction>
+
+
+
+
Estimates the system state and covariance matrix at the specified time.
+
The measurement and system input histories are used to estimate the state vector and covariance matrix values at the specified time, which are returned.
+
Parameters
+
+ to_stamp The desired time at which the state vector and covariance matrix should be estimated.
+
+
+
+
Returns Returns the estimated state vector and covariance matrix in a single struct.
+
Examples repredictor/example.cpp .
+
+
+
+
+
+
◆ predictTo() [2/2]
+
+
+
+
+template<class Model , bool disable_reprediction = false>
+
+template<bool check = disable_reprediction>
+
+
+
+
Estimates the system state and covariance matrix at the specified time.
+
The measurement and system input histories are used to estimate the state vector and covariance matrix values at the specified time, which are returned.
+
Parameters
+
+ to_stamp The desired time at which the state vector and covariance matrix should be estimated.
+
+
+
+
Returns Returns the estimated state vector and covariance matrix in a single struct.
+
Note This is the variant of the method when reprediction is disabled and will function like a dumb LKF .
+
+
+
+
The documentation for this class was generated from the following file:
+
+
+
+
+
+
diff --git a/classmrs__lib_1_1Repredictor.js b/classmrs__lib_1_1Repredictor.js
new file mode 100644
index 00000000..dd5372d8
--- /dev/null
+++ b/classmrs__lib_1_1Repredictor.js
@@ -0,0 +1,30 @@
+var classmrs__lib_1_1Repredictor =
+[
+ [ "history_t", "classmrs__lib_1_1Repredictor.html#a4f62944beacf99f22b71726d2cb5a0c1", null ],
+ [ "ModelPtr", "classmrs__lib_1_1Repredictor.html#acb4a34d97aab3896de9565012a890381", null ],
+ [ "P_t", "classmrs__lib_1_1Repredictor.html#aca5fb76c2e698ed1dd2c58e340adca58", null ],
+ [ "Q_t", "classmrs__lib_1_1Repredictor.html#af0b9dfd5f21b220e87c79298b061f63d", null ],
+ [ "R_t", "classmrs__lib_1_1Repredictor.html#aac7c07ba0237230fa7346932fb542ae9", null ],
+ [ "statecov_t", "classmrs__lib_1_1Repredictor.html#a794952d1627187223300848cd3e1bf66", null ],
+ [ "u_t", "classmrs__lib_1_1Repredictor.html#a19532d9b875ac33f80ffe313dfb26e6d", null ],
+ [ "x_t", "classmrs__lib_1_1Repredictor.html#ac9550981d03dc3c898dcbd39c4bc461f", null ],
+ [ "z_t", "classmrs__lib_1_1Repredictor.html#a4f12cadd7f0377eccb70b8d61e7ee8e3", null ],
+ [ "Repredictor", "classmrs__lib_1_1Repredictor.html#a035888099138efba982bda818c5fe390", null ],
+ [ "Repredictor", "classmrs__lib_1_1Repredictor.html#a0245871abc8208f13b4b33a7c2ece708", null ],
+ [ "Repredictor", "classmrs__lib_1_1Repredictor.html#a6ffbce95c9194f159c203378845851d0", null ],
+ [ "addInputChange", "classmrs__lib_1_1Repredictor.html#a2fa01fc3dbe7a557b80b6104466c8b7e", null ],
+ [ "addInputChange", "classmrs__lib_1_1Repredictor.html#a4db1b1896eb17c54bc906d0e9da1eee9", null ],
+ [ "addInputChangeWithNoise", "classmrs__lib_1_1Repredictor.html#a203a2fc80f2ab2d0caeb2b09e2c410a3", null ],
+ [ "addInputChangeWithNoise", "classmrs__lib_1_1Repredictor.html#ac85faca4dca9e6f785078eac6819f10f", null ],
+ [ "addMeasurement", "classmrs__lib_1_1Repredictor.html#a5e1db8bec67cabd386b8924c5312f648", null ],
+ [ "addMeasurement", "classmrs__lib_1_1Repredictor.html#a0aed856752f139230db775620b4b97da", null ],
+ [ "addProcessNoiseChange", "classmrs__lib_1_1Repredictor.html#ad07b1f478d926355157c46d93cde1b4b", null ],
+ [ "addProcessNoiseChange", "classmrs__lib_1_1Repredictor.html#a1a409036d5c94ee2115b2e31465fd2c7", null ],
+ [ "checkMonotonicity", "classmrs__lib_1_1Repredictor.html#abcd77c1a5c4a58a9e87ad47d5270f8ed", null ],
+ [ "predictTo", "classmrs__lib_1_1Repredictor.html#a018a96efcc5533e0e43b195cc23ee42e", null ],
+ [ "predictTo", "classmrs__lib_1_1Repredictor.html#ac4bd7a77f3a9c73309108c35cad4936c", null ],
+ [ "printBuffer", "classmrs__lib_1_1Repredictor.html#aece422abbff5ac9b83b79b0fd128b85d", null ],
+ [ "m_default_model", "classmrs__lib_1_1Repredictor.html#a53e46cd8b6ef87f1a716f879883807cf", null ],
+ [ "m_history", "classmrs__lib_1_1Repredictor.html#a1a3d0fc65e325813bbdbbcb62ba1d0eb", null ],
+ [ "m_sc", "classmrs__lib_1_1Repredictor.html#a0353caac9435795af6495ea3ea6a7352", null ]
+];
\ No newline at end of file
diff --git a/classmrs__lib_1_1RepredictorAloamgarm-members.html b/classmrs__lib_1_1RepredictorAloamgarm-members.html
new file mode 100644
index 00000000..510f6aec
--- /dev/null
+++ b/classmrs__lib_1_1RepredictorAloamgarm-members.html
@@ -0,0 +1,132 @@
+
+
+
+
+
+
+
+mrs_lib: Member List
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
This is the complete list of members for mrs_lib::RepredictorAloamgarm< Model > , including all inherited members.
+
+ addInputChange (const u_t &u, const ros::Time &stamp, const ModelPtr &model=nullptr)mrs_lib::Repredictor< Model > inline
+ addInputChange (const u_t &u,[[maybe_unused]] const ros::Time &stamp, const ModelPtr &model=nullptr)mrs_lib::Repredictor< Model > inline
+ addInputChangeWithNoise (const u_t &u, const Q_t &Q, const ros::Time &stamp, const ModelPtr &model=nullptr)mrs_lib::Repredictor< Model > inline
+ addInputChangeWithNoise (const u_t &u, const Q_t &Q,[[maybe_unused]] const ros::Time &stamp, const ModelPtr &model=nullptr)mrs_lib::Repredictor< Model > inline
+ addMeasurement (const z_t &z, const R_t &R, const ros::Time &stamp, const ModelPtr &model=nullptr, const double &meas_id=-1)mrs_lib::Repredictor< Model > inline
+ addMeasurement (const z_t &z, const R_t &R, const ros::Time &stamp, const ModelPtr &model=nullptr, const double &meas_id=-1)mrs_lib::Repredictor< Model > inline
+ addProcessNoiseChange (const Q_t &Q, const ros::Time &stamp, const ModelPtr &model=nullptr)mrs_lib::Repredictor< Model > inline
+ addProcessNoiseChange (const Q_t &Q,[[maybe_unused]] const ros::Time &stamp, const ModelPtr &model=nullptr)mrs_lib::Repredictor< Model > inline
+ checkMonotonicity (const T &buf) (defined in mrs_lib::Repredictor< Model > )mrs_lib::Repredictor< Model > inline protected
+ history_t typedef (defined in mrs_lib::RepredictorAloamgarm< Model > )mrs_lib::RepredictorAloamgarm< Model >
+ m_default_model (defined in mrs_lib::Repredictor< Model > )mrs_lib::Repredictor< Model > protected
+ m_history (defined in mrs_lib::Repredictor< Model > )mrs_lib::Repredictor< Model > protected
+ m_sc (defined in mrs_lib::Repredictor< Model > )mrs_lib::Repredictor< Model > protected
+ ModelPtr typedefmrs_lib::RepredictorAloamgarm< Model >
+ P_t typedefmrs_lib::RepredictorAloamgarm< Model >
+ predictTo (const ros::Time &to_stamp)mrs_lib::Repredictor< Model > inline
+ predictTo (const ros::Time &to_stamp)mrs_lib::Repredictor< Model > inline
+ printBuffer (const T &buf) (defined in mrs_lib::Repredictor< Model > )mrs_lib::Repredictor< Model > inline protected
+ Q_t typedefmrs_lib::RepredictorAloamgarm< Model >
+ R_t typedefmrs_lib::RepredictorAloamgarm< Model >
+ Repredictor (const x_t &x0, const P_t &P0, const u_t &u0, const Q_t &Q0, const ros::Time &t0, const ModelPtr &model, const unsigned hist_len)mrs_lib::Repredictor< Model > inline
+ Repredictor ()mrs_lib::Repredictor< Model > inline
+ Repredictor (const x_t &x0, const P_t &P0, const Q_t &Q0, const ros::Time &t0, const ModelPtr &model, const unsigned hist_len)mrs_lib::Repredictor< Model > inline
+ RepredictorAloamgarm (const x_t &x0, const P_t &P0, const u_t &u0, const Q_t &Q0, const ros::Time &t0, const ModelPtr &model, const unsigned hist_len, const std::shared_ptr< boost::circular_buffer< double >> &nis_buffer)mrs_lib::RepredictorAloamgarm< Model > inline
+ statecov_t typedefmrs_lib::RepredictorAloamgarm< Model >
+ u_t typedefmrs_lib::RepredictorAloamgarm< Model >
+ x_t typedefmrs_lib::RepredictorAloamgarm< Model >
+ z_t typedefmrs_lib::RepredictorAloamgarm< Model >
+
+
+
+
+
+
diff --git a/classmrs__lib_1_1RepredictorAloamgarm.html b/classmrs__lib_1_1RepredictorAloamgarm.html
new file mode 100644
index 00000000..4a15b78d
--- /dev/null
+++ b/classmrs__lib_1_1RepredictorAloamgarm.html
@@ -0,0 +1,383 @@
+
+
+
+
+
+
+
+mrs_lib: mrs_lib::RepredictorAloamgarm< Model > Class Template Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Implementation of the RepredictorAloamgarm for fusing measurements with variable delays.
+ More...
+
+
#include <repredictor_aloamgarm.h >
+
+
+
+
+
+
+
+
+
+
+
+using x_t = typename Model::x_t
+ State vector type .
+
+
+using u_t = typename Model::u_t
+ Input vector type .
+
+
+using z_t = typename Model::z_t
+ Measurement vector type .
+
+
+using P_t = typename Model::P_t
+ State uncertainty covariance matrix type .
+
+
+using R_t = typename Model::R_t
+ Measurement noise covariance matrix type .
+
+
+using Q_t = typename Model::Q_t
+ Process noise covariance matrix type .
+
+
+using statecov_t = typename Model::statecov_t
+ Helper struct for passing around the state and its covariance in one variable.
+
+
+using ModelPtr = typename std::shared_ptr< Model >
+ Shorthand type for a shared pointer-to-Model.
+
+
+using history_t = typename Repredictor < Model >::history_t
+
+
+
+using x_t = typename Model::x_t
+ State vector type .
+
+
+using u_t = typename Model::u_t
+ Input vector type .
+
+
+using z_t = typename Model::z_t
+ Measurement vector type .
+
+
+using P_t = typename Model::P_t
+ State uncertainty covariance matrix type .
+
+
+using R_t = typename Model::R_t
+ Measurement noise covariance matrix type .
+
+
+using Q_t = typename Model::Q_t
+ Process noise covariance matrix type .
+
+
+using statecov_t = typename Model::statecov_t
+ Helper struct for passing around the state and its covariance in one variable.
+
+
+using ModelPtr = typename std::shared_ptr< Model >
+ Shorthand type for a shared pointer-to-Model.
+
+
+
+ RepredictorAloamgarm (const x_t &x0, const P_t &P0, const u_t &u0, const Q_t &Q0, const ros::Time &t0, const ModelPtr &model, const unsigned hist_len, const std::shared_ptr< boost::circular_buffer< double >> &nis_buffer)
+ Variation of the constructor for kalman filter using nis_buffer (ALOAMGARM) More...
+
+
+std::enable_if_t<!check, statecov_t > predictTo (const ros::Time &to_stamp)
+ Estimates the system state and covariance matrix at the specified time. More...
+
+std::enable_if_t< check, statecov_t > predictTo (const ros::Time &to_stamp)
+ Estimates the system state and covariance matrix at the specified time. More...
+
+std::enable_if_t<!check > addInputChangeWithNoise (const u_t &u, const Q_t &Q, const ros::Time &stamp, const ModelPtr &model=nullptr)
+ Adds one system input to the history buffer, removing the oldest element in the buffer if it is full. More...
+
+std::enable_if_t< check > addInputChangeWithNoise (const u_t &u, const Q_t &Q,[[maybe_unused]] const ros::Time &stamp, const ModelPtr &model=nullptr)
+ Adds one system input to the history buffer, removing the oldest element in the buffer if it is full. More...
+
+std::enable_if_t<!check > addInputChange (const u_t &u, const ros::Time &stamp, const ModelPtr &model=nullptr)
+ Adds one system input to the history buffer, removing the oldest element in the buffer if it is full. More...
+
+std::enable_if_t< check > addInputChange (const u_t &u,[[maybe_unused]] const ros::Time &stamp, const ModelPtr &model=nullptr)
+ Adds one system input to the history buffer, removing the oldest element in the buffer if it is full. More...
+
+std::enable_if_t<!check > addProcessNoiseChange (const Q_t &Q, const ros::Time &stamp, const ModelPtr &model=nullptr)
+ Adds one system input to the history buffer, removing the oldest element in the buffer if it is full. More...
+
+std::enable_if_t< check > addProcessNoiseChange (const Q_t &Q,[[maybe_unused]] const ros::Time &stamp, const ModelPtr &model=nullptr)
+ Adds one system input to the history buffer, removing the oldest element in the buffer if it is full. More...
+
+std::enable_if_t<!check > addMeasurement (const z_t &z, const R_t &R, const ros::Time &stamp, const ModelPtr &model=nullptr, const double &meas_id=-1)
+ Adds one measurement to the history buffer, removing the oldest element in the buffer if it is full. More...
+
+std::enable_if_t< check > addMeasurement (const z_t &z, const R_t &R, const ros::Time &stamp, const ModelPtr &model=nullptr, const double &meas_id=-1)
+ Adds one measurement to the history buffer, removing the oldest element in the buffer if it is full. More...
+
+ Repredictor (const x_t &x0, const P_t &P0, const u_t &u0, const Q_t &Q0, const ros::Time &t0, const ModelPtr &model, const unsigned hist_len)
+ The main constructor. More...
+
+ Repredictor ()
+ Empty constructor. More...
+
+ Repredictor (const x_t &x0, const P_t &P0, const Q_t &Q0, const ros::Time &t0, const ModelPtr &model, const unsigned hist_len)
+ Variation of the constructor for cases without a system input. More...
+
+
+
+
+
+using history_t = boost::circular_buffer< info_t >
+
+
+
+bool checkMonotonicity (const T &buf)
+
+
+void printBuffer (const T &buf)
+
+
+
+statecov_t m_sc
+
+
+ModelPtr m_default_model
+
+
+history_t m_history
+
+
+
+
template<class Model>
+class mrs_lib::RepredictorAloamgarm< Model >
+
+
Implementation of the RepredictorAloamgarm for fusing measurements with variable delays.
+
A standard state-space system model is assumed for the repredictor with system inputs and measurements, generated from the system state vector. The inputs and measurements may be delayed with varying durations (an older measurement may become available after a newer one). A typical use-case scenario is when you have one "fast" but imprecise sensor and one "slow" but precise sensor and you want to use them both to get a good prediction (eg. height from the Garmin LiDAR, which comes at 100Hz, and position from a SLAM, which comes at 10Hz with a long delay). If the slow sensor is significantly slower than the fast one, fusing its measurement at the time it arrives without taking into account the sensor's delay may significantly bias your latest estimate.
+
To accomodate this, the RepredictorAloamgarm keeps a buffer of N last inputs and measurements (N is specified in the constructor). This buffer is then used to re-predict the desired state to a specific time, as requested by the user. Note that the re-prediction is evaluated in a lazy manner only when the user requests it, so it goes through the whole history buffer every time a prediction is requested.
+
The RepredictorAloamgarm utilizes a fusion Model (specified as the template parameter), which should implement the predict() and correct() methods. This Model is used for fusing the system inputs and measurements as well as for predictions. Typically, this Model will be some kind of a Kalman Filter (LKF , UKF etc.).
Note The Model should be able to accomodate predictions with varying time steps in order for the RepredictorAloamgarm to work correctly (see eg. the varstepLKF class).
+
Template Parameters
+
+ Model the prediction and correction model (eg. a Kalman Filter).
+
+
+
+
+
+
◆ RepredictorAloamgarm()
+
+
+
+
+template<class Model >
+
+
+
+
+
+ mrs_lib::RepredictorAloamgarm < Model >::RepredictorAloamgarm
+ (
+ const x_t &
+ x0 ,
+
+
+
+
+ const P_t &
+ P0 ,
+
+
+
+
+ const u_t &
+ u0 ,
+
+
+
+
+ const Q_t &
+ Q0 ,
+
+
+
+
+ const ros::Time &
+ t0 ,
+
+
+
+
+ const ModelPtr &
+ model ,
+
+
+
+
+ const unsigned
+ hist_len ,
+
+
+
+
+ const std::shared_ptr< boost::circular_buffer< double >> &
+ nis_buffer
+
+
+
+ )
+
+
+
+
+
+inline
+
+
+
+
+
Variation of the constructor for kalman filter using nis_buffer (ALOAMGARM)
+
Initializes the RepredictorAloamgarm with the necessary initial and default values.
+
Parameters
+
+ x0 Initial state.
+ P0 Covariance matrix of the initial state uncertainty.
+ u0 Initial system input.
+ Q0 Default covariance matrix of the process noise.
+ t0 Time stamp of the initial state.
+ model Default prediction and correction model.
+ hist_len Length of the history buffer for system inputs and measurements.
+ nis_buffer Circular buffer for NIS values.
+
+
+
+
+
+
+
The documentation for this class was generated from the following file:
+
+
+
+
+
+
diff --git a/classmrs__lib_1_1RepredictorAloamgarm.js b/classmrs__lib_1_1RepredictorAloamgarm.js
new file mode 100644
index 00000000..d65cdcee
--- /dev/null
+++ b/classmrs__lib_1_1RepredictorAloamgarm.js
@@ -0,0 +1,13 @@
+var classmrs__lib_1_1RepredictorAloamgarm =
+[
+ [ "history_t", "classmrs__lib_1_1RepredictorAloamgarm.html#adfbe585577a0feda074bad4e18d617dc", null ],
+ [ "ModelPtr", "classmrs__lib_1_1RepredictorAloamgarm.html#a7766d3dbccd04fcbe584cca6730153ca", null ],
+ [ "P_t", "classmrs__lib_1_1RepredictorAloamgarm.html#a1f2bffb8cbea233b14036e016e8bb654", null ],
+ [ "Q_t", "classmrs__lib_1_1RepredictorAloamgarm.html#aa031cc536ee7a46c3e79287c65fc1fa7", null ],
+ [ "R_t", "classmrs__lib_1_1RepredictorAloamgarm.html#afa36b8b183f868a84dc182e4ac562d44", null ],
+ [ "statecov_t", "classmrs__lib_1_1RepredictorAloamgarm.html#a4d5da8a5d296bf98bff6f99eaf550ae7", null ],
+ [ "u_t", "classmrs__lib_1_1RepredictorAloamgarm.html#acf7e98ab597eeeb4766b9794cf861f13", null ],
+ [ "x_t", "classmrs__lib_1_1RepredictorAloamgarm.html#a5c2992c6bde2dd8f3bdc7673fc3977da", null ],
+ [ "z_t", "classmrs__lib_1_1RepredictorAloamgarm.html#a3e265f15f9b8b031af819d1d2045909b", null ],
+ [ "RepredictorAloamgarm", "classmrs__lib_1_1RepredictorAloamgarm.html#a1e1d3245d8f2fd98c9f80d4795061395", null ]
+];
\ No newline at end of file
diff --git a/classmrs__lib_1_1RepredictorAloamgarm__coll__graph.map b/classmrs__lib_1_1RepredictorAloamgarm__coll__graph.map
new file mode 100644
index 00000000..68c827b9
--- /dev/null
+++ b/classmrs__lib_1_1RepredictorAloamgarm__coll__graph.map
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/classmrs__lib_1_1RepredictorAloamgarm__coll__graph.md5 b/classmrs__lib_1_1RepredictorAloamgarm__coll__graph.md5
new file mode 100644
index 00000000..4419632f
--- /dev/null
+++ b/classmrs__lib_1_1RepredictorAloamgarm__coll__graph.md5
@@ -0,0 +1 @@
+4018511dbda9a0f596989656ba14d0ad
\ No newline at end of file
diff --git a/classmrs__lib_1_1RepredictorAloamgarm__coll__graph.png b/classmrs__lib_1_1RepredictorAloamgarm__coll__graph.png
new file mode 100644
index 00000000..b3442949
Binary files /dev/null and b/classmrs__lib_1_1RepredictorAloamgarm__coll__graph.png differ
diff --git a/classmrs__lib_1_1RepredictorAloamgarm__inherit__graph.map b/classmrs__lib_1_1RepredictorAloamgarm__inherit__graph.map
new file mode 100644
index 00000000..68c827b9
--- /dev/null
+++ b/classmrs__lib_1_1RepredictorAloamgarm__inherit__graph.map
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/classmrs__lib_1_1RepredictorAloamgarm__inherit__graph.md5 b/classmrs__lib_1_1RepredictorAloamgarm__inherit__graph.md5
new file mode 100644
index 00000000..4419632f
--- /dev/null
+++ b/classmrs__lib_1_1RepredictorAloamgarm__inherit__graph.md5
@@ -0,0 +1 @@
+4018511dbda9a0f596989656ba14d0ad
\ No newline at end of file
diff --git a/classmrs__lib_1_1RepredictorAloamgarm__inherit__graph.png b/classmrs__lib_1_1RepredictorAloamgarm__inherit__graph.png
new file mode 100644
index 00000000..b3442949
Binary files /dev/null and b/classmrs__lib_1_1RepredictorAloamgarm__inherit__graph.png differ
diff --git a/classmrs__lib_1_1RosParamProvider-members.html b/classmrs__lib_1_1RosParamProvider-members.html
new file mode 100644
index 00000000..7f7523a9
--- /dev/null
+++ b/classmrs__lib_1_1RosParamProvider-members.html
@@ -0,0 +1,110 @@
+
+
+
+
+
+
+
+mrs_lib: Member List
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
This is the complete list of members for mrs_lib::RosParamProvider , including all inherited members.
+
+
+
+
+
+
diff --git a/classmrs__lib_1_1RosParamProvider.html b/classmrs__lib_1_1RosParamProvider.html
new file mode 100644
index 00000000..9fa01e23
--- /dev/null
+++ b/classmrs__lib_1_1RosParamProvider.html
@@ -0,0 +1,155 @@
+
+
+
+
+
+
+
+mrs_lib: mrs_lib::RosParamProvider Class Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+template<typename T >
+bool getParam (const std::string ¶m_name, T &value_out)
+
+
+ ParamProvider ()=delete
+
+
+
+template<typename T >
+bool getParam (const std::string ¶m_name, T &value_out) const
+
+
+bool getParam (const std::string ¶m_name, XmlRpc::XmlRpcValue &value_out) const
+
+
+ ParamProvider (const ros::NodeHandle &nh, std::string node_name, const bool use_rosparam=true)
+
+
+bool addYamlFile (const std::string &filepath)
+
+
+
The documentation for this class was generated from the following file:
+
+
+
+
+
+
diff --git a/classmrs__lib_1_1RosParamProvider.js b/classmrs__lib_1_1RosParamProvider.js
new file mode 100644
index 00000000..a3d2c3d5
--- /dev/null
+++ b/classmrs__lib_1_1RosParamProvider.js
@@ -0,0 +1,5 @@
+var classmrs__lib_1_1RosParamProvider =
+[
+ [ "getParam", "classmrs__lib_1_1RosParamProvider.html#a9d38bf19db16823ac03e639d5dd6a594", null ],
+ [ "ParamProvider", "classmrs__lib_1_1RosParamProvider.html#adbd92642f661318a98d5891d20f36e83", null ]
+];
\ No newline at end of file
diff --git a/classmrs__lib_1_1RosParamProvider__coll__graph.map b/classmrs__lib_1_1RosParamProvider__coll__graph.map
new file mode 100644
index 00000000..32bd7efb
--- /dev/null
+++ b/classmrs__lib_1_1RosParamProvider__coll__graph.map
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/classmrs__lib_1_1RosParamProvider__coll__graph.md5 b/classmrs__lib_1_1RosParamProvider__coll__graph.md5
new file mode 100644
index 00000000..dd289e41
--- /dev/null
+++ b/classmrs__lib_1_1RosParamProvider__coll__graph.md5
@@ -0,0 +1 @@
+d2bf7adfb34e89d1e089b1a2b9655557
\ No newline at end of file
diff --git a/classmrs__lib_1_1RosParamProvider__coll__graph.png b/classmrs__lib_1_1RosParamProvider__coll__graph.png
new file mode 100644
index 00000000..0488ff1e
Binary files /dev/null and b/classmrs__lib_1_1RosParamProvider__coll__graph.png differ
diff --git a/classmrs__lib_1_1RosParamProvider__inherit__graph.map b/classmrs__lib_1_1RosParamProvider__inherit__graph.map
new file mode 100644
index 00000000..32bd7efb
--- /dev/null
+++ b/classmrs__lib_1_1RosParamProvider__inherit__graph.map
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/classmrs__lib_1_1RosParamProvider__inherit__graph.md5 b/classmrs__lib_1_1RosParamProvider__inherit__graph.md5
new file mode 100644
index 00000000..dd289e41
--- /dev/null
+++ b/classmrs__lib_1_1RosParamProvider__inherit__graph.md5
@@ -0,0 +1 @@
+d2bf7adfb34e89d1e089b1a2b9655557
\ No newline at end of file
diff --git a/classmrs__lib_1_1RosParamProvider__inherit__graph.png b/classmrs__lib_1_1RosParamProvider__inherit__graph.png
new file mode 100644
index 00000000..0488ff1e
Binary files /dev/null and b/classmrs__lib_1_1RosParamProvider__inherit__graph.png differ
diff --git a/classmrs__lib_1_1Routine-members.html b/classmrs__lib_1_1Routine-members.html
new file mode 100644
index 00000000..386bf128
--- /dev/null
+++ b/classmrs__lib_1_1Routine-members.html
@@ -0,0 +1,108 @@
+
+
+
+
+
+
+
+mrs_lib: Member List
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
This is the complete list of members for mrs_lib::Routine , including all inherited members.
+
+ end (void) (defined in mrs_lib::Routine )mrs_lib::Routine
+ Routine (std::string name, std::string node_name, std::shared_ptr< ros::Publisher > publisher, std::shared_ptr< std::mutex > mutex_publisher, bool profiler_enabled) (defined in mrs_lib::Routine )mrs_lib::Routine
+ Routine (std::string name, std::string node_name, double expected_rate, double threshold, std::shared_ptr< ros::Publisher > publisher, std::shared_ptr< std::mutex > mutex_publisher, bool profiler_enabled, ros::TimerEvent event) (defined in mrs_lib::Routine )mrs_lib::Routine
+ ~Routine () (defined in mrs_lib::Routine )mrs_lib::Routine
+
+
+
+
+
+
diff --git a/classmrs__lib_1_1Routine.html b/classmrs__lib_1_1Routine.html
new file mode 100644
index 00000000..150eb3ca
--- /dev/null
+++ b/classmrs__lib_1_1Routine.html
@@ -0,0 +1,122 @@
+
+
+
+
+
+
+
+mrs_lib: mrs_lib::Routine Class Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Routine (std::string name, std::string node_name, std::shared_ptr< ros::Publisher > publisher, std::shared_ptr< std::mutex > mutex_publisher, bool profiler_enabled)
+
+
+ Routine (std::string name, std::string node_name, double expected_rate, double threshold, std::shared_ptr< ros::Publisher > publisher, std::shared_ptr< std::mutex > mutex_publisher, bool profiler_enabled, ros::TimerEvent event)
+
+
+void end (void)
+
+
+
The documentation for this class was generated from the following files:
+include/mrs_lib/profiler.h
+src/profiler/profiler.cpp
+
+
+
+
+
+
+
diff --git a/classmrs__lib_1_1Routine.js b/classmrs__lib_1_1Routine.js
new file mode 100644
index 00000000..00d07904
--- /dev/null
+++ b/classmrs__lib_1_1Routine.js
@@ -0,0 +1,7 @@
+var classmrs__lib_1_1Routine =
+[
+ [ "Routine", "classmrs__lib_1_1Routine.html#a0fdaedd9d006a1a3ab935783fd45ad4f", null ],
+ [ "Routine", "classmrs__lib_1_1Routine.html#a97f405ab968c85699c3b3c6d60ee8b79", null ],
+ [ "~Routine", "classmrs__lib_1_1Routine.html#a30d39155a75b06030d7539566d2068d2", null ],
+ [ "end", "classmrs__lib_1_1Routine.html#aec3b10482c1b3b3ba80bde4f60c919a7", null ]
+];
\ No newline at end of file
diff --git a/classmrs__lib_1_1SafetyZone-members.html b/classmrs__lib_1_1SafetyZone-members.html
new file mode 100644
index 00000000..40511ced
--- /dev/null
+++ b/classmrs__lib_1_1SafetyZone-members.html
@@ -0,0 +1,114 @@
+
+
+
+
+
+
+
+mrs_lib: Member List
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
This is the complete list of members for mrs_lib::SafetyZone , including all inherited members.
+
+ getBorder () (defined in mrs_lib::SafetyZone )mrs_lib::SafetyZone
+ getObstacles () (defined in mrs_lib::SafetyZone )mrs_lib::SafetyZone
+ getPointObstacles () (defined in mrs_lib::SafetyZone )mrs_lib::SafetyZone
+ isPathValid2d (const double p1x, const double p1y, const double p2x, const double p2y) (defined in mrs_lib::SafetyZone )mrs_lib::SafetyZone
+ isPathValid3d (const double p1x, const double p1y, const double p1z, const double p2x, const double p2y, const double p2z) (defined in mrs_lib::SafetyZone )mrs_lib::SafetyZone
+ isPointValid2d (const double px, const double py) (defined in mrs_lib::SafetyZone )mrs_lib::SafetyZone
+ isPointValid3d (const double px, const double py, const double pz) (defined in mrs_lib::SafetyZone )mrs_lib::SafetyZone
+ SafetyZone (Polygon outerBorder, std::vector< Polygon > innerObstacles, std::vector< PointObstacle > pointObstacles) (defined in mrs_lib::SafetyZone )mrs_lib::SafetyZone
+ SafetyZone (const Eigen::MatrixXd &outerBorderMatrix, const std::vector< Eigen::MatrixXd > &innerObstaclesMatrixes, const std::vector< Eigen::MatrixXd > &pointObstaclesMatrixes) (defined in mrs_lib::SafetyZone )mrs_lib::SafetyZone
+ ~SafetyZone () (defined in mrs_lib::SafetyZone )mrs_lib::SafetyZone
+
+
+
+
+
+
diff --git a/classmrs__lib_1_1SafetyZone.html b/classmrs__lib_1_1SafetyZone.html
new file mode 100644
index 00000000..58bd9ba9
--- /dev/null
+++ b/classmrs__lib_1_1SafetyZone.html
@@ -0,0 +1,150 @@
+
+
+
+
+
+
+
+mrs_lib: mrs_lib::SafetyZone Class Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SafetyZone (Polygon outerBorder, std::vector< Polygon > innerObstacles, std::vector< PointObstacle > pointObstacles)
+
+
+ SafetyZone (const Eigen::MatrixXd &outerBorderMatrix, const std::vector< Eigen::MatrixXd > &innerObstaclesMatrixes, const std::vector< Eigen::MatrixXd > &pointObstaclesMatrixes)
+
+
+bool isPointValid3d (const double px, const double py, const double pz)
+
+
+bool isPointValid2d (const double px, const double py)
+
+
+bool isPathValid3d (const double p1x, const double p1y, const double p1z, const double p2x, const double p2y, const double p2z)
+
+
+bool isPathValid2d (const double p1x, const double p1y, const double p2x, const double p2y)
+
+
+Polygon getBorder ()
+
+
+std::vector< Polygon > getObstacles ()
+
+
+std::vector< PointObstacle > getPointObstacles ()
+
+
+
The documentation for this class was generated from the following files:
+include/mrs_lib/safety_zone/safety_zone.h
+src/safety_zone/safety_zone.cpp
+
+
+
+
+
+
+
diff --git a/classmrs__lib_1_1SafetyZone.js b/classmrs__lib_1_1SafetyZone.js
new file mode 100644
index 00000000..d6b0b813
--- /dev/null
+++ b/classmrs__lib_1_1SafetyZone.js
@@ -0,0 +1,16 @@
+var classmrs__lib_1_1SafetyZone =
+[
+ [ "BorderError", "structmrs__lib_1_1SafetyZone_1_1BorderError.html", "structmrs__lib_1_1SafetyZone_1_1BorderError" ],
+ [ "PointObstacleError", "structmrs__lib_1_1SafetyZone_1_1PointObstacleError.html", "structmrs__lib_1_1SafetyZone_1_1PointObstacleError" ],
+ [ "PolygonObstacleError", "structmrs__lib_1_1SafetyZone_1_1PolygonObstacleError.html", "structmrs__lib_1_1SafetyZone_1_1PolygonObstacleError" ],
+ [ "SafetyZone", "classmrs__lib_1_1SafetyZone.html#a4a2e6e95359f49c27709471c1febe4f8", null ],
+ [ "~SafetyZone", "classmrs__lib_1_1SafetyZone.html#a2bb02ed16ded0e81467cbf1d8d08bd9e", null ],
+ [ "SafetyZone", "classmrs__lib_1_1SafetyZone.html#a48a363d1440ecdd5266e43ccb3f68e08", null ],
+ [ "getBorder", "classmrs__lib_1_1SafetyZone.html#aa42fec6e604ceb9605b47b92d6c210b0", null ],
+ [ "getObstacles", "classmrs__lib_1_1SafetyZone.html#a88f387698bed3964e34422aef8d3c6bf", null ],
+ [ "getPointObstacles", "classmrs__lib_1_1SafetyZone.html#ab454e1924916517f0c369988e2bf9022", null ],
+ [ "isPathValid2d", "classmrs__lib_1_1SafetyZone.html#a6c500442a6cf1fae262d45eab255370f", null ],
+ [ "isPathValid3d", "classmrs__lib_1_1SafetyZone.html#a0885538976813eb475cb23993616e099", null ],
+ [ "isPointValid2d", "classmrs__lib_1_1SafetyZone.html#aa9b5e3f7f0e482e4fd26aee747245302", null ],
+ [ "isPointValid3d", "classmrs__lib_1_1SafetyZone.html#a0f85e0224fec959051bd6e2d97620d52", null ]
+];
\ No newline at end of file
diff --git a/classmrs__lib_1_1ScopeTimer-members.html b/classmrs__lib_1_1ScopeTimer-members.html
new file mode 100644
index 00000000..4dec607a
--- /dev/null
+++ b/classmrs__lib_1_1ScopeTimer-members.html
@@ -0,0 +1,110 @@
+
+
+
+
+
+
+
+mrs_lib: Member List
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
This is the complete list of members for mrs_lib::ScopeTimer , including all inherited members.
+
+
+
+
+
+
diff --git a/classmrs__lib_1_1ScopeTimer.html b/classmrs__lib_1_1ScopeTimer.html
new file mode 100644
index 00000000..a292441d
--- /dev/null
+++ b/classmrs__lib_1_1ScopeTimer.html
@@ -0,0 +1,170 @@
+
+
+
+
+
+
+
+mrs_lib: mrs_lib::ScopeTimer Class Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Simple timer which will time a duration of a scope and checkpoints inside the scope in ros time and std::chrono time.
+ More...
+
+
#include <scope_timer.h >
+
+
+
+ ScopeTimer (const std::string &label, const ros::Duration &throttle_period=ros::Duration(0), const bool enable=true, const std::shared_ptr< ScopeTimerLogger > scope_timer_logger=nullptr)
+ The basic constructor with a user-defined label of the timer, throttled period and file logger.
+
+
+ ScopeTimer (const std::string &label, const time_point &tp0, const ros::Duration &throttle_period=ros::Duration(0), const bool enable=true, const std::shared_ptr< ScopeTimerLogger > scope_timer_logger=nullptr)
+ The basic constructor with a user-defined label of the timer and a pre-start time, which will also be measured.
+
+
+ ScopeTimer (const std::string &label, const std::shared_ptr< ScopeTimerLogger > scope_timer_logger, const bool enable=true)
+ The basic constructor with a user-defined label of the timer and file logger.
+
+
+void checkpoint (const std::string &label)
+ Checkpoint, prints the time passed until the point this function is called.
+
+float getLifetime ()
+ Getter for scope timer lifetime. More...
+
+
+ ~ScopeTimer ()
+ The basic destructor which prints out or logs the scope times, if enabled.
+
+
+
+
Simple timer which will time a duration of a scope and checkpoints inside the scope in ros time and std::chrono time.
+
+
+
◆ getLifetime()
+
+
+
+
+
+ float mrs_lib::ScopeTimer::getLifetime
+ (
+ )
+
+
+
+
+
+
Getter for scope timer lifetime.
+
Returns lifetime as floating point milliseconds
+
+
+
+
The documentation for this class was generated from the following files:
+include/mrs_lib/scope_timer.h
+src/scope_timer/scope_timer.cpp
+
+
+
+
+
+
+
diff --git a/classmrs__lib_1_1ScopeTimer.js b/classmrs__lib_1_1ScopeTimer.js
new file mode 100644
index 00000000..b0cf4d12
--- /dev/null
+++ b/classmrs__lib_1_1ScopeTimer.js
@@ -0,0 +1,10 @@
+var classmrs__lib_1_1ScopeTimer =
+[
+ [ "time_point", "structmrs__lib_1_1ScopeTimer_1_1time__point.html", "structmrs__lib_1_1ScopeTimer_1_1time__point" ],
+ [ "ScopeTimer", "classmrs__lib_1_1ScopeTimer.html#aebac3a7bad2d63f49d5777e08b504661", null ],
+ [ "ScopeTimer", "classmrs__lib_1_1ScopeTimer.html#a8943aec6fbe491633b7f698eb3f0d131", null ],
+ [ "ScopeTimer", "classmrs__lib_1_1ScopeTimer.html#abdaf77484c74055916b8e491c8ffe318", null ],
+ [ "~ScopeTimer", "classmrs__lib_1_1ScopeTimer.html#a243e048e46a8ef623b60c465dc7ee102", null ],
+ [ "checkpoint", "classmrs__lib_1_1ScopeTimer.html#acbb378343cba8f94ef228024d7a4b938", null ],
+ [ "getLifetime", "classmrs__lib_1_1ScopeTimer.html#abe8dc75be918b3a2ca7bbb043a022106", null ]
+];
\ No newline at end of file
diff --git a/classmrs__lib_1_1ScopeTimerLogger-members.html b/classmrs__lib_1_1ScopeTimerLogger-members.html
new file mode 100644
index 00000000..534066c0
--- /dev/null
+++ b/classmrs__lib_1_1ScopeTimerLogger-members.html
@@ -0,0 +1,112 @@
+
+
+
+
+
+
+
+mrs_lib: Member List
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
This is the complete list of members for mrs_lib::ScopeTimerLogger , including all inherited members.
+
+
+
+
+
+
diff --git a/classmrs__lib_1_1ScopeTimerLogger.html b/classmrs__lib_1_1ScopeTimerLogger.html
new file mode 100644
index 00000000..3a1cde4f
--- /dev/null
+++ b/classmrs__lib_1_1ScopeTimerLogger.html
@@ -0,0 +1,155 @@
+
+
+
+
+
+
+
+mrs_lib: mrs_lib::ScopeTimerLogger Class Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Simple file logger of scope timer and its checkpoints.
+ More...
+
+
#include <scope_timer.h >
+
+
+
+using chrono_tp = std::chrono::time_point< std::chrono::steady_clock >
+
+
+
+
+ ScopeTimerLogger (const std::string &logfile, const bool enable_logging=true, const int log_precision=10)
+ The basic constructor with a user-defined path to the logger file, enable flag and float-logging precision.
+
+
+ ~ScopeTimerLogger ()
+ The basic destructor which closes the logging file.
+
+
+bool shouldLog ()
+ Returns true if a non-empty path to a logger file was given by the user.
+
+
+bool loggingEnabled ()
+ Returns true if the enable flag was set to true, a non-empty path to a logger file was given by the user and the logger file stream was successfully opened.
+
+
+std::string getLogFilepath ()
+ Returns the path to the log.
+
+
+void log (const std::string &scope, const chrono_tp &time_start, const chrono_tp &time_end)
+ Writes the time data of the given scope and empty checkpoints into the logger stream.
+
+
+void log (const std::string &scope, const std::string &label_from, const std::string &label_to, const chrono_tp &time_start, const chrono_tp &time_end)
+ Writes the time data of the given scope and checkpoint labels into the logger stream.
+
+
+
+
Simple file logger of scope timer and its checkpoints.
+
The documentation for this class was generated from the following files:
+include/mrs_lib/scope_timer.h
+src/scope_timer/scope_timer.cpp
+
+
+
+
+
+
+
diff --git a/classmrs__lib_1_1ScopeTimerLogger.js b/classmrs__lib_1_1ScopeTimerLogger.js
new file mode 100644
index 00000000..fa593e89
--- /dev/null
+++ b/classmrs__lib_1_1ScopeTimerLogger.js
@@ -0,0 +1,11 @@
+var classmrs__lib_1_1ScopeTimerLogger =
+[
+ [ "chrono_tp", "classmrs__lib_1_1ScopeTimerLogger.html#ac495e41e5cac5285245d56d6e7cdd235", null ],
+ [ "ScopeTimerLogger", "classmrs__lib_1_1ScopeTimerLogger.html#a5369b8ec91eab0a06b87485bed5c130c", null ],
+ [ "~ScopeTimerLogger", "classmrs__lib_1_1ScopeTimerLogger.html#a0152ea8087d16a05027e66c44d99662e", null ],
+ [ "getLogFilepath", "classmrs__lib_1_1ScopeTimerLogger.html#addb114f39d72c3c3ee2ea8a4074cf455", null ],
+ [ "log", "classmrs__lib_1_1ScopeTimerLogger.html#a98f7fe29f151e4d0b88952530f40ef06", null ],
+ [ "log", "classmrs__lib_1_1ScopeTimerLogger.html#a8f3794f5477960606a86543ddb708b1f", null ],
+ [ "loggingEnabled", "classmrs__lib_1_1ScopeTimerLogger.html#aaf51a60a214ab18976a354c328fc9d09", null ],
+ [ "shouldLog", "classmrs__lib_1_1ScopeTimerLogger.html#a8bb5c6453336967529f118a717f20825", null ]
+];
\ No newline at end of file
diff --git a/classmrs__lib_1_1ServiceClientHandler-members.html b/classmrs__lib_1_1ServiceClientHandler-members.html
new file mode 100644
index 00000000..cdf8d22c
--- /dev/null
+++ b/classmrs__lib_1_1ServiceClientHandler-members.html
@@ -0,0 +1,116 @@
+
+
+
+
+
+
+
+mrs_lib: Member List
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
This is the complete list of members for mrs_lib::ServiceClientHandler< ServiceType > , including all inherited members.
+
+
+
+
+
+
diff --git a/classmrs__lib_1_1ServiceClientHandler.html b/classmrs__lib_1_1ServiceClientHandler.html
new file mode 100644
index 00000000..63f871ed
--- /dev/null
+++ b/classmrs__lib_1_1ServiceClientHandler.html
@@ -0,0 +1,530 @@
+
+
+
+
+
+
+
+mrs_lib: mrs_lib::ServiceClientHandler< ServiceType > Class Template Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
user wrapper of the service client handler implementation
+ More...
+
+
#include <service_client_handler.h >
+
+
+
template<class ServiceType>
+class mrs_lib::ServiceClientHandler< ServiceType >
+
+
user wrapper of the service client handler implementation
+
+
+
◆ ServiceClientHandler() [1/2]
+
+
+
+
+template<class ServiceType >
+
+
+
+
copy constructor
+
Parameters
+
+
+
+
+
+
+
+
◆ ServiceClientHandler() [2/2]
+
+
+
+
+template<class ServiceType >
+
+
+
+
constructor
+
Parameters
+
+ nh ROS node handler
+ address service address
+
+
+
+
+
+
+
+
+
◆ call() [1/3]
+
+
+
+
+template<class ServiceType >
+
+
+
+
"standard" synchronous call
+
Parameters
+
+
+
+
Returns true when success
+
+
+
+
+
◆ call() [2/3]
+
+
+
+
+template<class ServiceType >
+
+
+
+
"standard" synchronous call with repeats after failure
+
Parameters
+
+ srv data
+ attempts how many attempts for the call
+
+
+
+
Returns true when success
+
+
+
+
+
◆ call() [3/3]
+
+
+
+
+template<class ServiceType >
+
+
+ bool mrs_lib::ServiceClientHandler < ServiceType >::call
+ (
+ ServiceType &
+ srv ,
+
+
+
+
+ const int &
+ attempts ,
+
+
+
+
+ const double &
+ repeat_delay
+
+
+
+ )
+
+
+
+
+
+
"standard" synchronous call with repeats after failure
+
Parameters
+
+ srv data
+ attempts how many attempts for the call
+ repeat_delay how long to wait before repeating the call
+
+
+
+
Returns true when success
+
+
+
+
+
◆ callAsync() [1/3]
+
+
+
+
+template<class ServiceType >
+
+
+
+
asynchronous call
+
Parameters
+
+
+
+
Returns future result
+
+
+
+
+
◆ callAsync() [2/3]
+
+
+
+
+template<class ServiceType >
+
+
+ std::future< ServiceType > mrs_lib::ServiceClientHandler < ServiceType >::callAsync
+ (
+ ServiceType &
+ srv ,
+
+
+
+
+ const int &
+ attempts
+
+
+
+ )
+
+
+
+
+
+
asynchronous call with repeats after failure
+
Parameters
+
+ srv data
+ attempts how many attemps for the call
+
+
+
+
Returns future result
+
+
+
+
+
◆ callAsync() [3/3]
+
+
+
+
+template<class ServiceType >
+
+
+ std::future< ServiceType > mrs_lib::ServiceClientHandler < ServiceType >::callAsync
+ (
+ ServiceType &
+ srv ,
+
+
+
+
+ const int &
+ attempts ,
+
+
+
+
+ const double &
+ repeat_delay
+
+
+
+ )
+
+
+
+
+
+
asynchronous call with repeats after failure
+
Parameters
+
+ srv data
+ attempts how many attemps for the call
+ repeat_delay how long to wait before repeating the call
+
+
+
+
Returns future result
+
+
+
+
+
◆ initialize()
+
+
+
+
+template<class ServiceType >
+
+
+ void mrs_lib::ServiceClientHandler < ServiceType >::initialize
+ (
+ ros::NodeHandle &
+ nh ,
+
+
+
+
+ const std::string &
+ address
+
+
+
+ )
+
+
+
+
+
+
initializer
+
Parameters
+
+ nh ROS node handler
+ address service address
+
+
+
+
+
+
+
+
◆ operator=()
+
+
+
+
+template<class ServiceType >
+
+
+
+
operator=
+
Parameters
+
+
+
+
Returns
+
+
+
+
The documentation for this class was generated from the following files:
+
+
+
+
+
+
diff --git a/classmrs__lib_1_1ServiceClientHandler.js b/classmrs__lib_1_1ServiceClientHandler.js
new file mode 100644
index 00000000..0ad4b5cb
--- /dev/null
+++ b/classmrs__lib_1_1ServiceClientHandler.js
@@ -0,0 +1,15 @@
+var classmrs__lib_1_1ServiceClientHandler =
+[
+ [ "ServiceClientHandler", "classmrs__lib_1_1ServiceClientHandler.html#a7d0e35cfbbe280ab0d739c23a26189de", null ],
+ [ "~ServiceClientHandler", "classmrs__lib_1_1ServiceClientHandler.html#ad796fc7f9044bdeeacdf549faa1d2f48", null ],
+ [ "ServiceClientHandler", "classmrs__lib_1_1ServiceClientHandler.html#acf286dd2720d41fa05e98c7327d94413", null ],
+ [ "ServiceClientHandler", "classmrs__lib_1_1ServiceClientHandler.html#a6da5592ce8388bd1aa08b63fd3d3d060", null ],
+ [ "call", "classmrs__lib_1_1ServiceClientHandler.html#acd827db26db5d8e1f310769509176fe2", null ],
+ [ "call", "classmrs__lib_1_1ServiceClientHandler.html#a7eee51ebff7a805d425673ddc166d489", null ],
+ [ "call", "classmrs__lib_1_1ServiceClientHandler.html#afdf41e0cf6b2fa0941ee0ae703facc71", null ],
+ [ "callAsync", "classmrs__lib_1_1ServiceClientHandler.html#aa7f3a5d1566aa2a361594797f162ca0d", null ],
+ [ "callAsync", "classmrs__lib_1_1ServiceClientHandler.html#a390d8d24962c3efd849f44627b29387e", null ],
+ [ "callAsync", "classmrs__lib_1_1ServiceClientHandler.html#ac6babcda855d48bc3b8fc72f45f7672b", null ],
+ [ "initialize", "classmrs__lib_1_1ServiceClientHandler.html#adff9526494a62051bf864ef6a7178450", null ],
+ [ "operator=", "classmrs__lib_1_1ServiceClientHandler.html#a03d184432cd8b51f683746e87b071bdb", null ]
+];
\ No newline at end of file
diff --git a/classmrs__lib_1_1ServiceClientHandler__impl-members.html b/classmrs__lib_1_1ServiceClientHandler__impl-members.html
new file mode 100644
index 00000000..438da373
--- /dev/null
+++ b/classmrs__lib_1_1ServiceClientHandler__impl-members.html
@@ -0,0 +1,113 @@
+
+
+
+
+
+
+
+mrs_lib: Member List
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
This is the complete list of members for mrs_lib::ServiceClientHandler_impl< ServiceType > , including all inherited members.
+
+
+
+
+
+
diff --git a/classmrs__lib_1_1ServiceClientHandler__impl.html b/classmrs__lib_1_1ServiceClientHandler__impl.html
new file mode 100644
index 00000000..307578a2
--- /dev/null
+++ b/classmrs__lib_1_1ServiceClientHandler__impl.html
@@ -0,0 +1,425 @@
+
+
+
+
+
+
+
+mrs_lib: mrs_lib::ServiceClientHandler_impl< ServiceType > Class Template Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
implementation of the service client handler
+ More...
+
+
#include <service_client_handler.h >
+
+
+
+ ServiceClientHandler_impl (void)
+ default constructor
+
+
+ ~ServiceClientHandler_impl (void)
+ default destructor
+
+ ServiceClientHandler_impl (ros::NodeHandle &nh, const std::string &address)
+ constructor More...
+
+bool call (ServiceType &srv)
+ "classic" synchronous service call More...
+
+bool call (ServiceType &srv, const int &attempts)
+ "classic" synchronous service call with repeats after an error More...
+
+bool call (ServiceType &srv, const int &attempts, const double &repeat_delay)
+ "classic" synchronous service call with repeats after an error More...
+
+std::future< ServiceType > callAsync (ServiceType &srv)
+ asynchronous service call More...
+
+std::future< ServiceType > callAsync (ServiceType &srv, const int &attempts)
+ asynchronous service call with repeates after an error More...
+
+std::future< ServiceType > callAsync (ServiceType &srv, const int &attempts, const double &repeat_delay)
+ asynchronous service call with repeates after an error More...
+
+
+
+
template<class ServiceType>
+class mrs_lib::ServiceClientHandler_impl< ServiceType >
+
+
implementation of the service client handler
+
+
+
◆ ServiceClientHandler_impl()
+
+
+
+
+template<class ServiceType >
+
+
+
+
constructor
+
Parameters
+
+ nh ROS node handler
+ address service address
+
+
+
+
+
+
+
+
+
◆ call() [1/3]
+
+
+
+
+template<class ServiceType >
+
+
+
+
"classic" synchronous service call
+
Parameters
+
+
+
+
Returns true when success
+
+
+
+
+
◆ call() [2/3]
+
+
+
+
+template<class ServiceType >
+
+
+
+
"classic" synchronous service call with repeats after an error
+
Parameters
+
+ srv data
+ attempts how many attempts for the call
+
+
+
+
Returns true when success
+
+
+
+
+
◆ call() [3/3]
+
+
+
+
+template<class ServiceType >
+
+
+ bool mrs_lib::ServiceClientHandler_impl < ServiceType >::call
+ (
+ ServiceType &
+ srv ,
+
+
+
+
+ const int &
+ attempts ,
+
+
+
+
+ const double &
+ repeat_delay
+
+
+
+ )
+
+
+
+
+
+
"classic" synchronous service call with repeats after an error
+
Parameters
+
+ srv data
+ attempts how many attempts for the call
+ repeat_delay how long to wait before repeating the call
+
+
+
+
Returns true when success
+
+
+
+
+
◆ callAsync() [1/3]
+
+
+
+
+template<class ServiceType >
+
+
+
+
asynchronous service call
+
Parameters
+
+
+
+
Returns future result
+
+
+
+
+
◆ callAsync() [2/3]
+
+
+
+
+template<class ServiceType >
+
+
+
+
asynchronous service call with repeates after an error
+
Parameters
+
+ srv data
+ attempts how many attempts for the call
+
+
+
+
Returns future result
+
+
+
+
+
◆ callAsync() [3/3]
+
+
+
+
+template<class ServiceType >
+
+
+ std::future< ServiceType > mrs_lib::ServiceClientHandler_impl < ServiceType >::callAsync
+ (
+ ServiceType &
+ srv ,
+
+
+
+
+ const int &
+ attempts ,
+
+
+
+
+ const double &
+ repeat_delay
+
+
+
+ )
+
+
+
+
+
+
asynchronous service call with repeates after an error
+
Parameters
+
+ srv data
+ attempts how many attempts for the call
+ repeat_delay how long to wait before repeating the call
+
+
+
+
Returns future result
+
+
+
+
The documentation for this class was generated from the following files:
+
+
+
+
+
+
diff --git a/classmrs__lib_1_1ServiceClientHandler__impl.js b/classmrs__lib_1_1ServiceClientHandler__impl.js
new file mode 100644
index 00000000..ee5325c7
--- /dev/null
+++ b/classmrs__lib_1_1ServiceClientHandler__impl.js
@@ -0,0 +1,12 @@
+var classmrs__lib_1_1ServiceClientHandler__impl =
+[
+ [ "ServiceClientHandler_impl", "classmrs__lib_1_1ServiceClientHandler__impl.html#ae1f6eb48630bf4d3eb9e92b95c6269c8", null ],
+ [ "~ServiceClientHandler_impl", "classmrs__lib_1_1ServiceClientHandler__impl.html#a2d906a4c237db032edfb7578d0eb2be1", null ],
+ [ "ServiceClientHandler_impl", "classmrs__lib_1_1ServiceClientHandler__impl.html#a4ae10aba33d5d46013bf25a61c005ac0", null ],
+ [ "call", "classmrs__lib_1_1ServiceClientHandler__impl.html#a50394dc3190eafbce4c58b20823942d6", null ],
+ [ "call", "classmrs__lib_1_1ServiceClientHandler__impl.html#a35cc1c54991d1eb2801e2dfd205e1ef0", null ],
+ [ "call", "classmrs__lib_1_1ServiceClientHandler__impl.html#aecd6585588ea75d444577651591fb847", null ],
+ [ "callAsync", "classmrs__lib_1_1ServiceClientHandler__impl.html#a39ed1a2c10f97d75447224bd9cb9e968", null ],
+ [ "callAsync", "classmrs__lib_1_1ServiceClientHandler__impl.html#acbc6113b775545e89e7fa4fd41cf15ed", null ],
+ [ "callAsync", "classmrs__lib_1_1ServiceClientHandler__impl.html#ae15fc00b04219ae241e03c0973a00c5a", null ]
+];
\ No newline at end of file
diff --git a/classmrs__lib_1_1SubscribeHandler-members.html b/classmrs__lib_1_1SubscribeHandler-members.html
new file mode 100644
index 00000000..e6e9aee6
--- /dev/null
+++ b/classmrs__lib_1_1SubscribeHandler-members.html
@@ -0,0 +1,132 @@
+
+
+
+
+
+
+
+mrs_lib: Member List
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
This is the complete list of members for mrs_lib::SubscribeHandler< MessageType > , including all inherited members.
+
+ getMsg ()mrs_lib::SubscribeHandler< MessageType > inline virtual
+ hasMsg () constmrs_lib::SubscribeHandler< MessageType > inline virtual
+ lastMsgTime () constmrs_lib::SubscribeHandler< MessageType > inline virtual
+ message_callback_t typedefmrs_lib::SubscribeHandler< MessageType >
+ message_type typedefmrs_lib::SubscribeHandler< MessageType >
+ newMsg () constmrs_lib::SubscribeHandler< MessageType > inline virtual
+ operator= (const SubscribeHandler &)=delete (defined in mrs_lib::SubscribeHandler< MessageType > )mrs_lib::SubscribeHandler< MessageType >
+ operator= (SubscribeHandler &&other) (defined in mrs_lib::SubscribeHandler< MessageType > )mrs_lib::SubscribeHandler< MessageType > inline
+ peekMsg () constmrs_lib::SubscribeHandler< MessageType > inline virtual
+ start ()mrs_lib::SubscribeHandler< MessageType > inline virtual
+ stop ()mrs_lib::SubscribeHandler< MessageType > inline virtual
+ subscribedTopicName () constmrs_lib::SubscribeHandler< MessageType > inline virtual
+ SubscribeHandler ()mrs_lib::SubscribeHandler< MessageType > inline
+ SubscribeHandler (const SubscribeHandlerOptions &options, const std::string &topic_name, Types ... args)mrs_lib::SubscribeHandler< MessageType > inline
+ SubscribeHandler (const SubscribeHandlerOptions &options, const message_callback_t &message_callback={})mrs_lib::SubscribeHandler< MessageType > inline
+ SubscribeHandler (const SubscribeHandlerOptions &options, const timeout_callback_t &timeout_callback, Types ... args)mrs_lib::SubscribeHandler< MessageType > inline
+ SubscribeHandler (const SubscribeHandlerOptions &options, void(ObjectType1::*const timeout_callback)(const std::string &topic_name, const ros::Time &last_msg), ObjectType1 *const obj1, Types ... args)mrs_lib::SubscribeHandler< MessageType > inline
+ SubscribeHandler (const SubscribeHandlerOptions &options, void(ObjectType2::*const message_callback)(typename MessageType::ConstPtr), ObjectType2 *const obj2, Types ... args)mrs_lib::SubscribeHandler< MessageType > inline
+ SubscribeHandler (const SubscribeHandlerOptions &options, void(ObjectType2::*const message_callback)(typename MessageType::ConstPtr), ObjectType2 *const obj2, void(ObjectType1::*const timeout_callback)(const std::string &topic_name, const ros::Time &last_msg), ObjectType1 *const obj1, Types ... args)mrs_lib::SubscribeHandler< MessageType > inline
+ SubscribeHandler (const SubscribeHandlerOptions &options, const ros::Duration &no_message_timeout, Types ... args)mrs_lib::SubscribeHandler< MessageType > inline
+ SubscribeHandler (const SubscribeHandlerOptions &options, mrs_lib::TimeoutManager &timeout_manager, Types ... args)mrs_lib::SubscribeHandler< MessageType > inline
+ SubscribeHandler (const SubscribeHandler &)=delete (defined in mrs_lib::SubscribeHandler< MessageType > )mrs_lib::SubscribeHandler< MessageType >
+ SubscribeHandler (SubscribeHandler &&other) (defined in mrs_lib::SubscribeHandler< MessageType > )mrs_lib::SubscribeHandler< MessageType > inline
+ timeout_callback_t typedefmrs_lib::SubscribeHandler< MessageType >
+ topicName () constmrs_lib::SubscribeHandler< MessageType > inline virtual
+ usedMsg () constmrs_lib::SubscribeHandler< MessageType > inline virtual
+ waitForNew (const ros::WallDuration &timeout)mrs_lib::SubscribeHandler< MessageType > inline virtual
+ ~SubscribeHandler ()=default (defined in mrs_lib::SubscribeHandler< MessageType > )mrs_lib::SubscribeHandler< MessageType >
+
+
+
+
+
+
diff --git a/classmrs__lib_1_1SubscribeHandler.html b/classmrs__lib_1_1SubscribeHandler.html
new file mode 100644
index 00000000..454f7364
--- /dev/null
+++ b/classmrs__lib_1_1SubscribeHandler.html
@@ -0,0 +1,1069 @@
+
+
+
+
+
+
+
+mrs_lib: mrs_lib::SubscribeHandler< MessageType > Class Template Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
The main class for ROS topic subscription, message timeout handling etc.
+ More...
+
+
#include <subscribe_handler.h >
+
+
+
+using message_type = MessageType
+ Convenience type for the template parameter to enable nice aliasing.
+
+
+using timeout_callback_t = std::function< void(const std::string &topic_name, const ros::Time &last_msg)>
+ Type for the timeout callback function.
+
+
+using message_callback_t = std::function< void(typename MessageType::ConstPtr)>
+ Convenience type for the message callback function.
+
+
+
+virtual MessageType::ConstPtr getMsg ()
+ Returns the last received message on the topic, handled by this SubscribeHandler . Use hasMsg() first to check if at least one message is available or newMsg() to check if a new message since the last call to getMsg() is available. More...
+
+virtual MessageType::ConstPtr peekMsg () const
+ Returns the last received message on the topic without modifying the newMsg() or usedMsg() flags. More...
+
+virtual bool hasMsg () const
+ Used to check whether at least one message has been received on the handled topic. More...
+
+virtual bool newMsg () const
+ Used to check whether at least one message has been received on the handled topic since the last call to getMsg() . More...
+
+virtual bool usedMsg () const
+ Used to check whether getMsg() was called at least once on this SubscribeHandler . More...
+
+virtual MessageType::ConstPtr waitForNew (const ros::WallDuration &timeout)
+ Blocks until new data becomes available or until the timeout runs out or until a spurious wake-up. More...
+
+virtual ros::Time lastMsgTime () const
+ Returns time of the last received message on the topic, handled by this SubscribeHandler . More...
+
+virtual std::string topicName () const
+ Returns the resolved (full) name of the topic, handled by this SubscribeHandler . More...
+
+virtual std::string subscribedTopicName () const
+ Returns the subscribed (unresolved) name of the topic, handled by this SubscribeHandler . More...
+
+virtual void start ()
+ Enables the callbacks for the handled topic. More...
+
+virtual void stop ()
+ Disables the callbacks for the handled topic. More...
+
+ SubscribeHandler ()
+ Default constructor to avoid having to use pointers. More...
+
+template<class ... Types>
+ SubscribeHandler (const SubscribeHandlerOptions &options, const std::string &topic_name, Types ... args)
+ Main constructor. More...
+
+ SubscribeHandler (const SubscribeHandlerOptions &options, const message_callback_t &message_callback={})
+ Convenience constructor overload. More...
+
+template<class ... Types>
+ SubscribeHandler (const SubscribeHandlerOptions &options, const timeout_callback_t &timeout_callback, Types ... args)
+ Convenience constructor overload. More...
+
+template<class ObjectType1 , class ... Types>
+ SubscribeHandler (const SubscribeHandlerOptions &options, void(ObjectType1::*const timeout_callback)(const std::string &topic_name, const ros::Time &last_msg), ObjectType1 *const obj1, Types ... args)
+ Convenience constructor overload. More...
+
+template<class ObjectType2 , class ... Types>
+ SubscribeHandler (const SubscribeHandlerOptions &options, void(ObjectType2::*const message_callback)(typename MessageType::ConstPtr), ObjectType2 *const obj2, Types ... args)
+ Convenience constructor overload. More...
+
+template<class ObjectType1 , class ObjectType2 , class ... Types>
+ SubscribeHandler (const SubscribeHandlerOptions &options, void(ObjectType2::*const message_callback)(typename MessageType::ConstPtr), ObjectType2 *const obj2, void(ObjectType1::*const timeout_callback)(const std::string &topic_name, const ros::Time &last_msg), ObjectType1 *const obj1, Types ... args)
+ Convenience constructor overload. More...
+
+template<class ... Types>
+ SubscribeHandler (const SubscribeHandlerOptions &options, const ros::Duration &no_message_timeout, Types ... args)
+ Convenience constructor overload. More...
+
+template<class ... Types>
+ SubscribeHandler (const SubscribeHandlerOptions &options, mrs_lib::TimeoutManager &timeout_manager, Types ... args)
+ Convenience constructor overload. More...
+
+
+ SubscribeHandler (const SubscribeHandler &)=delete
+
+
+SubscribeHandler & operator= (const SubscribeHandler &)=delete
+
+
+ SubscribeHandler (SubscribeHandler &&other)
+
+
+SubscribeHandler & operator= (SubscribeHandler &&other)
+
+
+
+
template<typename MessageType>
+class mrs_lib::SubscribeHandler< MessageType >
+
+
The main class for ROS topic subscription, message timeout handling etc.
+
This class handles the raw ROS Subscriber for a specified topic. The last message received on the topic is remembered and may be retrieved by calling the getMsg() method. To check whether at least one message was received, use hasMsg() (if no message was received and you call getMsg() , a nullptr is returned and an error message is printed). To check whether a new message has arrived since the last call to getMsg() , use newMsg() (useful to check whether a new message needs to be processed in a loop or ROS Timer callback).
+
A timeout callback function may be specified, which is called if no message is received on the topic for a specified timeout (use the timeout_callback
and no_message_timeout
parameters). If the timeout callback is not set by the user, an error message is printed to the console after the timeout by default.
+
A message callback function may be specified, which is called whenever a new message is received (use the message_callback
parameter).
+
The callbacks and timeouts may be stopped and started using the stop() and start() methods.
+
For more details, see the example below (I recommend starting with the simple_example which covers most use-cases).
+
Examples subscribe_handler/example.cpp , and subscribe_handler/simple_example.cpp .
+
+
+
+
◆ SubscribeHandler() [1/9]
+
+
+
+
+template<typename MessageType >
+
+
+
+
Default constructor to avoid having to use pointers.
+
It does nothing and the SubscribeHandler it constructs will also do nothing. Use some of the other constructors for actual construction of a usable SubscribeHandler .
+
+
+
+
+
◆ SubscribeHandler() [2/9]
+
+
+
+
+template<typename MessageType >
+
+template<class ... Types>
+
+
+
+
Main constructor.
+
Parameters
+
+ options The common options struct (see documentation of SubscribeHandlerOptions ).
+ topic_name Name of the topic to be handled by this subscribed.
+ args Remaining arguments to be parsed (see other constructors).
+
+
+
+
+
+
+
+
◆ SubscribeHandler() [3/9]
+
+
+
+
+template<typename MessageType >
+
+
+
+
Convenience constructor overload.
+
Parameters
+
+ options The common options struct (see documentation of SubscribeHandlerOptions ).
+ message_callback The callback function to call when a new message is received (you can leave this argument empty and just use the newMsg() /hasMsg() and getMsg() interface).
+
+
+
+
+
+
+
+
◆ SubscribeHandler() [4/9]
+
+
+
+
+template<typename MessageType >
+
+template<class ... Types>
+
+
+
+
Convenience constructor overload.
+
Parameters
+
+ options The common options struct (see documentation of SubscribeHandlerOptions ).
+ timeout_callback The callback function to call when a new message is not received for the duration, specified in options
or in the no_message_timeout
parameter.
+ args Remaining arguments to be parsed (see other constructors).
+
+
+
+
+
+
+
+
◆ SubscribeHandler() [5/9]
+
+
+
+
+template<typename MessageType >
+
+template<class ObjectType1 , class ... Types>
+
+
+
+
Convenience constructor overload.
+
Parameters
+
+ options The common options struct (see documentation of SubscribeHandlerOptions ).
+ timeout_callback The callback method to call when a new message is not received for the duration, specified in options
or in the no_message_timeout
parameter.
+ obj1 The object on which the callback method timeout_callback
will be called.
+ args Remaining arguments to be parsed (see other constructors).
+
+
+
+
+
+
+
+
◆ SubscribeHandler() [6/9]
+
+
+
+
+template<typename MessageType >
+
+template<class ObjectType2 , class ... Types>
+
+
+
+
Convenience constructor overload.
+
Parameters
+
+ options The common options struct (see documentation of SubscribeHandlerOptions ).
+ message_callback The callback method to call when a new message is received.
+ obj2 The object on which the callback method timeout_callback
will be called.
+ args Remaining arguments to be parsed (see other constructors).
+
+
+
+
+
+
+
+
◆ SubscribeHandler() [7/9]
+
+
+
+
+template<typename MessageType >
+
+template<class ObjectType1 , class ObjectType2 , class ... Types>
+
+
+
+
+
+ mrs_lib::SubscribeHandler < MessageType >::SubscribeHandler
+ (
+ const SubscribeHandlerOptions &
+ options ,
+
+
+
+
+ void(ObjectType2::*)(typename MessageType::ConstPtr)
+ message_callback ,
+
+
+
+
+ ObjectType2 *const
+ obj2 ,
+
+
+
+
+ void(ObjectType1::*)(const std::string &topic_name, const ros::Time &last_msg)
+ timeout_callback ,
+
+
+
+
+ ObjectType1 *const
+ obj1 ,
+
+
+
+
+ Types ...
+ args
+
+
+
+ )
+
+
+
+
+
+inline
+
+
+
+
+
Convenience constructor overload.
+
Parameters
+
+ options The common options struct (see documentation of SubscribeHandlerOptions ).
+ message_callback The callback method to call when a new message is received.
+ obj2 The object on which the callback method timeout_callback
will be called.
+ timeout_callback The callback method to call when a new message is not received for the duration, specified in options
or in the no_message_timeout
parameter.
+ obj1 The object on which the callback method timeout_callback
will be called.
+ args Remaining arguments to be parsed (see other constructors).
+
+
+
+
+
+
+
+
◆ SubscribeHandler() [8/9]
+
+
+
+
+template<typename MessageType >
+
+template<class ... Types>
+
+
+
+
Convenience constructor overload.
+
Parameters
+
+ options The common options struct (see documentation of SubscribeHandlerOptions ).
+ no_message_timeout If no message is received for this duration, the timeout callback function is called. If no timeout callback is specified, an error message is printed to the console.
+ args Remaining arguments to be parsed (see other constructors).
+
+
+
+
+
+
+
+
◆ SubscribeHandler() [9/9]
+
+
+
+
+template<typename MessageType >
+
+template<class ... Types>
+
+
+
+
Convenience constructor overload.
+
Parameters
+
+ options The common options struct (see documentation of SubscribeHandlerOptions ).
+ timeout_manager The manager for timeout callbacks.
+ args Remaining arguments to be parsed (see other constructors).
+
+
+
+
+
+
+
+
+
◆ getMsg()
+
+
+
+
+template<typename MessageType >
+
+
+
+
+
+
+inline virtual
+
+
+
+
+
Returns the last received message on the topic, handled by this SubscribeHandler . Use hasMsg() first to check if at least one message is available or newMsg() to check if a new message since the last call to getMsg() is available.
+
Returns the last received message.
+
+
+
+
+
◆ hasMsg()
+
+
+
+
+template<typename MessageType >
+
+
+
+
+
+
+inline virtual
+
+
+
+
+
Used to check whether at least one message has been received on the handled topic.
+
Returns true if at least one message was received, otherwise false.
+
+
+
+
+
◆ lastMsgTime()
+
+
+
+
+template<typename MessageType >
+
+
+
+
+
+
+inline virtual
+
+
+
+
+
Returns time of the last received message on the topic, handled by this SubscribeHandler .
+
Returns time when the last message was received.
+
+
+
+
+
◆ newMsg()
+
+
+
+
+template<typename MessageType >
+
+
+
+
+
+
+inline virtual
+
+
+
+
+
Used to check whether at least one message has been received on the handled topic since the last call to getMsg() .
+
Returns true if at least one message was received, otherwise false.
+
+
+
+
+
◆ peekMsg()
+
+
+
+
+template<typename MessageType >
+
+
+
+
+
+
+inline virtual
+
+
+
+
+
Returns the last received message on the topic without modifying the newMsg() or usedMsg() flags.
+
Returns the last received message.
+
+
+
+
+
◆ start()
+
+
+
+
+template<typename MessageType >
+
+
+
+
+
+
+inline virtual
+
+
+
+
+
Enables the callbacks for the handled topic.
+
If the SubscribeHandler object is stopped using the stop() method, no callbacks will be called until the start() method is called.
+
+
+
+
+
◆ stop()
+
+
+
+
+template<typename MessageType >
+
+
+
+
+
+
+inline virtual
+
+
+
+
+
Disables the callbacks for the handled topic.
+
All messages after this method is called will be ignored until start() is called again. Timeout checking will also be disabled.
+
+
+
+
+
◆ subscribedTopicName()
+
+
+
+
+template<typename MessageType >
+
+
+
+
+
+
+inline virtual
+
+
+
+
+
Returns the subscribed (unresolved) name of the topic, handled by this SubscribeHandler .
+
Returns name of the handled topic.
+
+
+
+
+
◆ topicName()
+
+
+
+
+template<typename MessageType >
+
+
+
+
+
+
+inline virtual
+
+
+
+
+
Returns the resolved (full) name of the topic, handled by this SubscribeHandler .
+
Returns name of the handled topic.
+
+
+
+
+
◆ usedMsg()
+
+
+
+
+template<typename MessageType >
+
+
+
+
+
+
+inline virtual
+
+
+
+
+
+
◆ waitForNew()
+
+
+
+
+template<typename MessageType >
+
+
+
+
+
+ virtual MessageType::ConstPtr mrs_lib::SubscribeHandler < MessageType >::waitForNew
+ (
+ const ros::WallDuration &
+ timeout )
+
+
+
+
+
+inline virtual
+
+
+
+
+
Blocks until new data becomes available or until the timeout runs out or until a spurious wake-up.
+
Returns the message if a new message is available after waking up, nullptr
otherwise.
+
+
+
+
The documentation for this class was generated from the following file:
+
+
+
+
+
+
diff --git a/classmrs__lib_1_1SubscribeHandler.js b/classmrs__lib_1_1SubscribeHandler.js
new file mode 100644
index 00000000..22d053b1
--- /dev/null
+++ b/classmrs__lib_1_1SubscribeHandler.js
@@ -0,0 +1,33 @@
+var classmrs__lib_1_1SubscribeHandler =
+[
+ [ "Impl", "classmrs__lib_1_1SubscribeHandler_1_1Impl.html", "classmrs__lib_1_1SubscribeHandler_1_1Impl" ],
+ [ "ImplThreadsafe", "classmrs__lib_1_1SubscribeHandler_1_1ImplThreadsafe.html", "classmrs__lib_1_1SubscribeHandler_1_1ImplThreadsafe" ],
+ [ "message_callback_t", "classmrs__lib_1_1SubscribeHandler.html#a38b7371b24896e5ea21f5a8dd2821cf6", null ],
+ [ "message_type", "classmrs__lib_1_1SubscribeHandler.html#aab546ccb302e3e05d8e97e9085f62b9a", null ],
+ [ "timeout_callback_t", "classmrs__lib_1_1SubscribeHandler.html#a6f12a82506c6967a8af9c2c878a1803a", null ],
+ [ "SubscribeHandler", "classmrs__lib_1_1SubscribeHandler.html#a13159347fe9f13d778d7c02f2d1b1a98", null ],
+ [ "SubscribeHandler", "classmrs__lib_1_1SubscribeHandler.html#aaceb7739b06d44d7fe619418d5cecd4e", null ],
+ [ "SubscribeHandler", "classmrs__lib_1_1SubscribeHandler.html#a40f16a8553532b9685feb4b33f342602", null ],
+ [ "SubscribeHandler", "classmrs__lib_1_1SubscribeHandler.html#aa625f9d69548da72d92f7e8a25b078e3", null ],
+ [ "SubscribeHandler", "classmrs__lib_1_1SubscribeHandler.html#ab24f400bfd36d733366d25b63ec8889d", null ],
+ [ "SubscribeHandler", "classmrs__lib_1_1SubscribeHandler.html#a27ac792b1dfa8a62d087b565bec33925", null ],
+ [ "SubscribeHandler", "classmrs__lib_1_1SubscribeHandler.html#a14c1c92e119c047a3c40724f1152b7b9", null ],
+ [ "SubscribeHandler", "classmrs__lib_1_1SubscribeHandler.html#a367e7245e60ee2a87f680a27c0e1a8e5", null ],
+ [ "SubscribeHandler", "classmrs__lib_1_1SubscribeHandler.html#ab3499b8b5910450df90c905d1811e4a3", null ],
+ [ "~SubscribeHandler", "classmrs__lib_1_1SubscribeHandler.html#a0998c70780beecf1c27330cc40e2e075", null ],
+ [ "SubscribeHandler", "classmrs__lib_1_1SubscribeHandler.html#a07bab35d51c35fa0498a179f2038e393", null ],
+ [ "SubscribeHandler", "classmrs__lib_1_1SubscribeHandler.html#a7f9384fb3e3f96f53fc7c1023a0386c5", null ],
+ [ "getMsg", "classmrs__lib_1_1SubscribeHandler.html#a19a708c3f200ccfac2695a649b9d6e77", null ],
+ [ "hasMsg", "classmrs__lib_1_1SubscribeHandler.html#a9c6bcd07e10b60c70f02de2c6d5f632e", null ],
+ [ "lastMsgTime", "classmrs__lib_1_1SubscribeHandler.html#ab96777b29e74827ad109346504565f9b", null ],
+ [ "newMsg", "classmrs__lib_1_1SubscribeHandler.html#a46bde5660a9480814caa801e2baf3cd3", null ],
+ [ "operator=", "classmrs__lib_1_1SubscribeHandler.html#a97d2dff2ee17407fd2981d5682bea986", null ],
+ [ "operator=", "classmrs__lib_1_1SubscribeHandler.html#a819be17785380080c27761374e17cecc", null ],
+ [ "peekMsg", "classmrs__lib_1_1SubscribeHandler.html#a6638d8d589149edba21bf08fa571f18e", null ],
+ [ "start", "classmrs__lib_1_1SubscribeHandler.html#af8bc123e16de75e3b6c00724b817eaaf", null ],
+ [ "stop", "classmrs__lib_1_1SubscribeHandler.html#a36a097cf480a16bf239885be6e35b5d0", null ],
+ [ "subscribedTopicName", "classmrs__lib_1_1SubscribeHandler.html#a2ee619f8b6fe5ce56599752e63161b51", null ],
+ [ "topicName", "classmrs__lib_1_1SubscribeHandler.html#a512ffa88a2164e420f1c4a6ae1823e68", null ],
+ [ "usedMsg", "classmrs__lib_1_1SubscribeHandler.html#ab027bb4a6edece35701e17ba0c137cfc", null ],
+ [ "waitForNew", "classmrs__lib_1_1SubscribeHandler.html#a94f4bedf9229325ca6a14202f5cfbcc5", null ]
+];
\ No newline at end of file
diff --git a/classmrs__lib_1_1SubscribeHandler_1_1Impl-members.html b/classmrs__lib_1_1SubscribeHandler_1_1Impl-members.html
new file mode 100644
index 00000000..9e81315a
--- /dev/null
+++ b/classmrs__lib_1_1SubscribeHandler_1_1Impl-members.html
@@ -0,0 +1,137 @@
+
+
+
+
+
+
+
+mrs_lib: Member List
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
This is the complete list of members for mrs_lib::SubscribeHandler< MessageType >::Impl< MessageType > , including all inherited members.
+
+
+
+
+
+
diff --git a/classmrs__lib_1_1SubscribeHandler_1_1Impl.html b/classmrs__lib_1_1SubscribeHandler_1_1Impl.html
new file mode 100644
index 00000000..2465f924
--- /dev/null
+++ b/classmrs__lib_1_1SubscribeHandler_1_1Impl.html
@@ -0,0 +1,235 @@
+
+
+
+
+
+
+
+mrs_lib: mrs_lib::SubscribeHandler< MessageType >::Impl< MessageType > Class Template Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+using timeout_callback_t = typename SubscribeHandler < MessageType >::timeout_callback_t
+
+
+using message_callback_t = typename SubscribeHandler < MessageType >::message_callback_t
+
+
+using data_callback_t = std::function< void(const typename MessageType::ConstPtr &)>
+
+
+
+
+ Impl (const SubscribeHandlerOptions &options, const message_callback_t &message_callback=message_callback_t())
+
+
+virtual MessageType::ConstPtr getMsg ()
+
+
+virtual MessageType::ConstPtr peekMsg () const
+
+
+virtual bool hasMsg () const
+
+
+virtual bool newMsg () const
+
+
+virtual bool usedMsg () const
+
+
+virtual MessageType::ConstPtr waitForNew (const ros::WallDuration &timeout)
+
+
+virtual ros::Time lastMsgTime () const
+
+
+virtual std::string topicName () const
+
+
+virtual void start ()
+
+
+virtual void stop ()
+
+
+
+
+void default_timeout_callback (const std::string &topic_name, const ros::Time &last_msg)
+
+
+void process_new_message (const typename MessageType::ConstPtr &msg)
+
+
+virtual void data_callback (const typename MessageType::ConstPtr &msg)
+
+
+
+
+ros::NodeHandle m_nh
+
+
+ros::Subscriber m_sub
+
+
+std::string m_topic_name
+
+
+std::string m_node_name
+
+
+bool m_got_data
+
+
+std::mutex m_new_data_mtx
+
+
+std::condition_variable m_new_data_cv
+
+
+bool m_new_data
+
+
+bool m_used_data
+
+
+std::shared_ptr< mrs_lib::TimeoutManager > m_timeout_manager
+
+
+mrs_lib::TimeoutManager::timeout_id_t m_timeout_id
+
+
+ros::Time m_latest_message_time
+
+
+MessageType::ConstPtr m_latest_message
+
+
+message_callback_t m_message_callback
+
+
+
+
+class SubscribeHandler< MessageType >
+
+
+
The documentation for this class was generated from the following file:
+
+
+
+
+
+
diff --git a/classmrs__lib_1_1SubscribeHandler_1_1Impl.js b/classmrs__lib_1_1SubscribeHandler_1_1Impl.js
new file mode 100644
index 00000000..8c478c0c
--- /dev/null
+++ b/classmrs__lib_1_1SubscribeHandler_1_1Impl.js
@@ -0,0 +1,36 @@
+var classmrs__lib_1_1SubscribeHandler_1_1Impl =
+[
+ [ "data_callback_t", "classmrs__lib_1_1SubscribeHandler_1_1Impl.html#a89bb4d49903f55eb790ead15582ccd05", null ],
+ [ "message_callback_t", "classmrs__lib_1_1SubscribeHandler_1_1Impl.html#a19157dcc4440a0fa0e283a17f19d5485", null ],
+ [ "timeout_callback_t", "classmrs__lib_1_1SubscribeHandler_1_1Impl.html#aa65463365778487a41552febfe3931d6", null ],
+ [ "Impl", "classmrs__lib_1_1SubscribeHandler_1_1Impl.html#ada5369f408df3cabd3a25a795e76eb49", null ],
+ [ "~Impl", "classmrs__lib_1_1SubscribeHandler_1_1Impl.html#ad51b14e5e42e9c91ffb930420f554c6c", null ],
+ [ "data_callback", "classmrs__lib_1_1SubscribeHandler_1_1Impl.html#ac85af50444ae0b553c63ce4a670c8d96", null ],
+ [ "default_timeout_callback", "classmrs__lib_1_1SubscribeHandler_1_1Impl.html#a52d8b09cd1355cf7e5fac187e7a7dde8", null ],
+ [ "getMsg", "classmrs__lib_1_1SubscribeHandler_1_1Impl.html#a61d2ef76608dc33a70c76847f57e85fe", null ],
+ [ "hasMsg", "classmrs__lib_1_1SubscribeHandler_1_1Impl.html#acc18c8db6a849b4fb9c7fd64057767c6", null ],
+ [ "lastMsgTime", "classmrs__lib_1_1SubscribeHandler_1_1Impl.html#a53d5cbf53519cd6e3593c8fa5671543d", null ],
+ [ "newMsg", "classmrs__lib_1_1SubscribeHandler_1_1Impl.html#aa3924b5f6b81bec1b87efa9c3491263f", null ],
+ [ "peekMsg", "classmrs__lib_1_1SubscribeHandler_1_1Impl.html#affc322724df698018685f231ee268dc0", null ],
+ [ "process_new_message", "classmrs__lib_1_1SubscribeHandler_1_1Impl.html#a514a48538f4274d53a5754b03c1423a0", null ],
+ [ "start", "classmrs__lib_1_1SubscribeHandler_1_1Impl.html#a2befe840e5845a3a5f7740a2926353a3", null ],
+ [ "stop", "classmrs__lib_1_1SubscribeHandler_1_1Impl.html#a8008c57727936335f6391f1ee4a76827", null ],
+ [ "topicName", "classmrs__lib_1_1SubscribeHandler_1_1Impl.html#aab47ab2bc38ef2d98aa39e64f5a40684", null ],
+ [ "usedMsg", "classmrs__lib_1_1SubscribeHandler_1_1Impl.html#a7d65da6f26ad33681d974c13c20caa71", null ],
+ [ "waitForNew", "classmrs__lib_1_1SubscribeHandler_1_1Impl.html#acd9e00eba5485260f3298fe1ee0bc983", null ],
+ [ "SubscribeHandler< MessageType >", "classmrs__lib_1_1SubscribeHandler_1_1Impl.html#a5d89598edbe518d7c8361ffee1338b1f", null ],
+ [ "m_got_data", "classmrs__lib_1_1SubscribeHandler_1_1Impl.html#a469824a3611aaf0be7cc78025934e6c2", null ],
+ [ "m_latest_message", "classmrs__lib_1_1SubscribeHandler_1_1Impl.html#a939ad78600cde6f1f26aa107e47ccc4b", null ],
+ [ "m_latest_message_time", "classmrs__lib_1_1SubscribeHandler_1_1Impl.html#ab8cfa618e9abb7449518243e2c3b2153", null ],
+ [ "m_message_callback", "classmrs__lib_1_1SubscribeHandler_1_1Impl.html#ad0ae2c6dfdf85295274ef0697d329212", null ],
+ [ "m_new_data", "classmrs__lib_1_1SubscribeHandler_1_1Impl.html#a452854cb52f9d66ce4ed7a260c924d32", null ],
+ [ "m_new_data_cv", "classmrs__lib_1_1SubscribeHandler_1_1Impl.html#aee968b4238c2358e8453ce3118bc5b4d", null ],
+ [ "m_new_data_mtx", "classmrs__lib_1_1SubscribeHandler_1_1Impl.html#afa3f3a02ed2b9288331b87740c9e3c11", null ],
+ [ "m_nh", "classmrs__lib_1_1SubscribeHandler_1_1Impl.html#ad7ea1462737db59b6f5fc24cef317bde", null ],
+ [ "m_node_name", "classmrs__lib_1_1SubscribeHandler_1_1Impl.html#ac6c39708344e50fc417eb8ed9fcf162a", null ],
+ [ "m_sub", "classmrs__lib_1_1SubscribeHandler_1_1Impl.html#a21c301a2e394e0f84c4e15eafa985af3", null ],
+ [ "m_timeout_id", "classmrs__lib_1_1SubscribeHandler_1_1Impl.html#aef32a0e5255a7af437d8c43531fe50f1", null ],
+ [ "m_timeout_manager", "classmrs__lib_1_1SubscribeHandler_1_1Impl.html#a28b6576623069f62af301ac15140cf20", null ],
+ [ "m_topic_name", "classmrs__lib_1_1SubscribeHandler_1_1Impl.html#ae8c35aafab690edfac687551da0c1ba1", null ],
+ [ "m_used_data", "classmrs__lib_1_1SubscribeHandler_1_1Impl.html#afaf3e823c1c50cd539540212d26f826e", null ]
+];
\ No newline at end of file
diff --git a/classmrs__lib_1_1SubscribeHandler_1_1ImplThreadsafe-members.html b/classmrs__lib_1_1SubscribeHandler_1_1ImplThreadsafe-members.html
new file mode 100644
index 00000000..a8d03ad4
--- /dev/null
+++ b/classmrs__lib_1_1SubscribeHandler_1_1ImplThreadsafe-members.html
@@ -0,0 +1,139 @@
+
+
+
+
+
+
+
+mrs_lib: Member List
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
This is the complete list of members for mrs_lib::SubscribeHandler< MessageType >::ImplThreadsafe< MessageType > , including all inherited members.
+
+
+
+
+
+
diff --git a/classmrs__lib_1_1SubscribeHandler_1_1ImplThreadsafe.html b/classmrs__lib_1_1SubscribeHandler_1_1ImplThreadsafe.html
new file mode 100644
index 00000000..1b446027
--- /dev/null
+++ b/classmrs__lib_1_1SubscribeHandler_1_1ImplThreadsafe.html
@@ -0,0 +1,258 @@
+
+
+
+
+
+
+
+mrs_lib: mrs_lib::SubscribeHandler< MessageType >::ImplThreadsafe< MessageType > Class Template Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+using timeout_callback_t = typename impl_class_t::timeout_callback_t
+
+
+using message_callback_t = typename impl_class_t::message_callback_t
+
+ Public Types inherited from mrs_lib::SubscribeHandler< MessageType >::Impl< MessageType >
+
+using timeout_callback_t = typename SubscribeHandler < MessageType >::timeout_callback_t
+
+
+using message_callback_t = typename SubscribeHandler < MessageType >::message_callback_t
+
+
+using data_callback_t = std::function< void(const typename MessageType::ConstPtr &)>
+
+
+
+
+ ImplThreadsafe (const SubscribeHandlerOptions &options, const message_callback_t &message_callback=message_callback_t())
+
+
+virtual bool hasMsg () const override
+
+
+virtual bool newMsg () const override
+
+
+virtual bool usedMsg () const override
+
+
+virtual MessageType::ConstPtr getMsg () override
+
+
+virtual MessageType::ConstPtr peekMsg () const override
+
+
+virtual ros::Time lastMsgTime () const override
+
+
+virtual std::string topicName () const override
+
+
+virtual void start () override
+
+
+virtual void stop () override
+
+ Public Member Functions inherited from mrs_lib::SubscribeHandler< MessageType >::Impl< MessageType >
+
+ Impl (const SubscribeHandlerOptions &options, const message_callback_t &message_callback=message_callback_t())
+
+
+virtual MessageType::ConstPtr waitForNew (const ros::WallDuration &timeout)
+
+
+
+
+virtual void data_callback (const typename MessageType::ConstPtr &msg) override
+
+ Protected Member Functions inherited from mrs_lib::SubscribeHandler< MessageType >::Impl< MessageType >
+
+void default_timeout_callback (const std::string &topic_name, const ros::Time &last_msg)
+
+
+void process_new_message (const typename MessageType::ConstPtr &msg)
+
+
+
+
+class SubscribeHandler< MessageType >
+
+
+
+ Protected Attributes inherited from mrs_lib::SubscribeHandler< MessageType >::Impl< MessageType >
+
+ros::NodeHandle m_nh
+
+
+ros::Subscriber m_sub
+
+
+std::string m_topic_name
+
+
+std::string m_node_name
+
+
+bool m_got_data
+
+
+std::mutex m_new_data_mtx
+
+
+std::condition_variable m_new_data_cv
+
+
+bool m_new_data
+
+
+bool m_used_data
+
+
+std::shared_ptr< mrs_lib::TimeoutManager > m_timeout_manager
+
+
+mrs_lib::TimeoutManager::timeout_id_t m_timeout_id
+
+
+ros::Time m_latest_message_time
+
+
+MessageType::ConstPtr m_latest_message
+
+
+message_callback_t m_message_callback
+
+
+
The documentation for this class was generated from the following file:
+
+
+
+
+
+
diff --git a/classmrs__lib_1_1SubscribeHandler_1_1ImplThreadsafe.js b/classmrs__lib_1_1SubscribeHandler_1_1ImplThreadsafe.js
new file mode 100644
index 00000000..ac3fbcc9
--- /dev/null
+++ b/classmrs__lib_1_1SubscribeHandler_1_1ImplThreadsafe.js
@@ -0,0 +1,18 @@
+var classmrs__lib_1_1SubscribeHandler_1_1ImplThreadsafe =
+[
+ [ "message_callback_t", "classmrs__lib_1_1SubscribeHandler_1_1ImplThreadsafe.html#a9e7cb71939d6a240d0bc832af779aa19", null ],
+ [ "timeout_callback_t", "classmrs__lib_1_1SubscribeHandler_1_1ImplThreadsafe.html#a3a9882fa62b740b62e627dd49525be0c", null ],
+ [ "ImplThreadsafe", "classmrs__lib_1_1SubscribeHandler_1_1ImplThreadsafe.html#a38d1a156c17a76eb9ef72d2d97732a42", null ],
+ [ "~ImplThreadsafe", "classmrs__lib_1_1SubscribeHandler_1_1ImplThreadsafe.html#a3af936a107fd3f114aa61b996113a51f", null ],
+ [ "data_callback", "classmrs__lib_1_1SubscribeHandler_1_1ImplThreadsafe.html#a441aee22642f0d5471520693ba2898c3", null ],
+ [ "getMsg", "classmrs__lib_1_1SubscribeHandler_1_1ImplThreadsafe.html#a789925f2ea5df5120d8ca21007b86fb3", null ],
+ [ "hasMsg", "classmrs__lib_1_1SubscribeHandler_1_1ImplThreadsafe.html#ad79f33835407688ccd931124b28ad698", null ],
+ [ "lastMsgTime", "classmrs__lib_1_1SubscribeHandler_1_1ImplThreadsafe.html#aa8083b8f538ff2a566303a03a0921c66", null ],
+ [ "newMsg", "classmrs__lib_1_1SubscribeHandler_1_1ImplThreadsafe.html#a6f929f4d55f7cf94ecd4080819cc8709", null ],
+ [ "peekMsg", "classmrs__lib_1_1SubscribeHandler_1_1ImplThreadsafe.html#aa32577a0057ebd1de797050340da2c36", null ],
+ [ "start", "classmrs__lib_1_1SubscribeHandler_1_1ImplThreadsafe.html#a587dd0aae17d21da6f6e4a070a2ff320", null ],
+ [ "stop", "classmrs__lib_1_1SubscribeHandler_1_1ImplThreadsafe.html#aee90c5d7a54e567cddf382f01ed8eae4", null ],
+ [ "topicName", "classmrs__lib_1_1SubscribeHandler_1_1ImplThreadsafe.html#a1167a6f31c8e2a956f76323b266d2875", null ],
+ [ "usedMsg", "classmrs__lib_1_1SubscribeHandler_1_1ImplThreadsafe.html#ae65eaec53030b58b0fc686672a267b9f", null ],
+ [ "SubscribeHandler< MessageType >", "classmrs__lib_1_1SubscribeHandler_1_1ImplThreadsafe.html#a5d89598edbe518d7c8361ffee1338b1f", null ]
+];
\ No newline at end of file
diff --git a/classmrs__lib_1_1SubscribeHandler_1_1ImplThreadsafe__coll__graph.map b/classmrs__lib_1_1SubscribeHandler_1_1ImplThreadsafe__coll__graph.map
new file mode 100644
index 00000000..deda5763
--- /dev/null
+++ b/classmrs__lib_1_1SubscribeHandler_1_1ImplThreadsafe__coll__graph.map
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/classmrs__lib_1_1SubscribeHandler_1_1ImplThreadsafe__coll__graph.md5 b/classmrs__lib_1_1SubscribeHandler_1_1ImplThreadsafe__coll__graph.md5
new file mode 100644
index 00000000..11da4bc1
--- /dev/null
+++ b/classmrs__lib_1_1SubscribeHandler_1_1ImplThreadsafe__coll__graph.md5
@@ -0,0 +1 @@
+16e3cd6a2cab9ba5c99660c3e4170aaa
\ No newline at end of file
diff --git a/classmrs__lib_1_1SubscribeHandler_1_1ImplThreadsafe__coll__graph.png b/classmrs__lib_1_1SubscribeHandler_1_1ImplThreadsafe__coll__graph.png
new file mode 100644
index 00000000..d921a7d1
Binary files /dev/null and b/classmrs__lib_1_1SubscribeHandler_1_1ImplThreadsafe__coll__graph.png differ
diff --git a/classmrs__lib_1_1SubscribeHandler_1_1ImplThreadsafe__inherit__graph.map b/classmrs__lib_1_1SubscribeHandler_1_1ImplThreadsafe__inherit__graph.map
new file mode 100644
index 00000000..deda5763
--- /dev/null
+++ b/classmrs__lib_1_1SubscribeHandler_1_1ImplThreadsafe__inherit__graph.map
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/classmrs__lib_1_1SubscribeHandler_1_1ImplThreadsafe__inherit__graph.md5 b/classmrs__lib_1_1SubscribeHandler_1_1ImplThreadsafe__inherit__graph.md5
new file mode 100644
index 00000000..11da4bc1
--- /dev/null
+++ b/classmrs__lib_1_1SubscribeHandler_1_1ImplThreadsafe__inherit__graph.md5
@@ -0,0 +1 @@
+16e3cd6a2cab9ba5c99660c3e4170aaa
\ No newline at end of file
diff --git a/classmrs__lib_1_1SubscribeHandler_1_1ImplThreadsafe__inherit__graph.png b/classmrs__lib_1_1SubscribeHandler_1_1ImplThreadsafe__inherit__graph.png
new file mode 100644
index 00000000..d921a7d1
Binary files /dev/null and b/classmrs__lib_1_1SubscribeHandler_1_1ImplThreadsafe__inherit__graph.png differ
diff --git a/classmrs__lib_1_1SubscribeHandler_1_1Impl__inherit__graph.map b/classmrs__lib_1_1SubscribeHandler_1_1Impl__inherit__graph.map
new file mode 100644
index 00000000..4ce4cf69
--- /dev/null
+++ b/classmrs__lib_1_1SubscribeHandler_1_1Impl__inherit__graph.map
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/classmrs__lib_1_1SubscribeHandler_1_1Impl__inherit__graph.md5 b/classmrs__lib_1_1SubscribeHandler_1_1Impl__inherit__graph.md5
new file mode 100644
index 00000000..79e66f5f
--- /dev/null
+++ b/classmrs__lib_1_1SubscribeHandler_1_1Impl__inherit__graph.md5
@@ -0,0 +1 @@
+b4bdda37e14263126ea2e5cc022a72ae
\ No newline at end of file
diff --git a/classmrs__lib_1_1SubscribeHandler_1_1Impl__inherit__graph.png b/classmrs__lib_1_1SubscribeHandler_1_1Impl__inherit__graph.png
new file mode 100644
index 00000000..efdf7c6f
Binary files /dev/null and b/classmrs__lib_1_1SubscribeHandler_1_1Impl__inherit__graph.png differ
diff --git a/classmrs__lib_1_1ThreadTimer-members.html b/classmrs__lib_1_1ThreadTimer-members.html
new file mode 100644
index 00000000..52820f7d
--- /dev/null
+++ b/classmrs__lib_1_1ThreadTimer-members.html
@@ -0,0 +1,123 @@
+
+
+
+
+
+
+
+mrs_lib: Member List
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
This is the complete list of members for mrs_lib::ThreadTimer , including all inherited members.
+
+ callback_t typedef (defined in mrs_lib::MRSTimer )mrs_lib::MRSTimer
+ MRSTimer (const MRSTimer &)=default (defined in mrs_lib::MRSTimer )mrs_lib::MRSTimer
+ MRSTimer (MRSTimer &&)=default (defined in mrs_lib::MRSTimer )mrs_lib::MRSTimer
+ MRSTimer ()=default (defined in mrs_lib::MRSTimer )mrs_lib::MRSTimer protected
+ operator= (const ThreadTimer &)=delete (defined in mrs_lib::ThreadTimer )mrs_lib::ThreadTimer
+ operator= (ThreadTimer &&)=delete (defined in mrs_lib::ThreadTimer )mrs_lib::ThreadTimer
+ operator= (const MRSTimer &)=default (defined in mrs_lib::MRSTimer )mrs_lib::MRSTimer
+ operator= (MRSTimer &&)=default (defined in mrs_lib::MRSTimer )mrs_lib::MRSTimer
+ running () overridemrs_lib::ThreadTimer virtual
+ setPeriod (const ros::Duration &duration, const bool reset=true) overridemrs_lib::ThreadTimer virtual
+ start () overridemrs_lib::ThreadTimer virtual
+ stop () overridemrs_lib::ThreadTimer virtual
+ ThreadTimer () (defined in mrs_lib::ThreadTimer )mrs_lib::ThreadTimer
+ ThreadTimer (const ros::NodeHandle &nh, const ros::Rate &rate, void(ObjectType::*const callback)(const ros::TimerEvent &), ObjectType *const obj, const bool oneshot=false, const bool autostart=true)mrs_lib::ThreadTimer
+ ThreadTimer (const ros::NodeHandle &nh, const ros::Duration &duration, void(ObjectType::*const callback)(const ros::TimerEvent &), ObjectType *const obj, bool oneshot=false, const bool autostart=true)mrs_lib::ThreadTimer
+ ThreadTimer (const ThreadTimer &)=delete (defined in mrs_lib::ThreadTimer )mrs_lib::ThreadTimer
+ ThreadTimer (ThreadTimer &&)=delete (defined in mrs_lib::ThreadTimer )mrs_lib::ThreadTimer
+ ~MRSTimer ()=default (defined in mrs_lib::MRSTimer )mrs_lib::MRSTimer virtual
+ ~ThreadTimer () overridemrs_lib::ThreadTimer inline virtual
+
+
+
+
+
+
diff --git a/classmrs__lib_1_1ThreadTimer.html b/classmrs__lib_1_1ThreadTimer.html
new file mode 100644
index 00000000..9b421924
--- /dev/null
+++ b/classmrs__lib_1_1ThreadTimer.html
@@ -0,0 +1,512 @@
+
+
+
+
+
+
+
+mrs_lib: mrs_lib::ThreadTimer Class Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Custom thread-based Timers with the same interface as mrs_lib::ROSTimer .
+ More...
+
+
#include <timer.h >
+
+
+
+
+
+
+
+
+
+
+template<class ObjectType >
+ ThreadTimer (const ros::NodeHandle &nh, const ros::Rate &rate, void(ObjectType::*const callback)(const ros::TimerEvent &), ObjectType *const obj, const bool oneshot=false, const bool autostart=true)
+ Constructs the object. More...
+
+template<class ObjectType >
+ ThreadTimer (const ros::NodeHandle &nh, const ros::Duration &duration, void(ObjectType::*const callback)(const ros::TimerEvent &), ObjectType *const obj, bool oneshot=false, const bool autostart=true)
+ Constructs the object. More...
+
+virtual void stop () override
+ stop the timer More...
+
+virtual void start () override
+ start the timer More...
+
+virtual void setPeriod (const ros::Duration &duration, const bool reset=true) override
+ set the timer period/duration More...
+
+virtual bool running () override
+ returns true if callbacks should be called More...
+
+virtual ~ThreadTimer () override
+ stops the timer and then destroys the object More...
+
+
+ ThreadTimer (const ThreadTimer &)=delete
+
+
+ ThreadTimer (ThreadTimer &&)=delete
+
+
+ThreadTimer & operator= (const ThreadTimer &)=delete
+
+
+ThreadTimer & operator= (ThreadTimer &&)=delete
+
+
+
+ MRSTimer (const MRSTimer &)=default
+
+
+ MRSTimer (MRSTimer &&)=default
+
+
+MRSTimer & operator= (const MRSTimer &)=default
+
+
+MRSTimer & operator= (MRSTimer &&)=default
+
+
+
+
+
+using callback_t = std::function< void(const ros::TimerEvent &)>
+
+
+
+
Custom thread-based Timers with the same interface as mrs_lib::ROSTimer .
+
+
+
◆ ThreadTimer() [1/2]
+
+
+
+
+template<class ObjectType >
+
+
+ mrs_lib::ThreadTimer::ThreadTimer
+ (
+ const ros::NodeHandle &
+ nh ,
+
+
+
+
+ const ros::Rate &
+ rate ,
+
+
+
+
+ void(ObjectType::*)(const ros::TimerEvent &)
+ callback ,
+
+
+
+
+ ObjectType *const
+ obj ,
+
+
+
+
+ const bool
+ oneshot = false
,
+
+
+
+
+ const bool
+ autostart = true
+
+
+
+ )
+
+
+
+
+
+
Constructs the object.
+
Template Parameters
+
+
+
+
Parameters
+
+ nh ignored (used just for consistency with ROSTimer )
+ rate rate at which the callback should be called.
+ ObjectType::*const callback callback method to be called.
+ obj object for the method.
+ oneshot whether the callback should only be called once after starting.
+ autostart whether the timer should immediately start after construction.
+
+
+
+
+
+
+
+
◆ ThreadTimer() [2/2]
+
+
+
+
+template<class ObjectType >
+
+
+ mrs_lib::ThreadTimer::ThreadTimer
+ (
+ const ros::NodeHandle &
+ nh ,
+
+
+
+
+ const ros::Duration &
+ duration ,
+
+
+
+
+ void(ObjectType::*)(const ros::TimerEvent &)
+ callback ,
+
+
+
+
+ ObjectType *const
+ obj ,
+
+
+
+
+ bool
+ oneshot = false
,
+
+
+
+
+ const bool
+ autostart = true
+
+
+
+ )
+
+
+
+
+
+
Constructs the object.
+
Template Parameters
+
+
+
+
Parameters
+
+ nh ignored (used just for consistency with ROSTimer )
+ duration desired callback period.
+ ObjectType::*const callback callback method to be called.
+ obj object for the method.
+ oneshot whether the callback should only be called once after starting.
+ autostart whether the timer should immediately start after construction.
+
+
+
+
+
+
+
+
◆ ~ThreadTimer()
+
+
+
+
+
+
+
+
+ virtual mrs_lib::ThreadTimer::~ThreadTimer
+ (
+ )
+
+
+
+
+
+inline override virtual
+
+
+
+
+
stops the timer and then destroys the object
+
No more callbacks will be called when the destructor is started.
+
+
+
+
+
+
◆ running()
+
+
+
+
+
+
+
+
+ bool mrs_lib::ThreadTimer::running
+ (
+ )
+
+
+
+
+
+override virtual
+
+
+
+
+
returns true if callbacks should be called
+
Returns true if timer is running
+
+
Implements mrs_lib::MRSTimer .
+
+
+
+
+
◆ setPeriod()
+
+
+
+
+
+
+
+
+ void mrs_lib::ThreadTimer::setPeriod
+ (
+ const ros::Duration &
+ duration ,
+
+
+
+
+ const bool
+ reset = true
+
+
+
+ )
+
+
+
+
+
+override virtual
+
+
+
+
+
set the timer period/duration
+
The new period will be applied after the next callback.
+
Parameters
+
+ duration the new desired callback period.
+ reset ignored in this implementation.
+
+
+
+
+
Implements mrs_lib::MRSTimer .
+
+
+
+
+
◆ start()
+
+
+
+
+
+
+
+
+ void mrs_lib::ThreadTimer::start
+ (
+ )
+
+
+
+
+
+override virtual
+
+
+
+
+
start the timer
+
The first callback will be called in now + period.
+
Note If the timer is already started, nothing will change.
+
+
Implements mrs_lib::MRSTimer .
+
+
+
+
+
◆ stop()
+
+
+
+
+
+
+
+
+ void mrs_lib::ThreadTimer::stop
+ (
+ )
+
+
+
+
+
+override virtual
+
+
+
+
+
stop the timer
+
No more callbacks will be called after this method returns.
+
+
Implements mrs_lib::MRSTimer .
+
+
+
+
The documentation for this class was generated from the following files:
+include/mrs_lib/timer.h
+src/timer/timer.cpp
+
+
+
+
+
+
+
diff --git a/classmrs__lib_1_1ThreadTimer.js b/classmrs__lib_1_1ThreadTimer.js
new file mode 100644
index 00000000..e211b9d1
--- /dev/null
+++ b/classmrs__lib_1_1ThreadTimer.js
@@ -0,0 +1,15 @@
+var classmrs__lib_1_1ThreadTimer =
+[
+ [ "ThreadTimer", "classmrs__lib_1_1ThreadTimer.html#adeeefbee9903e230a18edea3868cc412", null ],
+ [ "ThreadTimer", "classmrs__lib_1_1ThreadTimer.html#ac2e365201eccac6aae67400e4da4438f", null ],
+ [ "ThreadTimer", "classmrs__lib_1_1ThreadTimer.html#a2ccbea65e537f1f73da1fa75f37833fc", null ],
+ [ "~ThreadTimer", "classmrs__lib_1_1ThreadTimer.html#a175a2bcce428cfca8bbf3f4ef836f4ed", null ],
+ [ "ThreadTimer", "classmrs__lib_1_1ThreadTimer.html#aefe278c61da9ed8f45f673dc609c06ab", null ],
+ [ "ThreadTimer", "classmrs__lib_1_1ThreadTimer.html#a0205a00458be53b0f4d6b852d928e80a", null ],
+ [ "operator=", "classmrs__lib_1_1ThreadTimer.html#a47415fa3c6e6434d1070c41c96f9fc14", null ],
+ [ "operator=", "classmrs__lib_1_1ThreadTimer.html#a1651fa6c2eea20f0214dd5eab311db95", null ],
+ [ "running", "classmrs__lib_1_1ThreadTimer.html#ab3ecdba649fd5c849acd94ce9ad0c824", null ],
+ [ "setPeriod", "classmrs__lib_1_1ThreadTimer.html#a038246468811544860d5d2d1c4091e2d", null ],
+ [ "start", "classmrs__lib_1_1ThreadTimer.html#a0425600320550d52408d1499ee3d7891", null ],
+ [ "stop", "classmrs__lib_1_1ThreadTimer.html#a26d89795a716aa2ae6d7f890626c0aaa", null ]
+];
\ No newline at end of file
diff --git a/classmrs__lib_1_1ThreadTimer__coll__graph.map b/classmrs__lib_1_1ThreadTimer__coll__graph.map
new file mode 100644
index 00000000..9da02825
--- /dev/null
+++ b/classmrs__lib_1_1ThreadTimer__coll__graph.map
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/classmrs__lib_1_1ThreadTimer__coll__graph.md5 b/classmrs__lib_1_1ThreadTimer__coll__graph.md5
new file mode 100644
index 00000000..cbc45e81
--- /dev/null
+++ b/classmrs__lib_1_1ThreadTimer__coll__graph.md5
@@ -0,0 +1 @@
+7cc0dd2cc3b839666ec74c9bd53436fc
\ No newline at end of file
diff --git a/classmrs__lib_1_1ThreadTimer__coll__graph.png b/classmrs__lib_1_1ThreadTimer__coll__graph.png
new file mode 100644
index 00000000..9ce79ddc
Binary files /dev/null and b/classmrs__lib_1_1ThreadTimer__coll__graph.png differ
diff --git a/classmrs__lib_1_1ThreadTimer__inherit__graph.map b/classmrs__lib_1_1ThreadTimer__inherit__graph.map
new file mode 100644
index 00000000..9da02825
--- /dev/null
+++ b/classmrs__lib_1_1ThreadTimer__inherit__graph.map
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/classmrs__lib_1_1ThreadTimer__inherit__graph.md5 b/classmrs__lib_1_1ThreadTimer__inherit__graph.md5
new file mode 100644
index 00000000..cbc45e81
--- /dev/null
+++ b/classmrs__lib_1_1ThreadTimer__inherit__graph.md5
@@ -0,0 +1 @@
+7cc0dd2cc3b839666ec74c9bd53436fc
\ No newline at end of file
diff --git a/classmrs__lib_1_1ThreadTimer__inherit__graph.png b/classmrs__lib_1_1ThreadTimer__inherit__graph.png
new file mode 100644
index 00000000..9ce79ddc
Binary files /dev/null and b/classmrs__lib_1_1ThreadTimer__inherit__graph.png differ
diff --git a/classmrs__lib_1_1TimeoutManager-members.html b/classmrs__lib_1_1TimeoutManager-members.html
new file mode 100644
index 00000000..10091b48
--- /dev/null
+++ b/classmrs__lib_1_1TimeoutManager-members.html
@@ -0,0 +1,116 @@
+
+
+
+
+
+
+
+mrs_lib: Member List
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
This is the complete list of members for mrs_lib::TimeoutManager , including all inherited members.
+
+ callback_t typedef (defined in mrs_lib::TimeoutManager )mrs_lib::TimeoutManager
+ change (const timeout_id_t id, const ros::Duration &timeout, const callback_t &callback, const ros::Time &last_reset=ros::Time::now(), const bool oneshot=false, const bool autostart=true) (defined in mrs_lib::TimeoutManager )mrs_lib::TimeoutManager
+ lastReset (const timeout_id_t id) (defined in mrs_lib::TimeoutManager )mrs_lib::TimeoutManager
+ pause (const timeout_id_t id) (defined in mrs_lib::TimeoutManager )mrs_lib::TimeoutManager
+ pauseAll () (defined in mrs_lib::TimeoutManager )mrs_lib::TimeoutManager
+ registerNew (const ros::Duration &timeout, const callback_t &callback, const ros::Time &last_reset=ros::Time::now(), const bool oneshot=false, const bool autostart=true) (defined in mrs_lib::TimeoutManager )mrs_lib::TimeoutManager
+ reset (const timeout_id_t id, const ros::Time &time=ros::Time::now()) (defined in mrs_lib::TimeoutManager )mrs_lib::TimeoutManager
+ start (const timeout_id_t id, const ros::Time &time=ros::Time::now()) (defined in mrs_lib::TimeoutManager )mrs_lib::TimeoutManager
+ startAll (const ros::Time &time=ros::Time::now()) (defined in mrs_lib::TimeoutManager )mrs_lib::TimeoutManager
+ started (const timeout_id_t id) (defined in mrs_lib::TimeoutManager )mrs_lib::TimeoutManager
+ timeout_id_t typedef (defined in mrs_lib::TimeoutManager )mrs_lib::TimeoutManager
+ TimeoutManager (const ros::NodeHandle &nh, const ros::Rate &update_rate)mrs_lib::TimeoutManager
+
+
+
+
+
+
diff --git a/classmrs__lib_1_1TimeoutManager.html b/classmrs__lib_1_1TimeoutManager.html
new file mode 100644
index 00000000..4f095fbd
--- /dev/null
+++ b/classmrs__lib_1_1TimeoutManager.html
@@ -0,0 +1,192 @@
+
+
+
+
+
+
+
+mrs_lib: mrs_lib::TimeoutManager Class Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
TODO.
+ More...
+
+
#include <timeout_manager.h >
+
+
+
+using timeout_id_t = size_t
+
+
+using callback_t = std::function< void(const ros::Time &)>
+
+
+
+ TimeoutManager (const ros::NodeHandle &nh, const ros::Rate &update_rate)
+ TODO. More...
+
+
+timeout_id_t registerNew (const ros::Duration &timeout, const callback_t &callback, const ros::Time &last_reset=ros::Time::now(), const bool oneshot=false, const bool autostart=true)
+
+
+void reset (const timeout_id_t id, const ros::Time &time=ros::Time::now())
+
+
+void pause (const timeout_id_t id)
+
+
+void start (const timeout_id_t id, const ros::Time &time=ros::Time::now())
+
+
+void pauseAll ()
+
+
+void startAll (const ros::Time &time=ros::Time::now())
+
+
+void change (const timeout_id_t id, const ros::Duration &timeout, const callback_t &callback, const ros::Time &last_reset=ros::Time::now(), const bool oneshot=false, const bool autostart=true)
+
+
+ros::Time lastReset (const timeout_id_t id)
+
+
+bool started (const timeout_id_t id)
+
+
+
+
+
+
◆ TimeoutManager()
+
+
+
+
+
+ mrs_lib::TimeoutManager::TimeoutManager
+ (
+ const ros::NodeHandle &
+ nh ,
+
+
+
+
+ const ros::Rate &
+ update_rate
+
+
+
+ )
+
+
+
+
+
+
The documentation for this class was generated from the following files:
+
+
+
+
+
+
diff --git a/classmrs__lib_1_1TimeoutManager.js b/classmrs__lib_1_1TimeoutManager.js
new file mode 100644
index 00000000..14d1f47f
--- /dev/null
+++ b/classmrs__lib_1_1TimeoutManager.js
@@ -0,0 +1,15 @@
+var classmrs__lib_1_1TimeoutManager =
+[
+ [ "callback_t", "classmrs__lib_1_1TimeoutManager.html#aaa362ddd47a87442c46f763fc74045d7", null ],
+ [ "timeout_id_t", "classmrs__lib_1_1TimeoutManager.html#a5607caa89e3da009d39c6343f5d2b2fb", null ],
+ [ "TimeoutManager", "classmrs__lib_1_1TimeoutManager.html#a7627ccd5204a4f13c832db2cb558128f", null ],
+ [ "change", "classmrs__lib_1_1TimeoutManager.html#a2acb13d7a30b3e62ccbbf41a3a9f4755", null ],
+ [ "lastReset", "classmrs__lib_1_1TimeoutManager.html#ae70c094760d7b3b707872dbd78318563", null ],
+ [ "pause", "classmrs__lib_1_1TimeoutManager.html#ad9eac0dcd59c253eb559f1a8da6495eb", null ],
+ [ "pauseAll", "classmrs__lib_1_1TimeoutManager.html#aeec77f82c5c403b914ba29640ca6c1a2", null ],
+ [ "registerNew", "classmrs__lib_1_1TimeoutManager.html#a7e7f174308a44ab6ed647bcc8db8bf42", null ],
+ [ "reset", "classmrs__lib_1_1TimeoutManager.html#a0fdaec453e6db200aa47f38999c5aa44", null ],
+ [ "start", "classmrs__lib_1_1TimeoutManager.html#aded1164d59ca86f39ebaf147c91187c8", null ],
+ [ "startAll", "classmrs__lib_1_1TimeoutManager.html#a2dfe6dc322c5e159f21b8bb131e54766", null ],
+ [ "started", "classmrs__lib_1_1TimeoutManager.html#ad4eefb7364d8f62ac18186a3d9001f28", null ]
+];
\ No newline at end of file
diff --git a/classmrs__lib_1_1TransformBroadcaster-members.html b/classmrs__lib_1_1TransformBroadcaster-members.html
new file mode 100644
index 00000000..cbb3b0c0
--- /dev/null
+++ b/classmrs__lib_1_1TransformBroadcaster-members.html
@@ -0,0 +1,107 @@
+
+
+
+
+
+
+
+mrs_lib: Member List
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
This is the complete list of members for mrs_lib::TransformBroadcaster , including all inherited members.
+
+
+
+
+
+
diff --git a/classmrs__lib_1_1TransformBroadcaster.html b/classmrs__lib_1_1TransformBroadcaster.html
new file mode 100644
index 00000000..9e56da12
--- /dev/null
+++ b/classmrs__lib_1_1TransformBroadcaster.html
@@ -0,0 +1,183 @@
+
+
+
+
+
+
+
+mrs_lib: mrs_lib::TransformBroadcaster Class Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Wrapper for the tf2_ros::TransformBroadcaster. With each sendTransform() command, the message is checked against the last message with the same frame IDs. If the transform was already published in this ros::Time step, then the transform is skipped. Prevents endless stream of warnings from spamming the console output.
+ More...
+
+
#include <transform_broadcaster.h >
+
+
+
+ TransformBroadcaster ()
+ constructor, internally starts the TransformBroadcaster
+
+void sendTransform (const geometry_msgs::TransformStamped &transform)
+ check if the transform is newer than the last published one and publish it. Transform is skipped if a duplicit timestamp is found More...
+
+void sendTransform (const std::vector< geometry_msgs::TransformStamped > &transforms)
+ check if the transforms are newer than the last published ones and publish them. A transform is skipped if a duplicit timestamp is found More...
+
+
+
+
Wrapper for the tf2_ros::TransformBroadcaster. With each sendTransform() command, the message is checked against the last message with the same frame IDs. If the transform was already published in this ros::Time step, then the transform is skipped. Prevents endless stream of warnings from spamming the console output.
+
+
+
◆ sendTransform() [1/2]
+
+
+
+
+
+ void mrs_lib::TransformBroadcaster::sendTransform
+ (
+ const geometry_msgs::TransformStamped &
+ transform )
+
+
+
+
+
+
check if the transform is newer than the last published one and publish it. Transform is skipped if a duplicit timestamp is found
+
Parameters
+
+ transform to be published
+
+
+
+
+
+
+
+
◆ sendTransform() [2/2]
+
+
+
+
+
+ void mrs_lib::TransformBroadcaster::sendTransform
+ (
+ const std::vector< geometry_msgs::TransformStamped > &
+ transforms )
+
+
+
+
+
+
check if the transforms are newer than the last published ones and publish them. A transform is skipped if a duplicit timestamp is found
+
Parameters
+
+ transforms vector of transforms to be published
+
+
+
+
+
+
+
The documentation for this class was generated from the following files:
+
+
+
+
+
+
diff --git a/classmrs__lib_1_1TransformBroadcaster.js b/classmrs__lib_1_1TransformBroadcaster.js
new file mode 100644
index 00000000..a724f72d
--- /dev/null
+++ b/classmrs__lib_1_1TransformBroadcaster.js
@@ -0,0 +1,6 @@
+var classmrs__lib_1_1TransformBroadcaster =
+[
+ [ "TransformBroadcaster", "classmrs__lib_1_1TransformBroadcaster.html#ab8760c98f2d7111cc029f45b11e24bb9", null ],
+ [ "sendTransform", "classmrs__lib_1_1TransformBroadcaster.html#a93913661cb31baeedb7d4e1f72142b93", null ],
+ [ "sendTransform", "classmrs__lib_1_1TransformBroadcaster.html#a2adf5bd449b5561323fb7d8633e04bf5", null ]
+];
\ No newline at end of file
diff --git a/classmrs__lib_1_1Transformer-members.html b/classmrs__lib_1_1Transformer-members.html
new file mode 100644
index 00000000..98777281
--- /dev/null
+++ b/classmrs__lib_1_1Transformer-members.html
@@ -0,0 +1,135 @@
+
+
+
+
+
+
+
+mrs_lib: Member List
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
This is the complete list of members for mrs_lib::Transformer , including all inherited members.
+
+ beQuiet (const bool quiet=true)mrs_lib::Transformer inline
+ frame_from (const geometry_msgs::TransformStamped &msg)mrs_lib::Transformer inline static
+ frame_from (geometry_msgs::TransformStamped &msg)mrs_lib::Transformer inline static
+ frame_to (const geometry_msgs::TransformStamped &msg)mrs_lib::Transformer inline static
+ frame_to (geometry_msgs::TransformStamped &msg)mrs_lib::Transformer inline static
+ getTransform (const std::string &from_frame, const std::string &to_frame, const ros::Time &time_stamp=ros::Time(0))mrs_lib::Transformer
+ getTransform (const std::string &from_frame, const ros::Time &from_stamp, const std::string &to_frame, const ros::Time &to_stamp, const std::string &fixed_frame)mrs_lib::Transformer
+ inverse (const geometry_msgs::TransformStamped &msg)mrs_lib::Transformer inline static
+ operator= (Transformer &&other)mrs_lib::Transformer
+ resolveFrame (const std::string &frame_id)mrs_lib::Transformer inline
+ retryLookupNewest (const bool retry=true)mrs_lib::Transformer inline
+ setDefaultFrame (const std::string &frame_id)mrs_lib::Transformer inline
+ setDefaultPrefix (const std::string &prefix)mrs_lib::Transformer inline
+ setLatLon (const double lat, const double lon)mrs_lib::Transformer
+ setLookupTimeout (const ros::Duration timeout=ros::Duration(0))mrs_lib::Transformer inline
+ transform (const T &what, const geometry_msgs::TransformStamped &tf)mrs_lib::Transformer
+ transform (const boost::shared_ptr< const T > &what, const geometry_msgs::TransformStamped &tf)mrs_lib::Transformer inline
+ transform (const boost::shared_ptr< T > &what, const geometry_msgs::TransformStamped &tf)mrs_lib::Transformer inline
+ transformAsPoint (const Eigen::Vector3d &what, const geometry_msgs::TransformStamped &tf)mrs_lib::Transformer
+ transformAsPoint (const std::string &from_frame, const Eigen::Vector3d &what, const std::string &to_frame, const ros::Time &time_stamp=ros::Time(0))mrs_lib::Transformer
+ transformAsVector (const Eigen::Vector3d &what, const geometry_msgs::TransformStamped &tf)mrs_lib::Transformer
+ transformAsVector (const std::string &from_frame, const Eigen::Vector3d &what, const std::string &to_frame, const ros::Time &time_stamp=ros::Time(0))mrs_lib::Transformer
+ Transformer ()mrs_lib::Transformer
+ Transformer (const std::string &node_name, const ros::Duration &cache_time=ros::Duration(tf2_ros::Buffer::DEFAULT_CACHE_TIME))mrs_lib::Transformer
+ Transformer (const ros::NodeHandle &nh, const std::string &node_name=std::string(), const ros::Duration &cache_time=ros::Duration(tf2_ros::Buffer::DEFAULT_CACHE_TIME))mrs_lib::Transformer
+ transformSingle (const T &what, const std::string &to_frame)mrs_lib::Transformer
+ transformSingle (const boost::shared_ptr< T > &what, const std::string &to_frame)mrs_lib::Transformer inline
+ transformSingle (const boost::shared_ptr< const T > &what, const std::string &to_frame)mrs_lib::Transformer inline
+ transformSingle (const std::string &from_frame, const T &what, const std::string &to_frame, const ros::Time &time_stamp=ros::Time(0))mrs_lib::Transformer
+ transformSingle (const std::string &from_frame, const boost::shared_ptr< T > &what, const std::string &to_frame, const ros::Time &time_stamp=ros::Time(0))mrs_lib::Transformer inline
+ transformSingle (const std::string &from_frame, const boost::shared_ptr< const T > &what, const std::string &to_frame, const ros::Time &time_stamp=ros::Time(0))mrs_lib::Transformer inline
+
+
+
+
+
+
diff --git a/classmrs__lib_1_1Transformer.html b/classmrs__lib_1_1Transformer.html
new file mode 100644
index 00000000..78022bee
--- /dev/null
+++ b/classmrs__lib_1_1Transformer.html
@@ -0,0 +1,1541 @@
+
+
+
+
+
+
+
+mrs_lib: mrs_lib::Transformer Class Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
A convenience wrapper class for ROS's native TF2 API to simplify transforming of various messages.
+ More...
+
+
#include <transformer.h >
+
+
+ Transformer ()
+ A convenience constructor that doesn't initialize anything. More...
+
+ Transformer (const std::string &node_name, const ros::Duration &cache_time=ros::Duration(tf2_ros::Buffer::DEFAULT_CACHE_TIME))
+ The main constructor that actually initializes stuff. More...
+
+ Transformer (const ros::NodeHandle &nh, const std::string &node_name=std::string(), const ros::Duration &cache_time=ros::Duration(tf2_ros::Buffer::DEFAULT_CACHE_TIME))
+ The main constructor that actually initializes stuff. More...
+
+Transformer & operator= (Transformer &&other)
+ A convenience move assignment operator. More...
+
+void setDefaultFrame (const std::string &frame_id)
+ Sets the default frame ID to be used instead of any empty frame ID. More...
+
+void setDefaultPrefix (const std::string &prefix)
+ Sets the default frame ID prefix to be used if no prefix is present in the frame. More...
+
+void setLatLon (const double lat, const double lon)
+ Sets the curret lattitude and longitude for UTM zone calculation. More...
+
+void setLookupTimeout (const ros::Duration timeout=ros::Duration(0))
+ Set a timeout for transform lookup. More...
+
+void retryLookupNewest (const bool retry=true)
+ Enable/disable retry of a failed transform lookup with ros::Time(0)
. More...
+
+void beQuiet (const bool quiet=true)
+ Enable/disable some prints that may be too noisy. More...
+
+std::string resolveFrame (const std::string &frame_id)
+ Deduce the full frame ID from a shortened or empty string using current default prefix and default frame rules. More...
+
+template<class T >
+std::optional< T > transformSingle (const T &what, const std::string &to_frame)
+ Transforms a single variable to a new frame and returns it or std::nullopt
if transformation fails. More...
+
+template<class T >
+std::optional< boost::shared_ptr< T > > transformSingle (const boost::shared_ptr< T > &what, const std::string &to_frame)
+ Transforms a single variable to a new frame. More...
+
+template<class T >
+std::optional< boost::shared_ptr< T > > transformSingle (const boost::shared_ptr< const T > &what, const std::string &to_frame)
+ Transforms a single variable to a new frame. More...
+
+template<class T >
+std::optional< T > transformSingle (const std::string &from_frame, const T &what, const std::string &to_frame, const ros::Time &time_stamp=ros::Time(0))
+ Transforms a single variable to a new frame and returns it or std::nullopt
if transformation fails. More...
+
+template<class T >
+std::optional< boost::shared_ptr< T > > transformSingle (const std::string &from_frame, const boost::shared_ptr< T > &what, const std::string &to_frame, const ros::Time &time_stamp=ros::Time(0))
+ Transforms a single variable to a new frame and returns it or std::nullopt
if transformation fails. More...
+
+template<class T >
+std::optional< boost::shared_ptr< T > > transformSingle (const std::string &from_frame, const boost::shared_ptr< const T > &what, const std::string &to_frame, const ros::Time &time_stamp=ros::Time(0))
+ Transforms a single variable to a new frame and returns it or std::nullopt
if transformation fails. More...
+
+template<class T >
+std::optional< T > transform (const T &what, const geometry_msgs::TransformStamped &tf)
+ Transform a variable to new frame using a particular transformation. More...
+
+template<class T >
+std::optional< boost::shared_ptr< T > > transform (const boost::shared_ptr< const T > &what, const geometry_msgs::TransformStamped &tf)
+ Transform a variable to new frame using a particular transformation. More...
+
+template<class T >
+std::optional< boost::shared_ptr< T > > transform (const boost::shared_ptr< T > &what, const geometry_msgs::TransformStamped &tf)
+ Transform a variable to new frame using a particular transformation. More...
+
+std::optional< Eigen::Vector3d > transformAsVector (const Eigen::Vector3d &what, const geometry_msgs::TransformStamped &tf)
+ Transform an Eigen::Vector3d (interpreting it as a vector). More...
+
+std::optional< Eigen::Vector3d > transformAsVector (const std::string &from_frame, const Eigen::Vector3d &what, const std::string &to_frame, const ros::Time &time_stamp=ros::Time(0))
+ Transform an Eigen::Vector3d (interpreting it as a vector). More...
+
+std::optional< Eigen::Vector3d > transformAsPoint (const Eigen::Vector3d &what, const geometry_msgs::TransformStamped &tf)
+ Transform an Eigen::Vector3d (interpreting it as a point). More...
+
+std::optional< Eigen::Vector3d > transformAsPoint (const std::string &from_frame, const Eigen::Vector3d &what, const std::string &to_frame, const ros::Time &time_stamp=ros::Time(0))
+ Transform an Eigen::Vector3d (interpreting it as a point). More...
+
+std::optional< geometry_msgs::TransformStamped > getTransform (const std::string &from_frame, const std::string &to_frame, const ros::Time &time_stamp=ros::Time(0))
+ Obtains a transform between two frames in a given time. More...
+
+std::optional< geometry_msgs::TransformStamped > getTransform (const std::string &from_frame, const ros::Time &from_stamp, const std::string &to_frame, const ros::Time &to_stamp, const std::string &fixed_frame)
+ Obtains a transform between two frames in a given time. More...
+
+
+
+static constexpr const std::string & frame_from (const geometry_msgs::TransformStamped &msg)
+ A convenience function that returns the frame from which the message transforms. More...
+
+static constexpr std::string & frame_from (geometry_msgs::TransformStamped &msg)
+ A convenience function that returns the frame from which the message transforms. More...
+
+static constexpr const std::string & frame_to (const geometry_msgs::TransformStamped &msg)
+ A convenience function that returns the frame to which the message transforms. More...
+
+static constexpr std::string & frame_to (geometry_msgs::TransformStamped &msg)
+ A convenience function that returns the frame to which the message transforms. More...
+
+static geometry_msgs::TransformStamped inverse (const geometry_msgs::TransformStamped &msg)
+ A convenience function implements returns the inverse of the transform message as a one-liner. More...
+
+
+
+
A convenience wrapper class for ROS's native TF2 API to simplify transforming of various messages.
+
Implements optional automatic frame prefix deduction, seamless transformation lattitude/longitude coordinates and UTM coordinates, simple transformation of MRS messages etc.
+
+
+
◆ Transformer() [1/3]
+
+
+
+
+
+ mrs_lib::Transformer::Transformer
+ (
+ )
+
+
+
+
+
+
A convenience constructor that doesn't initialize anything.
+
This constructor is just to enable usign the Transformer as a member variable of nodelets etc. To actually initialize the class, use the alternative constructor.
+
Note This constructor doesn't initialize the TF2 transform listener and all calls to the transformation-related methods of an object constructed using this method will fail.
+
+
+
+
+
◆ Transformer() [2/3]
+
+
+
+
+
+ mrs_lib::Transformer::Transformer
+ (
+ const std::string &
+ node_name ,
+
+
+
+
+ const ros::Duration &
+ cache_time = ros::Duration(tf2_ros::Buffer::DEFAULT_CACHE_TIME)
+
+
+
+ )
+
+
+
+
+
+
The main constructor that actually initializes stuff.
+
This constructor initializes the class and the TF2 transform listener.
+
Parameters
+
+ node_name the name of the node running the transformer, is used in ROS prints. If you don't care, just set it to an empty string.
+ cache_time duration of the transformation buffer's cache into the past that will be kept.
+
+
+
+
+
+
+
+
◆ Transformer() [3/3]
+
+
+
+
+
+ mrs_lib::Transformer::Transformer
+ (
+ const ros::NodeHandle &
+ nh ,
+
+
+
+
+ const std::string &
+ node_name = std::string()
,
+
+
+
+
+ const ros::Duration &
+ cache_time = ros::Duration(tf2_ros::Buffer::DEFAULT_CACHE_TIME)
+
+
+
+ )
+
+
+
+
+
+
The main constructor that actually initializes stuff.
+
This constructor initializes the class and the TF2 transform listener.
+
Parameters
+
+ nh the node handle to be used for subscribing to the transformations.
+ node_name the name of the node running the transformer, is used in ROS prints. If you don't care, just set it to an empty string.
+ cache_time duration of the transformation buffer's cache into the past that will be kept.
+
+
+
+
+
+
+
+
+
◆ beQuiet()
+
+
+
+
+
+
+
+
+ void mrs_lib::Transformer::beQuiet
+ (
+ const bool
+ quiet = true
)
+
+
+
+
+
+inline
+
+
+
+
+
Enable/disable some prints that may be too noisy.
+
Parameters
+
+ quiet enables or disables quiet mode.
+
+
+
+
Note Disabled by default.
+
+
+
+
+
◆ frame_from() [1/2]
+
+
+
+
+
+
+
+
+ static constexpr const std::string& mrs_lib::Transformer::frame_from
+ (
+ const geometry_msgs::TransformStamped &
+ msg )
+
+
+
+
+
+inline static constexpr
+
+
+
+
+
A convenience function that returns the frame from which the message transforms.
+
Parameters
+
+ msg the message representing the transformation.
+
+
+
+
Returns the frame from which the transformation in \msg transforms.
+
+
+
+
+
◆ frame_from() [2/2]
+
+
+
+
+
+
+
+
+ static constexpr std::string& mrs_lib::Transformer::frame_from
+ (
+ geometry_msgs::TransformStamped &
+ msg )
+
+
+
+
+
+inline static constexpr
+
+
+
+
+
A convenience function that returns the frame from which the message transforms.
+
This overload returns a reference to the string in the message representing the frame id so that it can be modified.
+
Parameters
+
+ msg the message representing the transformation.
+
+
+
+
Returns a reference to the field in the message containing the string with the frame id from which the transformation in \msg transforms.
+
+
+
+
+
◆ frame_to() [1/2]
+
+
+
+
+
+
+
+
+ static constexpr const std::string& mrs_lib::Transformer::frame_to
+ (
+ const geometry_msgs::TransformStamped &
+ msg )
+
+
+
+
+
+inline static constexpr
+
+
+
+
+
A convenience function that returns the frame to which the message transforms.
+
Parameters
+
+ msg the message representing the transformation.
+
+
+
+
Returns the frame to which the transformation in \msg transforms.
+
+
+
+
+
◆ frame_to() [2/2]
+
+
+
+
+
+
+
+
+ static constexpr std::string& mrs_lib::Transformer::frame_to
+ (
+ geometry_msgs::TransformStamped &
+ msg )
+
+
+
+
+
+inline static constexpr
+
+
+
+
+
A convenience function that returns the frame to which the message transforms.
+
This overload returns a reference to the string in the message representing the frame id so that it can be modified.
+
Parameters
+
+ msg the message representing the transformation.
+
+
+
+
Returns a reference to the field in the message containing the string with the frame id to which the transformation in \msg transforms.
+
+
+
+
+
◆ getTransform() [1/2]
+
+
+
+
+
+ std::optional< geometry_msgs::TransformStamped > mrs_lib::Transformer::getTransform
+ (
+ const std::string &
+ from_frame ,
+
+
+
+
+ const ros::Time &
+ from_stamp ,
+
+
+
+
+ const std::string &
+ to_frame ,
+
+
+
+
+ const ros::Time &
+ to_stamp ,
+
+
+
+
+ const std::string &
+ fixed_frame
+
+
+
+ )
+
+
+
+
+
+
Obtains a transform between two frames in a given time.
+
This overload enables the user to select a different time of the source frame and the target frame.
+
Parameters
+
+ from_frame The original frame of the transformation.
+ from_stamp The time at which the original frame should be evaluated. (0 will get the latest)
+ to_frame The target frame of the transformation.
+ to_stamp The time to which the data should be transformed. (0 will get the latest)
+ fixed_frame The frame that may be assumed constant in time (the "world" frame).
+
+
+
+
Returns std::nullopt
if failed, optional containing the requested transformation otherwise.
+
Note An example of when this API may be useful is explained here: http://wiki.ros.org/tf2/Tutorials/Time%20travel%20with%20tf2%20%28C%2B%2B%29
+
+
+
+
+
◆ getTransform() [2/2]
+
+
+
+
+
+ std::optional< geometry_msgs::TransformStamped > mrs_lib::Transformer::getTransform
+ (
+ const std::string &
+ from_frame ,
+
+
+
+
+ const std::string &
+ to_frame ,
+
+
+
+
+ const ros::Time &
+ time_stamp = ros::Time(0)
+
+
+
+ )
+
+
+
+
+
+
Obtains a transform between two frames in a given time.
+
Parameters
+
+ from_frame The original frame of the transformation.
+ to_frame The target frame of the transformation.
+ time_stamp The time stamp of the transformation. (0 will get the latest)
+
+
+
+
Returns std::nullopt
if failed, optional containing the requested transformation otherwise.
+
+
+
+
+
◆ inverse()
+
+
+
+
+
+
+
+
+ static geometry_msgs::TransformStamped mrs_lib::Transformer::inverse
+ (
+ const geometry_msgs::TransformStamped &
+ msg )
+
+
+
+
+
+inline static
+
+
+
+
+
A convenience function implements returns the inverse of the transform message as a one-liner.
+
Parameters
+
+ msg the message representing the transformation.
+
+
+
+
Returns a new message representing an inverse of the original transformation.
+
+
+
+
+
◆ operator=()
+
+
+
+
+
A convenience move assignment operator.
+
This operator moves all data from the object that is being assigned from, invalidating it.
+
Parameters
+
+ other the object to assign from. It will be invalid after this method returns.
+
+
+
+
Returns a reference to the object being assigned to.
+
+
+
+
+
◆ resolveFrame()
+
+
+
+
+
+
+
+
+ std::string mrs_lib::Transformer::resolveFrame
+ (
+ const std::string &
+ frame_id )
+
+
+
+
+
+inline
+
+
+
+
+
Deduce the full frame ID from a shortened or empty string using current default prefix and default frame rules.
+
Example assuming default prefix is "uav1" and default frame is "uav1/gps_origin": "" -> "uav1/gps_origin" "local_origin" -> "uav1/local_origin"
+
Parameters
+
+ frame_id The frame ID to be resolved.
+
+
+
+
Returns The resolved frame ID.
+
+
+
+
+
◆ retryLookupNewest()
+
+
+
+
+
+
+
+
+ void mrs_lib::Transformer::retryLookupNewest
+ (
+ const bool
+ retry = true
)
+
+
+
+
+
+inline
+
+
+
+
+
Enable/disable retry of a failed transform lookup with ros::Time(0)
.
+
If enabled, a failed transform lookup will be retried. The new try will ignore the requested timestamp and will attempt to fetch the latest transformation between the two frames.
+
Note Disabled by default.
+
Parameters
+
+ retry enables or disables retry.
+
+
+
+
+
+
+
+
◆ setDefaultFrame()
+
+
+
+
+
+
+
+
+ void mrs_lib::Transformer::setDefaultFrame
+ (
+ const std::string &
+ frame_id )
+
+
+
+
+
+inline
+
+
+
+
+
Sets the default frame ID to be used instead of any empty frame ID.
+
If you call e.g. the transform() method with a message that has an empty header.frame_id field, this value will be used instead.
+
Parameters
+
+ frame_id the default frame ID. Use an empty string to disable default frame ID deduction.
+
+
+
+
Note Disabled by default.
+
+
+
+
+
◆ setDefaultPrefix()
+
+
+
+
+
+
+
+
+ void mrs_lib::Transformer::setDefaultPrefix
+ (
+ const std::string &
+ prefix )
+
+
+
+
+
+inline
+
+
+
+
+
Sets the default frame ID prefix to be used if no prefix is present in the frame.
+
If you call any method with a frame ID that doesn't begin with this string, it will be automatically prefixed including a forward slash between the prefix and raw frame ID. The forward slash should therefore not be included in the prefix.
+
Example frame ID resolution assuming default prefix is "uav1": "local_origin" -> "uav1/local_origin"
+
Parameters
+
+ prefix the default frame ID prefix (without the forward slash at the end). Use an empty string to disable default frame ID prefixing.
+
+
+
+
Note Disabled by default. The prefix will be applied as a namespace (with a forward slash between the prefix and raw frame ID).
+
+
+
+
+
◆ setLatLon()
+
+
+
+
+
+ void mrs_lib::Transformer::setLatLon
+ (
+ const double
+ lat ,
+
+
+
+
+ const double
+ lon
+
+
+
+ )
+
+
+
+
+
+
Sets the curret lattitude and longitude for UTM zone calculation.
+
The Transformer uses this to deduce the current UTM zone used for transforming stuff to latlon_origin.
+
Parameters
+
+ lat the latitude in degrees.
+ lon the longitude in degrees.
+
+
+
+
Note Any transformation to latlon_origin will fail if this function is not called first!
+
+
+
+
+
◆ setLookupTimeout()
+
+
+
+
+
+
+
+
+ void mrs_lib::Transformer::setLookupTimeout
+ (
+ const ros::Duration
+ timeout = ros::Duration(0)
)
+
+
+
+
+
+inline
+
+
+
+
+
Set a timeout for transform lookup.
+
The transform lookup operation will block up to this duration if the transformation is not available immediately.
+
Note Disabled by default.
+
Parameters
+
+ timeout the lookup timeout. Set to zero to disable blocking.
+
+
+
+
+
+
+
+
◆ transform() [1/3]
+
+
+
+
+template<class T >
+
+
+
+
+
+ std::optional<boost::shared_ptr<T> > mrs_lib::Transformer::transform
+ (
+ const boost::shared_ptr< const T > &
+ what ,
+
+
+
+
+ const geometry_msgs::TransformStamped &
+ tf
+
+
+
+ )
+
+
+
+
+
+inline
+
+
+
+
+
Transform a variable to new frame using a particular transformation.
+
A convenience override for shared pointers to const.
+
Parameters
+
+ tf The transformation to be used.
+ what The object to be transformed.
+
+
+
+
Returns std::nullopt
if failed, optional containing the transformed object otherwise.
+
+
+
+
+
◆ transform() [2/3]
+
+
+
+
+template<class T >
+
+
+
+
+
+ std::optional<boost::shared_ptr<T> > mrs_lib::Transformer::transform
+ (
+ const boost::shared_ptr< T > &
+ what ,
+
+
+
+
+ const geometry_msgs::TransformStamped &
+ tf
+
+
+
+ )
+
+
+
+
+
+inline
+
+
+
+
+
Transform a variable to new frame using a particular transformation.
+
A convenience override for shared pointers.
+
Parameters
+
+ tf The transformation to be used.
+ what The object to be transformed.
+
+
+
+
Returns std::nullopt
if failed, optional containing the transformed object otherwise.
+
+
+
+
+
◆ transform() [3/3]
+
+
+
+
+template<class T >
+
+
+ std::optional< T > mrs_lib::Transformer::transform
+ (
+ const T &
+ what ,
+
+
+
+
+ const geometry_msgs::TransformStamped &
+ tf
+
+
+
+ )
+
+
+
+
+
+
Transform a variable to new frame using a particular transformation.
+
Parameters
+
+ tf The transformation to be used.
+ what The object to be transformed.
+
+
+
+
Returns std::nullopt
if failed, optional containing the transformed object otherwise.
+
+
+
+
+
◆ transformAsPoint() [1/2]
+
+
+
+
+
+ std::optional< Eigen::Vector3d > mrs_lib::Transformer::transformAsPoint
+ (
+ const Eigen::Vector3d &
+ what ,
+
+
+
+
+ const geometry_msgs::TransformStamped &
+ tf
+
+
+
+ )
+
+
+
+
+
+
Transform an Eigen::Vector3d (interpreting it as a point).
+
Both the rotation and translation will be applied to the variable.
+
Parameters
+
+ tf The transformation to be used.
+ what The object to be transformed.
+
+
+
+
Returns std::nullopt
if failed, optional containing the transformed object otherwise.
+
+
+
+
+
◆ transformAsPoint() [2/2]
+
+
+
+
+
+ std::optional< Eigen::Vector3d > mrs_lib::Transformer::transformAsPoint
+ (
+ const std::string &
+ from_frame ,
+
+
+
+
+ const Eigen::Vector3d &
+ what ,
+
+
+
+
+ const std::string &
+ to_frame ,
+
+
+
+
+ const ros::Time &
+ time_stamp = ros::Time(0)
+
+
+
+ )
+
+
+
+
+
+
Transform an Eigen::Vector3d (interpreting it as a point).
+
Both the rotation and translation will be applied to the variable.
+
Parameters
+
+ from_frame The current frame of what
.
+ what The object to be transformed.
+ to_frame The desired frame of what
.
+ time_stamp From which time to take the transformation (use ros::Time(0)
for the latest time).
+
+
+
+
Returns std::nullopt
if failed, optional containing the transformed object otherwise.
+
+
+
+
+
◆ transformAsVector() [1/2]
+
+
+
+
+
+ std::optional< Eigen::Vector3d > mrs_lib::Transformer::transformAsVector
+ (
+ const Eigen::Vector3d &
+ what ,
+
+
+
+
+ const geometry_msgs::TransformStamped &
+ tf
+
+
+
+ )
+
+
+
+
+
+
Transform an Eigen::Vector3d (interpreting it as a vector).
+
Only the rotation will be applied to the variable.
+
Parameters
+
+ tf The transformation to be used.
+ what The vector to be transformed.
+
+
+
+
Returns std::nullopt
if failed, optional containing the transformed object otherwise.
+
+
+
+
+
◆ transformAsVector() [2/2]
+
+
+
+
+
+ std::optional< Eigen::Vector3d > mrs_lib::Transformer::transformAsVector
+ (
+ const std::string &
+ from_frame ,
+
+
+
+
+ const Eigen::Vector3d &
+ what ,
+
+
+
+
+ const std::string &
+ to_frame ,
+
+
+
+
+ const ros::Time &
+ time_stamp = ros::Time(0)
+
+
+
+ )
+
+
+
+
+
+
Transform an Eigen::Vector3d (interpreting it as a vector).
+
Only the rotation will be applied to the variable.
+
Parameters
+
+ from_frame The current frame of what
.
+ what The vector to be transformed.
+ to_frame The desired frame of what
.
+ time_stamp From which time to take the transformation (use ros::Time(0)
for the latest time).
+
+
+
+
Returns std::nullopt
if failed, optional containing the transformed object otherwise.
+
+
+
+
+
◆ transformSingle() [1/6]
+
+
+
+
+template<class T >
+
+
+
+
+
+ std::optional<boost::shared_ptr<T> > mrs_lib::Transformer::transformSingle
+ (
+ const boost::shared_ptr< const T > &
+ what ,
+
+
+
+
+ const std::string &
+ to_frame
+
+
+
+ )
+
+
+
+
+
+inline
+
+
+
+
+
Transforms a single variable to a new frame.
+
A convenience override for shared pointers to const.
+
Parameters
+
+ what The object to be transformed.
+ to_frame The target fram ID.
+
+
+
+
Returns std::nullopt
if failed, optional containing the transformed object otherwise.
+
+
+
+
+
◆ transformSingle() [2/6]
+
+
+
+
+template<class T >
+
+
+
+
+
+ std::optional<boost::shared_ptr<T> > mrs_lib::Transformer::transformSingle
+ (
+ const boost::shared_ptr< T > &
+ what ,
+
+
+
+
+ const std::string &
+ to_frame
+
+
+
+ )
+
+
+
+
+
+inline
+
+
+
+
+
Transforms a single variable to a new frame.
+
A convenience override for shared pointers.
+
Parameters
+
+ what The object to be transformed.
+ to_frame The target fram ID.
+
+
+
+
Returns std::nullopt
if failed, optional containing the transformed object otherwise.
+
+
+
+
+
◆ transformSingle() [3/6]
+
+
+
+
+template<class T >
+
+
+
+
+
+ std::optional<boost::shared_ptr<T> > mrs_lib::Transformer::transformSingle
+ (
+ const std::string &
+ from_frame ,
+
+
+
+
+ const boost::shared_ptr< const T > &
+ what ,
+
+
+
+
+ const std::string &
+ to_frame ,
+
+
+
+
+ const ros::Time &
+ time_stamp = ros::Time(0)
+
+
+
+ )
+
+
+
+
+
+inline
+
+
+
+
+
Transforms a single variable to a new frame and returns it or std::nullopt
if transformation fails.
+
A convenience overload for shared pointers to const headerless variables.
+
Parameters
+
+ from_frame the original target frame ID.
+ what the object to be transformed.
+ to_frame the target frame ID.
+ time_stamp the time of the transformation.
+
+
+
+
Returns std::nullopt
if failed, optional containing the transformed object otherwise.
+
+
+
+
+
◆ transformSingle() [4/6]
+
+
+
+
+template<class T >
+
+
+
+
+
+ std::optional<boost::shared_ptr<T> > mrs_lib::Transformer::transformSingle
+ (
+ const std::string &
+ from_frame ,
+
+
+
+
+ const boost::shared_ptr< T > &
+ what ,
+
+
+
+
+ const std::string &
+ to_frame ,
+
+
+
+
+ const ros::Time &
+ time_stamp = ros::Time(0)
+
+
+
+ )
+
+
+
+
+
+inline
+
+
+
+
+
Transforms a single variable to a new frame and returns it or std::nullopt
if transformation fails.
+
A convenience overload for shared pointers to headerless variables.
+
Parameters
+
+ from_frame the original target frame ID.
+ what the object to be transformed.
+ to_frame the target frame ID.
+ time_stamp the time of the transformation.
+
+
+
+
Returns std::nullopt
if failed, optional containing the transformed object otherwise.
+
+
+
+
+
◆ transformSingle() [5/6]
+
+
+
+
+template<class T >
+
+
+ std::optional< T > mrs_lib::Transformer::transformSingle
+ (
+ const std::string &
+ from_frame ,
+
+
+
+
+ const T &
+ what ,
+
+
+
+
+ const std::string &
+ to_frame ,
+
+
+
+
+ const ros::Time &
+ time_stamp = ros::Time(0)
+
+
+
+ )
+
+
+
+
+
+
Transforms a single variable to a new frame and returns it or std::nullopt
if transformation fails.
+
A convenience overload for headerless variables.
+
Parameters
+
+ from_frame the original target frame ID.
+ what the object to be transformed.
+ to_frame the target frame ID.
+ time_stamp the time of the transformation.
+
+
+
+
Returns std::nullopt
if failed, optional containing the transformed object otherwise.
+
+
+
+
+
◆ transformSingle() [6/6]
+
+
+
+
+template<class T >
+
+
+ std::optional< T > mrs_lib::Transformer::transformSingle
+ (
+ const T &
+ what ,
+
+
+
+
+ const std::string &
+ to_frame
+
+
+
+ )
+
+
+
+
+
+
Transforms a single variable to a new frame and returns it or std::nullopt
if transformation fails.
+
Parameters
+
+ what the object to be transformed.
+ to_frame the target frame ID.
+
+
+
+
Returns std::nullopt
if failed, optional containing the transformed object otherwise.
+
+
+
+
The documentation for this class was generated from the following files:
+
+
+
+
+
+
diff --git a/classmrs__lib_1_1Transformer.js b/classmrs__lib_1_1Transformer.js
new file mode 100644
index 00000000..01a5b8d3
--- /dev/null
+++ b/classmrs__lib_1_1Transformer.js
@@ -0,0 +1,29 @@
+var classmrs__lib_1_1Transformer =
+[
+ [ "Transformer", "classmrs__lib_1_1Transformer.html#aca0408b710e4fa6e163ac23719d30fd1", null ],
+ [ "Transformer", "classmrs__lib_1_1Transformer.html#ae1a34c10d53059f9dfaf4c8c05a4f617", null ],
+ [ "Transformer", "classmrs__lib_1_1Transformer.html#a561b0c5342c38dea6071ab400b8eaae4", null ],
+ [ "beQuiet", "classmrs__lib_1_1Transformer.html#ab1e3fff472e6c6320a41d6f6ca331ca0", null ],
+ [ "getTransform", "classmrs__lib_1_1Transformer.html#a73ce6b60499d9ed491859a444f8d8afd", null ],
+ [ "getTransform", "classmrs__lib_1_1Transformer.html#a3a29dfb385f1b9c4deee695181880995", null ],
+ [ "operator=", "classmrs__lib_1_1Transformer.html#a6c4c846758bf173c7aeb488c8ff773b1", null ],
+ [ "resolveFrame", "classmrs__lib_1_1Transformer.html#aa4cf06770b355a01c66f227363a4967f", null ],
+ [ "retryLookupNewest", "classmrs__lib_1_1Transformer.html#abef2a59ed83e09ab103c060abb31dbb1", null ],
+ [ "setDefaultFrame", "classmrs__lib_1_1Transformer.html#a16a54cd35b1f071a80197cbccccfe9c0", null ],
+ [ "setDefaultPrefix", "classmrs__lib_1_1Transformer.html#a5d6f4288d53f09474c92bda26d0c9f55", null ],
+ [ "setLatLon", "classmrs__lib_1_1Transformer.html#a54764308675cc6df1782954870e1f3c2", null ],
+ [ "setLookupTimeout", "classmrs__lib_1_1Transformer.html#ac073019d60f1d9c6d48a0c207bafb678", null ],
+ [ "transform", "classmrs__lib_1_1Transformer.html#a8b05fe85c78f490b938bbf3d5884fce4", null ],
+ [ "transform", "classmrs__lib_1_1Transformer.html#a6509524feeb70fe794964b7462f28409", null ],
+ [ "transform", "classmrs__lib_1_1Transformer.html#a8a66075edc7025976292ebd401d7de16", null ],
+ [ "transformAsPoint", "classmrs__lib_1_1Transformer.html#ae56ae48888d4fcaf21c912ed491b35d1", null ],
+ [ "transformAsPoint", "classmrs__lib_1_1Transformer.html#ab1533c559b6c94b406322bfbfc700ef7", null ],
+ [ "transformAsVector", "classmrs__lib_1_1Transformer.html#af17729e67e82876f6bbce2d5cec55613", null ],
+ [ "transformAsVector", "classmrs__lib_1_1Transformer.html#a1c71e387e846a2591616e83a88071d24", null ],
+ [ "transformSingle", "classmrs__lib_1_1Transformer.html#a2c45ff29ac5f482ba9b9c2537d82b8fb", null ],
+ [ "transformSingle", "classmrs__lib_1_1Transformer.html#a58e8e6d80098e192a0d415a14c6deec0", null ],
+ [ "transformSingle", "classmrs__lib_1_1Transformer.html#a4d01ec1804bb492694d328704dada907", null ],
+ [ "transformSingle", "classmrs__lib_1_1Transformer.html#a5afde5d58bc9a558cba5da9e0c2d4d1b", null ],
+ [ "transformSingle", "classmrs__lib_1_1Transformer.html#a7cea399425c4a51a676ba5aa285612d4", null ],
+ [ "transformSingle", "classmrs__lib_1_1Transformer.html#a623af4e8100b71ac700ad5ffac96d2e2", null ]
+];
\ No newline at end of file
diff --git a/classmrs__lib_1_1UKF-members.html b/classmrs__lib_1_1UKF-members.html
new file mode 100644
index 00000000..06f91d2f
--- /dev/null
+++ b/classmrs__lib_1_1UKF-members.html
@@ -0,0 +1,145 @@
+
+
+
+
+
+
+
+mrs_lib: Member List
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
This is the complete list of members for mrs_lib::UKF< n_states, n_inputs, n_measurements > , including all inherited members.
+
+ Base_class typedefmrs_lib::UKF< n_states, n_inputs, n_measurements > protected
+ computeInverse (const Pzz_t &Pzz) const (defined in mrs_lib::UKF< n_states, n_inputs, n_measurements > )mrs_lib::UKF< n_states, n_inputs, n_measurements > protected
+ computeKalmanGain ([[maybe_unused]] const x_t &x, [[maybe_unused]] const z_t &inn, const K_t &Pxz, const Pzz_t &Pzz) const (defined in mrs_lib::UKF< n_states, n_inputs, n_measurements > )mrs_lib::UKF< n_states, n_inputs, n_measurements > protected virtual
+ computePaSqrt (const P_t &P) const (defined in mrs_lib::UKF< n_states, n_inputs, n_measurements > )mrs_lib::UKF< n_states, n_inputs, n_measurements > protected
+ computeSigmas (const x_t &x, const P_t &P) const (defined in mrs_lib::UKF< n_states, n_inputs, n_measurements > )mrs_lib::UKF< n_states, n_inputs, n_measurements > protected
+ computeWeights () (defined in mrs_lib::UKF< n_states, n_inputs, n_measurements > )mrs_lib::UKF< n_states, n_inputs, n_measurements > protected
+ correct (const statecov_t &sc, const z_t &z, const R_t &R) const overridemrs_lib::UKF< n_states, n_inputs, n_measurements > virtual
+ mrs_lib::KalmanFilter::correct (const statecov_t &sc, const z_t &z, const R_t &R) const =0mrs_lib::KalmanFilter< n_states, n_inputs, n_measurements > private pure virtual
+ K_t typedefmrs_lib::UKF< n_states, n_inputs, n_measurements > protected
+ m mrs_lib::UKF< n_states, n_inputs, n_measurements > protected static
+ m_alpha (defined in mrs_lib::UKF< n_states, n_inputs, n_measurements > )mrs_lib::UKF< n_states, n_inputs, n_measurements > protected
+ m_beta (defined in mrs_lib::UKF< n_states, n_inputs, n_measurements > )mrs_lib::UKF< n_states, n_inputs, n_measurements > protected
+ m_kappa (defined in mrs_lib::UKF< n_states, n_inputs, n_measurements > )mrs_lib::UKF< n_states, n_inputs, n_measurements > protected
+ m_lambda (defined in mrs_lib::UKF< n_states, n_inputs, n_measurements > )mrs_lib::UKF< n_states, n_inputs, n_measurements > protected
+ m_observation_model (defined in mrs_lib::UKF< n_states, n_inputs, n_measurements > )mrs_lib::UKF< n_states, n_inputs, n_measurements > protected
+ m_transition_model (defined in mrs_lib::UKF< n_states, n_inputs, n_measurements > )mrs_lib::UKF< n_states, n_inputs, n_measurements > protected
+ m_Wc (defined in mrs_lib::UKF< n_states, n_inputs, n_measurements > )mrs_lib::UKF< n_states, n_inputs, n_measurements > protected
+ m_Wm (defined in mrs_lib::UKF< n_states, n_inputs, n_measurements > )mrs_lib::UKF< n_states, n_inputs, n_measurements > protected
+ n mrs_lib::UKF< n_states, n_inputs, n_measurements > protected static
+ observation_model_t typedefmrs_lib::UKF< n_states, n_inputs, n_measurements >
+ p mrs_lib::UKF< n_states, n_inputs, n_measurements > protected static
+ P_t typedefmrs_lib::UKF< n_states, n_inputs, n_measurements >
+ predict (const statecov_t &sc, const u_t &u, const Q_t &Q, double dt) const overridemrs_lib::UKF< n_states, n_inputs, n_measurements > virtual
+ mrs_lib::KalmanFilter::predict (const statecov_t &sc, const u_t &u, const Q_t &Q, double dt) const =0mrs_lib::KalmanFilter< n_states, n_inputs, n_measurements > private pure virtual
+ Pzz_t typedefmrs_lib::UKF< n_states, n_inputs, n_measurements > protected
+ Q_t typedefmrs_lib::UKF< n_states, n_inputs, n_measurements >
+ R_t typedefmrs_lib::UKF< n_states, n_inputs, n_measurements >
+ setConstants (const double alpha, const double kappa, const double beta)mrs_lib::UKF< n_states, n_inputs, n_measurements >
+ setObservationModel (const observation_model_t &observation_model)mrs_lib::UKF< n_states, n_inputs, n_measurements >
+ setTransitionModel (const transition_model_t &transition_model)mrs_lib::UKF< n_states, n_inputs, n_measurements >
+ statecov_t typedefmrs_lib::UKF< n_states, n_inputs, n_measurements >
+ transition_model_t typedefmrs_lib::UKF< n_states, n_inputs, n_measurements >
+ u_t typedefmrs_lib::UKF< n_states, n_inputs, n_measurements >
+ UKF ()mrs_lib::UKF< n_states, n_inputs, n_measurements >
+ UKF (const transition_model_t &transition_model, const observation_model_t &observation_model, const double alpha=1e-3, const double kappa=1, const double beta=2)mrs_lib::UKF< n_states, n_inputs, n_measurements >
+ w mrs_lib::UKF< n_states, n_inputs, n_measurements > protected static
+ W_t typedefmrs_lib::UKF< n_states, n_inputs, n_measurements >
+ X_t typedefmrs_lib::UKF< n_states, n_inputs, n_measurements > protected
+ x_t typedefmrs_lib::UKF< n_states, n_inputs, n_measurements >
+ z_t typedefmrs_lib::UKF< n_states, n_inputs, n_measurements >
+ Z_t typedefmrs_lib::UKF< n_states, n_inputs, n_measurements > protected
+
+
+
+
+
+
diff --git a/classmrs__lib_1_1UKF.html b/classmrs__lib_1_1UKF.html
new file mode 100644
index 00000000..32356b72
--- /dev/null
+++ b/classmrs__lib_1_1UKF.html
@@ -0,0 +1,626 @@
+
+
+
+
+
+
+
+mrs_lib: mrs_lib::UKF< n_states, n_inputs, n_measurements > Class Template Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Implementation of the Unscented Kalman filter [4] .
+ More...
+
+
#include <ukf.h >
+
+
+
+
+
+
+
+
+
+
+ UKF ()
+ Convenience default constructor. More...
+
+ UKF (const transition_model_t &transition_model, const observation_model_t &observation_model, const double alpha=1e-3, const double kappa=1, const double beta=2)
+ The main constructor. More...
+
+virtual statecov_t correct (const statecov_t &sc, const z_t &z, const R_t &R) const override
+ Implements the state correction step (measurement update). More...
+
+virtual statecov_t predict (const statecov_t &sc, const u_t &u, const Q_t &Q, double dt) const override
+ Implements the state prediction step (time update). More...
+
+void setConstants (const double alpha, const double kappa, const double beta)
+ Changes the Unscented Transform parameters. More...
+
+void setTransitionModel (const transition_model_t &transition_model)
+ Changes the transition model function. More...
+
+void setObservationModel (const observation_model_t &observation_model)
+ Changes the observation model function. More...
+
+
+
+
+using Base_class = KalmanFilter < n , m , p >
+ Base class of this class.
+
+
+using X_t = typename Eigen::Matrix< double, n , w >
+ State sigma points matrix.
+
+
+using Z_t = typename Eigen::Matrix< double, p , w >
+ Measurement sigma points matrix.
+
+
+using Pzz_t = typename Eigen::Matrix< double, p , p >
+ Pzz helper matrix.
+
+
+using K_t = typename Eigen::Matrix< double, n , p >
+ Kalman gain matrix.
+
+
+
+
+void computeWeights ()
+
+
+X_t computeSigmas (const x_t &x, const P_t &P) const
+
+
+P_t computePaSqrt (const P_t &P) const
+
+
+Pzz_t computeInverse (const Pzz_t &Pzz) const
+
+
+virtual K_t computeKalmanGain ([[maybe_unused]] const x_t &x, [[maybe_unused]] const z_t &inn, const K_t &Pxz, const Pzz_t &Pzz) const
+
+
+
+
+static constexpr int n = n_states
+ Length of the state vector of the system.
+
+
+static constexpr int m = n_inputs
+ Length of the input vector of the system.
+
+
+static constexpr int p = n_measurements
+ Length of the measurement vector of the system.
+
+
+static constexpr int w = 2 * n + 1
+ Number of sigma points/weights.
+
+
+
+
template<int n_states, int n_inputs, int n_measurements>
+class mrs_lib::UKF< n_states, n_inputs, n_measurements >
+
+
Implementation of the Unscented Kalman filter [4] .
+
The Unscented Kalman filter (abbreviated UKF , [4] ) is a variant of the Kalman filter, which may be used for state filtration or estimation of non-linear systems as opposed to the Linear Kalman Filter (which is implemented in LKF ). The UKF tends to be more accurate than the simpler Extended Kalman Filter, espetially for highly non-linear systems. However, it is generally less stable than the LKF because of the extra matrix square root in the sigma points calculation, so it is recommended to use LKF for linear systems.
+
The UKF C++ class itself is templated. This has its advantages and disadvantages. Main disadvantage is that it may be harder to use if you're not familiar with C++ templates, which, admittedly, can get somewhat messy, espetially during compilation. Another disadvantage is that if used unwisely, the compilation times can get much higher when using templates. The main advantage is compile-time checking (if it compiles, then it has a lower chance of crashing at runtime) and enabling more effective optimalizations during compilation. Also in case of Eigen, the code is arguably more readable when you use aliases to the specific Matrix instances instead of having Eigen::MatrixXd and Eigen::VectorXd everywhere.
+
Template Parameters
+
+ n_states number of states of the system (length of the vector).
+ n_inputs number of inputs of the system (length of the vector).
+ n_measurements number of measurements of the system (length of the vector).
+
+
+
+
Examples ukf/example.cpp .
+
+
+
+
◆ UKF() [1/2]
+
+
+
+
+template<int n_states, int n_inputs, int n_measurements>
+
+
+
+
Convenience default constructor.
+
This constructor should not be used if applicable. If used, the main constructor has to be called afterwards, otherwise the UKF object is invalid (not initialized).
+
+
+
+
+
◆ UKF() [2/2]
+
+
+
+
+template<int n_states, int n_inputs, int n_measurements>
+
+
+ mrs_lib::UKF < n_states, n_inputs, n_measurements >::UKF
+ (
+ const transition_model_t &
+ transition_model ,
+
+
+
+
+ const observation_model_t &
+ observation_model ,
+
+
+
+
+ const double
+ alpha = 1e-3
,
+
+
+
+
+ const double
+ kappa = 1
,
+
+
+
+
+ const double
+ beta = 2
+
+
+
+ )
+
+
+
+
+
+
The main constructor.
+
Parameters
+
+ alpha Scaling parameter of the sigma generation (a small positive value, e.g. 1e-3).
+ kappa Secondary scaling parameter of the sigma generation (usually set to 0 or 1).
+ beta Incorporates prior knowledge about the distribution (for Gaussian distribution, 2 is optimal).
+ transition_model State transition model function.
+ observation_model Observation model function.
+
+
+
+
+
+
+
+
+
◆ correct()
+
+
+
+
+template<int n_states, int n_inputs, int n_measurements>
+
+
+
+
+
+ UKF < n_states, n_inputs, n_measurements >::statecov_t mrs_lib::UKF < n_states, n_inputs, n_measurements >::correct
+ (
+ const statecov_t &
+ sc ,
+
+
+
+
+ const z_t &
+ z ,
+
+
+
+
+ const R_t &
+ R
+
+
+
+ )
+ const
+
+
+
+
+override virtual
+
+
+
+
+
Implements the state correction step (measurement update).
+
Parameters
+
+ sc Previous estimate of the state and covariance.
+ z Measurement vector.
+ R Measurement covariance matrix.
+
+
+
+
Returns The state and covariance after applying the correction step.
+
+
Reimplemented in mrs_lib::NCUKF< n_states, n_inputs, n_measurements > .
+
+
+
+
+
◆ predict()
+
+
+
+
+template<int n_states, int n_inputs, int n_measurements>
+
+
+
+
+
+ UKF < n_states, n_inputs, n_measurements >::statecov_t mrs_lib::UKF < n_states, n_inputs, n_measurements >::predict
+ (
+ const statecov_t &
+ sc ,
+
+
+
+
+ const u_t &
+ u ,
+
+
+
+
+ const Q_t &
+ Q ,
+
+
+
+
+ double
+ dt
+
+
+
+ )
+ const
+
+
+
+
+override virtual
+
+
+
+
+
Implements the state prediction step (time update).
+
Parameters
+
+ sc Previous estimate of the state and covariance.
+ u Input vector.
+ Q Process noise covariance matrix.
+ dt Duration since the previous estimate.
+
+
+
+
Returns The state and covariance after applying the correction step.
+
+
+
+
+
◆ setConstants()
+
+
+
+
+template<int n_states, int n_inputs, int n_measurements>
+
+
+ void mrs_lib::UKF < n_states, n_inputs, n_measurements >::setConstants
+ (
+ const double
+ alpha ,
+
+
+
+
+ const double
+ kappa ,
+
+
+
+
+ const double
+ beta
+
+
+
+ )
+
+
+
+
+
+
Changes the Unscented Transform parameters.
+
Parameters
+
+ alpha Scaling parameter of the sigma generation (a small positive value - e.g. 1e-3).
+ kappa Secondary scaling parameter of the sigma generation (usually set to 0 or 1).
+ beta Incorporates prior knowledge about the distribution (for Gaussian distribution, 2 is optimal).
+
+
+
+
+
+
+
+
◆ setObservationModel()
+
+
+
+
+template<int n_states, int n_inputs, int n_measurements>
+
+
+
+
Changes the observation model function.
+
Parameters
+
+ observation_model the new observation model
+
+
+
+
+
+
+
+
◆ setTransitionModel()
+
+
+
+
+template<int n_states, int n_inputs, int n_measurements>
+
+
+
+
Changes the transition model function.
+
Parameters
+
+ transition_model the new transition model
+
+
+
+
+
+
+
The documentation for this class was generated from the following files:
+
+
+
+
+
+
diff --git a/classmrs__lib_1_1UKF.js b/classmrs__lib_1_1UKF.js
new file mode 100644
index 00000000..07a159b3
--- /dev/null
+++ b/classmrs__lib_1_1UKF.js
@@ -0,0 +1,40 @@
+var classmrs__lib_1_1UKF =
+[
+ [ "inverse_exception", "structmrs__lib_1_1UKF_1_1inverse__exception.html", "structmrs__lib_1_1UKF_1_1inverse__exception" ],
+ [ "square_root_exception", "structmrs__lib_1_1UKF_1_1square__root__exception.html", "structmrs__lib_1_1UKF_1_1square__root__exception" ],
+ [ "Base_class", "classmrs__lib_1_1UKF.html#ae5a0eb2f31131ed4cec117d4a1000080", null ],
+ [ "K_t", "classmrs__lib_1_1UKF.html#ace5416fd8ac52fba822337bceaf751a7", null ],
+ [ "observation_model_t", "classmrs__lib_1_1UKF.html#ac515ea8c688d7ee67250c384417f9ab9", null ],
+ [ "P_t", "classmrs__lib_1_1UKF.html#ac1128f5d7fa36305a52859a752a97fda", null ],
+ [ "Pzz_t", "classmrs__lib_1_1UKF.html#af11dc75b608a43930e8289c51e8ab7c6", null ],
+ [ "Q_t", "classmrs__lib_1_1UKF.html#abd8f845f1b3f138949bd95c7dc12e011", null ],
+ [ "R_t", "classmrs__lib_1_1UKF.html#a0af0d9a246df0798b1cb1308cec82fd2", null ],
+ [ "statecov_t", "classmrs__lib_1_1UKF.html#a604c0bfee69ee5a34dc4412af3cc6e53", null ],
+ [ "transition_model_t", "classmrs__lib_1_1UKF.html#a986f17f015282a33b140af4adabce091", null ],
+ [ "u_t", "classmrs__lib_1_1UKF.html#a6589d6a1f5eba355f1bec91e99826b71", null ],
+ [ "W_t", "classmrs__lib_1_1UKF.html#aca628bd6d14b59b9d0a10652a2665a32", null ],
+ [ "X_t", "classmrs__lib_1_1UKF.html#a1435f2ed4e333151990355813cee95ba", null ],
+ [ "x_t", "classmrs__lib_1_1UKF.html#a5ab9d25f7b2470c7abeacda7f8b80630", null ],
+ [ "Z_t", "classmrs__lib_1_1UKF.html#a06a3fae37e8a0613d8169b638c4c0001", null ],
+ [ "z_t", "classmrs__lib_1_1UKF.html#a7a68877ffa7bd8bb10f16d1f104e0a73", null ],
+ [ "UKF", "classmrs__lib_1_1UKF.html#acf37d546ec0e03f1ef4c031f96057733", null ],
+ [ "UKF", "classmrs__lib_1_1UKF.html#a43f196bc0b8ef4dd75feba3b025576cb", null ],
+ [ "computeInverse", "classmrs__lib_1_1UKF.html#a2d0824ac1a567b4542a6cc26d0672fba", null ],
+ [ "computeKalmanGain", "classmrs__lib_1_1UKF.html#ad22d268a16cf223c7853225038f02ee6", null ],
+ [ "computePaSqrt", "classmrs__lib_1_1UKF.html#ac2eb18554e24af946d18b3b1f56d6cd9", null ],
+ [ "computeSigmas", "classmrs__lib_1_1UKF.html#a2655c5ad51b0a5c3a7e07430637bd216", null ],
+ [ "computeWeights", "classmrs__lib_1_1UKF.html#a82f19aab6f21c1c8794024b9ae9d88c9", null ],
+ [ "correct", "classmrs__lib_1_1UKF.html#ad31a0a6b6c1ea433daa0bae83e6fb6e4", null ],
+ [ "predict", "classmrs__lib_1_1UKF.html#a4c9c1e158bb4b6739b8bfdbdc1369c41", null ],
+ [ "setConstants", "classmrs__lib_1_1UKF.html#a646b7755aaa478bb86d89e1923d5ed2a", null ],
+ [ "setObservationModel", "classmrs__lib_1_1UKF.html#a272c7435d05b9a8867df4bd131f01177", null ],
+ [ "setTransitionModel", "classmrs__lib_1_1UKF.html#a724d2e508dd45e4e6cb7b08b023cae34", null ],
+ [ "m_alpha", "classmrs__lib_1_1UKF.html#a6fc172677f265d23c58dd44d24f9d00a", null ],
+ [ "m_beta", "classmrs__lib_1_1UKF.html#add72fa54f7a0e53cb8d6c804d5bec410", null ],
+ [ "m_kappa", "classmrs__lib_1_1UKF.html#afc26c675257c6be3eb3d09ac2eece61f", null ],
+ [ "m_lambda", "classmrs__lib_1_1UKF.html#a6b89b8f55bb6574760d2b4eb4281b35a", null ],
+ [ "m_observation_model", "classmrs__lib_1_1UKF.html#af6339fd2d89c4e7223c2646ec7cb490c", null ],
+ [ "m_transition_model", "classmrs__lib_1_1UKF.html#ad1ca73c805660d45a2c77393f7a14374", null ],
+ [ "m_Wc", "classmrs__lib_1_1UKF.html#abecb7ce280f0f1ff79d6b094c7a78299", null ],
+ [ "m_Wm", "classmrs__lib_1_1UKF.html#a135f047421ef49fb886a3259bf545096", null ]
+];
\ No newline at end of file
diff --git a/classmrs__lib_1_1UKF__coll__graph.map b/classmrs__lib_1_1UKF__coll__graph.map
new file mode 100644
index 00000000..3093075c
--- /dev/null
+++ b/classmrs__lib_1_1UKF__coll__graph.map
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/classmrs__lib_1_1UKF__coll__graph.md5 b/classmrs__lib_1_1UKF__coll__graph.md5
new file mode 100644
index 00000000..944f7113
--- /dev/null
+++ b/classmrs__lib_1_1UKF__coll__graph.md5
@@ -0,0 +1 @@
+63ef0b009c70a1fa3d5a344012b7d3b1
\ No newline at end of file
diff --git a/classmrs__lib_1_1UKF__coll__graph.png b/classmrs__lib_1_1UKF__coll__graph.png
new file mode 100644
index 00000000..262070c2
Binary files /dev/null and b/classmrs__lib_1_1UKF__coll__graph.png differ
diff --git a/classmrs__lib_1_1UKF__inherit__graph.map b/classmrs__lib_1_1UKF__inherit__graph.map
new file mode 100644
index 00000000..5419e566
--- /dev/null
+++ b/classmrs__lib_1_1UKF__inherit__graph.map
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/classmrs__lib_1_1UKF__inherit__graph.md5 b/classmrs__lib_1_1UKF__inherit__graph.md5
new file mode 100644
index 00000000..1ca0fbd8
--- /dev/null
+++ b/classmrs__lib_1_1UKF__inherit__graph.md5
@@ -0,0 +1 @@
+c8291fc1663bc04ac7dc0f6f0aab5ec2
\ No newline at end of file
diff --git a/classmrs__lib_1_1UKF__inherit__graph.png b/classmrs__lib_1_1UKF__inherit__graph.png
new file mode 100644
index 00000000..343ee820
Binary files /dev/null and b/classmrs__lib_1_1UKF__inherit__graph.png differ
diff --git a/classmrs__lib_1_1Vector3Converter-members.html b/classmrs__lib_1_1Vector3Converter-members.html
new file mode 100644
index 00000000..c5b07848
--- /dev/null
+++ b/classmrs__lib_1_1Vector3Converter-members.html
@@ -0,0 +1,111 @@
+
+
+
+
+
+
+
+mrs_lib: Member List
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
This is the complete list of members for mrs_lib::Vector3Converter , including all inherited members.
+
+
+
+
+
+
diff --git a/classmrs__lib_1_1Vector3Converter.html b/classmrs__lib_1_1Vector3Converter.html
new file mode 100644
index 00000000..1f31702c
--- /dev/null
+++ b/classmrs__lib_1_1Vector3Converter.html
@@ -0,0 +1,333 @@
+
+
+
+
+
+
+
+mrs_lib: mrs_lib::Vector3Converter Class Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Converter of Vector3 representations. Instantiate it with any type of vector3 in constructor and convert it by assigning it to any other type of vector3 variable.
+ More...
+
+
#include <attitude_converter.h >
+
+
+
Converter of Vector3 representations. Instantiate it with any type of vector3 in constructor and convert it by assigning it to any other type of vector3 variable.
+
+
+
◆ Vector3Converter() [1/4]
+
+
+
+
+
+
+
+
+ mrs_lib::Vector3Converter::Vector3Converter
+ (
+ const tf2::Vector3 &
+ vector3 )
+
+
+
+
+
+inline
+
+
+
+
+
Constructor with tf2::Vector3.
+
Parameters
+
+
+
+
+
+
+
+
◆ Vector3Converter() [2/4]
+
+
+
+
+
+ mrs_lib::Vector3Converter::Vector3Converter
+ (
+ const Eigen::Vector3d &
+ vector3 )
+
+
+
+
+
+
Constructor with Eigen::Vector3.
+
Parameters
+
+
+
+
+
+
+
+
◆ Vector3Converter() [3/4]
+
+
+
+
+
+ mrs_lib::Vector3Converter::Vector3Converter
+ (
+ const geometry_msgs::Vector3 &
+ vector3 )
+
+
+
+
+
+
Constructor with geometry_msgs::Vector3.
+
Parameters
+
+
+
+
+
+
+
+
◆ Vector3Converter() [4/4]
+
+
+
+
+
+ mrs_lib::Vector3Converter::Vector3Converter
+ (
+ const double &
+ x ,
+
+
+
+
+ const double &
+ y ,
+
+
+
+
+ const double &
+ z
+
+
+
+ )
+
+
+
+
+
+
Constructor with doubles: x, y, z.
+
Parameters
+
+
+
+
+
+
+
+
+
◆ operator Eigen::Vector3d()
+
+
+
+
+
+ mrs_lib::Vector3Converter::operator Eigen::Vector3d
+ (
+ )
+ const
+
+
+
+
+
typecast overloaded for Eigen::Vector3
+
Returns vector3
+
+
+
+
+
◆ operator geometry_msgs::Vector3()
+
+
+
+
+
+ mrs_lib::Vector3Converter::operator geometry_msgs::Vector3
+ (
+ )
+ const
+
+
+
+
+
typecast overloaded for geometry_msgs::Vector3
+
Returns vector3
+
+
+
+
+
◆ operator tf2::Vector3()
+
+
+
+
+
+ mrs_lib::Vector3Converter::operator tf2::Vector3
+ (
+ )
+ const
+
+
+
+
+
typecast overloaded for tf2::Vector3
+
Returns vector3
+
+
+
+
The documentation for this class was generated from the following files:
+
+
+
+
+
+
diff --git a/classmrs__lib_1_1Vector3Converter.js b/classmrs__lib_1_1Vector3Converter.js
new file mode 100644
index 00000000..d46afbc9
--- /dev/null
+++ b/classmrs__lib_1_1Vector3Converter.js
@@ -0,0 +1,10 @@
+var classmrs__lib_1_1Vector3Converter =
+[
+ [ "Vector3Converter", "classmrs__lib_1_1Vector3Converter.html#ac5cf91c41293661ea55749d55aec4d48", null ],
+ [ "Vector3Converter", "classmrs__lib_1_1Vector3Converter.html#abf2c3e688787834522c8a99c374f656e", null ],
+ [ "Vector3Converter", "classmrs__lib_1_1Vector3Converter.html#aec2780b4e6f0b58ee2c465ab2338df17", null ],
+ [ "Vector3Converter", "classmrs__lib_1_1Vector3Converter.html#a3936cad709ed1018aba1d05d47639c80", null ],
+ [ "operator Eigen::Vector3d", "classmrs__lib_1_1Vector3Converter.html#a69c3a9a8dbcff2876e40d28022c019e3", null ],
+ [ "operator geometry_msgs::Vector3", "classmrs__lib_1_1Vector3Converter.html#a6f6edf59403aded9e3bffcd603cce5c0", null ],
+ [ "operator tf2::Vector3", "classmrs__lib_1_1Vector3Converter.html#a96b9daae53786acb4f52e09e8fb7bc8a", null ]
+];
\ No newline at end of file
diff --git a/classmrs__lib_1_1VisualObject-members.html b/classmrs__lib_1_1VisualObject-members.html
new file mode 100644
index 00000000..64bdc549
--- /dev/null
+++ b/classmrs__lib_1_1VisualObject-members.html
@@ -0,0 +1,121 @@
+
+
+
+
+
+
+
+mrs_lib: Member List
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
This is the complete list of members for mrs_lib::VisualObject , including all inherited members.
+
+ getColors () const (defined in mrs_lib::VisualObject )mrs_lib::VisualObject
+ getID () const (defined in mrs_lib::VisualObject )mrs_lib::VisualObject
+ getPoints () const (defined in mrs_lib::VisualObject )mrs_lib::VisualObject
+ getType () const (defined in mrs_lib::VisualObject )mrs_lib::VisualObject
+ isTimedOut () const (defined in mrs_lib::VisualObject )mrs_lib::VisualObject
+ operator< (const VisualObject &other) const (defined in mrs_lib::VisualObject )mrs_lib::VisualObject inline
+ operator== (const VisualObject &other) const (defined in mrs_lib::VisualObject )mrs_lib::VisualObject inline
+ operator> (const VisualObject &other) const (defined in mrs_lib::VisualObject )mrs_lib::VisualObject inline
+ VisualObject (const Eigen::Vector3d &point, const double r, const double g, const double b, const double a, const ros::Duration &timeout, const unsigned long &id) (defined in mrs_lib::VisualObject )mrs_lib::VisualObject
+ VisualObject (const mrs_lib::geometry::Ray &ray, const double r, const double g, const double b, const double a, const ros::Duration &timeout, const unsigned long &id) (defined in mrs_lib::VisualObject )mrs_lib::VisualObject
+ VisualObject (const mrs_lib::geometry::Triangle &triangle, const double r, const double g, const double b, const double a, const ros::Duration &timeout, const bool filled, const unsigned long &id) (defined in mrs_lib::VisualObject )mrs_lib::VisualObject
+ VisualObject (const mrs_lib::geometry::Rectangle &rectangle, const double r, const double g, const double b, const double a, const ros::Duration &timeout, const bool filled, const unsigned long &id) (defined in mrs_lib::VisualObject )mrs_lib::VisualObject
+ VisualObject (const mrs_lib::geometry::Cuboid &cuboid, const double r, const double g, const double b, const double a, const ros::Duration &timeout, const bool filled, const unsigned long &id) (defined in mrs_lib::VisualObject )mrs_lib::VisualObject
+ VisualObject (const mrs_lib::geometry::Ellipse &ellipse, const double r, const double g, const double b, const double a, const ros::Duration &timeout, const bool filled, const unsigned long &id, const int num_points=DEFAULT_ELLIPSE_POINTS) (defined in mrs_lib::VisualObject )mrs_lib::VisualObject
+ VisualObject (const mrs_lib::geometry::Cylinder &cylinder, const double r, const double g, const double b, const double a, const ros::Duration &timeout, const bool filled, const bool capped, const unsigned long &id, const int num_sides=DEFAULT_ELLIPSE_POINTS) (defined in mrs_lib::VisualObject )mrs_lib::VisualObject
+ VisualObject (const mrs_lib::geometry::Cone &cone, const double r, const double g, const double b, const double a, const ros::Duration &timeout, const bool filled, const bool capped, const unsigned long &id, const int num_sides=DEFAULT_ELLIPSE_POINTS) (defined in mrs_lib::VisualObject )mrs_lib::VisualObject
+ VisualObject (const mrs_msgs::TrajectoryReference &traj, const double r, const double g, const double b, const double a, const ros::Duration &timeout, const bool filled, const unsigned long &id) (defined in mrs_lib::VisualObject )mrs_lib::VisualObject
+
+
+
+
+
+
diff --git a/classmrs__lib_1_1VisualObject.html b/classmrs__lib_1_1VisualObject.html
new file mode 100644
index 00000000..2770ccdf
--- /dev/null
+++ b/classmrs__lib_1_1VisualObject.html
@@ -0,0 +1,164 @@
+
+
+
+
+
+
+
+mrs_lib: mrs_lib::VisualObject Class Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ VisualObject (const Eigen::Vector3d &point, const double r, const double g, const double b, const double a, const ros::Duration &timeout, const unsigned long &id)
+
+
+ VisualObject (const mrs_lib::geometry::Ray &ray, const double r, const double g, const double b, const double a, const ros::Duration &timeout, const unsigned long &id)
+
+
+ VisualObject (const mrs_lib::geometry::Triangle &triangle, const double r, const double g, const double b, const double a, const ros::Duration &timeout, const bool filled, const unsigned long &id)
+
+
+ VisualObject (const mrs_lib::geometry::Rectangle &rectangle, const double r, const double g, const double b, const double a, const ros::Duration &timeout, const bool filled, const unsigned long &id)
+
+
+ VisualObject (const mrs_lib::geometry::Cuboid &cuboid, const double r, const double g, const double b, const double a, const ros::Duration &timeout, const bool filled, const unsigned long &id)
+
+
+ VisualObject (const mrs_lib::geometry::Ellipse &ellipse, const double r, const double g, const double b, const double a, const ros::Duration &timeout, const bool filled, const unsigned long &id, const int num_points=DEFAULT_ELLIPSE_POINTS)
+
+
+ VisualObject (const mrs_lib::geometry::Cylinder &cylinder, const double r, const double g, const double b, const double a, const ros::Duration &timeout, const bool filled, const bool capped, const unsigned long &id, const int num_sides=DEFAULT_ELLIPSE_POINTS)
+
+
+ VisualObject (const mrs_lib::geometry::Cone &cone, const double r, const double g, const double b, const double a, const ros::Duration &timeout, const bool filled, const bool capped, const unsigned long &id, const int num_sides=DEFAULT_ELLIPSE_POINTS)
+
+
+ VisualObject (const mrs_msgs::TrajectoryReference &traj, const double r, const double g, const double b, const double a, const ros::Duration &timeout, const bool filled, const unsigned long &id)
+
+
+unsigned long getID () const
+
+
+int getType () const
+
+
+bool isTimedOut () const
+
+
+const std::vector< geometry_msgs::Point > getPoints () const
+
+
+const std::vector< std_msgs::ColorRGBA > getColors () const
+
+
+bool operator< (const VisualObject &other) const
+
+
+bool operator> (const VisualObject &other) const
+
+
+bool operator== (const VisualObject &other) const
+
+
+
The documentation for this class was generated from the following files:
+
+
+
+
+
+
diff --git a/classmrs__lib_1_1VisualObject.js b/classmrs__lib_1_1VisualObject.js
new file mode 100644
index 00000000..6644a983
--- /dev/null
+++ b/classmrs__lib_1_1VisualObject.js
@@ -0,0 +1,20 @@
+var classmrs__lib_1_1VisualObject =
+[
+ [ "VisualObject", "classmrs__lib_1_1VisualObject.html#a537ad5e03d10f706e84aeb1a6df41dc2", null ],
+ [ "VisualObject", "classmrs__lib_1_1VisualObject.html#a505ca7f7b51e0f8efb819bf053c735da", null ],
+ [ "VisualObject", "classmrs__lib_1_1VisualObject.html#aad92d42138c0dad5afd9130123ca2127", null ],
+ [ "VisualObject", "classmrs__lib_1_1VisualObject.html#ae8e57406273b7d5c00f8ecaba37ee81c", null ],
+ [ "VisualObject", "classmrs__lib_1_1VisualObject.html#a449c8ae671d076894e96ed63fcec510b", null ],
+ [ "VisualObject", "classmrs__lib_1_1VisualObject.html#a6f616e3ec81d7002c723894c626d5d82", null ],
+ [ "VisualObject", "classmrs__lib_1_1VisualObject.html#a5a36ccd92270bab79ac997a83d003c41", null ],
+ [ "VisualObject", "classmrs__lib_1_1VisualObject.html#ae564f914d9ebd0356ba34895fe463ec2", null ],
+ [ "VisualObject", "classmrs__lib_1_1VisualObject.html#a9ed70bde3a0a02eec25631f98398fb04", null ],
+ [ "getColors", "classmrs__lib_1_1VisualObject.html#a9d899ed5c052674c63659b4e78387c2d", null ],
+ [ "getID", "classmrs__lib_1_1VisualObject.html#aed4d30ede23a86744b3a4f71f5d3d3f4", null ],
+ [ "getPoints", "classmrs__lib_1_1VisualObject.html#a9114ebc384c0f43adbfad0032f1bd005", null ],
+ [ "getType", "classmrs__lib_1_1VisualObject.html#a3f49d662c10bffb3e813adb2cb0359c9", null ],
+ [ "isTimedOut", "classmrs__lib_1_1VisualObject.html#af6fb444f6a341a8c00678b501a00a33d", null ],
+ [ "operator<", "classmrs__lib_1_1VisualObject.html#a296a929f9957021c1dbf0f22e12a6e04", null ],
+ [ "operator==", "classmrs__lib_1_1VisualObject.html#a5a9fccab5d43bb63a3b1392476f8e2f4", null ],
+ [ "operator>", "classmrs__lib_1_1VisualObject.html#a3d3550fd1da2c29f60b9e61e7a586103", null ]
+];
\ No newline at end of file
diff --git a/classmrs__lib_1_1geometry_1_1Cone-members.html b/classmrs__lib_1_1geometry_1_1Cone-members.html
new file mode 100644
index 00000000..82c127f4
--- /dev/null
+++ b/classmrs__lib_1_1geometry_1_1Cone-members.html
@@ -0,0 +1,114 @@
+
+
+
+
+
+
+
+mrs_lib: Member List
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
This is the complete list of members for mrs_lib::geometry::Cone , including all inherited members.
+
+
+
+
+
+
diff --git a/classmrs__lib_1_1geometry_1_1Cone.html b/classmrs__lib_1_1geometry_1_1Cone.html
new file mode 100644
index 00000000..a3ec7c4b
--- /dev/null
+++ b/classmrs__lib_1_1geometry_1_1Cone.html
@@ -0,0 +1,352 @@
+
+
+
+
+
+
+
+mrs_lib: mrs_lib::geometry::Cone Class Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
geometric representaiton of a cone
+ More...
+
+
#include <shapes.h >
+
+
+
+ Cone ()
+ constructor without setting the internal variables
+
+
+ ~Cone ()
+ destructor
+
+ Cone (Eigen::Vector3d origin_point, double angle, double height, Eigen::Vector3d orientation)
+ constructor from a given origin point (tip of the cone), angle, height and orientation More...
+
+const Eigen::Vector3d origin () const
+ getter for the tip point More...
+
+const Eigen::Vector3d direction () const
+ getter for the direction. Normalized direction from origin towards base More...
+
+const Eigen::Vector3d center () const
+ getter for the center point. Center point lies in half of the body height More...
+
+double theta () const
+ getter for angle between body height and body side More...
+
+double h () const
+ getter for body height More...
+
+const Ellipse getCap () const
+ getter for the cap of the cone More...
+
+const std::optional< Eigen::Vector3d > projectPoint (const Eigen::Vector3d &point) const
+ Project a 3D point orthogonally onto the Cone surface. More...
+
+
+
+
geometric representaiton of a cone
+
+
+
◆ Cone()
+
+
+
+
+
+ mrs_lib::geometry::Cone::Cone
+ (
+ Eigen::Vector3d
+ origin_point ,
+
+
+
+
+ double
+ angle ,
+
+
+
+
+ double
+ height ,
+
+
+
+
+ Eigen::Vector3d
+ orientation
+
+
+
+ )
+
+
+
+
+
+
constructor from a given origin point (tip of the cone), angle, height and orientation
+
Parameters
+
+ origin_point tip of the cone
+ angle angle between body height and side in radians
+ height distance between tip and base
+ orientation offset from the default orientation. Default orientation is with body height aligned with Z axis, standing on the tip
+
+
+
+
+
+
+
+
+
◆ center()
+
+
+
+
+
+ const Eigen::Vector3d mrs_lib::geometry::Cone::center
+ (
+ )
+ const
+
+
+
+
+
getter for the center point. Center point lies in half of the body height
+
Returns vector3
+
+
+
+
+
◆ direction()
+
+
+
+
+
+ const Eigen::Vector3d mrs_lib::geometry::Cone::direction
+ (
+ )
+ const
+
+
+
+
+
getter for the direction. Normalized direction from origin towards base
+
Returns vector3, normalized
+
+
+
+
+
◆ getCap()
+
+
+
+
+
+ const Ellipse mrs_lib::geometry::Cone::getCap
+ (
+ )
+ const
+
+
+
+
+
getter for the cap of the cone
+
Returns ellipse representing the cap of the cone
+
+
+
+
+
◆ h()
+
+
+
+
+
+ double mrs_lib::geometry::Cone::h
+ (
+ )
+ const
+
+
+
+
+
getter for body height
+
Returns
+
+
+
+
+
◆ origin()
+
+
+
+
+
+ const Eigen::Vector3d mrs_lib::geometry::Cone::origin
+ (
+ )
+ const
+
+
+
+
+
getter for the tip point
+
Returns vector3
+
+
+
+
+
◆ projectPoint()
+
+
+
+
+
+ const std::optional< Eigen::Vector3d > mrs_lib::geometry::Cone::projectPoint
+ (
+ const Eigen::Vector3d &
+ point )
+ const
+
+
+
+
+
Project a 3D point orthogonally onto the Cone surface.
+
Parameters
+
+
+
+
Returns projected point
+
+
+
+
+
◆ theta()
+
+
+
+
+
+ double mrs_lib::geometry::Cone::theta
+ (
+ )
+ const
+
+
+
+
+
getter for angle between body height and body side
+
Returns angle in radians
+
+
+
+
The documentation for this class was generated from the following files:
+include/mrs_lib/geometry/shapes.h
+src/geometry/shapes.cpp
+
+
+
+
+
+
+
diff --git a/classmrs__lib_1_1geometry_1_1Cone.js b/classmrs__lib_1_1geometry_1_1Cone.js
new file mode 100644
index 00000000..a0b72b5e
--- /dev/null
+++ b/classmrs__lib_1_1geometry_1_1Cone.js
@@ -0,0 +1,13 @@
+var classmrs__lib_1_1geometry_1_1Cone =
+[
+ [ "Cone", "classmrs__lib_1_1geometry_1_1Cone.html#a27103a8552d930ae3a3a2513990d9399", null ],
+ [ "~Cone", "classmrs__lib_1_1geometry_1_1Cone.html#ae687be891abfb2db67245cd2c13f8586", null ],
+ [ "Cone", "classmrs__lib_1_1geometry_1_1Cone.html#a078bc613852240cbf2a0adb086d3d127", null ],
+ [ "center", "classmrs__lib_1_1geometry_1_1Cone.html#a2553c04b3dfef8dfceb938699e11f432", null ],
+ [ "direction", "classmrs__lib_1_1geometry_1_1Cone.html#aa973eb3025776015d9e542af7aea730f", null ],
+ [ "getCap", "classmrs__lib_1_1geometry_1_1Cone.html#a2e0546bb5ccb22ee88f1056dccc9a488", null ],
+ [ "h", "classmrs__lib_1_1geometry_1_1Cone.html#a319fa2045f6d56c94f3fa198bd7ae7fc", null ],
+ [ "origin", "classmrs__lib_1_1geometry_1_1Cone.html#a35b559777042218051ff46c3b7353232", null ],
+ [ "projectPoint", "classmrs__lib_1_1geometry_1_1Cone.html#a80223a2934d899aead407545c044e279", null ],
+ [ "theta", "classmrs__lib_1_1geometry_1_1Cone.html#a708721c0fde7cb53e7ba4e585a2d5743", null ]
+];
\ No newline at end of file
diff --git a/classmrs__lib_1_1geometry_1_1Cuboid-members.html b/classmrs__lib_1_1geometry_1_1Cuboid-members.html
new file mode 100644
index 00000000..daa35390
--- /dev/null
+++ b/classmrs__lib_1_1geometry_1_1Cuboid-members.html
@@ -0,0 +1,113 @@
+
+
+
+
+
+
+
+mrs_lib: Member List
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
This is the complete list of members for mrs_lib::geometry::Cuboid , including all inherited members.
+
+ center () constmrs_lib::geometry::Cuboid
+ Cuboid ()mrs_lib::geometry::Cuboid
+ Cuboid (Eigen::Vector3d p0, Eigen::Vector3d p1, Eigen::Vector3d p2, Eigen::Vector3d p3, Eigen::Vector3d p4, Eigen::Vector3d p5, Eigen::Vector3d p6, Eigen::Vector3d p7)mrs_lib::geometry::Cuboid
+ Cuboid (std::vector< Eigen::Vector3d > points)mrs_lib::geometry::Cuboid
+ Cuboid (Eigen::Vector3d center, Eigen::Vector3d size, Eigen::Quaterniond orientation)mrs_lib::geometry::Cuboid
+ getRectangle (int face_idx) constmrs_lib::geometry::Cuboid
+ intersectionRay (Ray r, double epsilon=1e-4) constmrs_lib::geometry::Cuboid
+ vertices () constmrs_lib::geometry::Cuboid
+ ~Cuboid ()mrs_lib::geometry::Cuboid
+
+
+
+
+
+
diff --git a/classmrs__lib_1_1geometry_1_1Cuboid.html b/classmrs__lib_1_1geometry_1_1Cuboid.html
new file mode 100644
index 00000000..f2e5c3ad
--- /dev/null
+++ b/classmrs__lib_1_1geometry_1_1Cuboid.html
@@ -0,0 +1,405 @@
+
+
+
+
+
+
+
+mrs_lib: mrs_lib::geometry::Cuboid Class Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
geometric representation of a cuboid
+ More...
+
+
#include <shapes.h >
+
+
+
+ Cuboid ()
+ constructor for initialization with all points set to [0,0,0]
+
+
+ ~Cuboid ()
+ virtual destructor
+
+ Cuboid (Eigen::Vector3d p0, Eigen::Vector3d p1, Eigen::Vector3d p2, Eigen::Vector3d p3, Eigen::Vector3d p4, Eigen::Vector3d p5, Eigen::Vector3d p6, Eigen::Vector3d p7)
+ constructor from six provided points (vector3) More...
+
+ Cuboid (std::vector< Eigen::Vector3d > points)
+ constructor from a std::vector of provided points More...
+
+ Cuboid (Eigen::Vector3d center , Eigen::Vector3d size, Eigen::Quaterniond orientation)
+ constructor from a provided center point, size and orientation More...
+
+const std::vector< Eigen::Vector3d > vertices () const
+ getter for all vertices (vector3) of this cuboid More...
+
+const Eigen::Vector3d center () const
+ getter for the center point More...
+
+const Rectangle getRectangle (int face_idx) const
+ getter for one side corresponding to a provided index More...
+
+const std::vector< Eigen::Vector3d > intersectionRay (Ray r, double epsilon=1e-4) const
+ calculate the intersection between this cuboid and a provided ray within a given tolerance. Can result in 0, 1 or 2 intersection points More...
+
+
+
+
geometric representation of a cuboid
+
+
+
◆ Cuboid() [1/3]
+
+
+
+
+
+ mrs_lib::geometry::Cuboid::Cuboid
+ (
+ Eigen::Vector3d
+ p0 ,
+
+
+
+
+ Eigen::Vector3d
+ p1 ,
+
+
+
+
+ Eigen::Vector3d
+ p2 ,
+
+
+
+
+ Eigen::Vector3d
+ p3 ,
+
+
+
+
+ Eigen::Vector3d
+ p4 ,
+
+
+
+
+ Eigen::Vector3d
+ p5 ,
+
+
+
+
+ Eigen::Vector3d
+ p6 ,
+
+
+
+
+ Eigen::Vector3d
+ p7
+
+
+
+ )
+
+
+
+
+
+
constructor from six provided points (vector3)
+
Parameters
+
+ p0 vector3
+ p1 vector3
+ p2 vector3
+ p3 vector3
+ p4 vector3
+ p5 vector3
+ p6 vector3
+ p7 vector3
+
+
+
+
+
+
+
+
◆ Cuboid() [2/3]
+
+
+
+
+
+ mrs_lib::geometry::Cuboid::Cuboid
+ (
+ std::vector< Eigen::Vector3d >
+ points )
+
+
+
+
+
+
constructor from a std::vector of provided points
+
Parameters
+
+ points std::vector<vector3>
+
+
+
+
+
+
+
+
◆ Cuboid() [3/3]
+
+
+
+
+
+ mrs_lib::geometry::Cuboid::Cuboid
+ (
+ Eigen::Vector3d
+ center ,
+
+
+
+
+ Eigen::Vector3d
+ size ,
+
+
+
+
+ Eigen::Quaterniond
+ orientation
+
+
+
+ )
+
+
+
+
+
+
constructor from a provided center point, size and orientation
+
Parameters
+
+ center vector3
+ size vector3
+ orientation quaternion
+
+
+
+
+
+
+
+
+
◆ center()
+
+
+
+
+
+ const Eigen::Vector3d mrs_lib::geometry::Cuboid::center
+ (
+ )
+ const
+
+
+
+
+
getter for the center point
+
Returns vector3
+
+
+
+
+
◆ getRectangle()
+
+
+
+
+
+ const Rectangle mrs_lib::geometry::Cuboid::getRectangle
+ (
+ int
+ face_idx )
+ const
+
+
+
+
+
getter for one side corresponding to a provided index
+
Parameters
+
+ face_idx index of the side to lookup points for
+
+
+
+
Returns rectangle representing the cuboid side
+
+
+
+
+
◆ intersectionRay()
+
+
+
+
+
+ const std::vector< Eigen::Vector3d > mrs_lib::geometry::Cuboid::intersectionRay
+ (
+ Ray
+ r ,
+
+
+
+
+ double
+ epsilon = 1e-4
+
+
+
+ )
+ const
+
+
+
+
+
calculate the intersection between this cuboid and a provided ray within a given tolerance. Can result in 0, 1 or 2 intersection points
+
Parameters
+
+ r ray to check intersection with
+ epsilon tolerance for the calculation
+
+
+
+
Returns std::vector<vector3> list of intersection points (depending on the geometry, can yield 0, 1 or 2 points)
+
+
+
+
+
◆ vertices()
+
+
+
+
+
+ const std::vector< Eigen::Vector3d > mrs_lib::geometry::Cuboid::vertices
+ (
+ )
+ const
+
+
+
+
+
getter for all vertices (vector3) of this cuboid
+
Returns std::vector<vector3>
+
+
+
+
The documentation for this class was generated from the following files:
+include/mrs_lib/geometry/shapes.h
+src/geometry/shapes.cpp
+
+
+
+
+
+
+
diff --git a/classmrs__lib_1_1geometry_1_1Cuboid.js b/classmrs__lib_1_1geometry_1_1Cuboid.js
new file mode 100644
index 00000000..db59ce75
--- /dev/null
+++ b/classmrs__lib_1_1geometry_1_1Cuboid.js
@@ -0,0 +1,12 @@
+var classmrs__lib_1_1geometry_1_1Cuboid =
+[
+ [ "Cuboid", "classmrs__lib_1_1geometry_1_1Cuboid.html#a31a698a34b8443596be58a06f3046c79", null ],
+ [ "~Cuboid", "classmrs__lib_1_1geometry_1_1Cuboid.html#a5a78508d282bd8d273d97f3055ae0357", null ],
+ [ "Cuboid", "classmrs__lib_1_1geometry_1_1Cuboid.html#a1dfbd69913658cddfc2394d8cfed8215", null ],
+ [ "Cuboid", "classmrs__lib_1_1geometry_1_1Cuboid.html#adcacc925347e73dbfd81529842ff3c21", null ],
+ [ "Cuboid", "classmrs__lib_1_1geometry_1_1Cuboid.html#a34b3cc64de7244e0b3ac2f71cdb22d95", null ],
+ [ "center", "classmrs__lib_1_1geometry_1_1Cuboid.html#a7ce6626c7018bdae2722073490c1729f", null ],
+ [ "getRectangle", "classmrs__lib_1_1geometry_1_1Cuboid.html#a4279ad2916689b183e9647fbede9bcfb", null ],
+ [ "intersectionRay", "classmrs__lib_1_1geometry_1_1Cuboid.html#adfde2a501c9806bd6e6e99dcf0cac6ff", null ],
+ [ "vertices", "classmrs__lib_1_1geometry_1_1Cuboid.html#ae03413de879b1dd07df7a8f26b0a75f2", null ]
+];
\ No newline at end of file
diff --git a/classmrs__lib_1_1geometry_1_1Cylinder-members.html b/classmrs__lib_1_1geometry_1_1Cylinder-members.html
new file mode 100644
index 00000000..afbd26d7
--- /dev/null
+++ b/classmrs__lib_1_1geometry_1_1Cylinder-members.html
@@ -0,0 +1,114 @@
+
+
+
+
+
+
+
+mrs_lib: Member List
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
This is the complete list of members for mrs_lib::geometry::Cylinder , including all inherited members.
+
+
+
+
+
+
diff --git a/classmrs__lib_1_1geometry_1_1Cylinder.html b/classmrs__lib_1_1geometry_1_1Cylinder.html
new file mode 100644
index 00000000..03601ed4
--- /dev/null
+++ b/classmrs__lib_1_1geometry_1_1Cylinder.html
@@ -0,0 +1,315 @@
+
+
+
+
+
+
+
+mrs_lib: mrs_lib::geometry::Cylinder Class Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
geometric representation of a cylinder
+ More...
+
+
#include <shapes.h >
+
+
+ enum { BOTTOM = 0,
+TOP = 1
+ }
+ cap indexing
+
+
+
+
+ Cylinder ()
+ constructor without setting the internal variables
+
+
+ ~Cylinder ()
+ destructor
+
+ Cylinder (Eigen::Vector3d center , double radius, double height, Eigen::Quaterniond orientation )
+ constructor using a given center point, radius, height and orietnation More...
+
+const Eigen::Vector3d center () const
+ getter for the center point More...
+
+const Eigen::Quaterniond orientation () const
+ getter for the orientation More...
+
+double r () const
+ getter for cap radius More...
+
+double h () const
+ getter for the body height More...
+
+const Ellipse getCap (int index) const
+ getter for a cap corresponding to a provided index More...
+
+
+
+
geometric representation of a cylinder
+
+
+
◆ Cylinder()
+
+
+
+
+
+ mrs_lib::geometry::Cylinder::Cylinder
+ (
+ Eigen::Vector3d
+ center ,
+
+
+
+
+ double
+ radius ,
+
+
+
+
+ double
+ height ,
+
+
+
+
+ Eigen::Quaterniond
+ orientation
+
+
+
+ )
+
+
+
+
+
+
constructor using a given center point, radius, height and orietnation
+
Parameters
+
+ center geometric center in the middle of body height
+ radius radius of the cap
+ height distance between caps
+ orientation quaternion
+
+
+
+
+
+
+
+
+
◆ center()
+
+
+
+
+
+ const Eigen::Vector3d mrs_lib::geometry::Cylinder::center
+ (
+ )
+ const
+
+
+
+
+
getter for the center point
+
Returns vector3
+
+
+
+
+
◆ getCap()
+
+
+
+
+
+ const Ellipse mrs_lib::geometry::Cylinder::getCap
+ (
+ int
+ index )
+ const
+
+
+
+
+
getter for a cap corresponding to a provided index
+
Parameters
+
+
+
+
Returns ellipse representing the cap
+
+
+
+
+
◆ h()
+
+
+
+
+
+ double mrs_lib::geometry::Cylinder::h
+ (
+ )
+ const
+
+
+
+
+
getter for the body height
+
Returns body height
+
+
+
+
+
◆ orientation()
+
+
+
+
+
+ const Eigen::Quaterniond mrs_lib::geometry::Cylinder::orientation
+ (
+ )
+ const
+
+
+
+
+
getter for the orientation
+
Returns quaternion
+
+
+
+
+
◆ r()
+
+
+
+
+
+ double mrs_lib::geometry::Cylinder::r
+ (
+ )
+ const
+
+
+
+
+
getter for cap radius
+
Returns radius of the cap
+
+
+
+
The documentation for this class was generated from the following files:
+include/mrs_lib/geometry/shapes.h
+src/geometry/shapes.cpp
+
+
+
+
+
+
+
diff --git a/classmrs__lib_1_1geometry_1_1Cylinder.js b/classmrs__lib_1_1geometry_1_1Cylinder.js
new file mode 100644
index 00000000..c9eca599
--- /dev/null
+++ b/classmrs__lib_1_1geometry_1_1Cylinder.js
@@ -0,0 +1,13 @@
+var classmrs__lib_1_1geometry_1_1Cylinder =
+[
+ [ "BOTTOM", "classmrs__lib_1_1geometry_1_1Cylinder.html#a5546b5ccb1073d1ced17e242137e9366a19aca8f1f4fd2193d246c741c6328aae", null ],
+ [ "TOP", "classmrs__lib_1_1geometry_1_1Cylinder.html#a5546b5ccb1073d1ced17e242137e9366abbf05c17c362c360fcdf14aa1cf61922", null ],
+ [ "Cylinder", "classmrs__lib_1_1geometry_1_1Cylinder.html#ae4b5f3500ae892f398ab88f5e545e0aa", null ],
+ [ "~Cylinder", "classmrs__lib_1_1geometry_1_1Cylinder.html#a9a558196740fd2be133a3c2df7173f4f", null ],
+ [ "Cylinder", "classmrs__lib_1_1geometry_1_1Cylinder.html#a868fdc0baa204d3bf78d614b532aa32e", null ],
+ [ "center", "classmrs__lib_1_1geometry_1_1Cylinder.html#a766270eba57b916335ad0901fec74355", null ],
+ [ "getCap", "classmrs__lib_1_1geometry_1_1Cylinder.html#a9730caea8c6bd44467038a8e04212fe6", null ],
+ [ "h", "classmrs__lib_1_1geometry_1_1Cylinder.html#a730fee04b106aa4ec3fe08be6bb90751", null ],
+ [ "orientation", "classmrs__lib_1_1geometry_1_1Cylinder.html#aa7eccea15c92f1df02fc48684bb4d219", null ],
+ [ "r", "classmrs__lib_1_1geometry_1_1Cylinder.html#aa442455784da2246f8bc25aa0eccadbb", null ]
+];
\ No newline at end of file
diff --git a/classmrs__lib_1_1geometry_1_1Ellipse-members.html b/classmrs__lib_1_1geometry_1_1Ellipse-members.html
new file mode 100644
index 00000000..1e2a772b
--- /dev/null
+++ b/classmrs__lib_1_1geometry_1_1Ellipse-members.html
@@ -0,0 +1,111 @@
+
+
+
+
+
+
+
+mrs_lib: Member List
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
This is the complete list of members for mrs_lib::geometry::Ellipse , including all inherited members.
+
+
+
+
+
+
diff --git a/classmrs__lib_1_1geometry_1_1Ellipse.html b/classmrs__lib_1_1geometry_1_1Ellipse.html
new file mode 100644
index 00000000..80d004f2
--- /dev/null
+++ b/classmrs__lib_1_1geometry_1_1Ellipse.html
@@ -0,0 +1,276 @@
+
+
+
+
+
+
+
+mrs_lib: mrs_lib::geometry::Ellipse Class Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
geometric representation of an ellipse
+ More...
+
+
#include <shapes.h >
+
+
+
+ Ellipse ()
+ constructor for initialization without setting internal variables
+
+
+ ~Ellipse ()
+ destructor
+
+ Ellipse (Eigen::Vector3d center , Eigen::Quaterniond orientation , double a , double b )
+ constructor using a provided center point, orientation, major semi-axis length and minor semi-axis length More...
+
+double a () const
+ getter for major semi-axis More...
+
+double b () const
+ getter for minor semi-axis More...
+
+const Eigen::Vector3d center () const
+ getter for the center point More...
+
+const Eigen::Quaterniond orientation () const
+ getter for the orientation More...
+
+
+
+
geometric representation of an ellipse
+
+
+
◆ Ellipse()
+
+
+
+
+
+ mrs_lib::geometry::Ellipse::Ellipse
+ (
+ Eigen::Vector3d
+ center ,
+
+
+
+
+ Eigen::Quaterniond
+ orientation ,
+
+
+
+
+ double
+ a ,
+
+
+
+
+ double
+ b
+
+
+
+ )
+
+
+
+
+
+
constructor using a provided center point, orientation, major semi-axis length and minor semi-axis length
+
Parameters
+
+ center vector3
+ orientation quaternion
+ a major semi-axis length
+ b minor semi-axis length
+
+
+
+
+
+
+
+
+
◆ a()
+
+
+
+
+
+ double mrs_lib::geometry::Ellipse::a
+ (
+ )
+ const
+
+
+
+
+
getter for major semi-axis
+
Returns length of major semi-axis
+
+
+
+
+
◆ b()
+
+
+
+
+
+ double mrs_lib::geometry::Ellipse::b
+ (
+ )
+ const
+
+
+
+
+
getter for minor semi-axis
+
Returns length of minor semi-axis
+
+
+
+
+
◆ center()
+
+
+
+
+
+ const Eigen::Vector3d mrs_lib::geometry::Ellipse::center
+ (
+ )
+ const
+
+
+
+
+
getter for the center point
+
Returns vector3
+
+
+
+
+
◆ orientation()
+
+
+
+
+
+ const Eigen::Quaterniond mrs_lib::geometry::Ellipse::orientation
+ (
+ )
+ const
+
+
+
+
+
getter for the orientation
+
Returns quaternion
+
+
+
+
The documentation for this class was generated from the following files:
+include/mrs_lib/geometry/shapes.h
+src/geometry/shapes.cpp
+
+
+
+
+
+
+
diff --git a/classmrs__lib_1_1geometry_1_1Ellipse.js b/classmrs__lib_1_1geometry_1_1Ellipse.js
new file mode 100644
index 00000000..cf01bda4
--- /dev/null
+++ b/classmrs__lib_1_1geometry_1_1Ellipse.js
@@ -0,0 +1,10 @@
+var classmrs__lib_1_1geometry_1_1Ellipse =
+[
+ [ "Ellipse", "classmrs__lib_1_1geometry_1_1Ellipse.html#ab891e8f86df11bb34f0571ebeb136c2a", null ],
+ [ "~Ellipse", "classmrs__lib_1_1geometry_1_1Ellipse.html#a973caa18f7b0c2e41b263a4267914650", null ],
+ [ "Ellipse", "classmrs__lib_1_1geometry_1_1Ellipse.html#ad64c67ccd7e0c21b5698a6791adf6831", null ],
+ [ "a", "classmrs__lib_1_1geometry_1_1Ellipse.html#aee622887a91b50f8fa8bbd476614006e", null ],
+ [ "b", "classmrs__lib_1_1geometry_1_1Ellipse.html#ab42e4c580aeda44204c5854e1ccd4513", null ],
+ [ "center", "classmrs__lib_1_1geometry_1_1Ellipse.html#a058c83435e1cf0f393c1bde54e94f570", null ],
+ [ "orientation", "classmrs__lib_1_1geometry_1_1Ellipse.html#a65f59ca228eea37a914ce0d6d6695b2d", null ]
+];
\ No newline at end of file
diff --git a/classmrs__lib_1_1geometry_1_1Ray-members.html b/classmrs__lib_1_1geometry_1_1Ray-members.html
new file mode 100644
index 00000000..4e6f69ee
--- /dev/null
+++ b/classmrs__lib_1_1geometry_1_1Ray-members.html
@@ -0,0 +1,112 @@
+
+
+
+
+
+
+
+mrs_lib: Member List
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
This is the complete list of members for mrs_lib::geometry::Ray , including all inherited members.
+
+
+
+
+
+
diff --git a/classmrs__lib_1_1geometry_1_1Ray.html b/classmrs__lib_1_1geometry_1_1Ray.html
new file mode 100644
index 00000000..37239095
--- /dev/null
+++ b/classmrs__lib_1_1geometry_1_1Ray.html
@@ -0,0 +1,341 @@
+
+
+
+
+
+
+
+mrs_lib: mrs_lib::geometry::Ray Class Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
geometric representation of a ray. Instantiate it by two input Vector3. Use static methods for from-to raycast, or a point-direction raycast.
+ More...
+
+
#include <shapes.h >
+
+
+
+ Ray ()
+ constructor without initialization of internal variables
+
+
+ ~Ray ()
+ destructor
+
+ Ray (Eigen::Vector3d p1 , Eigen::Vector3d p2 )
+ default constructor More...
+
+const Eigen::Vector3d p1 () const
+ get the origin point More...
+
+const Eigen::Vector3d p2 () const
+ get the end point More...
+
+const Eigen::Vector3d direction () const
+ get the direction of ray (normalized) More...
+
+
+
+static Ray twopointCast (Eigen::Vector3d pointFrom, Eigen::Vector3d pointTo)
+ static method for generating new rays by raycasting from-to More...
+
+static Ray directionCast (Eigen::Vector3d origin, Eigen::Vector3d direction )
+ static method for generating new rays by raycasting origin-direction More...
+
+
+
+
geometric representation of a ray. Instantiate it by two input Vector3. Use static methods for from-to raycast, or a point-direction raycast.
+
+
+
◆ Ray()
+
+
+
+
+
+ mrs_lib::geometry::Ray::Ray
+ (
+ Eigen::Vector3d
+ p1 ,
+
+
+
+
+ Eigen::Vector3d
+ p2
+
+
+
+ )
+
+
+
+
+
+
default constructor
+
Parameters
+
+ p1 origin of the ray
+ p2 endpoint of the ray
+
+
+
+
+
+
+
+
+
◆ direction()
+
+
+
+
+
+ const Eigen::Vector3d mrs_lib::geometry::Ray::direction
+ (
+ )
+ const
+
+
+
+
+
get the direction of ray (normalized)
+
Returns direction (normalized)
+
+
+
+
+
◆ directionCast()
+
+
+
+
+
+
+
+
+ Ray mrs_lib::geometry::Ray::directionCast
+ (
+ Eigen::Vector3d
+ origin ,
+
+
+
+
+ Eigen::Vector3d
+ direction
+
+
+
+ )
+
+
+
+
+
+static
+
+
+
+
+
static method for generating new rays by raycasting origin-direction
+
Parameters
+
+ origin origin of the ray
+ direction of the ray
+
+
+
+
Returns new Ray instance created by raycasting
+
+
+
+
+
◆ p1()
+
+
+
+
+
+ const Eigen::Vector3d mrs_lib::geometry::Ray::p1
+ (
+ )
+ const
+
+
+
+
+
get the origin point
+
Returns ray origin point
+
+
+
+
+
◆ p2()
+
+
+
+
+
+ const Eigen::Vector3d mrs_lib::geometry::Ray::p2
+ (
+ )
+ const
+
+
+
+
+
get the end point
+
Returns ray end point
+
+
+
+
+
◆ twopointCast()
+
+
+
+
+
+
+
+
+ Ray mrs_lib::geometry::Ray::twopointCast
+ (
+ Eigen::Vector3d
+ pointFrom ,
+
+
+
+
+ Eigen::Vector3d
+ pointTo
+
+
+
+ )
+
+
+
+
+
+static
+
+
+
+
+
static method for generating new rays by raycasting from-to
+
Parameters
+
+ pointFrom origin of the ray
+ pointTo endpoint of the ray
+
+
+
+
Returns new Ray instance created by raycasting
+
+
+
+
The documentation for this class was generated from the following files:
+include/mrs_lib/geometry/shapes.h
+src/geometry/shapes.cpp
+
+
+
+
+
+
+
diff --git a/classmrs__lib_1_1geometry_1_1Ray.js b/classmrs__lib_1_1geometry_1_1Ray.js
new file mode 100644
index 00000000..27db87bf
--- /dev/null
+++ b/classmrs__lib_1_1geometry_1_1Ray.js
@@ -0,0 +1,9 @@
+var classmrs__lib_1_1geometry_1_1Ray =
+[
+ [ "Ray", "classmrs__lib_1_1geometry_1_1Ray.html#aa0bff9427d14806607b5689f1d71604d", null ],
+ [ "~Ray", "classmrs__lib_1_1geometry_1_1Ray.html#ad79e6fdb9416510694f14fd92ca41c7a", null ],
+ [ "Ray", "classmrs__lib_1_1geometry_1_1Ray.html#ab7466369083c82552f805fb20a16a8aa", null ],
+ [ "direction", "classmrs__lib_1_1geometry_1_1Ray.html#a01b7ff2bb88b61c178f4991c8cd847bf", null ],
+ [ "p1", "classmrs__lib_1_1geometry_1_1Ray.html#a8591c6b82a120832a7ed349fbd90163a", null ],
+ [ "p2", "classmrs__lib_1_1geometry_1_1Ray.html#a7c830a43aa9550ef6d7b798dcb69f3f5", null ]
+];
\ No newline at end of file
diff --git a/classmrs__lib_1_1geometry_1_1Rectangle-members.html b/classmrs__lib_1_1geometry_1_1Rectangle-members.html
new file mode 100644
index 00000000..f2045511
--- /dev/null
+++ b/classmrs__lib_1_1geometry_1_1Rectangle-members.html
@@ -0,0 +1,119 @@
+
+
+
+
+
+
+
+mrs_lib: Member List
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
This is the complete list of members for mrs_lib::geometry::Rectangle , including all inherited members.
+
+
+
+
+
+
diff --git a/classmrs__lib_1_1geometry_1_1Rectangle.html b/classmrs__lib_1_1geometry_1_1Rectangle.html
new file mode 100644
index 00000000..3db2197b
--- /dev/null
+++ b/classmrs__lib_1_1geometry_1_1Rectangle.html
@@ -0,0 +1,498 @@
+
+
+
+
+
+
+
+mrs_lib: mrs_lib::geometry::Rectangle Class Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
geometric representation of a rectangle (can represent any quadrilateral)
+ More...
+
+
#include <shapes.h >
+
+
+
+ Rectangle ()
+ constructor for initialization with points set to [0,0,0], [1,0,0], [1,1,0] and [0,1,0]
+
+
+ ~Rectangle ()
+ destructor
+
+ Rectangle (std::vector< Eigen::Vector3d > points)
+ constructor using a std::vector of points (vector3). Provide points in a counter-clockwise order for correct behavior More...
+
+ Rectangle (Eigen::Vector3d a , Eigen::Vector3d b , Eigen::Vector3d c , Eigen::Vector3d d )
+ constructor using four points (vector3). Provide points in a counter-clockwise order for correct behavior More...
+
+const Eigen::Vector3d a () const
+ getter for first point More...
+
+const Eigen::Vector3d b () const
+ getter for the second point More...
+
+const Eigen::Vector3d c () const
+ getter for the third point More...
+
+const Eigen::Vector3d d () const
+ getter for the fourth point More...
+
+const Eigen::Vector3d center () const
+ getter for center point More...
+
+const Eigen::Vector3d normal () const
+ getter for the normal vector. It originates in the center of the Rectangle , length is normalized, orientation follows the right-hand rule, assuiming the points are provided in counter-clockwise order More...
+
+const std::vector< Eigen::Vector3d > vertices () const
+ getter for all the points of this rectangle provided as std::vector More...
+
+const std::vector< Triangle > triangles () const
+ getter for the triangles forming this rectangle More...
+
+const boost::optional< Eigen::Vector3d > intersectionRay (Ray r, double epsilon=1e-4) const
+ calculate an intersection of this rectangle with a given ray with given tolerance More...
+
+bool isFacing (Eigen::Vector3d point) const
+ check if the normal is facing a given point, i.e. if the point lies in the same half-space as the rectangle normal More...
+
+double solidAngleRelativeTo (Eigen::Vector3d point) const
+ compute the solid angle of this rectangle relative to a given sphere center More...
+
+
+
+
geometric representation of a rectangle (can represent any quadrilateral)
+
+
+
◆ Rectangle() [1/2]
+
+
+
+
+
+ mrs_lib::geometry::Rectangle::Rectangle
+ (
+ std::vector< Eigen::Vector3d >
+ points )
+
+
+
+
+
+
constructor using a std::vector of points (vector3). Provide points in a counter-clockwise order for correct behavior
+
Parameters
+
+ points std::vector of points in 3d
+
+
+
+
+
+
+
+
◆ Rectangle() [2/2]
+
+
+
+
+
+ mrs_lib::geometry::Rectangle::Rectangle
+ (
+ Eigen::Vector3d
+ a ,
+
+
+
+
+ Eigen::Vector3d
+ b ,
+
+
+
+
+ Eigen::Vector3d
+ c ,
+
+
+
+
+ Eigen::Vector3d
+ d
+
+
+
+ )
+
+
+
+
+
+
constructor using four points (vector3). Provide points in a counter-clockwise order for correct behavior
+
Parameters
+
+
+
+
+
+
+
+
+
◆ a()
+
+
+
+
+
+ const Eigen::Vector3d mrs_lib::geometry::Rectangle::a
+ (
+ )
+ const
+
+
+
+
+
getter for first point
+
Returns 1st point (vector3)
+
+
+
+
+
◆ b()
+
+
+
+
+
+ const Eigen::Vector3d mrs_lib::geometry::Rectangle::b
+ (
+ )
+ const
+
+
+
+
+
getter for the second point
+
Returns 2nd point (vector3)
+
+
+
+
+
◆ c()
+
+
+
+
+
+ const Eigen::Vector3d mrs_lib::geometry::Rectangle::c
+ (
+ )
+ const
+
+
+
+
+
getter for the third point
+
Returns 3rd point (vector3)
+
+
+
+
+
◆ center()
+
+
+
+
+
+ const Eigen::Vector3d mrs_lib::geometry::Rectangle::center
+ (
+ )
+ const
+
+
+
+
+
getter for center point
+
Returns center point (vector3)
+
+
+
+
+
◆ d()
+
+
+
+
+
+ const Eigen::Vector3d mrs_lib::geometry::Rectangle::d
+ (
+ )
+ const
+
+
+
+
+
getter for the fourth point
+
Returns 4th point (vector3)
+
+
+
+
+
◆ intersectionRay()
+
+
+
+
+
+ const boost::optional< Eigen::Vector3d > mrs_lib::geometry::Rectangle::intersectionRay
+ (
+ Ray
+ r ,
+
+
+
+
+ double
+ epsilon = 1e-4
+
+
+
+ )
+ const
+
+
+
+
+
calculate an intersection of this rectangle with a given ray with given tolerance
+
Parameters
+
+ r ray to calculate intersection with
+ epsilon calculation tolerance
+
+
+
+
Returns vector3 intersection if exists, boost::none if no intersection is found
+
+
+
+
+
◆ isFacing()
+
+
+
+
+
+ bool mrs_lib::geometry::Rectangle::isFacing
+ (
+ Eigen::Vector3d
+ point )
+ const
+
+
+
+
+
check if the normal is facing a given point, i.e. if the point lies in the same half-space as the rectangle normal
+
Parameters
+
+ point vector3 to check against
+
+
+
+
Returns true if the normal is facing given point. Returns false for angle >= 90 degrees
+
+
+
+
+
◆ normal()
+
+
+
+
+
+ const Eigen::Vector3d mrs_lib::geometry::Rectangle::normal
+ (
+ )
+ const
+
+
+
+
+
getter for the normal vector. It originates in the center of the Rectangle , length is normalized, orientation follows the right-hand rule, assuiming the points are provided in counter-clockwise order
+
Returns normal vector3
+
+
+
+
+
◆ solidAngleRelativeTo()
+
+
+
+
+
+ double mrs_lib::geometry::Rectangle::solidAngleRelativeTo
+ (
+ Eigen::Vector3d
+ point )
+ const
+
+
+
+
+
compute the solid angle of this rectangle relative to a given sphere center
+
Parameters
+
+ point center of a sphere to compute the solid angle for
+
+
+
+
Returns solid angle in steradians
+
+
+
+
+
◆ triangles()
+
+
+
+
+
+ const std::vector< Triangle > mrs_lib::geometry::Rectangle::triangles
+ (
+ )
+ const
+
+
+
+
+
getter for the triangles forming this rectangle
+
Returns std::vector of triangles
+
+
+
+
+
◆ vertices()
+
+
+
+
+
+ const std::vector< Eigen::Vector3d > mrs_lib::geometry::Rectangle::vertices
+ (
+ )
+ const
+
+
+
+
+
getter for all the points of this rectangle provided as std::vector
+
Returns std::vector of points (vector3)
+
+
+
+
The documentation for this class was generated from the following files:
+include/mrs_lib/geometry/shapes.h
+src/geometry/shapes.cpp
+
+
+
+
+
+
+
diff --git a/classmrs__lib_1_1geometry_1_1Rectangle.js b/classmrs__lib_1_1geometry_1_1Rectangle.js
new file mode 100644
index 00000000..20d66be7
--- /dev/null
+++ b/classmrs__lib_1_1geometry_1_1Rectangle.js
@@ -0,0 +1,18 @@
+var classmrs__lib_1_1geometry_1_1Rectangle =
+[
+ [ "Rectangle", "classmrs__lib_1_1geometry_1_1Rectangle.html#af119a484beb0dbae7dd0a9a2d5f5123d", null ],
+ [ "~Rectangle", "classmrs__lib_1_1geometry_1_1Rectangle.html#a66d9286f92d6f8ea5c7ebc7400cb29be", null ],
+ [ "Rectangle", "classmrs__lib_1_1geometry_1_1Rectangle.html#a3b85d8ba9c03a1b2962eda68293da077", null ],
+ [ "Rectangle", "classmrs__lib_1_1geometry_1_1Rectangle.html#a707a6df742b90d626e5321a4324d75fd", null ],
+ [ "a", "classmrs__lib_1_1geometry_1_1Rectangle.html#a5370711517c0449167cfd0efaee8e821", null ],
+ [ "b", "classmrs__lib_1_1geometry_1_1Rectangle.html#a82cb0598bd97e772d5fdbeeb5fde3657", null ],
+ [ "c", "classmrs__lib_1_1geometry_1_1Rectangle.html#a9cd35540a57a2b0663a2a4b360e02d8c", null ],
+ [ "center", "classmrs__lib_1_1geometry_1_1Rectangle.html#ab541a2748c4876234b4af0f3c220fb2d", null ],
+ [ "d", "classmrs__lib_1_1geometry_1_1Rectangle.html#aec6ae68b84c5a24580068fbc70a9452d", null ],
+ [ "intersectionRay", "classmrs__lib_1_1geometry_1_1Rectangle.html#a0b92252c39c755b3a7cba989fbb5c854", null ],
+ [ "isFacing", "classmrs__lib_1_1geometry_1_1Rectangle.html#a62a1b7d39bd141d4c38d8079d43ffe02", null ],
+ [ "normal", "classmrs__lib_1_1geometry_1_1Rectangle.html#a5cf41dfd6e82f02c8bcc18bc134d235b", null ],
+ [ "solidAngleRelativeTo", "classmrs__lib_1_1geometry_1_1Rectangle.html#a803dbb3eb6f8a24146bd4c01877769ce", null ],
+ [ "triangles", "classmrs__lib_1_1geometry_1_1Rectangle.html#a4f2e1bce541675c91179b723aa4f9176", null ],
+ [ "vertices", "classmrs__lib_1_1geometry_1_1Rectangle.html#a05fbbe3a262e09d5834431bc31f2648b", null ]
+];
\ No newline at end of file
diff --git a/classmrs__lib_1_1geometry_1_1Triangle-members.html b/classmrs__lib_1_1geometry_1_1Triangle-members.html
new file mode 100644
index 00000000..85c2d158
--- /dev/null
+++ b/classmrs__lib_1_1geometry_1_1Triangle-members.html
@@ -0,0 +1,114 @@
+
+
+
+
+
+
+
+mrs_lib: Member List
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
This is the complete list of members for mrs_lib::geometry::Triangle , including all inherited members.
+
+
+
+
+
+
diff --git a/classmrs__lib_1_1geometry_1_1Triangle.html b/classmrs__lib_1_1geometry_1_1Triangle.html
new file mode 100644
index 00000000..6d97953c
--- /dev/null
+++ b/classmrs__lib_1_1geometry_1_1Triangle.html
@@ -0,0 +1,356 @@
+
+
+
+
+
+
+
+mrs_lib: mrs_lib::geometry::Triangle Class Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
geometric representation of a triangle. Instantiate a new triangle by providing three vertices
+ More...
+
+
#include <shapes.h >
+
+
+
+ Triangle ()
+ constructor for initialization with default values (points [0,0,0], [1,0,0] and [0,0,1]
+
+
+ ~Triangle ()
+ destructor
+
+ Triangle (Eigen::Vector3d a , Eigen::Vector3d b , Eigen::Vector3d c )
+ default constructor for creating a new triangle from given vertices More...
+
+const Eigen::Vector3d a () const
+ getter for first point More...
+
+const Eigen::Vector3d b () const
+ getter for second point More...
+
+const Eigen::Vector3d c () const
+ getter for third point More...
+
+const Eigen::Vector3d center () const
+ get position on the triangle center More...
+
+const Eigen::Vector3d normal () const
+ get normal vector of this triangle. The vector origin is placed at triangle center, length is normalized and direction follows the right-hand rule with respect to vertex order a-b-c More...
+
+const std::vector< Eigen::Vector3d > vertices () const
+ get a vector of all vertices More...
+
+const boost::optional< Eigen::Vector3d > intersectionRay (Ray r, double epsilon=1e-4) const
+ calculate an intersection of this triangle with a given ray with given tolerance More...
+
+
+
+
geometric representation of a triangle. Instantiate a new triangle by providing three vertices
+
+
+
◆ Triangle()
+
+
+
+
+
+ mrs_lib::geometry::Triangle::Triangle
+ (
+ Eigen::Vector3d
+ a ,
+
+
+
+
+ Eigen::Vector3d
+ b ,
+
+
+
+
+ Eigen::Vector3d
+ c
+
+
+
+ )
+
+
+
+
+
+
default constructor for creating a new triangle from given vertices
+
Parameters
+
+
+
+
+
+
+
+
+
◆ a()
+
+
+
+
+
+ const Eigen::Vector3d mrs_lib::geometry::Triangle::a
+ (
+ )
+ const
+
+
+
+
+
getter for first point
+
Returns 1st point (vector3)
+
+
+
+
+
◆ b()
+
+
+
+
+
+ const Eigen::Vector3d mrs_lib::geometry::Triangle::b
+ (
+ )
+ const
+
+
+
+
+
getter for second point
+
Returns 2nd point (vector3)
+
+
+
+
+
◆ c()
+
+
+
+
+
+ const Eigen::Vector3d mrs_lib::geometry::Triangle::c
+ (
+ )
+ const
+
+
+
+
+
getter for third point
+
Returns 3rd point (vector3)
+
+
+
+
+
◆ center()
+
+
+
+
+
+ const Eigen::Vector3d mrs_lib::geometry::Triangle::center
+ (
+ )
+ const
+
+
+
+
+
get position on the triangle center
+
Returns vector3
+
+
+
+
+
◆ intersectionRay()
+
+
+
+
+
+ const boost::optional< Eigen::Vector3d > mrs_lib::geometry::Triangle::intersectionRay
+ (
+ Ray
+ r ,
+
+
+
+
+ double
+ epsilon = 1e-4
+
+
+
+ )
+ const
+
+
+
+
+
calculate an intersection of this triangle with a given ray with given tolerance
+
Parameters
+
+ r ray to calculate intersection with
+ epsilon calculation tolerance
+
+
+
+
Returns vector3 intersection if exists, boost::none if no intersection is found
+
+
+
+
+
◆ normal()
+
+
+
+
+
+ const Eigen::Vector3d mrs_lib::geometry::Triangle::normal
+ (
+ )
+ const
+
+
+
+
+
get normal vector of this triangle. The vector origin is placed at triangle center, length is normalized and direction follows the right-hand rule with respect to vertex order a-b-c
+
Returns vector3
+
+
+
+
+
◆ vertices()
+
+
+
+
+
+ const std::vector< Eigen::Vector3d > mrs_lib::geometry::Triangle::vertices
+ (
+ )
+ const
+
+
+
+
+
get a vector of all vertices
+
Returns std::vector<vector3>
+
+
+
+
The documentation for this class was generated from the following files:
+include/mrs_lib/geometry/shapes.h
+src/geometry/shapes.cpp
+
+
+
+
+
+
+
diff --git a/classmrs__lib_1_1geometry_1_1Triangle.js b/classmrs__lib_1_1geometry_1_1Triangle.js
new file mode 100644
index 00000000..712c47c1
--- /dev/null
+++ b/classmrs__lib_1_1geometry_1_1Triangle.js
@@ -0,0 +1,13 @@
+var classmrs__lib_1_1geometry_1_1Triangle =
+[
+ [ "Triangle", "classmrs__lib_1_1geometry_1_1Triangle.html#a14203384b0eb6d3a7ff01330ab24f679", null ],
+ [ "~Triangle", "classmrs__lib_1_1geometry_1_1Triangle.html#ad5cc0e9eb09f9f4900f94fa1908b60f3", null ],
+ [ "Triangle", "classmrs__lib_1_1geometry_1_1Triangle.html#af765e8be7fef5ae4cfb972ec51c4a6e8", null ],
+ [ "a", "classmrs__lib_1_1geometry_1_1Triangle.html#abd847d705725f4dffa10e6e00ba5f24c", null ],
+ [ "b", "classmrs__lib_1_1geometry_1_1Triangle.html#a6ac4e01a62fbb343d177bf47b3d38219", null ],
+ [ "c", "classmrs__lib_1_1geometry_1_1Triangle.html#aff6f8fb09fb5e7d4ebf2116142b85638", null ],
+ [ "center", "classmrs__lib_1_1geometry_1_1Triangle.html#a419f55d2c47dac6035495004fec746c9", null ],
+ [ "intersectionRay", "classmrs__lib_1_1geometry_1_1Triangle.html#a94238065a0e8d0c27135f55e1daa4ed3", null ],
+ [ "normal", "classmrs__lib_1_1geometry_1_1Triangle.html#ac9b355e443d37f91d83ab76bbfa35aa6", null ],
+ [ "vertices", "classmrs__lib_1_1geometry_1_1Triangle.html#ad873b5c4ba04613f24dd12348f898487", null ]
+];
\ No newline at end of file
diff --git a/classmrs__lib_1_1varstepLKF-members.html b/classmrs__lib_1_1varstepLKF-members.html
new file mode 100644
index 00000000..cb0d11be
--- /dev/null
+++ b/classmrs__lib_1_1varstepLKF-members.html
@@ -0,0 +1,138 @@
+
+
+
+
+
+
+
+mrs_lib: Member List
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
This is the complete list of members for mrs_lib::varstepLKF< n_states, n_inputs, n_measurements > , including all inherited members.
+
+ A mrs_lib::LKF< n_states, n_inputs, n_measurements >
+ A_t typedef (defined in mrs_lib::varstepLKF< n_states, n_inputs, n_measurements > )mrs_lib::varstepLKF< n_states, n_inputs, n_measurements >
+ B mrs_lib::LKF< n_states, n_inputs, n_measurements >
+ B_t typedef (defined in mrs_lib::varstepLKF< n_states, n_inputs, n_measurements > )mrs_lib::varstepLKF< n_states, n_inputs, n_measurements >
+ Base_class typedef (defined in mrs_lib::varstepLKF< n_states, n_inputs, n_measurements > )mrs_lib::varstepLKF< n_states, n_inputs, n_measurements >
+ computeKalmanGain (const statecov_t &sc, [[maybe_unused]] const z_t &z, const R_t &R, const H_t &H) const (defined in mrs_lib::LKF< n_states, n_inputs, n_measurements > )mrs_lib::LKF< n_states, n_inputs, n_measurements > inline protected virtual
+ correct (const statecov_t &sc, const z_t &z, const R_t &R) const overridemrs_lib::LKF< n_states, n_inputs, n_measurements > inline virtual
+ mrs_lib::KalmanFilter::correct (const statecov_t &sc, const z_t &z, const R_t &R) const =0mrs_lib::KalmanFilter< n_states, n_inputs, n_measurements > pure virtual
+ correction_impl (const statecov_t &sc, const z_t &z, const R_t &R, const H_t &H) const (defined in mrs_lib::LKF< n_states, n_inputs, n_measurements > )mrs_lib::LKF< n_states, n_inputs, n_measurements > inline protected
+ covariance_predict (const A_t &A, const P_t &P, const Q_t &Q, const double dt) (defined in mrs_lib::LKF< n_states, n_inputs, n_measurements > )mrs_lib::LKF< n_states, n_inputs, n_measurements > inline protected static
+ generateA_t typedef (defined in mrs_lib::varstepLKF< n_states, n_inputs, n_measurements > )mrs_lib::varstepLKF< n_states, n_inputs, n_measurements >
+ generateB_t typedef (defined in mrs_lib::varstepLKF< n_states, n_inputs, n_measurements > )mrs_lib::varstepLKF< n_states, n_inputs, n_measurements >
+ H mrs_lib::LKF< n_states, n_inputs, n_measurements >
+ H_t typedef (defined in mrs_lib::varstepLKF< n_states, n_inputs, n_measurements > )mrs_lib::varstepLKF< n_states, n_inputs, n_measurements >
+ invert_W (R_t W) (defined in mrs_lib::LKF< n_states, n_inputs, n_measurements > )mrs_lib::LKF< n_states, n_inputs, n_measurements > inline protected static
+ K_t typedefmrs_lib::LKF< n_states, n_inputs, n_measurements >
+ LKF ()mrs_lib::LKF< n_states, n_inputs, n_measurements > inline
+ LKF (const A_t &A, const B_t &B, const H_t &H)mrs_lib::LKF< n_states, n_inputs, n_measurements > inline
+ m (defined in mrs_lib::varstepLKF< n_states, n_inputs, n_measurements > )mrs_lib::varstepLKF< n_states, n_inputs, n_measurements > static
+ n (defined in mrs_lib::varstepLKF< n_states, n_inputs, n_measurements > )mrs_lib::varstepLKF< n_states, n_inputs, n_measurements > static
+ p (defined in mrs_lib::varstepLKF< n_states, n_inputs, n_measurements > )mrs_lib::varstepLKF< n_states, n_inputs, n_measurements > static
+ P_t typedef (defined in mrs_lib::varstepLKF< n_states, n_inputs, n_measurements > )mrs_lib::varstepLKF< n_states, n_inputs, n_measurements >
+ predict (const statecov_t &sc, const u_t &u, const Q_t &Q, double dt) const overridemrs_lib::varstepLKF< n_states, n_inputs, n_measurements > inline virtual
+ mrs_lib::LKF::predict (const statecov_t &sc, const u_t &u, const Q_t &Q, [[maybe_unused]] double dt) const overridemrs_lib::LKF< n_states, n_inputs, n_measurements > inline virtual
+ mrs_lib::KalmanFilter::predict (const statecov_t &sc, const u_t &u, const Q_t &Q, double dt) const =0mrs_lib::KalmanFilter< n_states, n_inputs, n_measurements > pure virtual
+ Q_t typedef (defined in mrs_lib::varstepLKF< n_states, n_inputs, n_measurements > )mrs_lib::varstepLKF< n_states, n_inputs, n_measurements >
+ R_t typedef (defined in mrs_lib::varstepLKF< n_states, n_inputs, n_measurements > )mrs_lib::varstepLKF< n_states, n_inputs, n_measurements >
+ state_predict (const A_t &A, const x_t &x, [[maybe_unused]] const B_t &B, [[maybe_unused]] const u_t &u) (defined in mrs_lib::LKF< n_states, n_inputs, n_measurements > )mrs_lib::LKF< n_states, n_inputs, n_measurements > inline protected static
+ state_predict (const A_t &A, const x_t &x, const B_t &B, const u_t &u) (defined in mrs_lib::LKF< n_states, n_inputs, n_measurements > )mrs_lib::LKF< n_states, n_inputs, n_measurements > inline protected static
+ statecov_t typedef (defined in mrs_lib::varstepLKF< n_states, n_inputs, n_measurements > )mrs_lib::varstepLKF< n_states, n_inputs, n_measurements >
+ u_t typedef (defined in mrs_lib::varstepLKF< n_states, n_inputs, n_measurements > )mrs_lib::varstepLKF< n_states, n_inputs, n_measurements >
+ varstepLKF (const generateA_t &generateA, const generateB_t &generateB, const H_t &H)mrs_lib::varstepLKF< n_states, n_inputs, n_measurements > inline
+ x_t typedef (defined in mrs_lib::varstepLKF< n_states, n_inputs, n_measurements > )mrs_lib::varstepLKF< n_states, n_inputs, n_measurements >
+ z_t typedef (defined in mrs_lib::varstepLKF< n_states, n_inputs, n_measurements > )mrs_lib::varstepLKF< n_states, n_inputs, n_measurements >
+
+
+
+
+
+
diff --git a/classmrs__lib_1_1varstepLKF.html b/classmrs__lib_1_1varstepLKF.html
new file mode 100644
index 00000000..4ef0ce80
--- /dev/null
+++ b/classmrs__lib_1_1varstepLKF.html
@@ -0,0 +1,476 @@
+
+
+
+
+
+
+
+mrs_lib: mrs_lib::varstepLKF< n_states, n_inputs, n_measurements > Class Template Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+using Base_class = LKF < n, m, p >
+
+
+using x_t = typename Base_class::x_t
+
+
+using u_t = typename Base_class::u_t
+
+
+using z_t = typename Base_class::z_t
+
+
+using P_t = typename Base_class::P_t
+
+
+using R_t = typename Base_class::R_t
+
+
+using statecov_t = typename Base_class::statecov_t
+
+
+using A_t = typename Base_class::A_t
+
+
+using B_t = typename Base_class::B_t
+
+
+using H_t = typename Base_class::H_t
+
+
+using Q_t = typename Base_class::Q_t
+
+
+using generateA_t = std::function< A_t (double)>
+
+
+using generateB_t = std::function< B_t (double)>
+
+
+
+using Base_class = KalmanFilter < n , m , p >
+ Base class of this class.
+
+
+using x_t = typename Base_class::x_t
+ State vector type .
+
+
+using u_t = typename Base_class::u_t
+ Input vector type .
+
+
+using z_t = typename Base_class::z_t
+ Measurement vector type .
+
+
+using P_t = typename Base_class::P_t
+ State uncertainty covariance matrix type .
+
+
+using R_t = typename Base_class::R_t
+ Measurement noise covariance matrix type .
+
+
+using Q_t = typename Base_class::Q_t
+ Process noise covariance matrix type .
+
+
+using statecov_t = typename Base_class::statecov_t
+ Helper struct for passing around the state and its covariance in one variable.
+
+
+typedef Eigen::Matrix< double, n , n > A_t
+ System transition matrix type .
+
+
+typedef Eigen::Matrix< double, n , m > B_t
+ Input to state mapping matrix type .
+
+
+typedef Eigen::Matrix< double, p , n > H_t
+ State to measurement mapping matrix type .
+
+
+typedef Eigen::Matrix< double, n , p > K_t
+ Kalman gain matrix type .
+
+
+
+typedef Eigen::Matrix< double, n , 1 > x_t
+ State vector type .
+
+
+typedef Eigen::Matrix< double, m , 1 > u_t
+ Input vector type .
+
+
+typedef Eigen::Matrix< double, p , 1 > z_t
+ Measurement vector type .
+
+
+typedef Eigen::Matrix< double, n , n > P_t
+ State uncertainty covariance matrix type .
+
+
+typedef Eigen::Matrix< double, p , p > R_t
+ Measurement noise covariance matrix type .
+
+
+typedef Eigen::Matrix< double, n , n > Q_t
+ Process noise covariance matrix type .
+
+
+
+ varstepLKF (const generateA_t &generateA, const generateB_t &generateB, const H_t &H )
+ The main constructor. More...
+
+virtual statecov_t predict (const statecov_t &sc, const u_t &u, const Q_t &Q, double dt) const override
+ Applies the prediction (time) step of the Kalman filter. More...
+
+
+ LKF ()
+ Convenience default constructor. More...
+
+ LKF (const A_t &A , const B_t &B , const H_t &H )
+ The main constructor. More...
+
+virtual statecov_t correct (const statecov_t &sc, const z_t &z, const R_t &R) const override
+ Applies the correction (update, measurement, data) step of the Kalman filter. More...
+
+virtual statecov_t predict (const statecov_t &sc, const u_t &u, const Q_t &Q, [[maybe_unused]] double dt) const override
+ Applies the prediction (time) step of the Kalman filter. More...
+
+
+virtual statecov_t correct (const statecov_t &sc, const z_t &z, const R_t &R) const =0
+ Applies the correction (update, measurement, data) step of the Kalman filter. More...
+
+virtual statecov_t predict (const statecov_t &sc, const u_t &u, const Q_t &Q, double dt) const =0
+ Applies the prediction (time) step of the Kalman filter. More...
+
+
+
+
+static const int n = n_states
+
+
+static const int m = n_inputs
+
+
+static const int p = n_measurements
+
+
+
+static constexpr int n = n_states
+ Length of the state vector of the system.
+
+
+static constexpr int m = n_inputs
+ Length of the input vector of the system.
+
+
+static constexpr int p = n_measurements
+ Length of the measurement vector of the system.
+
+
+
+static const int n = n_states
+ Length of the state vector of the system.
+
+
+static const int m = n_inputs
+ Length of the input vector of the system.
+
+
+static const int p = n_measurements
+ Length of the measurement vector of the system.
+
+
+
+
+
+A_t A
+ The system transition matrix .
+
+
+B_t B
+ The input to state mapping matrix .
+
+
+H_t H
+ The state to measurement mapping matrix .
+
+
+
+virtual K_t computeKalmanGain (const statecov_t &sc, [[maybe_unused]] const z_t &z, const R_t &R, const H_t &H ) const
+
+
+statecov_t ::type correction_impl (const statecov_t &sc, const z_t &z, const R_t &R, const H_t &H ) const
+
+
+
+static P_t covariance_predict (const A_t &A , const P_t &P, const Q_t &Q, const double dt)
+
+
+template<int check = n_inputs>
+static std::enable_if< check==0, x_t >::type state_predict (const A_t &A , const x_t &x, [[maybe_unused]] const B_t &B , [[maybe_unused]] const u_t &u)
+
+
+template<int check = n_inputs>
+static std::enable_if< check !=0, x_t >::type state_predict (const A_t &A , const x_t &x, const B_t &B , const u_t &u)
+
+
+static R_t invert_W (R_t W)
+
+
+
+
+
◆ varstepLKF()
+
+
+
+
+template<int n_states, int n_inputs, int n_measurements>
+
+
+
+
+
+ mrs_lib::varstepLKF < n_states, n_inputs, n_measurements >::varstepLKF
+ (
+ const generateA_t &
+ generateA ,
+
+
+
+
+ const generateB_t &
+ generateB ,
+
+
+
+
+ const H_t &
+ H
+
+
+
+ )
+
+
+
+
+
+inline
+
+
+
+
+
The main constructor.
+
Parameters
+
+ generateA a function, which returns the state transition matrix A
based on the time difference dt
.
+ generateB a function, which returns the input to state mapping matrix B
based on the time difference dt
.
+ H the state to measurement mapping matrix.
+
+
+
+
+
+
+
+
+
◆ predict()
+
+
+
+
+template<int n_states, int n_inputs, int n_measurements>
+
+
+
+
+
+
+inline override virtual
+
+
+
+
+
Applies the prediction (time) step of the Kalman filter.
+
This method applies the linear Kalman filter prediction step to the state and covariance passed in sc
using the input u
and process noise Q
. The process noise covariance Q
is scaled by the dt
parameter. The updated state and covariance after the prediction step is returned.
+
Parameters
+
+ sc The state and covariance to which the prediction step is to be applied.
+ u The input vector to be used for prediction.
+ Q The process noise covariance matrix to be used for prediction.
+ dt Used to scale the process noise covariance Q
and to generate the state transition and input to state mapping matrices A
and \B using the functions, passed in the object's constructor.
+
+
+
+
Returns The state and covariance after the prediction step.
+
Note Note that the dt
parameter is used to scale the process noise covariance Q
and to generate the system matrices A or B using the functions, passed in the constructor!
+
+
+
+
The documentation for this class was generated from the following file:
+
+
+
+
+
+
diff --git a/classmrs__lib_1_1varstepLKF.js b/classmrs__lib_1_1varstepLKF.js
new file mode 100644
index 00000000..35f5d193
--- /dev/null
+++ b/classmrs__lib_1_1varstepLKF.js
@@ -0,0 +1,18 @@
+var classmrs__lib_1_1varstepLKF =
+[
+ [ "A_t", "classmrs__lib_1_1varstepLKF.html#a1f797193292783fd0d33698b8f459b6a", null ],
+ [ "B_t", "classmrs__lib_1_1varstepLKF.html#a2b26991ee6df4fd05e67f8f673149368", null ],
+ [ "Base_class", "classmrs__lib_1_1varstepLKF.html#a83cfe493b5409677ec83f01b9f0065bc", null ],
+ [ "generateA_t", "classmrs__lib_1_1varstepLKF.html#ae85acc5f4b5d251aa70cdda71c0aabfd", null ],
+ [ "generateB_t", "classmrs__lib_1_1varstepLKF.html#a2b40f86a3d5a5973664ffcccd9c37b4d", null ],
+ [ "H_t", "classmrs__lib_1_1varstepLKF.html#a0aa9bddf3faf5aa9e09053283df32a7e", null ],
+ [ "P_t", "classmrs__lib_1_1varstepLKF.html#a346cbdb27120fda35ebc6ec6f6c69cbe", null ],
+ [ "Q_t", "classmrs__lib_1_1varstepLKF.html#ac69552920fcb4c6db997539466ae5e67", null ],
+ [ "R_t", "classmrs__lib_1_1varstepLKF.html#a48a9d5c6e193d88308b7b17186b3432c", null ],
+ [ "statecov_t", "classmrs__lib_1_1varstepLKF.html#af7abb1064d60846b89590e5c95e5841b", null ],
+ [ "u_t", "classmrs__lib_1_1varstepLKF.html#ac8cb341dceca8811dc40c0891fd71ad2", null ],
+ [ "x_t", "classmrs__lib_1_1varstepLKF.html#aa948acd2a6adacf7fa10667f2f307994", null ],
+ [ "z_t", "classmrs__lib_1_1varstepLKF.html#a60b15acb8d478affcf2190b54724f060", null ],
+ [ "varstepLKF", "classmrs__lib_1_1varstepLKF.html#afe2d9f3643f3f8e4c82879384a4a5eea", null ],
+ [ "predict", "classmrs__lib_1_1varstepLKF.html#ac1f671eb73017a1c05303e29ddf0c1f2", null ]
+];
\ No newline at end of file
diff --git a/classmrs__lib_1_1varstepLKF__coll__graph.map b/classmrs__lib_1_1varstepLKF__coll__graph.map
new file mode 100644
index 00000000..da1f355f
--- /dev/null
+++ b/classmrs__lib_1_1varstepLKF__coll__graph.map
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/classmrs__lib_1_1varstepLKF__coll__graph.md5 b/classmrs__lib_1_1varstepLKF__coll__graph.md5
new file mode 100644
index 00000000..0de052ba
--- /dev/null
+++ b/classmrs__lib_1_1varstepLKF__coll__graph.md5
@@ -0,0 +1 @@
+972c6314f93bcaf4328e7b5702f86e4c
\ No newline at end of file
diff --git a/classmrs__lib_1_1varstepLKF__coll__graph.png b/classmrs__lib_1_1varstepLKF__coll__graph.png
new file mode 100644
index 00000000..8560e0aa
Binary files /dev/null and b/classmrs__lib_1_1varstepLKF__coll__graph.png differ
diff --git a/classmrs__lib_1_1varstepLKF__inherit__graph.map b/classmrs__lib_1_1varstepLKF__inherit__graph.map
new file mode 100644
index 00000000..da1f355f
--- /dev/null
+++ b/classmrs__lib_1_1varstepLKF__inherit__graph.map
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/classmrs__lib_1_1varstepLKF__inherit__graph.md5 b/classmrs__lib_1_1varstepLKF__inherit__graph.md5
new file mode 100644
index 00000000..0de052ba
--- /dev/null
+++ b/classmrs__lib_1_1varstepLKF__inherit__graph.md5
@@ -0,0 +1 @@
+972c6314f93bcaf4328e7b5702f86e4c
\ No newline at end of file
diff --git a/classmrs__lib_1_1varstepLKF__inherit__graph.png b/classmrs__lib_1_1varstepLKF__inherit__graph.png
new file mode 100644
index 00000000..8560e0aa
Binary files /dev/null and b/classmrs__lib_1_1varstepLKF__inherit__graph.png differ
diff --git a/closed.png b/closed.png
new file mode 100644
index 00000000..98cc2c90
Binary files /dev/null and b/closed.png differ
diff --git a/conversions_8h_source.html b/conversions_8h_source.html
new file mode 100644
index 00000000..72e7d610
--- /dev/null
+++ b/conversions_8h_source.html
@@ -0,0 +1,109 @@
+
+
+
+
+
+
+
+mrs_lib: include/mrs_lib/geometry/conversions.h Source File
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
1 #ifndef GEOMETRY_CONVERSIONS_H
+
2 #define GEOMETRY_CONVERSIONS_H
+
+
4 #include <mrs_lib/geometry/conversions_eigen.h>
+
5 #include <mrs_lib/geometry/conversions_opencv.h>
+
+
7 #endif // GEOMETRY_CONVERSIONS_H
+
+
+
+
+
+
diff --git a/conversions__eigen_8h_source.html b/conversions__eigen_8h_source.html
new file mode 100644
index 00000000..3222de26
--- /dev/null
+++ b/conversions__eigen_8h_source.html
@@ -0,0 +1,139 @@
+
+
+
+
+
+
+
+mrs_lib: include/mrs_lib/geometry/conversions_eigen.h Source File
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
1 #ifndef GEOMETRY_CONVERSIONS_EIGEN_H
+
2 #define GEOMETRY_CONVERSIONS_EIGEN_H
+
+
4 #include <geometry_msgs/PoseStamped.h>
+
5 #include <geometry_msgs/Vector3.h>
+
+
+
8 #include <Eigen/Geometry>
+
+
+
+
+
+
+
+
+
17 geometry_msgs::Point fromEigen(
const Eigen::Vector3d& what);
+
+
19 geometry_msgs::Vector3 fromEigenVec(
const Eigen::Vector3d& what);
+
+
21 Eigen::Vector3d toEigen(
const geometry_msgs::Point& what);
+
+
23 Eigen::Vector3d toEigen(
const geometry_msgs::Vector3& what);
+
+
25 Eigen::Matrix<double, 6, 6> toEigenMatrix(
const boost::array<double, 36>& what);
+
+
27 geometry_msgs::Quaternion fromEigen(
const Eigen::Quaterniond& what);
+
+
29 Eigen::Quaterniond toEigen(
const geometry_msgs::Quaternion& what);
+
+
+
+
+
+
+
36 #endif // GEOMETRY_CONVERSIONS_EIGEN_H
+
+
+All mrs_lib functions, classes, variables and definitions are contained in this namespace.
Definition: attitude_converter.h:29
+
+
+
+
diff --git a/conversions__opencv_8h_source.html b/conversions__opencv_8h_source.html
new file mode 100644
index 00000000..058217a9
--- /dev/null
+++ b/conversions__opencv_8h_source.html
@@ -0,0 +1,130 @@
+
+
+
+
+
+
+
+mrs_lib: include/mrs_lib/geometry/conversions_opencv.h Source File
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
1 #ifndef GEOMETRY_CONVERSIONS_OPENCV_H
+
2 #define GEOMETRY_CONVERSIONS_OPENCV_H
+
+
4 #include <geometry_msgs/PoseStamped.h>
+
5 #include <geometry_msgs/Vector3.h>
+
+
7 #include <opencv2/core/types.hpp>
+
+
+
+
+
+
+
+
+
16 geometry_msgs::Point fromCV(
const cv::Point3d& what);
+
+
18 cv::Point3d toCV(
const geometry_msgs::Point& what);
+
+
20 cv::Point3d toCV(
const geometry_msgs::Vector3& what);
+
+
+
+
+
+
+
27 #endif // GEOMETRY_CONVERSIONS_OPENCV_H
+
+
+All mrs_lib functions, classes, variables and definitions are contained in this namespace.
Definition: attitude_converter.h:29
+
+
+
+
diff --git a/cyclic_8h.html b/cyclic_8h.html
new file mode 100644
index 00000000..570c6430
--- /dev/null
+++ b/cyclic_8h.html
@@ -0,0 +1,302 @@
+
+
+
+
+
+
+
+mrs_lib: include/mrs_lib/geometry/cyclic.h File Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Defines the cyclic class for calculations with cyclic quantities.
+More...
+
#include <cmath>
+#include <ostream>
+
+
Go to the source code of this file.
+
+
+ mrs_lib
+ All mrs_lib functions, classes, variables and definitions are contained in this namespace.
+
+
+
+template<typename flt , class spec >
+bool mrs_lib::geometry::operator< (const cyclic< flt, spec > &lhs, const cyclic< flt, spec > &rhs)
+ Implementation of the comparison operation between two angles. More...
+
+template<typename flt , class spec >
+bool mrs_lib::geometry::operator> (const cyclic< flt, spec > &lhs, const cyclic< flt, spec > &rhs)
+ Implementation of the comparison operation between two angles. More...
+
+template<typename flt , class spec >
+std::ostream & mrs_lib::geometry::operator<< (std::ostream &out, const cyclic< flt, spec > &ang)
+ Implementation of the stream output operator. More...
+
+
+
+
Defines the cyclic class for calculations with cyclic quantities.
+
Author Matouš Vrba - vrbam.nosp@m. ato@.nosp@m. fel.c.nosp@m. vut..nosp@m. cz
+
+
+
◆ operator<()
+
+
+
+
+template<typename flt , class spec >
+
+
+ bool mrs_lib::geometry::operator<
+ (
+ const cyclic < flt, spec > &
+ lhs ,
+
+
+
+
+ const cyclic < flt, spec > &
+ rhs
+
+
+
+ )
+
+
+
+
+
+
Implementation of the comparison operation between two angles.
+
An angle is considered to be smaller than another angle if it is shorter - closer to zero.
+
Parameters
+
+ lhs left-hand-side.
+ rhs right-hand-side.
+
+
+
+
Returns true iff the shortest unsigned walk from lhs to 0 is less than from rhs to 0.
+
+
+
+
+
◆ operator<<()
+
+
+
+
+template<typename flt , class spec >
+
+
+ std::ostream& mrs_lib::geometry::operator<<
+ (
+ std::ostream &
+ out ,
+
+
+
+
+ const cyclic < flt, spec > &
+ ang
+
+
+
+ )
+
+
+
+
+
+
Implementation of the stream output operator.
+
Parameters
+
+ out the stream to write the angle to.
+ ang the angle to be written.
+
+
+
+
Returns a reference to the stream.
+
+
+
+
+
◆ operator>()
+
+
+
+
+template<typename flt , class spec >
+
+
+ bool mrs_lib::geometry::operator>
+ (
+ const cyclic < flt, spec > &
+ lhs ,
+
+
+
+
+ const cyclic < flt, spec > &
+ rhs
+
+
+
+ )
+
+
+
+
+
+
Implementation of the comparison operation between two angles.
+
An angle is considered to be larger than another angle if it is longer - further from zero.
+
Parameters
+
+ lhs left-hand-side.
+ rhs right-hand-side.
+
+
+
+
Returns true iff the shortest unsigned walk from lhs to 0 is more than from rhs to 0.
+
+
+
+
+
+
+
+
+
diff --git a/cyclic_8h.js b/cyclic_8h.js
new file mode 100644
index 00000000..03bb671d
--- /dev/null
+++ b/cyclic_8h.js
@@ -0,0 +1,11 @@
+var cyclic_8h =
+[
+ [ "cyclic", "structmrs__lib_1_1geometry_1_1cyclic.html", "structmrs__lib_1_1geometry_1_1cyclic" ],
+ [ "radians", "structmrs__lib_1_1geometry_1_1radians.html", null ],
+ [ "sradians", "structmrs__lib_1_1geometry_1_1sradians.html", null ],
+ [ "degrees", "structmrs__lib_1_1geometry_1_1degrees.html", null ],
+ [ "sdegrees", "structmrs__lib_1_1geometry_1_1sdegrees.html", null ],
+ [ "operator<", "cyclic_8h.html#a8bb4c24541320f151f1781100c789cd3", null ],
+ [ "operator<<", "cyclic_8h.html#aebc05b8cec59b7a37a72024e26a449f7", null ],
+ [ "operator>", "cyclic_8h.html#a60745f66bbc41c3cb323c8b1c3f050d7", null ]
+];
\ No newline at end of file
diff --git a/cyclic_8h__dep__incl.map b/cyclic_8h__dep__incl.map
new file mode 100644
index 00000000..72780697
--- /dev/null
+++ b/cyclic_8h__dep__incl.map
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/cyclic_8h__dep__incl.md5 b/cyclic_8h__dep__incl.md5
new file mode 100644
index 00000000..c774e999
--- /dev/null
+++ b/cyclic_8h__dep__incl.md5
@@ -0,0 +1 @@
+a1358b704fb3ade8de3d4c603443a657
\ No newline at end of file
diff --git a/cyclic_8h__dep__incl.png b/cyclic_8h__dep__incl.png
new file mode 100644
index 00000000..ff4fcdba
Binary files /dev/null and b/cyclic_8h__dep__incl.png differ
diff --git a/cyclic_8h__incl.map b/cyclic_8h__incl.map
new file mode 100644
index 00000000..7b91b518
--- /dev/null
+++ b/cyclic_8h__incl.map
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/cyclic_8h__incl.md5 b/cyclic_8h__incl.md5
new file mode 100644
index 00000000..5ea28071
--- /dev/null
+++ b/cyclic_8h__incl.md5
@@ -0,0 +1 @@
+639eab034e05be9669ef05a33099b25f
\ No newline at end of file
diff --git a/cyclic_8h__incl.png b/cyclic_8h__incl.png
new file mode 100644
index 00000000..074c378d
Binary files /dev/null and b/cyclic_8h__incl.png differ
diff --git a/cyclic_8h_source.html b/cyclic_8h_source.html
new file mode 100644
index 00000000..edcd0f7a
--- /dev/null
+++ b/cyclic_8h_source.html
@@ -0,0 +1,387 @@
+
+
+
+
+
+
+
+mrs_lib: include/mrs_lib/geometry/cyclic.h Source File
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Go to the documentation of this file.
+
+
+
+
+
+
+
+
+
+
+
47 template <
typename flt,
class spec>
+
+
+
+
+
+
73 cyclic (
const spec& other) : val(other.val){};
+
+
+
+
+
+
+
85 static constexpr flt
minimum = spec::minimum;
+
86 static constexpr flt
supremum = spec::supremum;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
131 const flt wrapped = rem +
minimum + std::signbit(rem) *
range ;
+
+
+
+
157 static flt
unwrap (
const flt what,
const flt from)
+
+
159 return from +
diff (what, from);
+
+
+
171 static flt
pdist (
const flt from,
const flt to)
+
+
+
+
+
+
+
178 const flt tmp = to.val - from.val;
+
179 const flt
dist = tmp + std::signbit(tmp) *
range ;
+
+
+
+
193 static flt
diff (
const flt minuend,
const flt subtrahend)
+
+
+
+
+
+
+
200 const flt d = minuend.val - subtrahend.val;
+
+
+
+
+
+
+
+
219 static flt
dist (
const flt from,
const flt to)
+
+
+
+
+
+
+
226 return std::abs(
diff (from, to));
+
+
+
+
+
+
+
+
+
+
249 const flt dang =
diff (to, from);
+
250 const flt intp = from.val + coeff * dang;
+
+
+
+
264 static flt
interp (
const flt from,
const flt to,
const flt coeff)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
295 const flt dang =
pdist (to, from);
+
296 const flt intp = from.val + coeff * dang;
+
+
+
+
311 static flt
pinterp (
const flt from,
const flt to,
const flt coeff)
+
+
+
+
+
+
+
+
+
+
333 template <
class other_t>
+
+
+
336 return other_t(what.val /
range * other_t::range);
+
+
+
350 template <
class other_t>
+
+
+
353 return other_t(val /
range * other_t::range);
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
399 val =
wrap (val + other.val);
+
+
+
+
+
+
411 val =
diff (val, other.val);
+
+
+
+
+
+
424 return wrap (lhs.val + rhs.val);
+
+
+
+
+
436 return diff (lhs, rhs);
+
+
+
+
+
+
+
452 template <
typename flt,
class spec>
+
+
+
+
+
+
467 template <
typename flt,
class spec>
+
+
+
+
+
+
480 template <
typename flt,
class spec>
+
+
+
483 return (out << ang.
value ());
+
+
+
+
+
+
492 static constexpr
double minimum = 0;
+
493 static constexpr
double supremum = 2 * M_PI;
+
+
+
+
+
+
502 static constexpr
double minimum = -M_PI;
+
503 static constexpr
double supremum = M_PI;
+
+
+
+
+
+
512 static constexpr
double minimum = 0;
+
513 static constexpr
double supremum = 360;
+
+
+
+
+
+
522 static constexpr
double minimum = -180;
+
523 static constexpr
double supremum = 180;
+
+
+
+
+
+
+
+flt value() const
Getter for val.
Definition: cyclic.h:80
+static flt pdist(const flt from, const flt to)
Returns length of the shortest walk in the positive direction from the first parameter to the second ...
Definition: cyclic.h:171
+Convenience specialization of the cyclic class for signed degrees (from $-180$ to $180$).
Definition: cyclic.h:519
+cyclic & operator=(const flt nval)
Assignment operator.
Definition: cyclic.h:363
+cyclic()
Default constructor.
Definition: cyclic.h:55
+bool operator<(const cyclic< flt, spec > &lhs, const cyclic< flt, spec > &rhs)
Implementation of the comparison operation between two angles.
Definition: cyclic.h:453
+std::ostream & operator<<(std::ostream &out, const cyclic< flt, spec > &ang)
Implementation of the stream output operator.
Definition: cyclic.h:481
+static flt interpUnwrapped(const flt from, const flt to, const flt coeff)
Interpolation between two circular quantities without wrapping of the result.
Definition: cyclic.h:242
+friend spec operator+(const cyclic &lhs, const cyclic &rhs)
Addition operator.
Definition: cyclic.h:422
+static flt diff(const flt minuend, const flt subtrahend)
Returns the difference between the two circular values.
Definition: cyclic.h:193
+static flt dist(const flt from, const flt to)
Returns the distance between the two circular values.
Definition: cyclic.h:219
+Convenience specialization of the cyclic class for unsigned degrees (from $0$ to $360$).
Definition: cyclic.h:509
+cyclic(const cyclic &other)
Copy constructor.
Definition: cyclic.h:67
+Implementation of the a general cyclic value (such as angles in radians/degrees etc).
Definition: cyclic.h:48
+Convenience specialization of the cyclic class for unsigned radians (from $0$ to $2\pi$).
Definition: cyclic.h:489
+Convenience specialization of the cyclic class for signed radians (from $-\pi$ to $\pi$).
Definition: cyclic.h:499
+cyclic(const spec &other)
Copy constructor.
Definition: cyclic.h:73
+bool operator>(const cyclic< flt, spec > &lhs, const cyclic< flt, spec > &rhs)
Implementation of the comparison operation between two angles.
Definition: cyclic.h:468
+static bool inRange(const flt val)
Checks if val is within the valid interval of wrapped values.
Definition: cyclic.h:100
+static flt unwrap(const flt what, const flt from)
Returns value of the parameter what modified so that there is no "jump" between from and \t what.
Definition: cyclic.h:157
+static constexpr flt supremum
Supremum of the valid interval of wrapped values .
Definition: cyclic.h:86
+static constexpr flt half_range
Half of the range of the valid interval of wrapped values (used for some calculations).
Definition: cyclic.h:89
+static constexpr flt minimum
Minimum of the valid interval of wrapped values .
Definition: cyclic.h:85
+cyclic & operator=(const cyclic &other)
Assignment operator.
Definition: cyclic.h:374
+All mrs_lib functions, classes, variables and definitions are contained in this namespace.
Definition: attitude_converter.h:29
+cyclic(const flt val)
Constructor overload.
Definition: cyclic.h:61
+friend flt operator-(const cyclic &lhs, const cyclic &rhs)
Subtraction operator (uses the diff() method).
Definition: cyclic.h:434
+other_t convert() const
Conversion between two different circular quantities.
Definition: cyclic.h:351
+cyclic & operator=(cyclic &&other)
Move operator.
Definition: cyclic.h:385
+static flt pinterp(const flt from, const flt to, const flt coeff)
Interpolation between two circular quantities in the positive direction.
Definition: cyclic.h:311
+cyclic & operator+=(const cyclic &other)
Addition compound operator.
Definition: cyclic.h:397
+static flt interp(const flt from, const flt to, const flt coeff)
Interpolation between two circular quantities.
Definition: cyclic.h:264
+cyclic & operator-=(const cyclic &other)
Subtraction compound operator.
Definition: cyclic.h:409
+static flt pinterpUnwrapped(const flt from, const flt to, const flt coeff)
Interpolation between two circular quantities in the positive direction without wrapping of the resul...
Definition: cyclic.h:288
+static flt wrap(const flt val)
Returns val, converted to the valid interval of values.
Definition: cyclic.h:114
+static constexpr flt range
Range of the valid interval of wrapped values (also the period of the cyclic quantity).
Definition: cyclic.h:87
+static other_t convert(const cyclic &what)
Conversion between two different circular quantities.
Definition: cyclic.h:334
+
+
+
+
diff --git a/cyclic__example_8cpp.html b/cyclic__example_8cpp.html
new file mode 100644
index 00000000..2913cfb6
--- /dev/null
+++ b/cyclic__example_8cpp.html
@@ -0,0 +1,161 @@
+
+
+
+
+
+
+
+mrs_lib: src/geometry/cyclic_example.cpp File Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Example file for the cyclical values implementation (see the cyclic class)
+More...
+
#include <mrs_lib/geometry/cyclic.h >
+
#include <random>
+
#include <ros/ros.h>
+
+
+
+template<class T >
+void printit (const T &a, const std::string &name)
+
+
+template<class T >
+void printcont (const T &cont, const std::string &name)
+
+
+int main ()
+
+
+
+
Example file for the cyclical values implementation (see the cyclic class)
+
Author Matouš Vrba - vrbam.nosp@m. ato@.nosp@m. fel.c.nosp@m. vut..nosp@m. cz
+
This example may be run after building mrs_lib by executing rosrun mrs_lib cyclic_example
.
+
See geometry/cyclic_example.cpp .
+
+
+
+
+
+
diff --git a/cyclic__example_8cpp.js b/cyclic__example_8cpp.js
new file mode 100644
index 00000000..59cff1de
--- /dev/null
+++ b/cyclic__example_8cpp.js
@@ -0,0 +1,9 @@
+var cyclic__example_8cpp =
+[
+ [ "degrees", "structdegrees.html", null ],
+ [ "radians", "cyclic__example_8cpp.html#a71facd116ff8e4ba2919e639ce57c843", null ],
+ [ "sradians", "cyclic__example_8cpp.html#a88fa1de76b3de0c8c9546625214f6d3e", null ],
+ [ "main", "cyclic__example_8cpp.html#ae66f6b31b5ad750f1fe042a706a4e3d4", null ],
+ [ "printcont", "cyclic__example_8cpp.html#a2051a3b3cac629f0a52bd0d305dc6370", null ],
+ [ "printit", "cyclic__example_8cpp.html#a5505149b5d840ca0ec0c223194fe0cb5", null ]
+];
\ No newline at end of file
diff --git a/cyclic__example_8cpp__incl.map b/cyclic__example_8cpp__incl.map
new file mode 100644
index 00000000..e9ab10dd
--- /dev/null
+++ b/cyclic__example_8cpp__incl.map
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
diff --git a/cyclic__example_8cpp__incl.md5 b/cyclic__example_8cpp__incl.md5
new file mode 100644
index 00000000..940e4bc6
--- /dev/null
+++ b/cyclic__example_8cpp__incl.md5
@@ -0,0 +1 @@
+673bc3e9cd79c9c1895611b2d3b15ddc
\ No newline at end of file
diff --git a/cyclic__example_8cpp__incl.png b/cyclic__example_8cpp__incl.png
new file mode 100644
index 00000000..d03f89cb
Binary files /dev/null and b/cyclic__example_8cpp__incl.png differ
diff --git a/dir_000001_000002.html b/dir_000001_000002.html
new file mode 100644
index 00000000..24e012f5
--- /dev/null
+++ b/dir_000001_000002.html
@@ -0,0 +1,98 @@
+
+
+
+
+
+
+
+mrs_lib: include/mrs_lib -> geometry Relation
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
mrs_lib → geometry Relation
+
+
+
+
+
diff --git a/dir_000001_000003.html b/dir_000001_000003.html
new file mode 100644
index 00000000..cd3604d9
--- /dev/null
+++ b/dir_000001_000003.html
@@ -0,0 +1,98 @@
+
+
+
+
+
+
+
+mrs_lib: include/mrs_lib -> impl Relation
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/dir_000007_000000.html b/dir_000007_000000.html
new file mode 100644
index 00000000..2f2f6fd7
--- /dev/null
+++ b/dir_000007_000000.html
@@ -0,0 +1,98 @@
+
+
+
+
+
+
+
+mrs_lib: src/attitude_converter -> include Relation
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
attitude_converter → include Relation
+
+
+
+
+
diff --git a/dir_000008_000000.html b/dir_000008_000000.html
new file mode 100644
index 00000000..10a0ba96
--- /dev/null
+++ b/dir_000008_000000.html
@@ -0,0 +1,98 @@
+
+
+
+
+
+
+
+mrs_lib: src/batch_visualizer -> include Relation
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
batch_visualizer → include Relation
+
+
+
+
+
diff --git a/dir_000009_000000.html b/dir_000009_000000.html
new file mode 100644
index 00000000..c68edc88
--- /dev/null
+++ b/dir_000009_000000.html
@@ -0,0 +1,98 @@
+
+
+
+
+
+
+
+mrs_lib: src/dynamic_publisher -> include Relation
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
dynamic_publisher → include Relation
+
+
+
+
+
diff --git a/dir_000011_000000.html b/dir_000011_000000.html
new file mode 100644
index 00000000..2c69d259
--- /dev/null
+++ b/dir_000011_000000.html
@@ -0,0 +1,98 @@
+
+
+
+
+
+
+
+mrs_lib: src/param_loader -> include Relation
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
param_loader → include Relation
+
+
+
+
+
diff --git a/dir_000012_000000.html b/dir_000012_000000.html
new file mode 100644
index 00000000..338d50ad
--- /dev/null
+++ b/dir_000012_000000.html
@@ -0,0 +1,98 @@
+
+
+
+
+
+
+
+mrs_lib: src/repredictor -> include Relation
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
repredictor → include Relation
+
+
+
+
+
diff --git a/dir_000013_000000.html b/dir_000013_000000.html
new file mode 100644
index 00000000..67ad5644
--- /dev/null
+++ b/dir_000013_000000.html
@@ -0,0 +1,98 @@
+
+
+
+
+
+
+
+mrs_lib: src/rheiv -> include Relation
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
rheiv → include Relation
+
+
+
+
+
diff --git a/dir_000014_000000.html b/dir_000014_000000.html
new file mode 100644
index 00000000..14a3b325
--- /dev/null
+++ b/dir_000014_000000.html
@@ -0,0 +1,98 @@
+
+
+
+
+
+
+
+mrs_lib: src/service_client_handler -> include Relation
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
service_client_handler → include Relation
+
+
+
+
+
diff --git a/dir_000015_000000.html b/dir_000015_000000.html
new file mode 100644
index 00000000..3bd55fb4
--- /dev/null
+++ b/dir_000015_000000.html
@@ -0,0 +1,98 @@
+
+
+
+
+
+
+
+mrs_lib: src/subscribe_handler -> include Relation
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
subscribe_handler → include Relation
+
+
+
+
+
diff --git a/dir_000016_000000.html b/dir_000016_000000.html
new file mode 100644
index 00000000..fc3135f7
--- /dev/null
+++ b/dir_000016_000000.html
@@ -0,0 +1,98 @@
+
+
+
+
+
+
+
+mrs_lib: src/transformer -> include Relation
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
transformer → include Relation
+
+
+
+
+
diff --git a/dir_000017_000000.html b/dir_000017_000000.html
new file mode 100644
index 00000000..f806b33a
--- /dev/null
+++ b/dir_000017_000000.html
@@ -0,0 +1,98 @@
+
+
+
+
+
+
+
+mrs_lib: src/ukf -> include Relation
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/dir_000018_000000.html b/dir_000018_000000.html
new file mode 100644
index 00000000..294b5815
--- /dev/null
+++ b/dir_000018_000000.html
@@ -0,0 +1,98 @@
+
+
+
+
+
+
+
+mrs_lib: src/vector_converter -> include Relation
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
vector_converter → include Relation
+
+
+
+
+
diff --git a/dir_000019_000000.html b/dir_000019_000000.html
new file mode 100644
index 00000000..a67bde7e
--- /dev/null
+++ b/dir_000019_000000.html
@@ -0,0 +1,98 @@
+
+
+
+
+
+
+
+mrs_lib: src/geometry -> include Relation
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
geometry → include Relation
+
+
+
+
+
diff --git a/dir_000020_000000.html b/dir_000020_000000.html
new file mode 100644
index 00000000..0802ab84
--- /dev/null
+++ b/dir_000020_000000.html
@@ -0,0 +1,98 @@
+
+
+
+
+
+
+
+mrs_lib: src/iir_filter -> include Relation
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
iir_filter → include Relation
+
+
+
+
+
diff --git a/dir_000022_000000.html b/dir_000022_000000.html
new file mode 100644
index 00000000..21ac868b
--- /dev/null
+++ b/dir_000022_000000.html
@@ -0,0 +1,98 @@
+
+
+
+
+
+
+
+mrs_lib: src/math -> include Relation
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/dir_000023_000000.html b/dir_000023_000000.html
new file mode 100644
index 00000000..f563f423
--- /dev/null
+++ b/dir_000023_000000.html
@@ -0,0 +1,98 @@
+
+
+
+
+
+
+
+mrs_lib: src/median_filter -> include Relation
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
median_filter → include Relation
+
+
+
+
+
diff --git a/dir_000024_000000.html b/dir_000024_000000.html
new file mode 100644
index 00000000..a899bf99
--- /dev/null
+++ b/dir_000024_000000.html
@@ -0,0 +1,98 @@
+
+
+
+
+
+
+
+mrs_lib: src/mutex -> include Relation
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
mutex → include Relation File in src/mutex Includes file in include mutex_tests.cpp mrs_lib / mutex.h
+
+
+
+
+
diff --git a/dir_000026_000000.html b/dir_000026_000000.html
new file mode 100644
index 00000000..57c1234d
--- /dev/null
+++ b/dir_000026_000000.html
@@ -0,0 +1,98 @@
+
+
+
+
+
+
+
+mrs_lib: src/notch_filter -> include Relation
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
notch_filter → include Relation
+
+
+
+
+
diff --git a/dir_000027_000000.html b/dir_000027_000000.html
new file mode 100644
index 00000000..3eaaaff0
--- /dev/null
+++ b/dir_000027_000000.html
@@ -0,0 +1,98 @@
+
+
+
+
+
+
+
+mrs_lib: src/profiler -> include Relation
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
profiler → include Relation
+
+
+
+
+
diff --git a/dir_000028_000000.html b/dir_000028_000000.html
new file mode 100644
index 00000000..09450e88
--- /dev/null
+++ b/dir_000028_000000.html
@@ -0,0 +1,98 @@
+
+
+
+
+
+
+
+mrs_lib: src/safety_zone -> include Relation
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
safety_zone → include Relation
+
+
+
+
+
diff --git a/dir_000029_000000.html b/dir_000029_000000.html
new file mode 100644
index 00000000..3ad89a20
--- /dev/null
+++ b/dir_000029_000000.html
@@ -0,0 +1,98 @@
+
+
+
+
+
+
+
+mrs_lib: src/safety_zone/point_obstacle -> include Relation
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
point_obstacle → include Relation File in src/safety_zone/point_obstacle Includes file in include point_obstacle.cpp mrs_lib / math.h
+
+
+
+
+
diff --git a/dir_000031_000000.html b/dir_000031_000000.html
new file mode 100644
index 00000000..146e38b7
--- /dev/null
+++ b/dir_000031_000000.html
@@ -0,0 +1,98 @@
+
+
+
+
+
+
+
+mrs_lib: src/scope_timer -> include Relation
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
scope_timer → include Relation
+
+
+
+
+
diff --git a/dir_000032_000000.html b/dir_000032_000000.html
new file mode 100644
index 00000000..394b690c
--- /dev/null
+++ b/dir_000032_000000.html
@@ -0,0 +1,98 @@
+
+
+
+
+
+
+
+mrs_lib: src/timeout_manager -> include Relation
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
timeout_manager → include Relation
+
+
+
+
+
diff --git a/dir_000035_000000.html b/dir_000035_000000.html
new file mode 100644
index 00000000..2c2da400
--- /dev/null
+++ b/dir_000035_000000.html
@@ -0,0 +1,98 @@
+
+
+
+
+
+
+
+mrs_lib: src/utils -> include Relation
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
utils → include Relation
+
+
+
+
+
diff --git a/dir_000037_000000.html b/dir_000037_000000.html
new file mode 100644
index 00000000..d16cc575
--- /dev/null
+++ b/dir_000037_000000.html
@@ -0,0 +1,98 @@
+
+
+
+
+
+
+
+mrs_lib: test/attitude_converter -> include Relation
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
attitude_converter → include Relation
+
+
+
+
+
diff --git a/dir_000038_000000.html b/dir_000038_000000.html
new file mode 100644
index 00000000..337a5076
--- /dev/null
+++ b/dir_000038_000000.html
@@ -0,0 +1,98 @@
+
+
+
+
+
+
+
+mrs_lib: test/geometry -> include Relation
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
geometry → include Relation
+
+
+
+
+
diff --git a/dir_000039_000000.html b/dir_000039_000000.html
new file mode 100644
index 00000000..9708451c
--- /dev/null
+++ b/dir_000039_000000.html
@@ -0,0 +1,98 @@
+
+
+
+
+
+
+
+mrs_lib: test/math -> include Relation
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
math → include Relation File in test/math Includes file in include test.cpp mrs_lib / math.h
+
+
+
+
+
diff --git a/dir_000040_000000.html b/dir_000040_000000.html
new file mode 100644
index 00000000..32dfbdb7
--- /dev/null
+++ b/dir_000040_000000.html
@@ -0,0 +1,98 @@
+
+
+
+
+
+
+
+mrs_lib: test/median_filter -> include Relation
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
median_filter → include Relation
+
+
+
+
+
diff --git a/dir_000041_000000.html b/dir_000041_000000.html
new file mode 100644
index 00000000..75e0af5d
--- /dev/null
+++ b/dir_000041_000000.html
@@ -0,0 +1,98 @@
+
+
+
+
+
+
+
+mrs_lib: test/param_loader -> include Relation
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
param_loader → include Relation
+
+
+
+
+
diff --git a/dir_000042_000000.html b/dir_000042_000000.html
new file mode 100644
index 00000000..8bf54628
--- /dev/null
+++ b/dir_000042_000000.html
@@ -0,0 +1,98 @@
+
+
+
+
+
+
+
+mrs_lib: test/publisher_handler -> include Relation
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
publisher_handler → include Relation
+
+
+
+
+
diff --git a/dir_000044_000000.html b/dir_000044_000000.html
new file mode 100644
index 00000000..d967bb5a
--- /dev/null
+++ b/dir_000044_000000.html
@@ -0,0 +1,98 @@
+
+
+
+
+
+
+
+mrs_lib: test/service_client_handler -> include Relation
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
service_client_handler → include Relation
+
+
+
+
+
diff --git a/dir_000045_000000.html b/dir_000045_000000.html
new file mode 100644
index 00000000..ead7fa04
--- /dev/null
+++ b/dir_000045_000000.html
@@ -0,0 +1,98 @@
+
+
+
+
+
+
+
+mrs_lib: test/subscribe_handler -> include Relation
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
subscribe_handler → include Relation
+
+
+
+
+
diff --git a/dir_000046_000000.html b/dir_000046_000000.html
new file mode 100644
index 00000000..5796db32
--- /dev/null
+++ b/dir_000046_000000.html
@@ -0,0 +1,98 @@
+
+
+
+
+
+
+
+mrs_lib: test/timeout_manager -> include Relation
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
timeout_manager → include Relation
+
+
+
+
+
diff --git a/dir_000047_000000.html b/dir_000047_000000.html
new file mode 100644
index 00000000..f976a418
--- /dev/null
+++ b/dir_000047_000000.html
@@ -0,0 +1,98 @@
+
+
+
+
+
+
+
+mrs_lib: test/timer -> include Relation
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
timer → include Relation
+
+
+
+
+
diff --git a/dir_000048_000000.html b/dir_000048_000000.html
new file mode 100644
index 00000000..424eb104
--- /dev/null
+++ b/dir_000048_000000.html
@@ -0,0 +1,98 @@
+
+
+
+
+
+
+
+mrs_lib: test/transformer -> include Relation
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
transformer → include Relation
+
+
+
+
+
diff --git a/dir_000049_000000.html b/dir_000049_000000.html
new file mode 100644
index 00000000..cd29c606
--- /dev/null
+++ b/dir_000049_000000.html
@@ -0,0 +1,98 @@
+
+
+
+
+
+
+
+mrs_lib: test/ukf -> include Relation
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
ukf → include Relation File in test/ukf Includes file in include test.cpp mrs_lib / ukf.h
+
+
+
+
+
diff --git a/dir_000050_000000.html b/dir_000050_000000.html
new file mode 100644
index 00000000..7b8f34c2
--- /dev/null
+++ b/dir_000050_000000.html
@@ -0,0 +1,98 @@
+
+
+
+
+
+
+
+mrs_lib: test/utils -> include Relation
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
utils → include Relation
+
+
+
+
+
diff --git a/dir_000051_000000.html b/dir_000051_000000.html
new file mode 100644
index 00000000..c47c451f
--- /dev/null
+++ b/dir_000051_000000.html
@@ -0,0 +1,98 @@
+
+
+
+
+
+
+
+mrs_lib: test/vector_converter -> include Relation
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
vector_converter → include Relation
+
+
+
+
+
diff --git a/dir_137818f07b93cd14b6ce92e51caad2df.html b/dir_137818f07b93cd14b6ce92e51caad2df.html
new file mode 100644
index 00000000..a1c90850
--- /dev/null
+++ b/dir_137818f07b93cd14b6ce92e51caad2df.html
@@ -0,0 +1,115 @@
+
+
+
+
+
+
+
+mrs_lib: test/math Directory Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/dir_137818f07b93cd14b6ce92e51caad2df.js b/dir_137818f07b93cd14b6ce92e51caad2df.js
new file mode 100644
index 00000000..59ebf7bc
--- /dev/null
+++ b/dir_137818f07b93cd14b6ce92e51caad2df.js
@@ -0,0 +1,4 @@
+var dir_137818f07b93cd14b6ce92e51caad2df =
+[
+ [ "probit_gts.h", "probit__gts_8h_source.html", null ]
+];
\ No newline at end of file
diff --git a/dir_137818f07b93cd14b6ce92e51caad2df_dep.map b/dir_137818f07b93cd14b6ce92e51caad2df_dep.map
new file mode 100644
index 00000000..0bc8a287
--- /dev/null
+++ b/dir_137818f07b93cd14b6ce92e51caad2df_dep.map
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/dir_137818f07b93cd14b6ce92e51caad2df_dep.md5 b/dir_137818f07b93cd14b6ce92e51caad2df_dep.md5
new file mode 100644
index 00000000..0462727c
--- /dev/null
+++ b/dir_137818f07b93cd14b6ce92e51caad2df_dep.md5
@@ -0,0 +1 @@
+a6658211ef7beb45fb9e80ee1409263a
\ No newline at end of file
diff --git a/dir_137818f07b93cd14b6ce92e51caad2df_dep.png b/dir_137818f07b93cd14b6ce92e51caad2df_dep.png
new file mode 100644
index 00000000..833def93
Binary files /dev/null and b/dir_137818f07b93cd14b6ce92e51caad2df_dep.png differ
diff --git a/dir_13e138d54eb8818da29c3992edef070a.html b/dir_13e138d54eb8818da29c3992edef070a.html
new file mode 100644
index 00000000..dcb7966d
--- /dev/null
+++ b/dir_13e138d54eb8818da29c3992edef070a.html
@@ -0,0 +1,146 @@
+
+
+
+
+
+
+
+mrs_lib: test Directory Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/dir_13e138d54eb8818da29c3992edef070a.js b/dir_13e138d54eb8818da29c3992edef070a.js
new file mode 100644
index 00000000..122e6d4b
--- /dev/null
+++ b/dir_13e138d54eb8818da29c3992edef070a.js
@@ -0,0 +1,4 @@
+var dir_13e138d54eb8818da29c3992edef070a =
+[
+ [ "math", "dir_137818f07b93cd14b6ce92e51caad2df.html", "dir_137818f07b93cd14b6ce92e51caad2df" ]
+];
\ No newline at end of file
diff --git a/dir_13e138d54eb8818da29c3992edef070a_dep.map b/dir_13e138d54eb8818da29c3992edef070a_dep.map
new file mode 100644
index 00000000..ef7f40f5
--- /dev/null
+++ b/dir_13e138d54eb8818da29c3992edef070a_dep.map
@@ -0,0 +1,33 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/dir_13e138d54eb8818da29c3992edef070a_dep.md5 b/dir_13e138d54eb8818da29c3992edef070a_dep.md5
new file mode 100644
index 00000000..ae5d1ff5
--- /dev/null
+++ b/dir_13e138d54eb8818da29c3992edef070a_dep.md5
@@ -0,0 +1 @@
+fca8fc13ffcc2ad1c476a3620d4255b8
\ No newline at end of file
diff --git a/dir_13e138d54eb8818da29c3992edef070a_dep.png b/dir_13e138d54eb8818da29c3992edef070a_dep.png
new file mode 100644
index 00000000..438538e3
Binary files /dev/null and b/dir_13e138d54eb8818da29c3992edef070a_dep.png differ
diff --git a/dir_2489d4eba4efb8e04d8467655cf06abd.html b/dir_2489d4eba4efb8e04d8467655cf06abd.html
new file mode 100644
index 00000000..4bcb5ed8
--- /dev/null
+++ b/dir_2489d4eba4efb8e04d8467655cf06abd.html
@@ -0,0 +1,115 @@
+
+
+
+
+
+
+
+mrs_lib: src/timeout_manager Directory Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/dir_2489d4eba4efb8e04d8467655cf06abd_dep.map b/dir_2489d4eba4efb8e04d8467655cf06abd_dep.map
new file mode 100644
index 00000000..38c278f4
--- /dev/null
+++ b/dir_2489d4eba4efb8e04d8467655cf06abd_dep.map
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/dir_2489d4eba4efb8e04d8467655cf06abd_dep.md5 b/dir_2489d4eba4efb8e04d8467655cf06abd_dep.md5
new file mode 100644
index 00000000..6f96b70c
--- /dev/null
+++ b/dir_2489d4eba4efb8e04d8467655cf06abd_dep.md5
@@ -0,0 +1 @@
+33f73ea71f4bb344b4340a8bed667490
\ No newline at end of file
diff --git a/dir_2489d4eba4efb8e04d8467655cf06abd_dep.png b/dir_2489d4eba4efb8e04d8467655cf06abd_dep.png
new file mode 100644
index 00000000..56fc2b85
Binary files /dev/null and b/dir_2489d4eba4efb8e04d8467655cf06abd_dep.png differ
diff --git a/dir_313caf1132e152dd9b58bea13a4052ca.html b/dir_313caf1132e152dd9b58bea13a4052ca.html
new file mode 100644
index 00000000..0f7066c6
--- /dev/null
+++ b/dir_313caf1132e152dd9b58bea13a4052ca.html
@@ -0,0 +1,115 @@
+
+
+
+
+
+
+
+mrs_lib: src/utils Directory Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/dir_313caf1132e152dd9b58bea13a4052ca_dep.map b/dir_313caf1132e152dd9b58bea13a4052ca_dep.map
new file mode 100644
index 00000000..07dfa8d3
--- /dev/null
+++ b/dir_313caf1132e152dd9b58bea13a4052ca_dep.map
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/dir_313caf1132e152dd9b58bea13a4052ca_dep.md5 b/dir_313caf1132e152dd9b58bea13a4052ca_dep.md5
new file mode 100644
index 00000000..bfe0668b
--- /dev/null
+++ b/dir_313caf1132e152dd9b58bea13a4052ca_dep.md5
@@ -0,0 +1 @@
+d1d216bf6e57e044161cce00d0f82fa4
\ No newline at end of file
diff --git a/dir_313caf1132e152dd9b58bea13a4052ca_dep.png b/dir_313caf1132e152dd9b58bea13a4052ca_dep.png
new file mode 100644
index 00000000..4b6035af
Binary files /dev/null and b/dir_313caf1132e152dd9b58bea13a4052ca_dep.png differ
diff --git a/dir_405fd32de3649961a5f009c7a3fe84df.html b/dir_405fd32de3649961a5f009c7a3fe84df.html
new file mode 100644
index 00000000..fc80412d
--- /dev/null
+++ b/dir_405fd32de3649961a5f009c7a3fe84df.html
@@ -0,0 +1,122 @@
+
+
+
+
+
+
+
+mrs_lib: src/geometry Directory Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+file cyclic_example.cpp
+ Example file for the cyclical values implementation (see the cyclic class)
+
+
+
+
+
+
+
+
diff --git a/dir_405fd32de3649961a5f009c7a3fe84df.js b/dir_405fd32de3649961a5f009c7a3fe84df.js
new file mode 100644
index 00000000..d3ad75fc
--- /dev/null
+++ b/dir_405fd32de3649961a5f009c7a3fe84df.js
@@ -0,0 +1,4 @@
+var dir_405fd32de3649961a5f009c7a3fe84df =
+[
+ [ "cyclic_example.cpp", "cyclic__example_8cpp.html", "cyclic__example_8cpp" ]
+];
\ No newline at end of file
diff --git a/dir_405fd32de3649961a5f009c7a3fe84df_dep.map b/dir_405fd32de3649961a5f009c7a3fe84df_dep.map
new file mode 100644
index 00000000..edc11f2b
--- /dev/null
+++ b/dir_405fd32de3649961a5f009c7a3fe84df_dep.map
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/dir_405fd32de3649961a5f009c7a3fe84df_dep.md5 b/dir_405fd32de3649961a5f009c7a3fe84df_dep.md5
new file mode 100644
index 00000000..5cde60ab
--- /dev/null
+++ b/dir_405fd32de3649961a5f009c7a3fe84df_dep.md5
@@ -0,0 +1 @@
+5e0a571841dd7d1ddb1a4cf6c4d4d458
\ No newline at end of file
diff --git a/dir_405fd32de3649961a5f009c7a3fe84df_dep.png b/dir_405fd32de3649961a5f009c7a3fe84df_dep.png
new file mode 100644
index 00000000..09f5d45d
Binary files /dev/null and b/dir_405fd32de3649961a5f009c7a3fe84df_dep.png differ
diff --git a/dir_459eb1320bcc4da5aac4b85751529118.html b/dir_459eb1320bcc4da5aac4b85751529118.html
new file mode 100644
index 00000000..b28a99d6
--- /dev/null
+++ b/dir_459eb1320bcc4da5aac4b85751529118.html
@@ -0,0 +1,122 @@
+
+
+
+
+
+
+
+mrs_lib: src/repredictor Directory Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+file example.cpp
+ Example file for the Repredictor implementation.
+
+
+
+
+
+
+
+
diff --git a/dir_459eb1320bcc4da5aac4b85751529118.js b/dir_459eb1320bcc4da5aac4b85751529118.js
new file mode 100644
index 00000000..ab565f2f
--- /dev/null
+++ b/dir_459eb1320bcc4da5aac4b85751529118.js
@@ -0,0 +1,4 @@
+var dir_459eb1320bcc4da5aac4b85751529118 =
+[
+ [ "example.cpp", "repredictor_2example_8cpp.html", "repredictor_2example_8cpp" ]
+];
\ No newline at end of file
diff --git a/dir_459eb1320bcc4da5aac4b85751529118_dep.map b/dir_459eb1320bcc4da5aac4b85751529118_dep.map
new file mode 100644
index 00000000..c29e7164
--- /dev/null
+++ b/dir_459eb1320bcc4da5aac4b85751529118_dep.map
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/dir_459eb1320bcc4da5aac4b85751529118_dep.md5 b/dir_459eb1320bcc4da5aac4b85751529118_dep.md5
new file mode 100644
index 00000000..03b4bead
--- /dev/null
+++ b/dir_459eb1320bcc4da5aac4b85751529118_dep.md5
@@ -0,0 +1 @@
+cd99201d1730fcdc4de7fc0c9cb2e3d8
\ No newline at end of file
diff --git a/dir_459eb1320bcc4da5aac4b85751529118_dep.png b/dir_459eb1320bcc4da5aac4b85751529118_dep.png
new file mode 100644
index 00000000..6252b78f
Binary files /dev/null and b/dir_459eb1320bcc4da5aac4b85751529118_dep.png differ
diff --git a/dir_47f9543a1dcda4cfb704fcee5b674cab.html b/dir_47f9543a1dcda4cfb704fcee5b674cab.html
new file mode 100644
index 00000000..5ba60752
--- /dev/null
+++ b/dir_47f9543a1dcda4cfb704fcee5b674cab.html
@@ -0,0 +1,115 @@
+
+
+
+
+
+
+
+mrs_lib: test/median_filter Directory Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/dir_47f9543a1dcda4cfb704fcee5b674cab_dep.map b/dir_47f9543a1dcda4cfb704fcee5b674cab_dep.map
new file mode 100644
index 00000000..d1aff082
--- /dev/null
+++ b/dir_47f9543a1dcda4cfb704fcee5b674cab_dep.map
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/dir_47f9543a1dcda4cfb704fcee5b674cab_dep.md5 b/dir_47f9543a1dcda4cfb704fcee5b674cab_dep.md5
new file mode 100644
index 00000000..02490243
--- /dev/null
+++ b/dir_47f9543a1dcda4cfb704fcee5b674cab_dep.md5
@@ -0,0 +1 @@
+c06bebd4dfcfe9d46a88f7a4395d792e
\ No newline at end of file
diff --git a/dir_47f9543a1dcda4cfb704fcee5b674cab_dep.png b/dir_47f9543a1dcda4cfb704fcee5b674cab_dep.png
new file mode 100644
index 00000000..157bc6e7
Binary files /dev/null and b/dir_47f9543a1dcda4cfb704fcee5b674cab_dep.png differ
diff --git a/dir_4c2e94721b2acbf7eee2d1efd59bf8db.html b/dir_4c2e94721b2acbf7eee2d1efd59bf8db.html
new file mode 100644
index 00000000..d95ce23d
--- /dev/null
+++ b/dir_4c2e94721b2acbf7eee2d1efd59bf8db.html
@@ -0,0 +1,122 @@
+
+
+
+
+
+
+
+mrs_lib: src/dynamic_publisher Directory Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+file example.cpp
+ Example file for the DynamicPublisher convenience class.
+
+
+
+
+
+
+
+
diff --git a/dir_4c2e94721b2acbf7eee2d1efd59bf8db.js b/dir_4c2e94721b2acbf7eee2d1efd59bf8db.js
new file mode 100644
index 00000000..223a5dda
--- /dev/null
+++ b/dir_4c2e94721b2acbf7eee2d1efd59bf8db.js
@@ -0,0 +1,4 @@
+var dir_4c2e94721b2acbf7eee2d1efd59bf8db =
+[
+ [ "example.cpp", "dynamic__publisher_2example_8cpp.html", "dynamic__publisher_2example_8cpp" ]
+];
\ No newline at end of file
diff --git a/dir_4c2e94721b2acbf7eee2d1efd59bf8db_dep.map b/dir_4c2e94721b2acbf7eee2d1efd59bf8db_dep.map
new file mode 100644
index 00000000..129ab45e
--- /dev/null
+++ b/dir_4c2e94721b2acbf7eee2d1efd59bf8db_dep.map
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/dir_4c2e94721b2acbf7eee2d1efd59bf8db_dep.md5 b/dir_4c2e94721b2acbf7eee2d1efd59bf8db_dep.md5
new file mode 100644
index 00000000..9e3c40f3
--- /dev/null
+++ b/dir_4c2e94721b2acbf7eee2d1efd59bf8db_dep.md5
@@ -0,0 +1 @@
+aaee0fd5077c1f169de4a4f661073d58
\ No newline at end of file
diff --git a/dir_4c2e94721b2acbf7eee2d1efd59bf8db_dep.png b/dir_4c2e94721b2acbf7eee2d1efd59bf8db_dep.png
new file mode 100644
index 00000000..ddc0d783
Binary files /dev/null and b/dir_4c2e94721b2acbf7eee2d1efd59bf8db_dep.png differ
diff --git a/dir_4e76df18d944fae8b852653d4ae3a030.html b/dir_4e76df18d944fae8b852653d4ae3a030.html
new file mode 100644
index 00000000..c98ce79d
--- /dev/null
+++ b/dir_4e76df18d944fae8b852653d4ae3a030.html
@@ -0,0 +1,109 @@
+
+
+
+
+
+
+
+mrs_lib: src/nckf Directory Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/dir_4e76df18d944fae8b852653d4ae3a030.js b/dir_4e76df18d944fae8b852653d4ae3a030.js
new file mode 100644
index 00000000..7c6a6202
--- /dev/null
+++ b/dir_4e76df18d944fae8b852653d4ae3a030.js
@@ -0,0 +1,4 @@
+var dir_4e76df18d944fae8b852653d4ae3a030 =
+[
+ [ "nckf_tests.cpp", "nckf__tests_8cpp.html", "nckf__tests_8cpp" ]
+];
\ No newline at end of file
diff --git a/dir_52bd7864aeac0cbd0134df90af2e1447.html b/dir_52bd7864aeac0cbd0134df90af2e1447.html
new file mode 100644
index 00000000..d654291f
--- /dev/null
+++ b/dir_52bd7864aeac0cbd0134df90af2e1447.html
@@ -0,0 +1,115 @@
+
+
+
+
+
+
+
+mrs_lib: src/notch_filter Directory Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/dir_52bd7864aeac0cbd0134df90af2e1447_dep.map b/dir_52bd7864aeac0cbd0134df90af2e1447_dep.map
new file mode 100644
index 00000000..19be5f4e
--- /dev/null
+++ b/dir_52bd7864aeac0cbd0134df90af2e1447_dep.map
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/dir_52bd7864aeac0cbd0134df90af2e1447_dep.md5 b/dir_52bd7864aeac0cbd0134df90af2e1447_dep.md5
new file mode 100644
index 00000000..4853783a
--- /dev/null
+++ b/dir_52bd7864aeac0cbd0134df90af2e1447_dep.md5
@@ -0,0 +1 @@
+1255d3eb667b632b6c8eb921daaddd1a
\ No newline at end of file
diff --git a/dir_52bd7864aeac0cbd0134df90af2e1447_dep.png b/dir_52bd7864aeac0cbd0134df90af2e1447_dep.png
new file mode 100644
index 00000000..f682740c
Binary files /dev/null and b/dir_52bd7864aeac0cbd0134df90af2e1447_dep.png differ
diff --git a/dir_53e6fa9553ac22a5646d2a2b2d7b97a1.html b/dir_53e6fa9553ac22a5646d2a2b2d7b97a1.html
new file mode 100644
index 00000000..f9005ea2
--- /dev/null
+++ b/dir_53e6fa9553ac22a5646d2a2b2d7b97a1.html
@@ -0,0 +1,102 @@
+
+
+
+
+
+
+
+mrs_lib: scripts Directory Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/dir_59dc5f73bda78a76f6ce4f5474a95632.html b/dir_59dc5f73bda78a76f6ce4f5474a95632.html
new file mode 100644
index 00000000..81d0923f
--- /dev/null
+++ b/dir_59dc5f73bda78a76f6ce4f5474a95632.html
@@ -0,0 +1,115 @@
+
+
+
+
+
+
+
+mrs_lib: src/attitude_converter Directory Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/dir_59dc5f73bda78a76f6ce4f5474a95632_dep.map b/dir_59dc5f73bda78a76f6ce4f5474a95632_dep.map
new file mode 100644
index 00000000..fe8f4822
--- /dev/null
+++ b/dir_59dc5f73bda78a76f6ce4f5474a95632_dep.map
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/dir_59dc5f73bda78a76f6ce4f5474a95632_dep.md5 b/dir_59dc5f73bda78a76f6ce4f5474a95632_dep.md5
new file mode 100644
index 00000000..d90bce86
--- /dev/null
+++ b/dir_59dc5f73bda78a76f6ce4f5474a95632_dep.md5
@@ -0,0 +1 @@
+10eb6123b0d0ce1d5f1ae350e83b55da
\ No newline at end of file
diff --git a/dir_59dc5f73bda78a76f6ce4f5474a95632_dep.png b/dir_59dc5f73bda78a76f6ce4f5474a95632_dep.png
new file mode 100644
index 00000000..4f920790
Binary files /dev/null and b/dir_59dc5f73bda78a76f6ce4f5474a95632_dep.png differ
diff --git a/dir_5b7f8725d4f972ca8245f6a979e7a433.html b/dir_5b7f8725d4f972ca8245f6a979e7a433.html
new file mode 100644
index 00000000..259fd177
--- /dev/null
+++ b/dir_5b7f8725d4f972ca8245f6a979e7a433.html
@@ -0,0 +1,115 @@
+
+
+
+
+
+
+
+mrs_lib: src/mutex Directory Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/dir_5b7f8725d4f972ca8245f6a979e7a433_dep.map b/dir_5b7f8725d4f972ca8245f6a979e7a433_dep.map
new file mode 100644
index 00000000..fd25eb64
--- /dev/null
+++ b/dir_5b7f8725d4f972ca8245f6a979e7a433_dep.map
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/dir_5b7f8725d4f972ca8245f6a979e7a433_dep.md5 b/dir_5b7f8725d4f972ca8245f6a979e7a433_dep.md5
new file mode 100644
index 00000000..430c67b6
--- /dev/null
+++ b/dir_5b7f8725d4f972ca8245f6a979e7a433_dep.md5
@@ -0,0 +1 @@
+1cb34f43e583a194221e95a7def0158c
\ No newline at end of file
diff --git a/dir_5b7f8725d4f972ca8245f6a979e7a433_dep.png b/dir_5b7f8725d4f972ca8245f6a979e7a433_dep.png
new file mode 100644
index 00000000..372bf508
Binary files /dev/null and b/dir_5b7f8725d4f972ca8245f6a979e7a433_dep.png differ
diff --git a/dir_5cd313a56eb052b35bf1996eeb3f0983.html b/dir_5cd313a56eb052b35bf1996eeb3f0983.html
new file mode 100644
index 00000000..84269871
--- /dev/null
+++ b/dir_5cd313a56eb052b35bf1996eeb3f0983.html
@@ -0,0 +1,115 @@
+
+
+
+
+
+
+
+mrs_lib: test/service_client_handler Directory Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/dir_5cd313a56eb052b35bf1996eeb3f0983_dep.map b/dir_5cd313a56eb052b35bf1996eeb3f0983_dep.map
new file mode 100644
index 00000000..959d9e05
--- /dev/null
+++ b/dir_5cd313a56eb052b35bf1996eeb3f0983_dep.map
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/dir_5cd313a56eb052b35bf1996eeb3f0983_dep.md5 b/dir_5cd313a56eb052b35bf1996eeb3f0983_dep.md5
new file mode 100644
index 00000000..edc9642c
--- /dev/null
+++ b/dir_5cd313a56eb052b35bf1996eeb3f0983_dep.md5
@@ -0,0 +1 @@
+b9bbaac7cca101e3015769cfd9d98372
\ No newline at end of file
diff --git a/dir_5cd313a56eb052b35bf1996eeb3f0983_dep.png b/dir_5cd313a56eb052b35bf1996eeb3f0983_dep.png
new file mode 100644
index 00000000..cdd99e55
Binary files /dev/null and b/dir_5cd313a56eb052b35bf1996eeb3f0983_dep.png differ
diff --git a/dir_627f9e3e44b98db30b77a80b8afbb9e4.html b/dir_627f9e3e44b98db30b77a80b8afbb9e4.html
new file mode 100644
index 00000000..30046209
--- /dev/null
+++ b/dir_627f9e3e44b98db30b77a80b8afbb9e4.html
@@ -0,0 +1,115 @@
+
+
+
+
+
+
+
+mrs_lib: test/ukf Directory Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/dir_627f9e3e44b98db30b77a80b8afbb9e4_dep.map b/dir_627f9e3e44b98db30b77a80b8afbb9e4_dep.map
new file mode 100644
index 00000000..17999aa8
--- /dev/null
+++ b/dir_627f9e3e44b98db30b77a80b8afbb9e4_dep.map
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/dir_627f9e3e44b98db30b77a80b8afbb9e4_dep.md5 b/dir_627f9e3e44b98db30b77a80b8afbb9e4_dep.md5
new file mode 100644
index 00000000..6f21b51f
--- /dev/null
+++ b/dir_627f9e3e44b98db30b77a80b8afbb9e4_dep.md5
@@ -0,0 +1 @@
+2e9333598b8e5d4c48012a3c407c06b4
\ No newline at end of file
diff --git a/dir_627f9e3e44b98db30b77a80b8afbb9e4_dep.png b/dir_627f9e3e44b98db30b77a80b8afbb9e4_dep.png
new file mode 100644
index 00000000..24ce07f3
Binary files /dev/null and b/dir_627f9e3e44b98db30b77a80b8afbb9e4_dep.png differ
diff --git a/dir_6584bc0d88c193127476cb5dc95baf39.html b/dir_6584bc0d88c193127476cb5dc95baf39.html
new file mode 100644
index 00000000..eb88ff9a
--- /dev/null
+++ b/dir_6584bc0d88c193127476cb5dc95baf39.html
@@ -0,0 +1,102 @@
+
+
+
+
+
+
+
+mrs_lib: src/image_publisher Directory Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/dir_68267d1309a1af8e8297ef4c3efbcdba.html b/dir_68267d1309a1af8e8297ef4c3efbcdba.html
new file mode 100644
index 00000000..13f4df84
--- /dev/null
+++ b/dir_68267d1309a1af8e8297ef4c3efbcdba.html
@@ -0,0 +1,166 @@
+
+
+
+
+
+
+
+mrs_lib: src Directory Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/dir_68267d1309a1af8e8297ef4c3efbcdba.js b/dir_68267d1309a1af8e8297ef4c3efbcdba.js
new file mode 100644
index 00000000..3fa81237
--- /dev/null
+++ b/dir_68267d1309a1af8e8297ef4c3efbcdba.js
@@ -0,0 +1,13 @@
+var dir_68267d1309a1af8e8297ef4c3efbcdba =
+[
+ [ "dynamic_publisher", "dir_4c2e94721b2acbf7eee2d1efd59bf8db.html", "dir_4c2e94721b2acbf7eee2d1efd59bf8db" ],
+ [ "geometry", "dir_405fd32de3649961a5f009c7a3fe84df.html", "dir_405fd32de3649961a5f009c7a3fe84df" ],
+ [ "lkf", "dir_9e9e485811fd7b0342cca4e7c3cf123b.html", "dir_9e9e485811fd7b0342cca4e7c3cf123b" ],
+ [ "nckf", "dir_4e76df18d944fae8b852653d4ae3a030.html", "dir_4e76df18d944fae8b852653d4ae3a030" ],
+ [ "param_loader", "dir_d81f13436e73f242cdf25a742f3a9678.html", "dir_d81f13436e73f242cdf25a742f3a9678" ],
+ [ "repredictor", "dir_459eb1320bcc4da5aac4b85751529118.html", "dir_459eb1320bcc4da5aac4b85751529118" ],
+ [ "rheiv", "dir_d20a67be47c1454b19aa07d8b0143440.html", "dir_d20a67be47c1454b19aa07d8b0143440" ],
+ [ "subscribe_handler", "dir_f003de2bf99885e59674f01f3665fb82.html", "dir_f003de2bf99885e59674f01f3665fb82" ],
+ [ "ukf", "dir_a5078ef47331b4526bf3f96e987ee465.html", "dir_a5078ef47331b4526bf3f96e987ee465" ],
+ [ "vector_converter", "dir_dcbbf3bfcdb3d005110c6ee2b744bf08.html", "dir_dcbbf3bfcdb3d005110c6ee2b744bf08" ]
+];
\ No newline at end of file
diff --git a/dir_68267d1309a1af8e8297ef4c3efbcdba_dep.map b/dir_68267d1309a1af8e8297ef4c3efbcdba_dep.map
new file mode 100644
index 00000000..75c61ce4
--- /dev/null
+++ b/dir_68267d1309a1af8e8297ef4c3efbcdba_dep.map
@@ -0,0 +1,53 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/dir_68267d1309a1af8e8297ef4c3efbcdba_dep.md5 b/dir_68267d1309a1af8e8297ef4c3efbcdba_dep.md5
new file mode 100644
index 00000000..d42ba37a
--- /dev/null
+++ b/dir_68267d1309a1af8e8297ef4c3efbcdba_dep.md5
@@ -0,0 +1 @@
+979cfce9ad81bc54b1a534570bb0725e
\ No newline at end of file
diff --git a/dir_68267d1309a1af8e8297ef4c3efbcdba_dep.png b/dir_68267d1309a1af8e8297ef4c3efbcdba_dep.png
new file mode 100644
index 00000000..b4a39864
Binary files /dev/null and b/dir_68267d1309a1af8e8297ef4c3efbcdba_dep.png differ
diff --git a/dir_6aa5eb41b348da9a1414d58156a58f5e.html b/dir_6aa5eb41b348da9a1414d58156a58f5e.html
new file mode 100644
index 00000000..5e03befd
--- /dev/null
+++ b/dir_6aa5eb41b348da9a1414d58156a58f5e.html
@@ -0,0 +1,115 @@
+
+
+
+
+
+
+
+mrs_lib: test/subscribe_handler Directory Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/dir_6aa5eb41b348da9a1414d58156a58f5e_dep.map b/dir_6aa5eb41b348da9a1414d58156a58f5e_dep.map
new file mode 100644
index 00000000..f6640f12
--- /dev/null
+++ b/dir_6aa5eb41b348da9a1414d58156a58f5e_dep.map
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/dir_6aa5eb41b348da9a1414d58156a58f5e_dep.md5 b/dir_6aa5eb41b348da9a1414d58156a58f5e_dep.md5
new file mode 100644
index 00000000..ed323e13
--- /dev/null
+++ b/dir_6aa5eb41b348da9a1414d58156a58f5e_dep.md5
@@ -0,0 +1 @@
+e579bb2fb3ff7b2732f4dbca4d25327c
\ No newline at end of file
diff --git a/dir_6aa5eb41b348da9a1414d58156a58f5e_dep.png b/dir_6aa5eb41b348da9a1414d58156a58f5e_dep.png
new file mode 100644
index 00000000..620b2a1a
Binary files /dev/null and b/dir_6aa5eb41b348da9a1414d58156a58f5e_dep.png differ
diff --git a/dir_7164529cd9c8f96b25598799ea656806.html b/dir_7164529cd9c8f96b25598799ea656806.html
new file mode 100644
index 00000000..7caa222d
--- /dev/null
+++ b/dir_7164529cd9c8f96b25598799ea656806.html
@@ -0,0 +1,123 @@
+
+
+
+
+
+
+
+mrs_lib: include/mrs_lib/impl Directory Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+file ukf.hpp [code]
+ Implements UKF - a class implementing the Unscented Kalman Filter.
+
+file vector_converter.hpp [code]
+ Implements the convertTo() and convertFrom() functions for conversion between different vector representations (Eigen, OpenCV, tf2 etc.).
+
+
+
+
+
+
+
+
diff --git a/dir_7164529cd9c8f96b25598799ea656806.js b/dir_7164529cd9c8f96b25598799ea656806.js
new file mode 100644
index 00000000..eecba817
--- /dev/null
+++ b/dir_7164529cd9c8f96b25598799ea656806.js
@@ -0,0 +1,13 @@
+var dir_7164529cd9c8f96b25598799ea656806 =
+[
+ [ "dynamic_publisher.hpp", "dynamic__publisher_8hpp_source.html", null ],
+ [ "param_provider.hpp", "param__provider_8hpp_source.html", null ],
+ [ "publisher_handler.hpp", "publisher__handler_8hpp_source.html", null ],
+ [ "service_client_handler.hpp", "service__client__handler_8hpp_source.html", null ],
+ [ "subscribe_handler.hpp", "subscribe__handler_8hpp_source.html", null ],
+ [ "timer.hpp", "timer_8hpp_source.html", null ],
+ [ "transformer.hpp", "transformer_8hpp_source.html", null ],
+ [ "ukf.hpp", "ukf_8hpp.html", null ],
+ [ "vector_converter.hpp", "vector__converter_8hpp.html", "vector__converter_8hpp" ],
+ [ "vector_converter_types.h", "vector__converter__types_8h_source.html", null ]
+];
\ No newline at end of file
diff --git a/dir_7164529cd9c8f96b25598799ea656806_dep.map b/dir_7164529cd9c8f96b25598799ea656806_dep.map
new file mode 100644
index 00000000..bb8537d9
--- /dev/null
+++ b/dir_7164529cd9c8f96b25598799ea656806_dep.map
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/dir_7164529cd9c8f96b25598799ea656806_dep.md5 b/dir_7164529cd9c8f96b25598799ea656806_dep.md5
new file mode 100644
index 00000000..98ea4795
--- /dev/null
+++ b/dir_7164529cd9c8f96b25598799ea656806_dep.md5
@@ -0,0 +1 @@
+f63840359d9981fde8b945d5739d027e
\ No newline at end of file
diff --git a/dir_7164529cd9c8f96b25598799ea656806_dep.png b/dir_7164529cd9c8f96b25598799ea656806_dep.png
new file mode 100644
index 00000000..136e86ce
Binary files /dev/null and b/dir_7164529cd9c8f96b25598799ea656806_dep.png differ
diff --git a/dir_85b0de967ad5400027712e30c95ca897.html b/dir_85b0de967ad5400027712e30c95ca897.html
new file mode 100644
index 00000000..e925dc90
--- /dev/null
+++ b/dir_85b0de967ad5400027712e30c95ca897.html
@@ -0,0 +1,115 @@
+
+
+
+
+
+
+
+mrs_lib: include/mrs_lib/geometry Directory Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+file cyclic.h [code]
+ Defines the cyclic class for calculations with cyclic quantities.
+
+file misc.h [code]
+ Defines useful geometry utilities and functions.
+
+file shapes.h [code]
+ Defines various geometrical shapes and their relations.
+
+
+
+
+
+
+
+
diff --git a/dir_85b0de967ad5400027712e30c95ca897.js b/dir_85b0de967ad5400027712e30c95ca897.js
new file mode 100644
index 00000000..f941fea7
--- /dev/null
+++ b/dir_85b0de967ad5400027712e30c95ca897.js
@@ -0,0 +1,17 @@
+var dir_85b0de967ad5400027712e30c95ca897 =
+[
+ [ "conversions.h", "conversions_8h_source.html", null ],
+ [ "conversions_eigen.h", "conversions__eigen_8h_source.html", null ],
+ [ "conversions_opencv.h", "conversions__opencv_8h_source.html", null ],
+ [ "cyclic.h", "cyclic_8h.html", "cyclic_8h" ],
+ [ "misc.h", "misc_8h.html", "misc_8h" ],
+ [ "shapes.h", "shapes_8h.html", [
+ [ "Ray", "classmrs__lib_1_1geometry_1_1Ray.html", "classmrs__lib_1_1geometry_1_1Ray" ],
+ [ "Triangle", "classmrs__lib_1_1geometry_1_1Triangle.html", "classmrs__lib_1_1geometry_1_1Triangle" ],
+ [ "Rectangle", "classmrs__lib_1_1geometry_1_1Rectangle.html", "classmrs__lib_1_1geometry_1_1Rectangle" ],
+ [ "Cuboid", "classmrs__lib_1_1geometry_1_1Cuboid.html", "classmrs__lib_1_1geometry_1_1Cuboid" ],
+ [ "Ellipse", "classmrs__lib_1_1geometry_1_1Ellipse.html", "classmrs__lib_1_1geometry_1_1Ellipse" ],
+ [ "Cylinder", "classmrs__lib_1_1geometry_1_1Cylinder.html", "classmrs__lib_1_1geometry_1_1Cylinder" ],
+ [ "Cone", "classmrs__lib_1_1geometry_1_1Cone.html", "classmrs__lib_1_1geometry_1_1Cone" ]
+ ] ]
+];
\ No newline at end of file
diff --git a/dir_8607dcdb705c79ef4c5b76c004c42748.html b/dir_8607dcdb705c79ef4c5b76c004c42748.html
new file mode 100644
index 00000000..a31f2db0
--- /dev/null
+++ b/dir_8607dcdb705c79ef4c5b76c004c42748.html
@@ -0,0 +1,115 @@
+
+
+
+
+
+
+
+mrs_lib: src/transformer Directory Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/dir_8607dcdb705c79ef4c5b76c004c42748_dep.map b/dir_8607dcdb705c79ef4c5b76c004c42748_dep.map
new file mode 100644
index 00000000..59ed0c37
--- /dev/null
+++ b/dir_8607dcdb705c79ef4c5b76c004c42748_dep.map
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/dir_8607dcdb705c79ef4c5b76c004c42748_dep.md5 b/dir_8607dcdb705c79ef4c5b76c004c42748_dep.md5
new file mode 100644
index 00000000..7ced09cd
--- /dev/null
+++ b/dir_8607dcdb705c79ef4c5b76c004c42748_dep.md5
@@ -0,0 +1 @@
+5136fba78cea884a5edfd2a27b47993a
\ No newline at end of file
diff --git a/dir_8607dcdb705c79ef4c5b76c004c42748_dep.png b/dir_8607dcdb705c79ef4c5b76c004c42748_dep.png
new file mode 100644
index 00000000..bbb7b96f
Binary files /dev/null and b/dir_8607dcdb705c79ef4c5b76c004c42748_dep.png differ
diff --git a/dir_8727baefb60589e29135367809dcd3f5.html b/dir_8727baefb60589e29135367809dcd3f5.html
new file mode 100644
index 00000000..748879ab
--- /dev/null
+++ b/dir_8727baefb60589e29135367809dcd3f5.html
@@ -0,0 +1,102 @@
+
+
+
+
+
+
+
+mrs_lib: src/safety_zone/polygon Directory Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/dir_8c35c1873c2690b478a9950d0638d637.html b/dir_8c35c1873c2690b478a9950d0638d637.html
new file mode 100644
index 00000000..573bce94
--- /dev/null
+++ b/dir_8c35c1873c2690b478a9950d0638d637.html
@@ -0,0 +1,102 @@
+
+
+
+
+
+
+
+mrs_lib: src/timer Directory Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/dir_90cd026696fbcd71297c0f7b96e13f91.html b/dir_90cd026696fbcd71297c0f7b96e13f91.html
new file mode 100644
index 00000000..e61a9a03
--- /dev/null
+++ b/dir_90cd026696fbcd71297c0f7b96e13f91.html
@@ -0,0 +1,115 @@
+
+
+
+
+
+
+
+mrs_lib: src/batch_visualizer Directory Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/dir_90cd026696fbcd71297c0f7b96e13f91_dep.map b/dir_90cd026696fbcd71297c0f7b96e13f91_dep.map
new file mode 100644
index 00000000..530aaaad
--- /dev/null
+++ b/dir_90cd026696fbcd71297c0f7b96e13f91_dep.map
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/dir_90cd026696fbcd71297c0f7b96e13f91_dep.md5 b/dir_90cd026696fbcd71297c0f7b96e13f91_dep.md5
new file mode 100644
index 00000000..6a6edf0e
--- /dev/null
+++ b/dir_90cd026696fbcd71297c0f7b96e13f91_dep.md5
@@ -0,0 +1 @@
+acd57d76d8e07d0ae74d5818dbf74b2f
\ No newline at end of file
diff --git a/dir_90cd026696fbcd71297c0f7b96e13f91_dep.png b/dir_90cd026696fbcd71297c0f7b96e13f91_dep.png
new file mode 100644
index 00000000..13191933
Binary files /dev/null and b/dir_90cd026696fbcd71297c0f7b96e13f91_dep.png differ
diff --git a/dir_9940084939548468b1ec99592b6e2693.html b/dir_9940084939548468b1ec99592b6e2693.html
new file mode 100644
index 00000000..c6740d26
--- /dev/null
+++ b/dir_9940084939548468b1ec99592b6e2693.html
@@ -0,0 +1,115 @@
+
+
+
+
+
+
+
+mrs_lib: src/service_client_handler Directory Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/dir_9940084939548468b1ec99592b6e2693_dep.map b/dir_9940084939548468b1ec99592b6e2693_dep.map
new file mode 100644
index 00000000..3b4ce9b3
--- /dev/null
+++ b/dir_9940084939548468b1ec99592b6e2693_dep.map
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/dir_9940084939548468b1ec99592b6e2693_dep.md5 b/dir_9940084939548468b1ec99592b6e2693_dep.md5
new file mode 100644
index 00000000..b5b18ef0
--- /dev/null
+++ b/dir_9940084939548468b1ec99592b6e2693_dep.md5
@@ -0,0 +1 @@
+5082602023290ae5cbf6a8028da89b09
\ No newline at end of file
diff --git a/dir_9940084939548468b1ec99592b6e2693_dep.png b/dir_9940084939548468b1ec99592b6e2693_dep.png
new file mode 100644
index 00000000..9318ef06
Binary files /dev/null and b/dir_9940084939548468b1ec99592b6e2693_dep.png differ
diff --git a/dir_9dc292e6fbe26797bd73250f006569d0.html b/dir_9dc292e6fbe26797bd73250f006569d0.html
new file mode 100644
index 00000000..7b0246f3
--- /dev/null
+++ b/dir_9dc292e6fbe26797bd73250f006569d0.html
@@ -0,0 +1,115 @@
+
+
+
+
+
+
+
+mrs_lib: src/iir_filter Directory Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/dir_9dc292e6fbe26797bd73250f006569d0_dep.map b/dir_9dc292e6fbe26797bd73250f006569d0_dep.map
new file mode 100644
index 00000000..f36c23d5
--- /dev/null
+++ b/dir_9dc292e6fbe26797bd73250f006569d0_dep.map
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/dir_9dc292e6fbe26797bd73250f006569d0_dep.md5 b/dir_9dc292e6fbe26797bd73250f006569d0_dep.md5
new file mode 100644
index 00000000..4dc8139f
--- /dev/null
+++ b/dir_9dc292e6fbe26797bd73250f006569d0_dep.md5
@@ -0,0 +1 @@
+c61ecb8b3900ddc9a35e88998772a782
\ No newline at end of file
diff --git a/dir_9dc292e6fbe26797bd73250f006569d0_dep.png b/dir_9dc292e6fbe26797bd73250f006569d0_dep.png
new file mode 100644
index 00000000..676dbc54
Binary files /dev/null and b/dir_9dc292e6fbe26797bd73250f006569d0_dep.png differ
diff --git a/dir_9de178b262a8e864e9086749ac0a3a65.html b/dir_9de178b262a8e864e9086749ac0a3a65.html
new file mode 100644
index 00000000..75f893d1
--- /dev/null
+++ b/dir_9de178b262a8e864e9086749ac0a3a65.html
@@ -0,0 +1,115 @@
+
+
+
+
+
+
+
+mrs_lib: src/scope_timer Directory Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/dir_9de178b262a8e864e9086749ac0a3a65_dep.map b/dir_9de178b262a8e864e9086749ac0a3a65_dep.map
new file mode 100644
index 00000000..adfe343f
--- /dev/null
+++ b/dir_9de178b262a8e864e9086749ac0a3a65_dep.map
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/dir_9de178b262a8e864e9086749ac0a3a65_dep.md5 b/dir_9de178b262a8e864e9086749ac0a3a65_dep.md5
new file mode 100644
index 00000000..87d9847b
--- /dev/null
+++ b/dir_9de178b262a8e864e9086749ac0a3a65_dep.md5
@@ -0,0 +1 @@
+8e4a160feed7419b82f113d138f5166b
\ No newline at end of file
diff --git a/dir_9de178b262a8e864e9086749ac0a3a65_dep.png b/dir_9de178b262a8e864e9086749ac0a3a65_dep.png
new file mode 100644
index 00000000..d38931b6
Binary files /dev/null and b/dir_9de178b262a8e864e9086749ac0a3a65_dep.png differ
diff --git a/dir_9e9e485811fd7b0342cca4e7c3cf123b.html b/dir_9e9e485811fd7b0342cca4e7c3cf123b.html
new file mode 100644
index 00000000..7e2b91fb
--- /dev/null
+++ b/dir_9e9e485811fd7b0342cca4e7c3cf123b.html
@@ -0,0 +1,109 @@
+
+
+
+
+
+
+
+mrs_lib: src/lkf Directory Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+file example.cpp
+ Example file for the LKF implementation.
+
+
+
+
+
+
+
+
diff --git a/dir_9e9e485811fd7b0342cca4e7c3cf123b.js b/dir_9e9e485811fd7b0342cca4e7c3cf123b.js
new file mode 100644
index 00000000..c7b4e9fb
--- /dev/null
+++ b/dir_9e9e485811fd7b0342cca4e7c3cf123b.js
@@ -0,0 +1,4 @@
+var dir_9e9e485811fd7b0342cca4e7c3cf123b =
+[
+ [ "example.cpp", "lkf_2example_8cpp.html", "lkf_2example_8cpp" ]
+];
\ No newline at end of file
diff --git a/dir_a1544262e4e34d2792f5ebccef9b84d2.html b/dir_a1544262e4e34d2792f5ebccef9b84d2.html
new file mode 100644
index 00000000..e07b649d
--- /dev/null
+++ b/dir_a1544262e4e34d2792f5ebccef9b84d2.html
@@ -0,0 +1,115 @@
+
+
+
+
+
+
+
+mrs_lib: test/publisher_handler Directory Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/dir_a1544262e4e34d2792f5ebccef9b84d2_dep.map b/dir_a1544262e4e34d2792f5ebccef9b84d2_dep.map
new file mode 100644
index 00000000..4d7160da
--- /dev/null
+++ b/dir_a1544262e4e34d2792f5ebccef9b84d2_dep.map
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/dir_a1544262e4e34d2792f5ebccef9b84d2_dep.md5 b/dir_a1544262e4e34d2792f5ebccef9b84d2_dep.md5
new file mode 100644
index 00000000..b9fb7722
--- /dev/null
+++ b/dir_a1544262e4e34d2792f5ebccef9b84d2_dep.md5
@@ -0,0 +1 @@
+ad772774011d64cf4dd398cf77e8f8e5
\ No newline at end of file
diff --git a/dir_a1544262e4e34d2792f5ebccef9b84d2_dep.png b/dir_a1544262e4e34d2792f5ebccef9b84d2_dep.png
new file mode 100644
index 00000000..217d03e2
Binary files /dev/null and b/dir_a1544262e4e34d2792f5ebccef9b84d2_dep.png differ
diff --git a/dir_a17ab943082f893adca96bf9769a804b.html b/dir_a17ab943082f893adca96bf9769a804b.html
new file mode 100644
index 00000000..1070f68c
--- /dev/null
+++ b/dir_a17ab943082f893adca96bf9769a804b.html
@@ -0,0 +1,115 @@
+
+
+
+
+
+
+
+mrs_lib: test/vector_converter Directory Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/dir_a17ab943082f893adca96bf9769a804b_dep.map b/dir_a17ab943082f893adca96bf9769a804b_dep.map
new file mode 100644
index 00000000..4b0d48da
--- /dev/null
+++ b/dir_a17ab943082f893adca96bf9769a804b_dep.map
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/dir_a17ab943082f893adca96bf9769a804b_dep.md5 b/dir_a17ab943082f893adca96bf9769a804b_dep.md5
new file mode 100644
index 00000000..486cb49b
--- /dev/null
+++ b/dir_a17ab943082f893adca96bf9769a804b_dep.md5
@@ -0,0 +1 @@
+5232042fc90bc171212b108f642820aa
\ No newline at end of file
diff --git a/dir_a17ab943082f893adca96bf9769a804b_dep.png b/dir_a17ab943082f893adca96bf9769a804b_dep.png
new file mode 100644
index 00000000..9fbdb3b9
Binary files /dev/null and b/dir_a17ab943082f893adca96bf9769a804b_dep.png differ
diff --git a/dir_a5078ef47331b4526bf3f96e987ee465.html b/dir_a5078ef47331b4526bf3f96e987ee465.html
new file mode 100644
index 00000000..63a1898e
--- /dev/null
+++ b/dir_a5078ef47331b4526bf3f96e987ee465.html
@@ -0,0 +1,122 @@
+
+
+
+
+
+
+
+mrs_lib: src/ukf Directory Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+file example.cpp
+ Example file for the UKF implementation.
+
+
+
+
+
+
+
+
diff --git a/dir_a5078ef47331b4526bf3f96e987ee465.js b/dir_a5078ef47331b4526bf3f96e987ee465.js
new file mode 100644
index 00000000..4aee7f47
--- /dev/null
+++ b/dir_a5078ef47331b4526bf3f96e987ee465.js
@@ -0,0 +1,4 @@
+var dir_a5078ef47331b4526bf3f96e987ee465 =
+[
+ [ "example.cpp", "ukf_2example_8cpp.html", "ukf_2example_8cpp" ]
+];
\ No newline at end of file
diff --git a/dir_a5078ef47331b4526bf3f96e987ee465_dep.map b/dir_a5078ef47331b4526bf3f96e987ee465_dep.map
new file mode 100644
index 00000000..038059b2
--- /dev/null
+++ b/dir_a5078ef47331b4526bf3f96e987ee465_dep.map
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/dir_a5078ef47331b4526bf3f96e987ee465_dep.md5 b/dir_a5078ef47331b4526bf3f96e987ee465_dep.md5
new file mode 100644
index 00000000..a63263b1
--- /dev/null
+++ b/dir_a5078ef47331b4526bf3f96e987ee465_dep.md5
@@ -0,0 +1 @@
+d8e8743b9f2cbafdc31ade08885fabc4
\ No newline at end of file
diff --git a/dir_a5078ef47331b4526bf3f96e987ee465_dep.png b/dir_a5078ef47331b4526bf3f96e987ee465_dep.png
new file mode 100644
index 00000000..5debc29b
Binary files /dev/null and b/dir_a5078ef47331b4526bf3f96e987ee465_dep.png differ
diff --git a/dir_a801eb2785f54179a3e523b657d76987.html b/dir_a801eb2785f54179a3e523b657d76987.html
new file mode 100644
index 00000000..bb009f1c
--- /dev/null
+++ b/dir_a801eb2785f54179a3e523b657d76987.html
@@ -0,0 +1,102 @@
+
+
+
+
+
+
+
+mrs_lib: test/repredictor Directory Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/dir_a891666b40284627c385858212667a8e.html b/dir_a891666b40284627c385858212667a8e.html
new file mode 100644
index 00000000..7b46736a
--- /dev/null
+++ b/dir_a891666b40284627c385858212667a8e.html
@@ -0,0 +1,115 @@
+
+
+
+
+
+
+
+mrs_lib: src/median_filter Directory Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/dir_a891666b40284627c385858212667a8e_dep.map b/dir_a891666b40284627c385858212667a8e_dep.map
new file mode 100644
index 00000000..04989dec
--- /dev/null
+++ b/dir_a891666b40284627c385858212667a8e_dep.map
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/dir_a891666b40284627c385858212667a8e_dep.md5 b/dir_a891666b40284627c385858212667a8e_dep.md5
new file mode 100644
index 00000000..6a505157
--- /dev/null
+++ b/dir_a891666b40284627c385858212667a8e_dep.md5
@@ -0,0 +1 @@
+4668f6f4cce609e7120c1903b3e3f883
\ No newline at end of file
diff --git a/dir_a891666b40284627c385858212667a8e_dep.png b/dir_a891666b40284627c385858212667a8e_dep.png
new file mode 100644
index 00000000..f452f47b
Binary files /dev/null and b/dir_a891666b40284627c385858212667a8e_dep.png differ
diff --git a/dir_a91f64f59277207d470dc7e676106e2d.html b/dir_a91f64f59277207d470dc7e676106e2d.html
new file mode 100644
index 00000000..53d429cf
--- /dev/null
+++ b/dir_a91f64f59277207d470dc7e676106e2d.html
@@ -0,0 +1,115 @@
+
+
+
+
+
+
+
+mrs_lib: test/param_loader Directory Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/dir_a91f64f59277207d470dc7e676106e2d_dep.map b/dir_a91f64f59277207d470dc7e676106e2d_dep.map
new file mode 100644
index 00000000..a0e08f38
--- /dev/null
+++ b/dir_a91f64f59277207d470dc7e676106e2d_dep.map
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/dir_a91f64f59277207d470dc7e676106e2d_dep.md5 b/dir_a91f64f59277207d470dc7e676106e2d_dep.md5
new file mode 100644
index 00000000..d5a55af9
--- /dev/null
+++ b/dir_a91f64f59277207d470dc7e676106e2d_dep.md5
@@ -0,0 +1 @@
+76448235f354161ca408c6a71e385fa4
\ No newline at end of file
diff --git a/dir_a91f64f59277207d470dc7e676106e2d_dep.png b/dir_a91f64f59277207d470dc7e676106e2d_dep.png
new file mode 100644
index 00000000..efbe99aa
Binary files /dev/null and b/dir_a91f64f59277207d470dc7e676106e2d_dep.png differ
diff --git a/dir_aa9be1b82c48662217aefeaa0c6781c6.html b/dir_aa9be1b82c48662217aefeaa0c6781c6.html
new file mode 100644
index 00000000..89977b41
--- /dev/null
+++ b/dir_aa9be1b82c48662217aefeaa0c6781c6.html
@@ -0,0 +1,115 @@
+
+
+
+
+
+
+
+mrs_lib: test/utils Directory Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/dir_aa9be1b82c48662217aefeaa0c6781c6_dep.map b/dir_aa9be1b82c48662217aefeaa0c6781c6_dep.map
new file mode 100644
index 00000000..66855270
--- /dev/null
+++ b/dir_aa9be1b82c48662217aefeaa0c6781c6_dep.map
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/dir_aa9be1b82c48662217aefeaa0c6781c6_dep.md5 b/dir_aa9be1b82c48662217aefeaa0c6781c6_dep.md5
new file mode 100644
index 00000000..2f569177
--- /dev/null
+++ b/dir_aa9be1b82c48662217aefeaa0c6781c6_dep.md5
@@ -0,0 +1 @@
+8da95333a4592f7322be930b95416315
\ No newline at end of file
diff --git a/dir_aa9be1b82c48662217aefeaa0c6781c6_dep.png b/dir_aa9be1b82c48662217aefeaa0c6781c6_dep.png
new file mode 100644
index 00000000..4e00d109
Binary files /dev/null and b/dir_aa9be1b82c48662217aefeaa0c6781c6_dep.png differ
diff --git a/dir_ae9a93452e2a84339148a16bcf2eb561.html b/dir_ae9a93452e2a84339148a16bcf2eb561.html
new file mode 100644
index 00000000..136f0c19
--- /dev/null
+++ b/dir_ae9a93452e2a84339148a16bcf2eb561.html
@@ -0,0 +1,115 @@
+
+
+
+
+
+
+
+mrs_lib: src/math Directory Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/dir_ae9a93452e2a84339148a16bcf2eb561_dep.map b/dir_ae9a93452e2a84339148a16bcf2eb561_dep.map
new file mode 100644
index 00000000..a584473b
--- /dev/null
+++ b/dir_ae9a93452e2a84339148a16bcf2eb561_dep.map
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/dir_ae9a93452e2a84339148a16bcf2eb561_dep.md5 b/dir_ae9a93452e2a84339148a16bcf2eb561_dep.md5
new file mode 100644
index 00000000..753fc788
--- /dev/null
+++ b/dir_ae9a93452e2a84339148a16bcf2eb561_dep.md5
@@ -0,0 +1 @@
+72884bda4c1943a7a9ca2eb3fd0f8632
\ No newline at end of file
diff --git a/dir_ae9a93452e2a84339148a16bcf2eb561_dep.png b/dir_ae9a93452e2a84339148a16bcf2eb561_dep.png
new file mode 100644
index 00000000..5749e06c
Binary files /dev/null and b/dir_ae9a93452e2a84339148a16bcf2eb561_dep.png differ
diff --git a/dir_b45211e520e4a09b6829419ceab557b0.html b/dir_b45211e520e4a09b6829419ceab557b0.html
new file mode 100644
index 00000000..4ed3a47e
--- /dev/null
+++ b/dir_b45211e520e4a09b6829419ceab557b0.html
@@ -0,0 +1,102 @@
+
+
+
+
+
+
+
+mrs_lib: include/mrs_lib/safety_zone Directory Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/dir_b45211e520e4a09b6829419ceab557b0.js b/dir_b45211e520e4a09b6829419ceab557b0.js
new file mode 100644
index 00000000..1b90df62
--- /dev/null
+++ b/dir_b45211e520e4a09b6829419ceab557b0.js
@@ -0,0 +1,7 @@
+var dir_b45211e520e4a09b6829419ceab557b0 =
+[
+ [ "line_operations.h", "line__operations_8h_source.html", null ],
+ [ "point_obstacle.h", "point__obstacle_8h_source.html", null ],
+ [ "polygon.h", "polygon_8h_source.html", null ],
+ [ "safety_zone.h", "safety__zone_8h_source.html", null ]
+];
\ No newline at end of file
diff --git a/dir_b51f180547f8d0f0e77de7f16caceac3.html b/dir_b51f180547f8d0f0e77de7f16caceac3.html
new file mode 100644
index 00000000..03eea917
--- /dev/null
+++ b/dir_b51f180547f8d0f0e77de7f16caceac3.html
@@ -0,0 +1,198 @@
+
+
+
+
+
+
+
+mrs_lib: include/mrs_lib Directory Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+file attitude_converter.h [code]
+ Conversions between various representations of object attitude in 3D. Supports Quaternions, Euler angles, Angle-axis and Rotational matrices from tf, tf2, Eigen and geometry_msgs libraries. The default Euler angle notation is the extrinsic RPY.
+
+file batch_visualizer.h [code]
+ For convenient and computationally lightweight drawing of geometry in RVIZ using marker arrays.
+
+file dynamic_publisher.h [code]
+ Defines DynamicPublisher for easy debug publishing of ROS messages.
+
+file dynamic_reconfigure_mgr.h [code]
+ Defines DynamicReconfigureMgr - a convenience class for managing dynamic ROS parameters through dynamic reconfigure.
+
+file gps_conversions.h [code]
+ Universal Transverse Mercator transforms. Functions to convert (spherical) latitude and longitude to and from (Euclidean) UTM coordinates.
+
+file iir_filter.h [code]
+
+file kalman_filter.h [code]
+ Defines KalmanFilter - an abstract class, defining common interfaces and types for a generic Kalman filter.
+
+file kalman_filter_aloamgarm.h [code]
+ Defines KalmanFilter - an abstract class, defining common interfaces and types for a generic Kalman filter.
+
+file math.h [code]
+ Defines useful math functions that are not part of the cmath STD library.
+
+file median_filter.h [code]
+ Defines the MedianFilter class.
+
+
+
+
+file mutex.h [code]
+ Defines helper routines for getting and setting variables under mutex locks.
+
+file notch_filter.h [code]
+
+file param_loader.h [code]
+ Defines ParamLoader - a convenience class for loading static ROS parameters.
+
+file profiler.h [code]
+ A scoped function profiler which publishes ROS messages.
+
+file publisher_handler.h [code]
+ Defines PublisherHandler and related convenience classes for upgrading the ROS publisher.
+
+file rheiv.h [code]
+ Defines RHEIV and related stuff for surface fitting to points with known covariances according to [2] .
+
+file scope_timer.h [code]
+ Simple timer which times a duration of its scope, with additional optional checkpoints.
+
+file service_client_handler.h [code]
+ Defines ServiceClientHandler and related convenience classes for upgrading the ROS service client.
+
+file subscribe_handler.h [code]
+ Defines SubscribeHandler and related convenience classes for subscribing to ROS topics.
+
+file timeout_manager.h [code]
+ TODO.
+
+file ukf.h [code]
+ Defines UKF - a class implementing the Unscented Kalman Filter [4] .
+
+file utils.h [code]
+ Defines various general utility functions.
+
+file vector_converter.h [code]
+ Defines the convert() function for conversion between different vector representations (Eigen, OpenCV, tf2 etc.).
+
+file visual_object.h [code]
+ Object abstraction for the Batch Visualizer.
+
+
+
+
+
+
+
+
diff --git a/dir_b51f180547f8d0f0e77de7f16caceac3.js b/dir_b51f180547f8d0f0e77de7f16caceac3.js
new file mode 100644
index 00000000..e5549a76
--- /dev/null
+++ b/dir_b51f180547f8d0f0e77de7f16caceac3.js
@@ -0,0 +1,83 @@
+var dir_b51f180547f8d0f0e77de7f16caceac3 =
+[
+ [ "geometry", "dir_85b0de967ad5400027712e30c95ca897.html", "dir_85b0de967ad5400027712e30c95ca897" ],
+ [ "impl", "dir_7164529cd9c8f96b25598799ea656806.html", "dir_7164529cd9c8f96b25598799ea656806" ],
+ [ "safety_zone", "dir_b45211e520e4a09b6829419ceab557b0.html", "dir_b45211e520e4a09b6829419ceab557b0" ],
+ [ "attitude_converter.h", "attitude__converter_8h.html", "attitude__converter_8h" ],
+ [ "batch_visualizer.h", "batch__visualizer_8h.html", "batch__visualizer_8h" ],
+ [ "dkf.h", "dkf_8h_source.html", null ],
+ [ "dynamic_publisher.h", "dynamic__publisher_8h.html", [
+ [ "DynamicPublisher", "classmrs__lib_1_1DynamicPublisher.html", "classmrs__lib_1_1DynamicPublisher" ]
+ ] ],
+ [ "dynamic_reconfigure_mgr.h", "dynamic__reconfigure__mgr_8h.html", [
+ [ "DynamicReconfigureMgr", "classmrs__lib_1_1DynamicReconfigureMgr.html", "classmrs__lib_1_1DynamicReconfigureMgr" ]
+ ] ],
+ [ "gps_conversions.h", "gps__conversions_8h.html", "gps__conversions_8h" ],
+ [ "iir_filter.h", "iir__filter_8h.html", [
+ [ "IirFilter", "classmrs__lib_1_1IirFilter.html", "classmrs__lib_1_1IirFilter" ]
+ ] ],
+ [ "image_publisher.h", "image__publisher_8h_source.html", null ],
+ [ "jlkf.h", "jlkf_8h_source.html", null ],
+ [ "kalman_filter.h", "kalman__filter_8h.html", [
+ [ "KalmanFilter", "classmrs__lib_1_1KalmanFilter.html", "classmrs__lib_1_1KalmanFilter" ],
+ [ "statecov_t", "structmrs__lib_1_1KalmanFilter_1_1statecov__t.html", "structmrs__lib_1_1KalmanFilter_1_1statecov__t" ]
+ ] ],
+ [ "kalman_filter_aloamgarm.h", "kalman__filter__aloamgarm_8h.html", [
+ [ "KalmanFilterAloamGarm", "classmrs__lib_1_1KalmanFilterAloamGarm.html", "classmrs__lib_1_1KalmanFilterAloamGarm" ],
+ [ "statecov_t", "structmrs__lib_1_1KalmanFilterAloamGarm_1_1statecov__t.html", "structmrs__lib_1_1KalmanFilterAloamGarm_1_1statecov__t" ]
+ ] ],
+ [ "lkf.h", "lkf_8h_source.html", null ],
+ [ "math.h", "math_8h.html", "math_8h" ],
+ [ "median_filter.h", "median__filter_8h.html", [
+ [ "MedianFilter", "classmrs__lib_1_1MedianFilter.html", "classmrs__lib_1_1MedianFilter" ]
+ ] ],
+ [ "mrs_lib.h", "mrs__lib_8h_source.html", null ],
+ [ "msg_extractor.h", "msg__extractor_8h.html", "msg__extractor_8h" ],
+ [ "mutex.h", "mutex_8h.html", "mutex_8h" ],
+ [ "nckf.h", "nckf_8h_source.html", null ],
+ [ "notch_filter.h", "notch__filter_8h.html", [
+ [ "NotchFilter", "classmrs__lib_1_1NotchFilter.html", "classmrs__lib_1_1NotchFilter" ]
+ ] ],
+ [ "param_loader.h", "param__loader_8h.html", "param__loader_8h" ],
+ [ "param_provider.h", "param__provider_8h_source.html", null ],
+ [ "profiler.h", "profiler_8h.html", [
+ [ "Routine", "classmrs__lib_1_1Routine.html", "classmrs__lib_1_1Routine" ],
+ [ "Profiler", "classmrs__lib_1_1Profiler.html", "classmrs__lib_1_1Profiler" ]
+ ] ],
+ [ "publisher_handler.h", "publisher__handler_8h.html", [
+ [ "PublisherHandler_impl", "classmrs__lib_1_1PublisherHandler__impl.html", "classmrs__lib_1_1PublisherHandler__impl" ],
+ [ "PublisherHandler", "classmrs__lib_1_1PublisherHandler.html", "classmrs__lib_1_1PublisherHandler" ]
+ ] ],
+ [ "quadratic_throttle_model.h", "quadratic__throttle__model_8h_source.html", null ],
+ [ "repredictor.h", "repredictor_8h_source.html", null ],
+ [ "repredictor_aloamgarm.h", "repredictor__aloamgarm_8h_source.html", null ],
+ [ "rheiv.h", "rheiv_8h.html", [
+ [ "eigenvector_exception", "structmrs__lib_1_1eigenvector__exception.html", "structmrs__lib_1_1eigenvector__exception" ],
+ [ "RHEIV", "classmrs__lib_1_1RHEIV.html", "classmrs__lib_1_1RHEIV" ]
+ ] ],
+ [ "ros_param_provider.h", "ros__param__provider_8h_source.html", null ],
+ [ "scope_timer.h", "scope__timer_8h.html", [
+ [ "ScopeTimerLogger", "classmrs__lib_1_1ScopeTimerLogger.html", "classmrs__lib_1_1ScopeTimerLogger" ],
+ [ "ScopeTimer", "classmrs__lib_1_1ScopeTimer.html", "classmrs__lib_1_1ScopeTimer" ],
+ [ "time_point", "structmrs__lib_1_1ScopeTimer_1_1time__point.html", "structmrs__lib_1_1ScopeTimer_1_1time__point" ]
+ ] ],
+ [ "service_client_handler.h", "service__client__handler_8h.html", [
+ [ "ServiceClientHandler_impl", "classmrs__lib_1_1ServiceClientHandler__impl.html", "classmrs__lib_1_1ServiceClientHandler__impl" ],
+ [ "ServiceClientHandler", "classmrs__lib_1_1ServiceClientHandler.html", "classmrs__lib_1_1ServiceClientHandler" ]
+ ] ],
+ [ "subscribe_handler.h", "subscribe__handler_8h.html", "subscribe__handler_8h" ],
+ [ "timeout_manager.h", "timeout__manager_8h.html", [
+ [ "TimeoutManager", "classmrs__lib_1_1TimeoutManager.html", "classmrs__lib_1_1TimeoutManager" ]
+ ] ],
+ [ "timer.h", "timer_8h_source.html", null ],
+ [ "transform_broadcaster.h", "transform__broadcaster_8h_source.html", null ],
+ [ "transformer.h", "transformer_8h_source.html", null ],
+ [ "ukf.h", "ukf_8h.html", [
+ [ "UKF", "classmrs__lib_1_1UKF.html", "classmrs__lib_1_1UKF" ],
+ [ "square_root_exception", "structmrs__lib_1_1UKF_1_1square__root__exception.html", "structmrs__lib_1_1UKF_1_1square__root__exception" ],
+ [ "inverse_exception", "structmrs__lib_1_1UKF_1_1inverse__exception.html", "structmrs__lib_1_1UKF_1_1inverse__exception" ]
+ ] ],
+ [ "utils.h", "utils_8h.html", "utils_8h" ],
+ [ "vector_converter.h", "vector__converter_8h.html", "vector__converter_8h" ],
+ [ "visual_object.h", "visual__object_8h.html", "visual__object_8h" ]
+];
\ No newline at end of file
diff --git a/dir_b51f180547f8d0f0e77de7f16caceac3_dep.map b/dir_b51f180547f8d0f0e77de7f16caceac3_dep.map
new file mode 100644
index 00000000..d3b7e51a
--- /dev/null
+++ b/dir_b51f180547f8d0f0e77de7f16caceac3_dep.map
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
diff --git a/dir_b51f180547f8d0f0e77de7f16caceac3_dep.md5 b/dir_b51f180547f8d0f0e77de7f16caceac3_dep.md5
new file mode 100644
index 00000000..28632714
--- /dev/null
+++ b/dir_b51f180547f8d0f0e77de7f16caceac3_dep.md5
@@ -0,0 +1 @@
+083cb302dff9efabe73354801cc6ceb2
\ No newline at end of file
diff --git a/dir_b51f180547f8d0f0e77de7f16caceac3_dep.png b/dir_b51f180547f8d0f0e77de7f16caceac3_dep.png
new file mode 100644
index 00000000..332443ca
Binary files /dev/null and b/dir_b51f180547f8d0f0e77de7f16caceac3_dep.png differ
diff --git a/dir_bd43be0586985cbd0dfeaf1ebce92195.html b/dir_bd43be0586985cbd0dfeaf1ebce92195.html
new file mode 100644
index 00000000..a6abcb71
--- /dev/null
+++ b/dir_bd43be0586985cbd0dfeaf1ebce92195.html
@@ -0,0 +1,115 @@
+
+
+
+
+
+
+
+mrs_lib: test/timer Directory Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/dir_bd43be0586985cbd0dfeaf1ebce92195_dep.map b/dir_bd43be0586985cbd0dfeaf1ebce92195_dep.map
new file mode 100644
index 00000000..90bd73a3
--- /dev/null
+++ b/dir_bd43be0586985cbd0dfeaf1ebce92195_dep.map
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/dir_bd43be0586985cbd0dfeaf1ebce92195_dep.md5 b/dir_bd43be0586985cbd0dfeaf1ebce92195_dep.md5
new file mode 100644
index 00000000..75797110
--- /dev/null
+++ b/dir_bd43be0586985cbd0dfeaf1ebce92195_dep.md5
@@ -0,0 +1 @@
+d8f627804a7e81b0c17476810f06f22e
\ No newline at end of file
diff --git a/dir_bd43be0586985cbd0dfeaf1ebce92195_dep.png b/dir_bd43be0586985cbd0dfeaf1ebce92195_dep.png
new file mode 100644
index 00000000..4ec949a4
Binary files /dev/null and b/dir_bd43be0586985cbd0dfeaf1ebce92195_dep.png differ
diff --git a/dir_c34e1a38474b6d602bc9081a27b1a010.html b/dir_c34e1a38474b6d602bc9081a27b1a010.html
new file mode 100644
index 00000000..c27f53cb
--- /dev/null
+++ b/dir_c34e1a38474b6d602bc9081a27b1a010.html
@@ -0,0 +1,115 @@
+
+
+
+
+
+
+
+mrs_lib: test/timeout_manager Directory Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/dir_c34e1a38474b6d602bc9081a27b1a010_dep.map b/dir_c34e1a38474b6d602bc9081a27b1a010_dep.map
new file mode 100644
index 00000000..a44b4f87
--- /dev/null
+++ b/dir_c34e1a38474b6d602bc9081a27b1a010_dep.map
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/dir_c34e1a38474b6d602bc9081a27b1a010_dep.md5 b/dir_c34e1a38474b6d602bc9081a27b1a010_dep.md5
new file mode 100644
index 00000000..92d24814
--- /dev/null
+++ b/dir_c34e1a38474b6d602bc9081a27b1a010_dep.md5
@@ -0,0 +1 @@
+932e88bc68fef3df8394b23159d6bf8e
\ No newline at end of file
diff --git a/dir_c34e1a38474b6d602bc9081a27b1a010_dep.png b/dir_c34e1a38474b6d602bc9081a27b1a010_dep.png
new file mode 100644
index 00000000..e95df6cb
Binary files /dev/null and b/dir_c34e1a38474b6d602bc9081a27b1a010_dep.png differ
diff --git a/dir_cfc0c72890b8d1e009b6260caa55cd65.html b/dir_cfc0c72890b8d1e009b6260caa55cd65.html
new file mode 100644
index 00000000..01274ab8
--- /dev/null
+++ b/dir_cfc0c72890b8d1e009b6260caa55cd65.html
@@ -0,0 +1,115 @@
+
+
+
+
+
+
+
+mrs_lib: src/profiler Directory Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/dir_cfc0c72890b8d1e009b6260caa55cd65_dep.map b/dir_cfc0c72890b8d1e009b6260caa55cd65_dep.map
new file mode 100644
index 00000000..b69bb8d9
--- /dev/null
+++ b/dir_cfc0c72890b8d1e009b6260caa55cd65_dep.map
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/dir_cfc0c72890b8d1e009b6260caa55cd65_dep.md5 b/dir_cfc0c72890b8d1e009b6260caa55cd65_dep.md5
new file mode 100644
index 00000000..95598476
--- /dev/null
+++ b/dir_cfc0c72890b8d1e009b6260caa55cd65_dep.md5
@@ -0,0 +1 @@
+33adb992522c32406f079d816cc450ce
\ No newline at end of file
diff --git a/dir_cfc0c72890b8d1e009b6260caa55cd65_dep.png b/dir_cfc0c72890b8d1e009b6260caa55cd65_dep.png
new file mode 100644
index 00000000..01bde094
Binary files /dev/null and b/dir_cfc0c72890b8d1e009b6260caa55cd65_dep.png differ
diff --git a/dir_d20a67be47c1454b19aa07d8b0143440.html b/dir_d20a67be47c1454b19aa07d8b0143440.html
new file mode 100644
index 00000000..f4112799
--- /dev/null
+++ b/dir_d20a67be47c1454b19aa07d8b0143440.html
@@ -0,0 +1,122 @@
+
+
+
+
+
+
+
+mrs_lib: src/rheiv Directory Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+file example.cpp
+ Example file for the RHEIV implementation.
+
+
+
+
+
+
+
+
diff --git a/dir_d20a67be47c1454b19aa07d8b0143440.js b/dir_d20a67be47c1454b19aa07d8b0143440.js
new file mode 100644
index 00000000..b43d486b
--- /dev/null
+++ b/dir_d20a67be47c1454b19aa07d8b0143440.js
@@ -0,0 +1,4 @@
+var dir_d20a67be47c1454b19aa07d8b0143440 =
+[
+ [ "example.cpp", "rheiv_2example_8cpp.html", "rheiv_2example_8cpp" ]
+];
\ No newline at end of file
diff --git a/dir_d20a67be47c1454b19aa07d8b0143440_dep.map b/dir_d20a67be47c1454b19aa07d8b0143440_dep.map
new file mode 100644
index 00000000..fa06cb27
--- /dev/null
+++ b/dir_d20a67be47c1454b19aa07d8b0143440_dep.map
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/dir_d20a67be47c1454b19aa07d8b0143440_dep.md5 b/dir_d20a67be47c1454b19aa07d8b0143440_dep.md5
new file mode 100644
index 00000000..00ecfdf4
--- /dev/null
+++ b/dir_d20a67be47c1454b19aa07d8b0143440_dep.md5
@@ -0,0 +1 @@
+facb5ab87cc308776a92b8be456dd601
\ No newline at end of file
diff --git a/dir_d20a67be47c1454b19aa07d8b0143440_dep.png b/dir_d20a67be47c1454b19aa07d8b0143440_dep.png
new file mode 100644
index 00000000..587f2f35
Binary files /dev/null and b/dir_d20a67be47c1454b19aa07d8b0143440_dep.png differ
diff --git a/dir_d44c64559bbebec7f509842c48db8b23.html b/dir_d44c64559bbebec7f509842c48db8b23.html
new file mode 100644
index 00000000..453d4da9
--- /dev/null
+++ b/dir_d44c64559bbebec7f509842c48db8b23.html
@@ -0,0 +1,117 @@
+
+
+
+
+
+
+
+mrs_lib: include Directory Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/dir_d44c64559bbebec7f509842c48db8b23.js b/dir_d44c64559bbebec7f509842c48db8b23.js
new file mode 100644
index 00000000..b06dc3d9
--- /dev/null
+++ b/dir_d44c64559bbebec7f509842c48db8b23.js
@@ -0,0 +1,4 @@
+var dir_d44c64559bbebec7f509842c48db8b23 =
+[
+ [ "mrs_lib", "dir_b51f180547f8d0f0e77de7f16caceac3.html", "dir_b51f180547f8d0f0e77de7f16caceac3" ]
+];
\ No newline at end of file
diff --git a/dir_d44c64559bbebec7f509842c48db8b23_dep.map b/dir_d44c64559bbebec7f509842c48db8b23_dep.map
new file mode 100644
index 00000000..8062d00b
--- /dev/null
+++ b/dir_d44c64559bbebec7f509842c48db8b23_dep.map
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/dir_d44c64559bbebec7f509842c48db8b23_dep.md5 b/dir_d44c64559bbebec7f509842c48db8b23_dep.md5
new file mode 100644
index 00000000..9112cb0a
--- /dev/null
+++ b/dir_d44c64559bbebec7f509842c48db8b23_dep.md5
@@ -0,0 +1 @@
+f57f40f891732e0fdb51abdbcfc4b765
\ No newline at end of file
diff --git a/dir_d44c64559bbebec7f509842c48db8b23_dep.png b/dir_d44c64559bbebec7f509842c48db8b23_dep.png
new file mode 100644
index 00000000..5c635c82
Binary files /dev/null and b/dir_d44c64559bbebec7f509842c48db8b23_dep.png differ
diff --git a/dir_d49d4fe2bb593f3112f8bcbe6fb5f73b.html b/dir_d49d4fe2bb593f3112f8bcbe6fb5f73b.html
new file mode 100644
index 00000000..84283bc1
--- /dev/null
+++ b/dir_d49d4fe2bb593f3112f8bcbe6fb5f73b.html
@@ -0,0 +1,115 @@
+
+
+
+
+
+
+
+mrs_lib: test/geometry Directory Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/dir_d49d4fe2bb593f3112f8bcbe6fb5f73b_dep.map b/dir_d49d4fe2bb593f3112f8bcbe6fb5f73b_dep.map
new file mode 100644
index 00000000..f4f865f8
--- /dev/null
+++ b/dir_d49d4fe2bb593f3112f8bcbe6fb5f73b_dep.map
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/dir_d49d4fe2bb593f3112f8bcbe6fb5f73b_dep.md5 b/dir_d49d4fe2bb593f3112f8bcbe6fb5f73b_dep.md5
new file mode 100644
index 00000000..bef464c1
--- /dev/null
+++ b/dir_d49d4fe2bb593f3112f8bcbe6fb5f73b_dep.md5
@@ -0,0 +1 @@
+16b42851d8fde199224aaa9070d883c5
\ No newline at end of file
diff --git a/dir_d49d4fe2bb593f3112f8bcbe6fb5f73b_dep.png b/dir_d49d4fe2bb593f3112f8bcbe6fb5f73b_dep.png
new file mode 100644
index 00000000..23bcbb4b
Binary files /dev/null and b/dir_d49d4fe2bb593f3112f8bcbe6fb5f73b_dep.png differ
diff --git a/dir_d81f13436e73f242cdf25a742f3a9678.html b/dir_d81f13436e73f242cdf25a742f3a9678.html
new file mode 100644
index 00000000..e9b3f8b4
--- /dev/null
+++ b/dir_d81f13436e73f242cdf25a742f3a9678.html
@@ -0,0 +1,122 @@
+
+
+
+
+
+
+
+mrs_lib: src/param_loader Directory Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+file example.cpp
+ Example file for the ParamLoader convenience class.
+
+
+
+
+
+
+
+
diff --git a/dir_d81f13436e73f242cdf25a742f3a9678.js b/dir_d81f13436e73f242cdf25a742f3a9678.js
new file mode 100644
index 00000000..0f828bd4
--- /dev/null
+++ b/dir_d81f13436e73f242cdf25a742f3a9678.js
@@ -0,0 +1,4 @@
+var dir_d81f13436e73f242cdf25a742f3a9678 =
+[
+ [ "example.cpp", "param__loader_2example_8cpp.html", "param__loader_2example_8cpp" ]
+];
\ No newline at end of file
diff --git a/dir_d81f13436e73f242cdf25a742f3a9678_dep.map b/dir_d81f13436e73f242cdf25a742f3a9678_dep.map
new file mode 100644
index 00000000..eda427f0
--- /dev/null
+++ b/dir_d81f13436e73f242cdf25a742f3a9678_dep.map
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/dir_d81f13436e73f242cdf25a742f3a9678_dep.md5 b/dir_d81f13436e73f242cdf25a742f3a9678_dep.md5
new file mode 100644
index 00000000..5665752a
--- /dev/null
+++ b/dir_d81f13436e73f242cdf25a742f3a9678_dep.md5
@@ -0,0 +1 @@
+87a19658b52aed2c65da29384f97b877
\ No newline at end of file
diff --git a/dir_d81f13436e73f242cdf25a742f3a9678_dep.png b/dir_d81f13436e73f242cdf25a742f3a9678_dep.png
new file mode 100644
index 00000000..c9e8a7fe
Binary files /dev/null and b/dir_d81f13436e73f242cdf25a742f3a9678_dep.png differ
diff --git a/dir_dbeb4cbddd5bb6f84539c6e271d9141e.html b/dir_dbeb4cbddd5bb6f84539c6e271d9141e.html
new file mode 100644
index 00000000..e21afb80
--- /dev/null
+++ b/dir_dbeb4cbddd5bb6f84539c6e271d9141e.html
@@ -0,0 +1,115 @@
+
+
+
+
+
+
+
+mrs_lib: test/transformer Directory Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/dir_dbeb4cbddd5bb6f84539c6e271d9141e_dep.map b/dir_dbeb4cbddd5bb6f84539c6e271d9141e_dep.map
new file mode 100644
index 00000000..4b676d12
--- /dev/null
+++ b/dir_dbeb4cbddd5bb6f84539c6e271d9141e_dep.map
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/dir_dbeb4cbddd5bb6f84539c6e271d9141e_dep.md5 b/dir_dbeb4cbddd5bb6f84539c6e271d9141e_dep.md5
new file mode 100644
index 00000000..488f6217
--- /dev/null
+++ b/dir_dbeb4cbddd5bb6f84539c6e271d9141e_dep.md5
@@ -0,0 +1 @@
+231b7942a5bcd1c4d9c37271043e0953
\ No newline at end of file
diff --git a/dir_dbeb4cbddd5bb6f84539c6e271d9141e_dep.png b/dir_dbeb4cbddd5bb6f84539c6e271d9141e_dep.png
new file mode 100644
index 00000000..ee755b6a
Binary files /dev/null and b/dir_dbeb4cbddd5bb6f84539c6e271d9141e_dep.png differ
diff --git a/dir_dcbbf3bfcdb3d005110c6ee2b744bf08.html b/dir_dcbbf3bfcdb3d005110c6ee2b744bf08.html
new file mode 100644
index 00000000..df2d449e
--- /dev/null
+++ b/dir_dcbbf3bfcdb3d005110c6ee2b744bf08.html
@@ -0,0 +1,122 @@
+
+
+
+
+
+
+
+mrs_lib: src/vector_converter Directory Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/dir_dcbbf3bfcdb3d005110c6ee2b744bf08.js b/dir_dcbbf3bfcdb3d005110c6ee2b744bf08.js
new file mode 100644
index 00000000..10852695
--- /dev/null
+++ b/dir_dcbbf3bfcdb3d005110c6ee2b744bf08.js
@@ -0,0 +1,4 @@
+var dir_dcbbf3bfcdb3d005110c6ee2b744bf08 =
+[
+ [ "example.cpp", "vector__converter_2example_8cpp.html", "vector__converter_2example_8cpp" ]
+];
\ No newline at end of file
diff --git a/dir_dcbbf3bfcdb3d005110c6ee2b744bf08_dep.map b/dir_dcbbf3bfcdb3d005110c6ee2b744bf08_dep.map
new file mode 100644
index 00000000..d296bbb5
--- /dev/null
+++ b/dir_dcbbf3bfcdb3d005110c6ee2b744bf08_dep.map
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/dir_dcbbf3bfcdb3d005110c6ee2b744bf08_dep.md5 b/dir_dcbbf3bfcdb3d005110c6ee2b744bf08_dep.md5
new file mode 100644
index 00000000..0591c62d
--- /dev/null
+++ b/dir_dcbbf3bfcdb3d005110c6ee2b744bf08_dep.md5
@@ -0,0 +1 @@
+bc3ab36c3730d3ca0c5fe93316dff847
\ No newline at end of file
diff --git a/dir_dcbbf3bfcdb3d005110c6ee2b744bf08_dep.png b/dir_dcbbf3bfcdb3d005110c6ee2b744bf08_dep.png
new file mode 100644
index 00000000..23d4563d
Binary files /dev/null and b/dir_dcbbf3bfcdb3d005110c6ee2b744bf08_dep.png differ
diff --git a/dir_df4ba55d073265bfa281b5d186f7d37a.html b/dir_df4ba55d073265bfa281b5d186f7d37a.html
new file mode 100644
index 00000000..3f5cfbc9
--- /dev/null
+++ b/dir_df4ba55d073265bfa281b5d186f7d37a.html
@@ -0,0 +1,115 @@
+
+
+
+
+
+
+
+mrs_lib: test/attitude_converter Directory Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/dir_df4ba55d073265bfa281b5d186f7d37a_dep.map b/dir_df4ba55d073265bfa281b5d186f7d37a_dep.map
new file mode 100644
index 00000000..d3eae4c7
--- /dev/null
+++ b/dir_df4ba55d073265bfa281b5d186f7d37a_dep.map
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/dir_df4ba55d073265bfa281b5d186f7d37a_dep.md5 b/dir_df4ba55d073265bfa281b5d186f7d37a_dep.md5
new file mode 100644
index 00000000..f28d822d
--- /dev/null
+++ b/dir_df4ba55d073265bfa281b5d186f7d37a_dep.md5
@@ -0,0 +1 @@
+d767d07de34de3759f2dcb7e5c63d917
\ No newline at end of file
diff --git a/dir_df4ba55d073265bfa281b5d186f7d37a_dep.png b/dir_df4ba55d073265bfa281b5d186f7d37a_dep.png
new file mode 100644
index 00000000..381c2e3a
Binary files /dev/null and b/dir_df4ba55d073265bfa281b5d186f7d37a_dep.png differ
diff --git a/dir_e55805edabc475f3fe5ed114dc40d256.html b/dir_e55805edabc475f3fe5ed114dc40d256.html
new file mode 100644
index 00000000..e867b967
--- /dev/null
+++ b/dir_e55805edabc475f3fe5ed114dc40d256.html
@@ -0,0 +1,115 @@
+
+
+
+
+
+
+
+mrs_lib: src/safety_zone/point_obstacle Directory Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/dir_e55805edabc475f3fe5ed114dc40d256_dep.map b/dir_e55805edabc475f3fe5ed114dc40d256_dep.map
new file mode 100644
index 00000000..0df3818e
--- /dev/null
+++ b/dir_e55805edabc475f3fe5ed114dc40d256_dep.map
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/dir_e55805edabc475f3fe5ed114dc40d256_dep.md5 b/dir_e55805edabc475f3fe5ed114dc40d256_dep.md5
new file mode 100644
index 00000000..081c83db
--- /dev/null
+++ b/dir_e55805edabc475f3fe5ed114dc40d256_dep.md5
@@ -0,0 +1 @@
+7ba6cb5106dae5a91cc1a878286f9050
\ No newline at end of file
diff --git a/dir_e55805edabc475f3fe5ed114dc40d256_dep.png b/dir_e55805edabc475f3fe5ed114dc40d256_dep.png
new file mode 100644
index 00000000..addd3797
Binary files /dev/null and b/dir_e55805edabc475f3fe5ed114dc40d256_dep.png differ
diff --git a/dir_e6bb757187894633b963babd59fca1e5.html b/dir_e6bb757187894633b963babd59fca1e5.html
new file mode 100644
index 00000000..01ff74e7
--- /dev/null
+++ b/dir_e6bb757187894633b963babd59fca1e5.html
@@ -0,0 +1,121 @@
+
+
+
+
+
+
+
+mrs_lib: src/safety_zone Directory Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/dir_e6bb757187894633b963babd59fca1e5_dep.map b/dir_e6bb757187894633b963babd59fca1e5_dep.map
new file mode 100644
index 00000000..51f556c9
--- /dev/null
+++ b/dir_e6bb757187894633b963babd59fca1e5_dep.map
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
diff --git a/dir_e6bb757187894633b963babd59fca1e5_dep.md5 b/dir_e6bb757187894633b963babd59fca1e5_dep.md5
new file mode 100644
index 00000000..03f0a476
--- /dev/null
+++ b/dir_e6bb757187894633b963babd59fca1e5_dep.md5
@@ -0,0 +1 @@
+d44bf05cad861baefbfe5ccdf8941888
\ No newline at end of file
diff --git a/dir_e6bb757187894633b963babd59fca1e5_dep.png b/dir_e6bb757187894633b963babd59fca1e5_dep.png
new file mode 100644
index 00000000..b077ddfb
Binary files /dev/null and b/dir_e6bb757187894633b963babd59fca1e5_dep.png differ
diff --git a/dir_f003de2bf99885e59674f01f3665fb82.html b/dir_f003de2bf99885e59674f01f3665fb82.html
new file mode 100644
index 00000000..1f942f29
--- /dev/null
+++ b/dir_f003de2bf99885e59674f01f3665fb82.html
@@ -0,0 +1,125 @@
+
+
+
+
+
+
+
+mrs_lib: src/subscribe_handler Directory Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+file example.cpp
+ Example file for the SubscribeHandler convenience class.
+
+file simple_example.cpp
+ Example file for the SubscribeHandler convenience class.
+
+
+
+
+
+
+
+
diff --git a/dir_f003de2bf99885e59674f01f3665fb82.js b/dir_f003de2bf99885e59674f01f3665fb82.js
new file mode 100644
index 00000000..fc122e7f
--- /dev/null
+++ b/dir_f003de2bf99885e59674f01f3665fb82.js
@@ -0,0 +1,5 @@
+var dir_f003de2bf99885e59674f01f3665fb82 =
+[
+ [ "example.cpp", "subscribe__handler_2example_8cpp.html", "subscribe__handler_2example_8cpp" ],
+ [ "simple_example.cpp", "simple__example_8cpp.html", "simple__example_8cpp" ]
+];
\ No newline at end of file
diff --git a/dir_f003de2bf99885e59674f01f3665fb82_dep.map b/dir_f003de2bf99885e59674f01f3665fb82_dep.map
new file mode 100644
index 00000000..feacb71a
--- /dev/null
+++ b/dir_f003de2bf99885e59674f01f3665fb82_dep.map
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/dir_f003de2bf99885e59674f01f3665fb82_dep.md5 b/dir_f003de2bf99885e59674f01f3665fb82_dep.md5
new file mode 100644
index 00000000..5f9531e4
--- /dev/null
+++ b/dir_f003de2bf99885e59674f01f3665fb82_dep.md5
@@ -0,0 +1 @@
+f048f33341a81052e53013bf86d83182
\ No newline at end of file
diff --git a/dir_f003de2bf99885e59674f01f3665fb82_dep.png b/dir_f003de2bf99885e59674f01f3665fb82_dep.png
new file mode 100644
index 00000000..f2463e34
Binary files /dev/null and b/dir_f003de2bf99885e59674f01f3665fb82_dep.png differ
diff --git a/dir_fbb9f35580885fae6f87a033a53c348d.html b/dir_fbb9f35580885fae6f87a033a53c348d.html
new file mode 100644
index 00000000..f7fdd554
--- /dev/null
+++ b/dir_fbb9f35580885fae6f87a033a53c348d.html
@@ -0,0 +1,102 @@
+
+
+
+
+
+
+
+mrs_lib: src/transform_broadcaster Directory Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/dkf_8h_source.html b/dkf_8h_source.html
new file mode 100644
index 00000000..57d3bf7f
--- /dev/null
+++ b/dkf_8h_source.html
@@ -0,0 +1,200 @@
+
+
+
+
+
+
+
+mrs_lib: include/mrs_lib/dkf.h Source File
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
10 #include <mrs_lib/lkf.h>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
44 typedef Eigen::Matrix<double, n, n>
A_t ;
+
45 typedef Eigen::Matrix<double, n, m>
B_t ;
+
46 typedef Eigen::Matrix<double, p, n>
H_t ;
+
47 typedef Eigen::Matrix<double, n, p>
K_t ;
+
49 using mat2_t = Eigen::Matrix<double, 2, 2>;
+
50 using mat3_t = Eigen::Matrix<double, 3, 3>;
+
51 using pt3_t = mrs_lib::geometry::vec3_t;
+
52 using vec3_t = mrs_lib::geometry::vec3_t;
+
+
+
+
+
+
+
+
+
+
88 assert(line_direction.norm() > 0.0);
+
89 const vec3_t zunit {0.0, 0.0, 1.0};
+
+
91 const mat3_t rot = mrs_lib::geometry::rotationBetween(line_direction, zunit);
+
+
+
94 const H_t Hprime = rot.block<2, 2>(0, 0);
+
+
96 const pt3_t oprime = rot*line_origin;
+
97 const z_t z = oprime.block<2, 1>(0, 0);
+
+
99 const R_t R = line_variance*R_t::Identity();
+
100 return correction_impl(sc, z, R, Hprime);
+
+
+
+
+
+
+
+
+
+
+typename Base_class::statecov_t statecov_t
Helper struct for passing around the state and its covariance in one variable.
Definition: dkf.h:42
+typename Base_class::R_t R_t
Measurement noise covariance matrix type .
Definition: dkf.h:40
+typename Base_class::Q_t Q_t
Process noise covariance matrix type .
Definition: lkf.h:52
+static constexpr int p
Length of the measurement vector of the system.
Definition: lkf.h:44
+static constexpr int p
Length of the measurement vector of the system.
Definition: dkf.h:34
+typename Base_class::P_t P_t
State uncertainty covariance matrix type .
Definition: lkf.h:50
+typename Base_class::z_t z_t
Measurement vector type .
Definition: dkf.h:38
+static constexpr int n
Length of the state vector of the system.
Definition: dkf.h:32
+typename Base_class::statecov_t statecov_t
Helper struct for passing around the state and its covariance in one variable.
Definition: lkf.h:53
+typename Base_class::R_t R_t
Measurement noise covariance matrix type .
Definition: lkf.h:51
+typename Base_class::P_t P_t
State uncertainty covariance matrix type .
Definition: dkf.h:39
+DKF(const A_t &A, const B_t &B)
The main constructor.
Definition: dkf.h:70
+Eigen::Matrix< double, n, p > K_t
Kalman gain matrix type .
Definition: dkf.h:47
+virtual statecov_t correctLine(const statecov_t &sc, const pt3_t &line_origin, const vec3_t &line_direction, const double line_variance) const
Applies the correction (update, measurement, data) step of the Kalman filter.
Definition: dkf.h:86
+Eigen::Matrix< double, p, n > H_t
State to measurement mapping matrix type .
Definition: dkf.h:46
+Defines useful geometry utilities and functions.
+typename Base_class::x_t x_t
State vector type .
Definition: lkf.h:47
+DKF()
Convenience default constructor.
Definition: dkf.h:61
+All mrs_lib functions, classes, variables and definitions are contained in this namespace.
Definition: attitude_converter.h:29
+static constexpr int n
Length of the state vector of the system.
Definition: lkf.h:42
+static constexpr int m
Length of the input vector of the system.
Definition: dkf.h:33
+B_t B
The input to state mapping matrix .
Definition: lkf.h:149
+Eigen::Matrix< double, n, m > B_t
Input to state mapping matrix type .
Definition: dkf.h:45
+Implementation of the Linear Kalman filter .
Definition: lkf.h:38
+typename Base_class::x_t x_t
State vector type .
Definition: dkf.h:36
+typename Base_class::Q_t Q_t
Process noise covariance matrix type .
Definition: dkf.h:41
+typename Base_class::z_t z_t
Measurement vector type .
Definition: lkf.h:49
+static constexpr int m
Length of the input vector of the system.
Definition: lkf.h:43
+A_t A
The system transition matrix .
Definition: lkf.h:144
+typename Base_class::u_t u_t
Input vector type .
Definition: lkf.h:48
+Implementation of the Degenerate measurement Linear Kalman filter.
Definition: dkf.h:26
+Eigen::Matrix< double, n, n > A_t
System transition matrix type .
Definition: dkf.h:44
+typename Base_class::u_t u_t
Input vector type .
Definition: dkf.h:37
+
+
+
+
diff --git a/doc.png b/doc.png
new file mode 100644
index 00000000..17edabff
Binary files /dev/null and b/doc.png differ
diff --git a/doxygen.css b/doxygen.css
new file mode 100644
index 00000000..73ecbb2c
--- /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 00000000..3ff17d80
Binary files /dev/null and b/doxygen.png differ
diff --git a/dynamic__publisher_2example_8cpp.html b/dynamic__publisher_2example_8cpp.html
new file mode 100644
index 00000000..8efc3434
--- /dev/null
+++ b/dynamic__publisher_2example_8cpp.html
@@ -0,0 +1,143 @@
+
+
+
+
+
+
+
+mrs_lib: src/dynamic_publisher/example.cpp File Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Example file for the DynamicPublisher convenience class.
+More...
+
#include <mrs_lib/dynamic_publisher.h >
+
#include <std_msgs/Float32.h>
+
#include <geometry_msgs/Point.h>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+int main (int argc, char **argv)
+
+
+
+
Example file for the DynamicPublisher convenience class.
+
Author Matouš Vrba - vrbam.nosp@m. ato@.nosp@m. fel.c.nosp@m. vut..nosp@m. cz
+
This example may be run after building mrs_lib by executing rosrun mrs_lib dynamic_publisher_example
.
+
See dynamic_publisher/example.cpp .
+
+
+
+
+
+
diff --git a/dynamic__publisher_2example_8cpp.js b/dynamic__publisher_2example_8cpp.js
new file mode 100644
index 00000000..f29375a3
--- /dev/null
+++ b/dynamic__publisher_2example_8cpp.js
@@ -0,0 +1,4 @@
+var dynamic__publisher_2example_8cpp =
+[
+ [ "main", "dynamic__publisher_2example_8cpp.html#a3c04138a5bfe5d72780bb7e82a18e627", null ]
+];
\ No newline at end of file
diff --git a/dynamic__publisher_2example_8cpp__incl.map b/dynamic__publisher_2example_8cpp__incl.map
new file mode 100644
index 00000000..1a9a9007
--- /dev/null
+++ b/dynamic__publisher_2example_8cpp__incl.map
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/dynamic__publisher_2example_8cpp__incl.md5 b/dynamic__publisher_2example_8cpp__incl.md5
new file mode 100644
index 00000000..08f88272
--- /dev/null
+++ b/dynamic__publisher_2example_8cpp__incl.md5
@@ -0,0 +1 @@
+4e2c598e4daa4f871c9f4c7b78aced19
\ No newline at end of file
diff --git a/dynamic__publisher_2example_8cpp__incl.png b/dynamic__publisher_2example_8cpp__incl.png
new file mode 100644
index 00000000..2b1d793c
Binary files /dev/null and b/dynamic__publisher_2example_8cpp__incl.png differ
diff --git a/dynamic__publisher_8h.html b/dynamic__publisher_8h.html
new file mode 100644
index 00000000..f7f87cdf
--- /dev/null
+++ b/dynamic__publisher_8h.html
@@ -0,0 +1,161 @@
+
+
+
+
+
+
+
+mrs_lib: include/mrs_lib/dynamic_publisher.h File Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Defines DynamicPublisher for easy debug publishing of ROS messages.
+More...
+
#include <mutex>
+
#include <ros/ros.h>
+
#include <mrs_lib/publisher_handler.h >
+
#include <mrs_lib/impl/dynamic_publisher.hpp>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Go to the source code of this file.
+
+
+ mrs_lib
+ All mrs_lib functions, classes, variables and definitions are contained in this namespace.
+
+
+
+
Defines DynamicPublisher for easy debug publishing of ROS messages.
+
Author Matouš Vrba - vrbam.nosp@m. ato@.nosp@m. fel.c.nosp@m. vut..nosp@m. cz
+
+Tomáš Báča - bacat.nosp@m. oma@.nosp@m. fel.c.nosp@m. vut..nosp@m. cz
+
+
+
+
+
+
diff --git a/dynamic__publisher_8h__dep__incl.map b/dynamic__publisher_8h__dep__incl.map
new file mode 100644
index 00000000..d63ab902
--- /dev/null
+++ b/dynamic__publisher_8h__dep__incl.map
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/dynamic__publisher_8h__dep__incl.md5 b/dynamic__publisher_8h__dep__incl.md5
new file mode 100644
index 00000000..66d86d89
--- /dev/null
+++ b/dynamic__publisher_8h__dep__incl.md5
@@ -0,0 +1 @@
+6325853d5d03c0319eeb1e6f33c800a7
\ No newline at end of file
diff --git a/dynamic__publisher_8h__dep__incl.png b/dynamic__publisher_8h__dep__incl.png
new file mode 100644
index 00000000..ea74603b
Binary files /dev/null and b/dynamic__publisher_8h__dep__incl.png differ
diff --git a/dynamic__publisher_8h__incl.map b/dynamic__publisher_8h__incl.map
new file mode 100644
index 00000000..b77a45ff
--- /dev/null
+++ b/dynamic__publisher_8h__incl.map
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/dynamic__publisher_8h__incl.md5 b/dynamic__publisher_8h__incl.md5
new file mode 100644
index 00000000..4c1e3e59
--- /dev/null
+++ b/dynamic__publisher_8h__incl.md5
@@ -0,0 +1 @@
+944aae8f568ea95237d7c854ae452773
\ No newline at end of file
diff --git a/dynamic__publisher_8h__incl.png b/dynamic__publisher_8h__incl.png
new file mode 100644
index 00000000..fcd15ebf
Binary files /dev/null and b/dynamic__publisher_8h__incl.png differ
diff --git a/dynamic__publisher_8h_source.html b/dynamic__publisher_8h_source.html
new file mode 100644
index 00000000..5894a2f3
--- /dev/null
+++ b/dynamic__publisher_8h_source.html
@@ -0,0 +1,138 @@
+
+
+
+
+
+
+
+mrs_lib: include/mrs_lib/dynamic_publisher.h Source File
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Go to the documentation of this file.
+
8 #ifndef DYNAMIC_PUBLISHER_H
+
9 #define DYNAMIC_PUBLISHER_H
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
53 void publish (
const std::string name,
const T& msg);
+
+
+
+
57 std::unique_ptr<impl> m_impl;
+
+
+
60 #include <mrs_lib/impl/dynamic_publisher.hpp>
+
+
+
+
64 #endif // DYNAMIC_PUBLISHER_H
+
+
+void publish(const std::string name, const T &msg)
Publishes a message to a topic, advertising the topic if necessary.
+A helper class for easy publishing of ROS messages for debugging purposes.
Definition: dynamic_publisher.h:26
+All mrs_lib functions, classes, variables and definitions are contained in this namespace.
Definition: attitude_converter.h:29
+DynamicPublisher()
A no-parameter constructor.
Definition: dynamic_publisher.cpp:5
+Defines PublisherHandler and related convenience classes for upgrading the ROS publisher.
+
+
+
+
diff --git a/dynamic__publisher_8hpp_source.html b/dynamic__publisher_8hpp_source.html
new file mode 100644
index 00000000..e1e4e372
--- /dev/null
+++ b/dynamic__publisher_8hpp_source.html
@@ -0,0 +1,152 @@
+
+
+
+
+
+
+
+mrs_lib: include/mrs_lib/impl/dynamic_publisher.hpp Source File
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
6 impl (
const ros::NodeHandle& nh) : m_nh(nh)
+
+
+
+
+
11 void publish(
const std::string name,
const T& msg)
+
+
13 std::scoped_lock lck(m_mtx);
+
14 const std::string msg_md5 = ros::message_traits::MD5Sum<T>::value();
+
15 const std::string msg_datatype = ros::message_traits::DataType<T>::value();
+
16 if (m_publishers.count(name) == 0)
+
17 m_publishers.emplace(name, pub_info_t{m_nh.advertise<T>(name, 10), msg_md5, msg_datatype});
+
+
19 const auto & pub_info = m_publishers.at(name);
+
20 if (pub_info.msg_md5 ==
"*" ||
+
+
22 pub_info.msg_md5 == msg_md5)
+
+
24 pub_info.pub.publish(msg);
+
+
+
+
28 ROS_ERROR_STREAM(
"[DynamicPublisher]: Trying to publish message of type [" << msg_datatype <<
"/" << msg_md5
+
29 <<
"] on a publisher with type [" << pub_info.datatype <<
"/" << pub_info.msg_md5 <<
"], ignoring!" );
+
+
+
+
+
+
+
+
+
+
+
+
+
42 std::unordered_map<std::string, pub_info_t> m_publishers;
+
+
+
+
46 void DynamicPublisher::publish(
const std::string name,
const T& msg)
+
+
48 m_impl->publish(name, msg);
+
+
+
+Definition: dynamic_publisher.hpp:1
+
+
+
+
diff --git a/dynamic__reconfigure__mgr_8h.html b/dynamic__reconfigure__mgr_8h.html
new file mode 100644
index 00000000..41792dde
--- /dev/null
+++ b/dynamic__reconfigure__mgr_8h.html
@@ -0,0 +1,163 @@
+
+
+
+
+
+
+
+mrs_lib: include/mrs_lib/dynamic_reconfigure_mgr.h File Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Defines DynamicReconfigureMgr - a convenience class for managing dynamic ROS parameters through dynamic reconfigure.
+More...
+
#include <ros/ros.h>
+
#include <dynamic_reconfigure/server.h>
+
#include <string>
+
#include <map>
+
#include <unordered_set>
+
#include <mutex>
+
#include <iostream>
+
#include <boost/any.hpp>
+
#include <Eigen/Dense>
+
#include <mrs_lib/param_loader.h >
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Go to the source code of this file.
+
+
+ mrs_lib
+ All mrs_lib functions, classes, variables and definitions are contained in this namespace.
+
+
+
+
Defines DynamicReconfigureMgr - a convenience class for managing dynamic ROS parameters through dynamic reconfigure.
+
Author Matouš Vrba - vrbam.nosp@m. ato@.nosp@m. fel.c.nosp@m. vut..nosp@m. cz
+
+
+
+
+
+
diff --git a/dynamic__reconfigure__mgr_8h__incl.map b/dynamic__reconfigure__mgr_8h__incl.map
new file mode 100644
index 00000000..05015db5
--- /dev/null
+++ b/dynamic__reconfigure__mgr_8h__incl.map
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/dynamic__reconfigure__mgr_8h__incl.md5 b/dynamic__reconfigure__mgr_8h__incl.md5
new file mode 100644
index 00000000..9a432772
--- /dev/null
+++ b/dynamic__reconfigure__mgr_8h__incl.md5
@@ -0,0 +1 @@
+9a53d97d442b3848bdaca4d853376bfd
\ No newline at end of file
diff --git a/dynamic__reconfigure__mgr_8h__incl.png b/dynamic__reconfigure__mgr_8h__incl.png
new file mode 100644
index 00000000..5f18b5f0
Binary files /dev/null and b/dynamic__reconfigure__mgr_8h__incl.png differ
diff --git a/dynamic__reconfigure__mgr_8h_source.html b/dynamic__reconfigure__mgr_8h_source.html
new file mode 100644
index 00000000..d9b2de14
--- /dev/null
+++ b/dynamic__reconfigure__mgr_8h_source.html
@@ -0,0 +1,362 @@
+
+
+
+
+
+
+
+mrs_lib: include/mrs_lib/dynamic_reconfigure_mgr.h Source File
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Go to the documentation of this file.
+
6 #ifndef DYNAMIC_RECONFIGURE_MGR_H
+
7 #define DYNAMIC_RECONFIGURE_MGR_H
+
+
+
10 #include <dynamic_reconfigure/server.h>
+
+
+
13 #include <unordered_set>
+
+
+
16 #include <boost/any.hpp>
+
17 #include <Eigen/Dense>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
39 template <
typename ConfigType>
+
+
+
+
43 using callback_t =
typename dynamic_reconfigure::Server<ConfigType>::CallbackType;
+
+
+
+
+
48 DynamicReconfigureMgr (
const ros::NodeHandle& nh = ros::NodeHandle(
"~" ),
bool print_values =
true , std::string node_name = std::string(),
const callback_t& user_callback = {})
+
49 : m_not_initialized(
true ),
+
50 m_loaded_invalid_default(
false ),
+
51 m_print_values(print_values),
+
52 m_node_name(node_name),
+
53 m_server(m_server_mtx, nh),
+
54 m_usr_cbf(user_callback),
+
55 m_pl(nh, print_values, node_name)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
71 void update_config(
const ConfigType& cfg)
+
+
73 m_server.updateConfig(cfg);
+
+
+
+
+
+
79 m_server.updateConfig(config);
+
+
+
82 void publish_descriptions()
+
+
+
85 m_server.getConfigDefault(dflt);
+
86 m_server.setConfigDefault(dflt);
+
+
+
89 bool loaded_successfully()
+
+
+
+
+
+
95 bool m_not_initialized, m_loaded_invalid_default, m_print_values;
+
96 std::string m_node_name;
+
+
98 boost::recursive_mutex m_server_mtx;
+
99 typename dynamic_reconfigure::Server<ConfigType> m_server;
+
100 callback_t m_usr_cbf;
+
+
+
103 std::unordered_set<std::string> m_to_init;
+
+
+
106 void dynamic_reconfigure_callback(ConfigType& new_config, uint32_t level)
+
+
+
+
110 if (m_node_name.empty())
+
111 ROS_INFO(
"Dynamic reconfigure request received" );
+
+
113 ROS_INFO(
"[%s]: Dynamic reconfigure request received" , m_node_name.c_str());
+
+
+
116 if (m_not_initialized)
+
+
118 load_defaults(new_config);
+
119 update_config(new_config);
+
+
+
+
123 print_changed_params(new_config);
+
+
125 m_not_initialized =
false ;
+
+
+
128 m_usr_cbf(new_config, level);
+
+
+
131 template <
typename T>
+
132 void load_param(
const std::string& name,
typename ConfigType::AbstractParamDescriptionConstPtr& descr, ConfigType& config)
+
+
134 using param_descr_t =
typename ConfigType::template ParamDescription<T>;
+
135 boost::shared_ptr<const param_descr_t> cast_descr = boost::dynamic_pointer_cast<const param_descr_t>(descr);
+
136 m_pl.
loadParam (name, config.*(cast_descr->field));
+
+
+
139 void load_defaults(ConfigType& new_config)
+
+
+
142 std::vector<typename ConfigType::AbstractParamDescriptionConstPtr> descrs = new_config.__getParamDescriptions__();
+
143 for (
auto & descr : descrs)
+
+
145 std::string name = descr->name;
+
146 size_t pos = name.find(
"__" );
+
147 while (pos != name.npos)
+
+
149 name.replace(pos, 2,
"/" );
+
150 pos = name.find(
"__" );
+
+
+
153 if (descr->type ==
"bool" )
+
154 load_param<bool>(name, descr, new_config);
+
155 else if (descr->type ==
"int" )
+
156 load_param<int>(name, descr, new_config);
+
157 else if (descr->type ==
"double" )
+
158 load_param<double>(name, descr, new_config);
+
159 else if (descr->type ==
"str" )
+
160 load_param<std::string>(name, descr, new_config);
+
+
+
163 ROS_ERROR(
"[%s]: Unknown parameter type: '%s'" , m_node_name.c_str(), descr->type.c_str());
+
164 m_loaded_invalid_default =
true ;
+
+
+
+
+
+
170 void print_changed_params(
const ConfigType& new_config)
+
+
+
173 std::vector<typename ConfigType::AbstractParamDescriptionConstPtr> descrs = new_config.__getParamDescriptions__();
+
174 for (
auto & descr : descrs)
+
+
176 boost::any val, old_val;
+
177 descr->getValue(new_config, val);
+
178 descr->getValue(config, old_val);
+
179 std::string name = descr->name;
+
180 const size_t pos = name.find(
"__" );
+
181 if (pos != name.npos)
+
+
183 if (m_not_initialized)
+
+
+
+
+
188 name.replace(pos, 2,
"/" );
+
+
+
+
+
+
+
+
196 std::string* stringval;
+
+
198 if (try_cast(val, intval))
+
+
200 if (m_not_initialized || !try_compare(old_val, intval))
+
201 print_value(name, *intval);
+
202 }
else if (try_cast(val, doubleval))
+
+
204 if (m_not_initialized || !try_compare(old_val, doubleval))
+
205 print_value(name, *doubleval);
+
206 }
else if (try_cast(val, boolval))
+
+
208 if (m_not_initialized || !try_compare(old_val, boolval))
+
209 print_value(name, *boolval);
+
210 }
else if (try_cast(val, stringval))
+
+
212 if (m_not_initialized || !try_compare(old_val, stringval))
+
213 print_value(name, *stringval);
+
+
+
216 print_value(name, std::string(
"unknown dynamic reconfigure type" ));
+
+
+
+
+
+
+
223 template <
typename T>
+
224 inline void print_value(
const std::string& name,
const T& val)
+
+
226 if (m_node_name.empty())
+
227 std::cout <<
"\t" << name <<
":\t" << val << std::endl;
+
+
229 ROS_INFO_STREAM(
"[" << m_node_name <<
"]: parameter '" << name <<
"':\t" << val);
+
+
+
232 template <
typename T>
+
233 inline bool try_cast(boost::any& val, T*& out)
+
+
235 return (out = boost::any_cast<T>(&val));
+
+
237 template <
typename T>
+
238 inline bool try_compare(boost::any& val, T*& to_what)
+
+
+
241 if ((tmp = boost::any_cast<T>(&val)))
+
+
+
244 return *tmp == *to_what;
+
+
+
247 if (m_node_name.empty())
+
248 ROS_WARN(
"DynamicReconfigure value type has changed - this should not happen!" );
+
+
250 ROS_WARN_STREAM(
"[" << m_node_name <<
"]: DynamicReconfigure value type has changed - this should not happen!" );
+
+
+
+
+
+
+
+
+
259 #endif // DYNAMIC_RECONFIGURE_MGR_H
+
+
+bool loadedSuccessfully()
Indicates whether all compulsory parameters were successfully loaded.
Definition: param_loader.h:608
+All mrs_lib functions, classes, variables and definitions are contained in this namespace.
Definition: attitude_converter.h:29
+Defines ParamLoader - a convenience class for loading static ROS parameters.
+bool loadParam(const std::string &name, T &out_value, const T &default_value)
Loads a parameter from the rosparam server with a default value.
Definition: param_loader.h:628
+
+Convenience class for loading parameters from rosparam server.
Definition: param_loader.h:43
+
+
+
+
diff --git a/dynamic_publisher_2example_8cpp-example.html b/dynamic_publisher_2example_8cpp-example.html
new file mode 100644
index 00000000..13f81ba2
--- /dev/null
+++ b/dynamic_publisher_2example_8cpp-example.html
@@ -0,0 +1,147 @@
+
+
+
+
+
+
+
+mrs_lib: dynamic_publisher/example.cpp
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
This example may be run after building mrs_lib by executing rosrun mrs_lib dynamic_publisher_example
.
+
+
+
#include <std_msgs/Float32.h>
+
#include <geometry_msgs/Point.h>
+
+
int main(int argc, char **argv)
+
{
+
+
const std::string node_name("dynamic_publisher_example" );
+
ros::init(argc, argv, node_name);
+
ros::NodeHandle nh;
+
+
+
+
+
+
ros::Duration slp(0.5);
+
+
std_msgs::Float32 float_msg;
+
geometry_msgs::Point pt_msg;
+
+
ROS_INFO("Publishing topics! Use `rostopic list` and `rostopic echo <topic_name>` to see them." );
+
while (ros::ok())
+
{
+
float_msg.data += 666.0f;
+
dynpub.
publish (
"float_topic" , float_msg);
+
+
+
+
pt_msg.x = float_msg.data/1;
+
pt_msg.y = float_msg.data/2;
+
pt_msg.z = float_msg.data/3;
+
dynpub.
publish (
"point_topic" , pt_msg);
+
+
dynpub.
publish (
"point_topic" , float_msg);
+
+
ros::spinOnce();
+
slp.sleep();
+
}
+
+
return 0;
+
}
+
+
+void publish(const std::string name, const T &msg)
Publishes a message to a topic, advertising the topic if necessary.
+Defines DynamicPublisher for easy debug publishing of ROS messages.
+A helper class for easy publishing of ROS messages for debugging purposes.
Definition: dynamic_publisher.h:26
+
+
+
+
diff --git a/dynsections.js b/dynsections.js
new file mode 100644
index 00000000..ea0a7b39
--- /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_lib: Examples
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Here is a list of all examples:
+
+
+
+
+
+
diff --git a/examples.js b/examples.js
new file mode 100644
index 00000000..7e59eb0d
--- /dev/null
+++ b/examples.js
@@ -0,0 +1,13 @@
+var examples =
+[
+ [ "dynamic_publisher/example.cpp", "dynamic_publisher_2example_8cpp-example.html", null ],
+ [ "geometry/cyclic_example.cpp", "geometry_2cyclic_example_8cpp-example.html", null ],
+ [ "lkf/example.cpp", "lkf_2example_8cpp-example.html", null ],
+ [ "param_loader/example.cpp", "param_loader_2example_8cpp-example.html", null ],
+ [ "repredictor/example.cpp", "repredictor_2example_8cpp-example.html", null ],
+ [ "rheiv/example.cpp", "rheiv_2example_8cpp-example.html", null ],
+ [ "subscribe_handler/example.cpp", "subscribe_handler_2example_8cpp-example.html", null ],
+ [ "subscribe_handler/simple_example.cpp", "subscribe_handler_2simple_example_8cpp-example.html", null ],
+ [ "ukf/example.cpp", "ukf_2example_8cpp-example.html", null ],
+ [ "vector_converter/example.cpp", "vector_converter_2example_8cpp-example.html", null ]
+];
\ No newline at end of file
diff --git a/files.html b/files.html
new file mode 100644
index 00000000..11bffef5
--- /dev/null
+++ b/files.html
@@ -0,0 +1,194 @@
+
+
+
+
+
+
+
+mrs_lib: File List
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Here is a list of all documented files with brief descriptions:
+
[detail level 1 2 3 4 ]
+ ▼ include
+ ▼ mrs_lib
+ ▼ geometry
+ conversions.h
+ conversions_eigen.h
+ conversions_opencv.h
+ cyclic.h Defines the cyclic class for calculations with cyclic quantities
+ misc.h Defines useful geometry utilities and functions
+ shapes.h Defines various geometrical shapes and their relations
+ ▼ impl
+ dynamic_publisher.hpp
+ param_provider.hpp
+ publisher_handler.hpp
+ service_client_handler.hpp
+ subscribe_handler.hpp
+ timer.hpp
+ transformer.hpp
+ ukf.hpp Implements UKF - a class implementing the Unscented Kalman Filter
+ vector_converter.hpp Implements the convertTo() and convertFrom() functions for conversion between different vector representations (Eigen, OpenCV, tf2 etc.)
+ vector_converter_types.h
+ ▼ safety_zone
+ line_operations.h
+ point_obstacle.h
+ polygon.h
+ safety_zone.h
+ attitude_converter.h Conversions between various representations of object attitude in 3D. Supports Quaternions, Euler angles, Angle-axis and Rotational matrices from tf, tf2, Eigen and geometry_msgs libraries. The default Euler angle notation is the extrinsic RPY
+ batch_visualizer.h For convenient and computationally lightweight drawing of geometry in RVIZ using marker arrays
+ dkf.h
+ dynamic_publisher.h Defines DynamicPublisher for easy debug publishing of ROS messages
+ dynamic_reconfigure_mgr.h Defines DynamicReconfigureMgr - a convenience class for managing dynamic ROS parameters through dynamic reconfigure
+ gps_conversions.h Universal Transverse Mercator transforms. Functions to convert (spherical) latitude and longitude to and from (Euclidean) UTM coordinates
+ iir_filter.h
+ image_publisher.h
+ jlkf.h
+ kalman_filter.h Defines KalmanFilter - an abstract class, defining common interfaces and types for a generic Kalman filter
+ kalman_filter_aloamgarm.h Defines KalmanFilter - an abstract class, defining common interfaces and types for a generic Kalman filter
+ lkf.h
+ math.h Defines useful math functions that are not part of the cmath STD library
+ median_filter.h Defines the MedianFilter class
+ mrs_lib.h
+ msg_extractor.h Utility functions for getting stuff from ROS msgs
+ mutex.h Defines helper routines for getting and setting variables under mutex locks
+ nckf.h
+ notch_filter.h
+ param_loader.h Defines ParamLoader - a convenience class for loading static ROS parameters
+ param_provider.h
+ profiler.h A scoped function profiler which publishes ROS messages
+ publisher_handler.h Defines PublisherHandler and related convenience classes for upgrading the ROS publisher
+ quadratic_throttle_model.h
+ repredictor.h
+ repredictor_aloamgarm.h
+ rheiv.h Defines RHEIV and related stuff for surface fitting to points with known covariances according to [2]
+ ros_param_provider.h
+ scope_timer.h Simple timer which times a duration of its scope, with additional optional checkpoints
+ service_client_handler.h Defines ServiceClientHandler and related convenience classes for upgrading the ROS service client
+ subscribe_handler.h Defines SubscribeHandler and related convenience classes for subscribing to ROS topics
+ timeout_manager.h TODO
+ timer.h
+ transform_broadcaster.h
+ transformer.h
+ ukf.h Defines UKF - a class implementing the Unscented Kalman Filter [4]
+ utils.h Defines various general utility functions
+ vector_converter.h Defines the convert() function for conversion between different vector representations (Eigen, OpenCV, tf2 etc.)
+ visual_object.h Object abstraction for the Batch Visualizer
+ ▼ src
+ ▼ dynamic_publisher
+ example.cpp Example file for the DynamicPublisher convenience class
+ ▼ geometry
+ cyclic_example.cpp Example file for the cyclical values implementation (see the cyclic class)
+ ▼ lkf
+ example.cpp Example file for the LKF implementation
+ ▼ nckf
+ nckf_tests.cpp Tests for the UKF implementation
+ ▼ param_loader
+ example.cpp Example file for the ParamLoader convenience class
+ ▼ repredictor
+ example.cpp Example file for the Repredictor implementation
+ ▼ rheiv
+ example.cpp Example file for the RHEIV implementation
+ ▼ subscribe_handler
+ example.cpp Example file for the SubscribeHandler convenience class
+ simple_example.cpp Example file for the SubscribeHandler convenience class
+ ▼ ukf
+ example.cpp Example file for the UKF implementation
+ ▼ vector_converter
+ example.cpp Example file for the convert() vector type conversion function
+ ▼ test
+ ▼ math
+ probit_gts.h
+
+
+
+
+
+
+
+
diff --git a/files_dup.js b/files_dup.js
new file mode 100644
index 00000000..5c7a7a2b
--- /dev/null
+++ b/files_dup.js
@@ -0,0 +1,6 @@
+var files_dup =
+[
+ [ "include", "dir_d44c64559bbebec7f509842c48db8b23.html", "dir_d44c64559bbebec7f509842c48db8b23" ],
+ [ "src", "dir_68267d1309a1af8e8297ef4c3efbcdba.html", "dir_68267d1309a1af8e8297ef4c3efbcdba" ],
+ [ "test", "dir_13e138d54eb8818da29c3992edef070a.html", "dir_13e138d54eb8818da29c3992edef070a" ]
+];
\ No newline at end of file
diff --git a/folderclosed.png b/folderclosed.png
new file mode 100644
index 00000000..bb8ab35e
Binary files /dev/null and b/folderclosed.png differ
diff --git a/folderopen.png b/folderopen.png
new file mode 100644
index 00000000..d6c7f676
Binary files /dev/null and b/folderopen.png differ
diff --git a/formula.repository b/formula.repository
new file mode 100644
index 00000000..24410277
--- /dev/null
+++ b/formula.repository
@@ -0,0 +1,64 @@
+\_form#0:$ \mathbf{x} $
+\_form#1:$ \mathbf{u} $
+\_form#2:$ \mathbf{z} $
+\_form#3:$n \times 1$
+\_form#4:$m \times 1$
+\_form#5:$p \times 1$
+\_form#6:$n \times n$
+\_form#7:$p \times p$
+\_form#8:$n \times m$
+\_form#9:$p \times n$
+\_form#10:$n \times p$
+\_form#11:$ r \in {\rm I\!R} $
+\_form#12:$ v \in {\rm I\!R} $
+\_form#13:$ v + kr,~k \in {\rm I\!N} $
+\_form#14:$ v $
+\_form#15:$ v \in [~m,~s~[ $
+\_form#16:$ m $
+\_form#17:$ s $
+\_form#18:$ s = m + r $
+\_form#19:$ v \in [~-\pi,~\pi~[ $
+\_form#20:$ v \in [~0,~2\pi~[ $
+\_form#21:$ r $
+\_form#22:$ r/2 $
+\_form#23:$ v' = v + kr $
+\_form#24:$ v' $
+\_form#25:$ m = 0,~s=360 $
+\_form#26:$ \pi $
+\_form#27:$ a \times b $
+\_form#28:$ n_q \times 1 $
+\_form#29:$ p \times n_q $
+\_form#30:$ n_q \times p $
+\_form#31:$ r\sum_i c_i $
+\_form#32:$ c_i $
+\_form#33:$ i $
+\_form#34:$ 3\times 1 $
+\_form#35:$ 3\times 2 $
+\_form#36:$ \mathbf{\theta} $
+\_form#37:$ \mathbf{\theta}^T \mathbf{u}\left( \mathbf{x} \right) = 0 $
+\_form#38:$ \mathbf{u}\left( \mathbf{x} \right) $
+\_form#39:$ \left[ \mathbf{x}, 1 \right] $
+\_form#40:$ \partial_{\mathbf{x}} \mathbf{z}\left( \mathbf{x} \right) $
+\_form#41:$ \mathbf{z}\left( \mathbf{x} \right) $
+\_form#42:$ \mathbf{u}\left( \mathbf{x} \right) = \left[ \mathbf{z}\left( \mathbf{x} \right), 1 \right] $
+\_form#43:$ \mathbf{\eta} $
+\_form#44:$k \times 1$
+\_form#45:$l \times 1$
+\_form#46:$k \times k$
+\_form#47:$l_r \times 1$
+\_form#48:$ \mathbf{J} \mathbf{z}\left( \mathbf{x} \right) $
+\_form#49:$m \mathbf{A} 1$
+\_form#50:$l_r \times l_r$
+\_form#51:$m \mathbf{B} 1$
+\_form#52:$m \mathbf{M} 1$
+\_form#53:$m \mathbf{N} 1$
+\_form#54:$ \mathbf{\theta}_{k} $
+\_form#55:$ \mathbf{\theta}_{k-1} $
+\_form#56:$ \mathbf{x}_i $
+\_form#57:$ \mathbf{P}_i $
+\_form#58:$ a x + b y + c z + d = 0 $
+\_form#59:$ a $
+\_form#60:$ b $
+\_form#61:$ c $
+\_form#62:$ d $
+\_form#63:$ \mathbf{ \theta } $
diff --git a/functions.html b/functions.html
new file mode 100644
index 00000000..c9e2e443
--- /dev/null
+++ b/functions.html
@@ -0,0 +1,185 @@
+
+
+
+
+
+
+
+mrs_lib: Class Members
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Here is a list of all documented class members with links to the class documentation for each member:
+
+
- a -
+a()
+: mrs_lib::geometry::Ellipse
+, mrs_lib::geometry::Rectangle
+, mrs_lib::geometry::Triangle
+
+A
+: mrs_lib::LKF< n_states, n_inputs, n_measurements >
+
+A_t
+: mrs_lib::DKF
+, mrs_lib::JLKF< n_states, n_inputs, n_measurements, n_biases >
+, mrs_lib::LKF< n_states, n_inputs, n_measurements >
+, mrs_lib::NCLKF< n_states, n_inputs, n_measurements >
+, mrs_lib::NCLKF_partial< n_states, n_inputs, n_measurements, n_norm_constrained_states >
+
+add()
+: mrs_lib::MedianFilter
+
+addCheck()
+: mrs_lib::MedianFilter
+
+addCone()
+: mrs_lib::BatchVisualizer
+
+addCuboid()
+: mrs_lib::BatchVisualizer
+
+addCylinder()
+: mrs_lib::BatchVisualizer
+
+addEllipse()
+: mrs_lib::BatchVisualizer
+
+addInputChange()
+: mrs_lib::Repredictor< Model, disable_reprediction >
+
+addInputChangeWithNoise()
+: mrs_lib::Repredictor< Model, disable_reprediction >
+
+addMeasurement()
+: mrs_lib::Repredictor< Model, disable_reprediction >
+
+addNullLine()
+: mrs_lib::BatchVisualizer
+
+addNullPoint()
+: mrs_lib::BatchVisualizer
+
+addNullTriangle()
+: mrs_lib::BatchVisualizer
+
+addPoint()
+: mrs_lib::BatchVisualizer
+
+addProcessNoiseChange()
+: mrs_lib::Repredictor< Model, disable_reprediction >
+
+addRay()
+: mrs_lib::BatchVisualizer
+
+addRectangle()
+: mrs_lib::BatchVisualizer
+
+addTrajectory()
+: mrs_lib::BatchVisualizer
+
+addTriangle()
+: mrs_lib::BatchVisualizer
+
+addYamlFile()
+: mrs_lib::ParamLoader
+
+addYamlFileFromParam()
+: mrs_lib::ParamLoader
+
+AtomicScopeFlag()
+: mrs_lib::AtomicScopeFlag
+
+AttitudeConverter()
+: mrs_lib::AttitudeConverter
+
+autostart
+: mrs_lib::SubscribeHandlerOptions
+
+
+
+
+
+
+
+
diff --git a/functions_b.html b/functions_b.html
new file mode 100644
index 00000000..d71ab4d9
--- /dev/null
+++ b/functions_b.html
@@ -0,0 +1,129 @@
+
+
+
+
+
+
+
+mrs_lib: Class Members
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Here is a list of all documented class members with links to the class documentation for each member:
+
+
- b -
+b()
+: mrs_lib::geometry::Ellipse
+, mrs_lib::geometry::Rectangle
+, mrs_lib::geometry::Triangle
+
+B
+: mrs_lib::LKF< n_states, n_inputs, n_measurements >
+
+B_t
+: mrs_lib::DKF
+, mrs_lib::JLKF< n_states, n_inputs, n_measurements, n_biases >
+, mrs_lib::LKF< n_states, n_inputs, n_measurements >
+, mrs_lib::NCLKF< n_states, n_inputs, n_measurements >
+, mrs_lib::NCLKF_partial< n_states, n_inputs, n_measurements, n_norm_constrained_states >
+
+Base_class
+: mrs_lib::DKF
+, mrs_lib::LKF< n_states, n_inputs, n_measurements >
+, mrs_lib::NCLKF< n_states, n_inputs, n_measurements >
+, mrs_lib::NCLKF_partial< n_states, n_inputs, n_measurements, n_norm_constrained_states >
+, mrs_lib::UKF< n_states, n_inputs, n_measurements >
+
+BatchVisualizer()
+: mrs_lib::BatchVisualizer
+
+beQuiet()
+: mrs_lib::Transformer
+
+
+
+
+
+
+
+
diff --git a/functions_c.html b/functions_c.html
new file mode 100644
index 00000000..37b0d568
--- /dev/null
+++ b/functions_c.html
@@ -0,0 +1,168 @@
+
+
+
+
+
+
+
+mrs_lib: Class Members
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Here is a list of all documented class members with links to the class documentation for each member:
+
+
- c -
+c()
+: mrs_lib::geometry::Rectangle
+, mrs_lib::geometry::Triangle
+
+C_t
+: mrs_lib::JLKF< n_states, n_inputs, n_measurements, n_biases >
+
+call()
+: mrs_lib::ServiceClientHandler< ServiceType >
+, mrs_lib::ServiceClientHandler_impl< ServiceType >
+
+callAsync()
+: mrs_lib::ServiceClientHandler< ServiceType >
+, mrs_lib::ServiceClientHandler_impl< ServiceType >
+
+center()
+: mrs_lib::geometry::Cone
+, mrs_lib::geometry::Cuboid
+, mrs_lib::geometry::Cylinder
+, mrs_lib::geometry::Ellipse
+, mrs_lib::geometry::Rectangle
+, mrs_lib::geometry::Triangle
+
+check()
+: mrs_lib::MedianFilter
+
+checkpoint()
+: mrs_lib::ScopeTimer
+
+clear()
+: mrs_lib::MedianFilter
+
+clearBuffers()
+: mrs_lib::BatchVisualizer
+
+clearVisuals()
+: mrs_lib::BatchVisualizer
+
+Cone()
+: mrs_lib::geometry::Cone
+
+convert()
+: mrs_lib::geometry::cyclic< flt, spec >
+
+correct()
+: mrs_lib::JLKF< n_states, n_inputs, n_measurements, n_biases >
+, mrs_lib::KalmanFilter< n_states, n_inputs, n_measurements >
+, mrs_lib::KalmanFilterAloamGarm< n_states, n_inputs, n_measurements >
+, mrs_lib::LKF< n_states, n_inputs, n_measurements >
+, mrs_lib::NCUKF< n_states, n_inputs, n_measurements >
+, mrs_lib::UKF< n_states, n_inputs, n_measurements >
+
+correctLine()
+: mrs_lib::DKF
+
+createRoutine()
+: mrs_lib::Profiler
+
+Cuboid()
+: mrs_lib::geometry::Cuboid
+
+cyclic()
+: mrs_lib::geometry::cyclic< flt, spec >
+
+Cylinder()
+: mrs_lib::geometry::Cylinder
+
+
+
+
+
+
+
+
diff --git a/functions_d.html b/functions_d.html
new file mode 100644
index 00000000..5a55f005
--- /dev/null
+++ b/functions_d.html
@@ -0,0 +1,132 @@
+
+
+
+
+
+
+
+mrs_lib: Class Members
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Here is a list of all documented class members with links to the class documentation for each member:
+
+
- d -
+
+
+
+
+
+
diff --git a/functions_dup.js b/functions_dup.js
new file mode 100644
index 00000000..dce297a9
--- /dev/null
+++ b/functions_dup.js
@@ -0,0 +1,30 @@
+var functions_dup =
+[
+ [ "a", "functions.html", null ],
+ [ "b", "functions_b.html", null ],
+ [ "c", "functions_c.html", null ],
+ [ "d", "functions_d.html", null ],
+ [ "e", "functions_e.html", null ],
+ [ "f", "functions_f.html", null ],
+ [ "g", "functions_g.html", null ],
+ [ "h", "functions_h.html", null ],
+ [ "i", "functions_i.html", null ],
+ [ "j", "functions_j.html", null ],
+ [ "k", "functions_k.html", null ],
+ [ "l", "functions_l.html", null ],
+ [ "m", "functions_m.html", null ],
+ [ "n", "functions_n.html", null ],
+ [ "o", "functions_o.html", null ],
+ [ "p", "functions_p.html", null ],
+ [ "q", "functions_q.html", null ],
+ [ "r", "functions_r.html", null ],
+ [ "s", "functions_s.html", null ],
+ [ "t", "functions_t.html", null ],
+ [ "u", "functions_u.html", null ],
+ [ "v", "functions_v.html", null ],
+ [ "w", "functions_w.html", null ],
+ [ "x", "functions_x.html", null ],
+ [ "y", "functions_y.html", null ],
+ [ "z", "functions_z.html", null ],
+ [ "~", "functions_~.html", null ]
+];
\ No newline at end of file
diff --git a/functions_e.html b/functions_e.html
new file mode 100644
index 00000000..77d5e38c
--- /dev/null
+++ b/functions_e.html
@@ -0,0 +1,110 @@
+
+
+
+
+
+
+
+mrs_lib: Class Members
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Here is a list of all documented class members with links to the class documentation for each member:
+
+
- e -
+
+
+
+
+
+
diff --git a/functions_f.html b/functions_f.html
new file mode 100644
index 00000000..94d42947
--- /dev/null
+++ b/functions_f.html
@@ -0,0 +1,122 @@
+
+
+
+
+
+
+
+mrs_lib: Class Members
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Here is a list of all documented class members with links to the class documentation for each member:
+
+
- f -
+
+
+
+
+
+
diff --git a/functions_func.html b/functions_func.html
new file mode 100644
index 00000000..ee390552
--- /dev/null
+++ b/functions_func.html
@@ -0,0 +1,172 @@
+
+
+
+
+
+
+
+mrs_lib: Class Members - Functions
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/functions_func.js b/functions_func.js
new file mode 100644
index 00000000..66108c74
--- /dev/null
+++ b/functions_func.js
@@ -0,0 +1,26 @@
+var functions_func =
+[
+ [ "a", "functions_func.html", null ],
+ [ "b", "functions_func_b.html", null ],
+ [ "c", "functions_func_c.html", null ],
+ [ "d", "functions_func_d.html", null ],
+ [ "e", "functions_func_e.html", null ],
+ [ "f", "functions_func_f.html", null ],
+ [ "g", "functions_func_g.html", null ],
+ [ "h", "functions_func_h.html", null ],
+ [ "i", "functions_func_i.html", null ],
+ [ "j", "functions_func_j.html", null ],
+ [ "l", "functions_func_l.html", null ],
+ [ "m", "functions_func_m.html", null ],
+ [ "n", "functions_func_n.html", null ],
+ [ "o", "functions_func_o.html", null ],
+ [ "p", "functions_func_p.html", null ],
+ [ "r", "functions_func_r.html", null ],
+ [ "s", "functions_func_s.html", null ],
+ [ "t", "functions_func_t.html", null ],
+ [ "u", "functions_func_u.html", null ],
+ [ "v", "functions_func_v.html", null ],
+ [ "w", "functions_func_w.html", null ],
+ [ "y", "functions_func_y.html", null ],
+ [ "~", "functions_func_~.html", null ]
+];
\ No newline at end of file
diff --git a/functions_func_b.html b/functions_func_b.html
new file mode 100644
index 00000000..6ef7544c
--- /dev/null
+++ b/functions_func_b.html
@@ -0,0 +1,112 @@
+
+
+
+
+
+
+
+mrs_lib: Class Members - Functions
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/functions_func_c.html b/functions_func_c.html
new file mode 100644
index 00000000..33595528
--- /dev/null
+++ b/functions_func_c.html
@@ -0,0 +1,165 @@
+
+
+
+
+
+
+
+mrs_lib: Class Members - Functions
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
- c -
+c()
+: mrs_lib::geometry::Rectangle
+, mrs_lib::geometry::Triangle
+
+call()
+: mrs_lib::ServiceClientHandler< ServiceType >
+, mrs_lib::ServiceClientHandler_impl< ServiceType >
+
+callAsync()
+: mrs_lib::ServiceClientHandler< ServiceType >
+, mrs_lib::ServiceClientHandler_impl< ServiceType >
+
+center()
+: mrs_lib::geometry::Cone
+, mrs_lib::geometry::Cuboid
+, mrs_lib::geometry::Cylinder
+, mrs_lib::geometry::Ellipse
+, mrs_lib::geometry::Rectangle
+, mrs_lib::geometry::Triangle
+
+check()
+: mrs_lib::MedianFilter
+
+checkpoint()
+: mrs_lib::ScopeTimer
+
+clear()
+: mrs_lib::MedianFilter
+
+clearBuffers()
+: mrs_lib::BatchVisualizer
+
+clearVisuals()
+: mrs_lib::BatchVisualizer
+
+Cone()
+: mrs_lib::geometry::Cone
+
+convert()
+: mrs_lib::geometry::cyclic< flt, spec >
+
+correct()
+: mrs_lib::JLKF< n_states, n_inputs, n_measurements, n_biases >
+, mrs_lib::KalmanFilter< n_states, n_inputs, n_measurements >
+, mrs_lib::KalmanFilterAloamGarm< n_states, n_inputs, n_measurements >
+, mrs_lib::LKF< n_states, n_inputs, n_measurements >
+, mrs_lib::NCUKF< n_states, n_inputs, n_measurements >
+, mrs_lib::UKF< n_states, n_inputs, n_measurements >
+
+correctLine()
+: mrs_lib::DKF
+
+createRoutine()
+: mrs_lib::Profiler
+
+Cuboid()
+: mrs_lib::geometry::Cuboid
+
+cyclic()
+: mrs_lib::geometry::cyclic< flt, spec >
+
+Cylinder()
+: mrs_lib::geometry::Cylinder
+
+
+
+
+
+
+
+
diff --git a/functions_func_d.html b/functions_func_d.html
new file mode 100644
index 00000000..84eb68bf
--- /dev/null
+++ b/functions_func_d.html
@@ -0,0 +1,123 @@
+
+
+
+
+
+
+
+mrs_lib: Class Members - Functions
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/functions_func_e.html b/functions_func_e.html
new file mode 100644
index 00000000..71319238
--- /dev/null
+++ b/functions_func_e.html
@@ -0,0 +1,107 @@
+
+
+
+
+
+
+
+mrs_lib: Class Members - Functions
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/functions_func_f.html b/functions_func_f.html
new file mode 100644
index 00000000..db08a092
--- /dev/null
+++ b/functions_func_f.html
@@ -0,0 +1,116 @@
+
+
+
+
+
+
+
+mrs_lib: Class Members - Functions
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/functions_func_g.html b/functions_func_g.html
new file mode 100644
index 00000000..71be0003
--- /dev/null
+++ b/functions_func_g.html
@@ -0,0 +1,166 @@
+
+
+
+
+
+
+
+mrs_lib: Class Members - Functions
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/functions_func_h.html b/functions_func_h.html
new file mode 100644
index 00000000..2ac5e71c
--- /dev/null
+++ b/functions_func_h.html
@@ -0,0 +1,108 @@
+
+
+
+
+
+
+
+mrs_lib: Class Members - Functions
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/functions_func_i.html b/functions_func_i.html
new file mode 100644
index 00000000..e0cd92d4
--- /dev/null
+++ b/functions_func_i.html
@@ -0,0 +1,127 @@
+
+
+
+
+
+
+
+mrs_lib: Class Members - Functions
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/functions_func_j.html b/functions_func_j.html
new file mode 100644
index 00000000..c136f10b
--- /dev/null
+++ b/functions_func_j.html
@@ -0,0 +1,104 @@
+
+
+
+
+
+
+
+mrs_lib: Class Members - Functions
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/functions_func_l.html b/functions_func_l.html
new file mode 100644
index 00000000..930330d5
--- /dev/null
+++ b/functions_func_l.html
@@ -0,0 +1,146 @@
+
+
+
+
+
+
+
+mrs_lib: Class Members - Functions
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/functions_func_m.html b/functions_func_m.html
new file mode 100644
index 00000000..37903af5
--- /dev/null
+++ b/functions_func_m.html
@@ -0,0 +1,107 @@
+
+
+
+
+
+
+
+mrs_lib: Class Members - Functions
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/functions_func_n.html b/functions_func_n.html
new file mode 100644
index 00000000..d563dca7
--- /dev/null
+++ b/functions_func_n.html
@@ -0,0 +1,114 @@
+
+
+
+
+
+
+
+mrs_lib: Class Members - Functions
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/functions_func_o.html b/functions_func_o.html
new file mode 100644
index 00000000..5c79202d
--- /dev/null
+++ b/functions_func_o.html
@@ -0,0 +1,158 @@
+
+
+
+
+
+
+
+mrs_lib: Class Members - Functions
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
- o -
+operator Eigen::AngleAxis< T >()
+: mrs_lib::AttitudeConverter
+
+operator Eigen::Quaternion< T >()
+: mrs_lib::AttitudeConverter
+
+operator Eigen::Vector3d()
+: mrs_lib::Vector3Converter
+
+operator EulerAttitude()
+: mrs_lib::AttitudeConverter
+
+operator geometry_msgs::Quaternion()
+: mrs_lib::AttitudeConverter
+
+operator geometry_msgs::Vector3()
+: mrs_lib::Vector3Converter
+
+operator std::tuple< double &, double &, double & >()
+: mrs_lib::AttitudeConverter
+
+operator tf2::Matrix3x3()
+: mrs_lib::AttitudeConverter
+
+operator tf2::Quaternion()
+: mrs_lib::AttitudeConverter
+
+operator tf2::Transform()
+: mrs_lib::AttitudeConverter
+
+operator tf2::Vector3()
+: mrs_lib::Vector3Converter
+
+operator tf::Quaternion()
+: mrs_lib::AttitudeConverter
+
+operator+=()
+: mrs_lib::geometry::cyclic< flt, spec >
+
+operator-=()
+: mrs_lib::geometry::cyclic< flt, spec >
+
+operator=()
+: mrs_lib::geometry::cyclic< flt, spec >
+, mrs_lib::MedianFilter
+, mrs_lib::Profiler
+, mrs_lib::PublisherHandler< TopicType >
+, mrs_lib::ServiceClientHandler< ServiceType >
+, mrs_lib::Transformer
+
+orientation()
+: mrs_lib::geometry::Cylinder
+, mrs_lib::geometry::Ellipse
+
+origin()
+: mrs_lib::geometry::Cone
+
+
+
+
+
+
+
+
diff --git a/functions_func_p.html b/functions_func_p.html
new file mode 100644
index 00000000..ae2e976e
--- /dev/null
+++ b/functions_func_p.html
@@ -0,0 +1,154 @@
+
+
+
+
+
+
+
+mrs_lib: Class Members - Functions
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
- p -
+p1()
+: mrs_lib::geometry::Ray
+
+p2()
+: mrs_lib::geometry::Ray
+
+ParamLoader()
+: mrs_lib::ParamLoader
+
+pdist()
+: mrs_lib::geometry::cyclic< flt, spec >
+
+peekMsg()
+: mrs_lib::SubscribeHandler< MessageType >
+
+pinterp()
+: mrs_lib::geometry::cyclic< flt, spec >
+
+pinterpUnwrapped()
+: mrs_lib::geometry::cyclic< flt, spec >
+
+pitch()
+: mrs_lib::EulerAttitude
+
+predict()
+: mrs_lib::JLKF< n_states, n_inputs, n_measurements, n_biases >
+, mrs_lib::KalmanFilter< n_states, n_inputs, n_measurements >
+, mrs_lib::KalmanFilterAloamGarm< n_states, n_inputs, n_measurements >
+, mrs_lib::LKF< n_states, n_inputs, n_measurements >
+, mrs_lib::UKF< n_states, n_inputs, n_measurements >
+, mrs_lib::varstepLKF< n_states, n_inputs, n_measurements >
+
+predictTo()
+: mrs_lib::Repredictor< Model, disable_reprediction >
+
+Profiler()
+: mrs_lib::Profiler
+
+projectPoint()
+: mrs_lib::geometry::Cone
+
+publish()
+: mrs_lib::BatchVisualizer
+, mrs_lib::DynamicPublisher
+, mrs_lib::PublisherHandler< TopicType >
+, mrs_lib::PublisherHandler_impl< TopicType >
+
+PublisherHandler()
+: mrs_lib::PublisherHandler< TopicType >
+
+PublisherHandler_impl()
+: mrs_lib::PublisherHandler_impl< TopicType >
+
+
+
+
+
+
+
+
diff --git a/functions_func_r.html b/functions_func_r.html
new file mode 100644
index 00000000..4b393195
--- /dev/null
+++ b/functions_func_r.html
@@ -0,0 +1,136 @@
+
+
+
+
+
+
+
+mrs_lib: Class Members - Functions
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/functions_func_s.html b/functions_func_s.html
new file mode 100644
index 00000000..c57f0a68
--- /dev/null
+++ b/functions_func_s.html
@@ -0,0 +1,196 @@
+
+
+
+
+
+
+
+mrs_lib: Class Members - Functions
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
- s -
+ScopeTimer()
+: mrs_lib::ScopeTimer
+
+ScopeTimerLogger()
+: mrs_lib::ScopeTimerLogger
+
+sendTransform()
+: mrs_lib::TransformBroadcaster
+
+ServiceClientHandler()
+: mrs_lib::ServiceClientHandler< ServiceType >
+
+ServiceClientHandler_impl()
+: mrs_lib::ServiceClientHandler_impl< ServiceType >
+
+setBufferLength()
+: mrs_lib::MedianFilter
+
+setConstants()
+: mrs_lib::UKF< n_states, n_inputs, n_measurements >
+
+setDefaultFrame()
+: mrs_lib::Transformer
+
+setDefaultPrefix()
+: mrs_lib::Transformer
+
+setHeading()
+: mrs_lib::AttitudeConverter
+
+setLatLon()
+: mrs_lib::Transformer
+
+setLinesScale()
+: mrs_lib::BatchVisualizer
+
+setLookupTimeout()
+: mrs_lib::Transformer
+
+setMaxDifference()
+: mrs_lib::MedianFilter
+
+setMaxValue()
+: mrs_lib::MedianFilter
+
+setMinValue()
+: mrs_lib::MedianFilter
+
+setObservationModel()
+: mrs_lib::UKF< n_states, n_inputs, n_measurements >
+
+setParentFrame()
+: mrs_lib::BatchVisualizer
+
+setPeriod()
+: mrs_lib::MRSTimer
+, mrs_lib::ROSTimer
+, mrs_lib::ThreadTimer
+
+setPointsScale()
+: mrs_lib::BatchVisualizer
+
+setPrefix()
+: mrs_lib::ParamLoader
+
+setTransitionModel()
+: mrs_lib::UKF< n_states, n_inputs, n_measurements >
+
+setYaw()
+: mrs_lib::AttitudeConverter
+
+shouldLog()
+: mrs_lib::ScopeTimerLogger
+
+solidAngleRelativeTo()
+: mrs_lib::geometry::Rectangle
+
+start()
+: mrs_lib::MRSTimer
+, mrs_lib::ROSTimer
+, mrs_lib::SubscribeHandler< MessageType >
+, mrs_lib::ThreadTimer
+
+stop()
+: mrs_lib::MRSTimer
+, mrs_lib::ROSTimer
+, mrs_lib::SubscribeHandler< MessageType >
+, mrs_lib::ThreadTimer
+
+subscribedTopicName()
+: mrs_lib::SubscribeHandler< MessageType >
+
+SubscribeHandler()
+: mrs_lib::SubscribeHandler< MessageType >
+
+
+
+
+
+
+
+
diff --git a/functions_func_t.html b/functions_func_t.html
new file mode 100644
index 00000000..70911bca
--- /dev/null
+++ b/functions_func_t.html
@@ -0,0 +1,140 @@
+
+
+
+
+
+
+
+mrs_lib: Class Members - Functions
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/functions_func_u.html b/functions_func_u.html
new file mode 100644
index 00000000..c5e6eb7f
--- /dev/null
+++ b/functions_func_u.html
@@ -0,0 +1,110 @@
+
+
+
+
+
+
+
+mrs_lib: Class Members - Functions
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/functions_func_v.html b/functions_func_v.html
new file mode 100644
index 00000000..007ef661
--- /dev/null
+++ b/functions_func_v.html
@@ -0,0 +1,115 @@
+
+
+
+
+
+
+
+mrs_lib: Class Members - Functions
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/functions_func_w.html b/functions_func_w.html
new file mode 100644
index 00000000..7f88e5c9
--- /dev/null
+++ b/functions_func_w.html
@@ -0,0 +1,112 @@
+
+
+
+
+
+
+
+mrs_lib: Class Members - Functions
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/functions_func_y.html b/functions_func_y.html
new file mode 100644
index 00000000..aa8b4bbc
--- /dev/null
+++ b/functions_func_y.html
@@ -0,0 +1,104 @@
+
+
+
+
+
+
+
+mrs_lib: Class Members - Functions
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/functions_func_~.html b/functions_func_~.html
new file mode 100644
index 00000000..bd6082f8
--- /dev/null
+++ b/functions_func_~.html
@@ -0,0 +1,149 @@
+
+
+
+
+
+
+
+mrs_lib: Class Members - Functions
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/functions_g.html b/functions_g.html
new file mode 100644
index 00000000..b5759ad5
--- /dev/null
+++ b/functions_g.html
@@ -0,0 +1,166 @@
+
+
+
+
+
+
+
+mrs_lib: Class Members
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Here is a list of all documented class members with links to the class documentation for each member:
+
+
- g -
+
+
+
+
+
+
diff --git a/functions_h.html b/functions_h.html
new file mode 100644
index 00000000..9dabf2c1
--- /dev/null
+++ b/functions_h.html
@@ -0,0 +1,124 @@
+
+
+
+
+
+
+
+mrs_lib: Class Members
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Here is a list of all documented class members with links to the class documentation for each member:
+
+
- h -
+h()
+: mrs_lib::geometry::Cone
+, mrs_lib::geometry::Cylinder
+
+H
+: mrs_lib::LKF< n_states, n_inputs, n_measurements >
+
+H_t
+: mrs_lib::DKF
+, mrs_lib::JLKF< n_states, n_inputs, n_measurements, n_biases >
+, mrs_lib::LKF< n_states, n_inputs, n_measurements >
+, mrs_lib::NCLKF< n_states, n_inputs, n_measurements >
+, mrs_lib::NCLKF_partial< n_states, n_inputs, n_measurements, n_norm_constrained_states >
+
+half_range
+: mrs_lib::geometry::cyclic< flt, spec >
+
+hasMsg()
+: mrs_lib::SubscribeHandler< MessageType >
+
+Hq_t
+: mrs_lib::NCLKF_partial< n_states, n_inputs, n_measurements, n_norm_constrained_states >
+
+
+
+
+
+
+
+
diff --git a/functions_i.html b/functions_i.html
new file mode 100644
index 00000000..2ce303f1
--- /dev/null
+++ b/functions_i.html
@@ -0,0 +1,130 @@
+
+
+
+
+
+
+
+mrs_lib: Class Members
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Here is a list of all documented class members with links to the class documentation for each member:
+
+
- i -
+
+
+
+
+
+
diff --git a/functions_j.html b/functions_j.html
new file mode 100644
index 00000000..9783253e
--- /dev/null
+++ b/functions_j.html
@@ -0,0 +1,104 @@
+
+
+
+
+
+
+
+mrs_lib: Class Members
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Here is a list of all documented class members with links to the class documentation for each member:
+
+
- j -
+
+
+
+
+
+
diff --git a/functions_k.html b/functions_k.html
new file mode 100644
index 00000000..77d2c09b
--- /dev/null
+++ b/functions_k.html
@@ -0,0 +1,115 @@
+
+
+
+
+
+
+
+mrs_lib: Class Members
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Here is a list of all documented class members with links to the class documentation for each member:
+
+
- k -
+k
+: mrs_lib::RHEIV< n_states, n_params >
+
+K_t
+: mrs_lib::DKF
+, mrs_lib::JLKF< n_states, n_inputs, n_measurements, n_biases >
+, mrs_lib::LKF< n_states, n_inputs, n_measurements >
+, mrs_lib::NCLKF< n_states, n_inputs, n_measurements >
+, mrs_lib::NCLKF_partial< n_states, n_inputs, n_measurements, n_norm_constrained_states >
+, mrs_lib::UKF< n_states, n_inputs, n_measurements >
+
+Kq_t
+: mrs_lib::NCLKF_partial< n_states, n_inputs, n_measurements, n_norm_constrained_states >
+
+
+
+
+
+
+
+
diff --git a/functions_l.html b/functions_l.html
new file mode 100644
index 00000000..4a14b22a
--- /dev/null
+++ b/functions_l.html
@@ -0,0 +1,152 @@
+
+
+
+
+
+
+
+mrs_lib: Class Members
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Here is a list of all documented class members with links to the class documentation for each member:
+
+
- l -
+
+
+
+
+
+
diff --git a/functions_m.html b/functions_m.html
new file mode 100644
index 00000000..d58abde2
--- /dev/null
+++ b/functions_m.html
@@ -0,0 +1,129 @@
+
+
+
+
+
+
+
+mrs_lib: Class Members
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Here is a list of all documented class members with links to the class documentation for each member:
+
+
- m -
+m
+: mrs_lib::DKF
+, mrs_lib::KalmanFilter< n_states, n_inputs, n_measurements >
+, mrs_lib::KalmanFilterAloamGarm< n_states, n_inputs, n_measurements >
+, mrs_lib::LKF< n_states, n_inputs, n_measurements >
+, mrs_lib::NCLKF< n_states, n_inputs, n_measurements >
+, mrs_lib::NCLKF_partial< n_states, n_inputs, n_measurements, n_norm_constrained_states >
+, mrs_lib::UKF< n_states, n_inputs, n_measurements >
+
+median()
+: mrs_lib::MedianFilter
+
+MedianFilter()
+: mrs_lib::MedianFilter
+
+message_callback_t
+: mrs_lib::SubscribeHandler< MessageType >
+
+message_type
+: mrs_lib::SubscribeHandler< MessageType >
+
+minimum
+: mrs_lib::geometry::cyclic< flt, spec >
+
+ModelPtr
+: mrs_lib::Repredictor< Model, disable_reprediction >
+, mrs_lib::RepredictorAloamgarm< Model >
+
+
+
+
+
+
+
+
diff --git a/functions_n.html b/functions_n.html
new file mode 100644
index 00000000..56db08fe
--- /dev/null
+++ b/functions_n.html
@@ -0,0 +1,135 @@
+
+
+
+
+
+
+
+mrs_lib: Class Members
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Here is a list of all documented class members with links to the class documentation for each member:
+
+
- n -
+n
+: mrs_lib::DKF
+, mrs_lib::KalmanFilter< n_states, n_inputs, n_measurements >
+, mrs_lib::KalmanFilterAloamGarm< n_states, n_inputs, n_measurements >
+, mrs_lib::LKF< n_states, n_inputs, n_measurements >
+, mrs_lib::NCLKF< n_states, n_inputs, n_measurements >
+, mrs_lib::NCLKF_partial< n_states, n_inputs, n_measurements, n_norm_constrained_states >
+, mrs_lib::UKF< n_states, n_inputs, n_measurements >
+
+NCLKF()
+: mrs_lib::NCLKF< n_states, n_inputs, n_measurements >
+
+NCLKF_partial()
+: mrs_lib::NCLKF_partial< n_states, n_inputs, n_measurements, n_norm_constrained_states >
+
+newMsg()
+: mrs_lib::SubscribeHandler< MessageType >
+
+nh
+: mrs_lib::SubscribeHandlerOptions
+
+no_message_timeout
+: mrs_lib::SubscribeHandlerOptions
+
+node_name
+: mrs_lib::SubscribeHandlerOptions
+
+normal()
+: mrs_lib::geometry::Rectangle
+, mrs_lib::geometry::Triangle
+
+nq
+: mrs_lib::NCLKF_partial< n_states, n_inputs, n_measurements, n_norm_constrained_states >
+
+
+
+
+
+
+
+
diff --git a/functions_o.html b/functions_o.html
new file mode 100644
index 00000000..9b73c605
--- /dev/null
+++ b/functions_o.html
@@ -0,0 +1,167 @@
+
+
+
+
+
+
+
+mrs_lib: Class Members
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Here is a list of all documented class members with links to the class documentation for each member:
+
+
- o -
+observation_model_t
+: mrs_lib::UKF< n_states, n_inputs, n_measurements >
+
+operator Eigen::AngleAxis< T >()
+: mrs_lib::AttitudeConverter
+
+operator Eigen::Quaternion< T >()
+: mrs_lib::AttitudeConverter
+
+operator Eigen::Vector3d()
+: mrs_lib::Vector3Converter
+
+operator EulerAttitude()
+: mrs_lib::AttitudeConverter
+
+operator geometry_msgs::Quaternion()
+: mrs_lib::AttitudeConverter
+
+operator geometry_msgs::Vector3()
+: mrs_lib::Vector3Converter
+
+operator std::tuple< double &, double &, double & >()
+: mrs_lib::AttitudeConverter
+
+operator tf2::Matrix3x3()
+: mrs_lib::AttitudeConverter
+
+operator tf2::Quaternion()
+: mrs_lib::AttitudeConverter
+
+operator tf2::Transform()
+: mrs_lib::AttitudeConverter
+
+operator tf2::Vector3()
+: mrs_lib::Vector3Converter
+
+operator tf::Quaternion()
+: mrs_lib::AttitudeConverter
+
+operator+
+: mrs_lib::geometry::cyclic< flt, spec >
+
+operator+=()
+: mrs_lib::geometry::cyclic< flt, spec >
+
+operator-
+: mrs_lib::geometry::cyclic< flt, spec >
+
+operator-=()
+: mrs_lib::geometry::cyclic< flt, spec >
+
+operator=()
+: mrs_lib::geometry::cyclic< flt, spec >
+, mrs_lib::MedianFilter
+, mrs_lib::Profiler
+, mrs_lib::PublisherHandler< TopicType >
+, mrs_lib::ServiceClientHandler< ServiceType >
+, mrs_lib::Transformer
+
+orientation()
+: mrs_lib::geometry::Cylinder
+, mrs_lib::geometry::Ellipse
+
+origin()
+: mrs_lib::geometry::Cone
+
+
+
+
+
+
+
+
diff --git a/functions_p.html b/functions_p.html
new file mode 100644
index 00000000..13ee9874
--- /dev/null
+++ b/functions_p.html
@@ -0,0 +1,191 @@
+
+
+
+
+
+
+
+mrs_lib: Class Members
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Here is a list of all documented class members with links to the class documentation for each member:
+
+
- p -
+p
+: mrs_lib::DKF
+, mrs_lib::KalmanFilter< n_states, n_inputs, n_measurements >
+
+P
+: mrs_lib::KalmanFilter< n_states, n_inputs, n_measurements >::statecov_t
+
+p
+: mrs_lib::KalmanFilterAloamGarm< n_states, n_inputs, n_measurements >
+
+P
+: mrs_lib::KalmanFilterAloamGarm< n_states, n_inputs, n_measurements >::statecov_t
+
+p
+: mrs_lib::LKF< n_states, n_inputs, n_measurements >
+, mrs_lib::NCLKF< n_states, n_inputs, n_measurements >
+, mrs_lib::NCLKF_partial< n_states, n_inputs, n_measurements, n_norm_constrained_states >
+, mrs_lib::UKF< n_states, n_inputs, n_measurements >
+
+p1()
+: mrs_lib::geometry::Ray
+
+p2()
+: mrs_lib::geometry::Ray
+
+P_t
+: mrs_lib::DKF
+, mrs_lib::KalmanFilter< n_states, n_inputs, n_measurements >
+, mrs_lib::KalmanFilterAloamGarm< n_states, n_inputs, n_measurements >
+, mrs_lib::LKF< n_states, n_inputs, n_measurements >
+, mrs_lib::NCLKF< n_states, n_inputs, n_measurements >
+, mrs_lib::NCLKF_partial< n_states, n_inputs, n_measurements, n_norm_constrained_states >
+, mrs_lib::Repredictor< Model, disable_reprediction >
+, mrs_lib::RepredictorAloamgarm< Model >
+, mrs_lib::RHEIV< n_states, n_params >
+, mrs_lib::UKF< n_states, n_inputs, n_measurements >
+
+ParamLoader()
+: mrs_lib::ParamLoader
+
+pdist()
+: mrs_lib::geometry::cyclic< flt, spec >
+
+peekMsg()
+: mrs_lib::SubscribeHandler< MessageType >
+
+pinterp()
+: mrs_lib::geometry::cyclic< flt, spec >
+
+pinterpUnwrapped()
+: mrs_lib::geometry::cyclic< flt, spec >
+
+pitch()
+: mrs_lib::EulerAttitude
+
+predict()
+: mrs_lib::JLKF< n_states, n_inputs, n_measurements, n_biases >
+, mrs_lib::KalmanFilter< n_states, n_inputs, n_measurements >
+, mrs_lib::KalmanFilterAloamGarm< n_states, n_inputs, n_measurements >
+, mrs_lib::LKF< n_states, n_inputs, n_measurements >
+, mrs_lib::UKF< n_states, n_inputs, n_measurements >
+, mrs_lib::varstepLKF< n_states, n_inputs, n_measurements >
+
+predictTo()
+: mrs_lib::Repredictor< Model, disable_reprediction >
+
+Profiler()
+: mrs_lib::Profiler
+
+projectPoint()
+: mrs_lib::geometry::Cone
+
+Ps_t
+: mrs_lib::RHEIV< n_states, n_params >
+
+publish()
+: mrs_lib::BatchVisualizer
+, mrs_lib::DynamicPublisher
+, mrs_lib::PublisherHandler< TopicType >
+, mrs_lib::PublisherHandler_impl< TopicType >
+
+PublisherHandler()
+: mrs_lib::PublisherHandler< TopicType >
+
+PublisherHandler_impl()
+: mrs_lib::PublisherHandler_impl< TopicType >
+
+Pzz_t
+: mrs_lib::UKF< n_states, n_inputs, n_measurements >
+
+
+
+
+
+
+
+
diff --git a/functions_q.html b/functions_q.html
new file mode 100644
index 00000000..7a558762
--- /dev/null
+++ b/functions_q.html
@@ -0,0 +1,115 @@
+
+
+
+
+
+
+
+mrs_lib: Class Members
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Here is a list of all documented class members with links to the class documentation for each member:
+
+
- q -
+Q_t
+: mrs_lib::DKF
+, mrs_lib::KalmanFilter< n_states, n_inputs, n_measurements >
+, mrs_lib::KalmanFilterAloamGarm< n_states, n_inputs, n_measurements >
+, mrs_lib::LKF< n_states, n_inputs, n_measurements >
+, mrs_lib::NCLKF< n_states, n_inputs, n_measurements >
+, mrs_lib::NCLKF_partial< n_states, n_inputs, n_measurements, n_norm_constrained_states >
+, mrs_lib::Repredictor< Model, disable_reprediction >
+, mrs_lib::RepredictorAloamgarm< Model >
+, mrs_lib::UKF< n_states, n_inputs, n_measurements >
+
+queue_size
+: mrs_lib::SubscribeHandlerOptions
+
+
+
+
+
+
+
+
diff --git a/functions_r.html b/functions_r.html
new file mode 100644
index 00000000..aa5b3bd9
--- /dev/null
+++ b/functions_r.html
@@ -0,0 +1,150 @@
+
+
+
+
+
+
+
+mrs_lib: Class Members
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Here is a list of all documented class members with links to the class documentation for each member:
+
+
- r -
+r()
+: mrs_lib::geometry::Cylinder
+
+R_t
+: mrs_lib::DKF
+, mrs_lib::KalmanFilter< n_states, n_inputs, n_measurements >
+, mrs_lib::KalmanFilterAloamGarm< n_states, n_inputs, n_measurements >
+, mrs_lib::LKF< n_states, n_inputs, n_measurements >
+, mrs_lib::NCLKF< n_states, n_inputs, n_measurements >
+, mrs_lib::NCLKF_partial< n_states, n_inputs, n_measurements, n_norm_constrained_states >
+, mrs_lib::Repredictor< Model, disable_reprediction >
+, mrs_lib::RepredictorAloamgarm< Model >
+, mrs_lib::UKF< n_states, n_inputs, n_measurements >
+
+range
+: mrs_lib::geometry::cyclic< flt, spec >
+
+Ray()
+: mrs_lib::geometry::Ray
+
+Rectangle()
+: mrs_lib::geometry::Rectangle
+
+Repredictor()
+: mrs_lib::Repredictor< Model, disable_reprediction >
+
+RepredictorAloamgarm()
+: mrs_lib::RepredictorAloamgarm< Model >
+
+resolveFrame()
+: mrs_lib::Transformer
+
+retryLookupNewest()
+: mrs_lib::Transformer
+
+RHEIV()
+: mrs_lib::RHEIV< n_states, n_params >
+
+roll()
+: mrs_lib::EulerAttitude
+
+ROSTimer()
+: mrs_lib::ROSTimer
+
+running()
+: mrs_lib::MRSTimer
+, mrs_lib::ROSTimer
+, mrs_lib::ThreadTimer
+
+
+
+
+
+
+
+
diff --git a/functions_rela.html b/functions_rela.html
new file mode 100644
index 00000000..aea4cf2b
--- /dev/null
+++ b/functions_rela.html
@@ -0,0 +1,105 @@
+
+
+
+
+
+
+
+mrs_lib: Class Members - Related Functions
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/functions_s.html b/functions_s.html
new file mode 100644
index 00000000..2da9f9dc
--- /dev/null
+++ b/functions_s.html
@@ -0,0 +1,211 @@
+
+
+
+
+
+
+
+mrs_lib: Class Members
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Here is a list of all documented class members with links to the class documentation for each member:
+
+
- s -
+ScopeTimer()
+: mrs_lib::ScopeTimer
+
+ScopeTimerLogger()
+: mrs_lib::ScopeTimerLogger
+
+sendTransform()
+: mrs_lib::TransformBroadcaster
+
+ServiceClientHandler()
+: mrs_lib::ServiceClientHandler< ServiceType >
+
+ServiceClientHandler_impl()
+: mrs_lib::ServiceClientHandler_impl< ServiceType >
+
+setBufferLength()
+: mrs_lib::MedianFilter
+
+setConstants()
+: mrs_lib::UKF< n_states, n_inputs, n_measurements >
+
+setDefaultFrame()
+: mrs_lib::Transformer
+
+setDefaultPrefix()
+: mrs_lib::Transformer
+
+setHeading()
+: mrs_lib::AttitudeConverter
+
+setLatLon()
+: mrs_lib::Transformer
+
+setLinesScale()
+: mrs_lib::BatchVisualizer
+
+setLookupTimeout()
+: mrs_lib::Transformer
+
+setMaxDifference()
+: mrs_lib::MedianFilter
+
+setMaxValue()
+: mrs_lib::MedianFilter
+
+setMinValue()
+: mrs_lib::MedianFilter
+
+setObservationModel()
+: mrs_lib::UKF< n_states, n_inputs, n_measurements >
+
+setParentFrame()
+: mrs_lib::BatchVisualizer
+
+setPeriod()
+: mrs_lib::MRSTimer
+, mrs_lib::ROSTimer
+, mrs_lib::ThreadTimer
+
+setPointsScale()
+: mrs_lib::BatchVisualizer
+
+setPrefix()
+: mrs_lib::ParamLoader
+
+setTransitionModel()
+: mrs_lib::UKF< n_states, n_inputs, n_measurements >
+
+setYaw()
+: mrs_lib::AttitudeConverter
+
+shouldLog()
+: mrs_lib::ScopeTimerLogger
+
+solidAngleRelativeTo()
+: mrs_lib::geometry::Rectangle
+
+stamp
+: mrs_lib::KalmanFilter< n_states, n_inputs, n_measurements >::statecov_t
+
+start()
+: mrs_lib::MRSTimer
+, mrs_lib::ROSTimer
+, mrs_lib::SubscribeHandler< MessageType >
+, mrs_lib::ThreadTimer
+
+statecov_t
+: mrs_lib::DKF
+, mrs_lib::LKF< n_states, n_inputs, n_measurements >
+, mrs_lib::NCLKF< n_states, n_inputs, n_measurements >
+, mrs_lib::NCLKF_partial< n_states, n_inputs, n_measurements, n_norm_constrained_states >
+, mrs_lib::Repredictor< Model, disable_reprediction >
+, mrs_lib::RepredictorAloamgarm< Model >
+, mrs_lib::UKF< n_states, n_inputs, n_measurements >
+
+stop()
+: mrs_lib::MRSTimer
+, mrs_lib::ROSTimer
+, mrs_lib::SubscribeHandler< MessageType >
+, mrs_lib::ThreadTimer
+
+subscribedTopicName()
+: mrs_lib::SubscribeHandler< MessageType >
+
+SubscribeHandler()
+: mrs_lib::SubscribeHandler< MessageType >
+
+supremum
+: mrs_lib::geometry::cyclic< flt, spec >
+
+
+
+
+
+
+
+
diff --git a/functions_t.html b/functions_t.html
new file mode 100644
index 00000000..c680c72f
--- /dev/null
+++ b/functions_t.html
@@ -0,0 +1,164 @@
+
+
+
+
+
+
+
+mrs_lib: Class Members
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Here is a list of all documented class members with links to the class documentation for each member:
+
+
- t -
+
+
+
+
+
+
diff --git a/functions_type.html b/functions_type.html
new file mode 100644
index 00000000..84f3b94c
--- /dev/null
+++ b/functions_type.html
@@ -0,0 +1,368 @@
+
+
+
+
+
+
+
+mrs_lib: Class Members - Typedefs
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
- a -
+A_t
+: mrs_lib::DKF
+, mrs_lib::JLKF< n_states, n_inputs, n_measurements, n_biases >
+, mrs_lib::LKF< n_states, n_inputs, n_measurements >
+, mrs_lib::NCLKF< n_states, n_inputs, n_measurements >
+, mrs_lib::NCLKF_partial< n_states, n_inputs, n_measurements, n_norm_constrained_states >
+
+
+
+
+
- b -
+B_t
+: mrs_lib::DKF
+, mrs_lib::JLKF< n_states, n_inputs, n_measurements, n_biases >
+, mrs_lib::LKF< n_states, n_inputs, n_measurements >
+, mrs_lib::NCLKF< n_states, n_inputs, n_measurements >
+, mrs_lib::NCLKF_partial< n_states, n_inputs, n_measurements, n_norm_constrained_states >
+
+Base_class
+: mrs_lib::DKF
+, mrs_lib::LKF< n_states, n_inputs, n_measurements >
+, mrs_lib::NCLKF< n_states, n_inputs, n_measurements >
+, mrs_lib::NCLKF_partial< n_states, n_inputs, n_measurements, n_norm_constrained_states >
+, mrs_lib::UKF< n_states, n_inputs, n_measurements >
+
+
+
+
+
- c -
+
+
+
- d -
+
+
+
- e -
+
+
+
- f -
+
+
+
- h -
+H_t
+: mrs_lib::DKF
+, mrs_lib::JLKF< n_states, n_inputs, n_measurements, n_biases >
+, mrs_lib::LKF< n_states, n_inputs, n_measurements >
+, mrs_lib::NCLKF< n_states, n_inputs, n_measurements >
+, mrs_lib::NCLKF_partial< n_states, n_inputs, n_measurements, n_norm_constrained_states >
+
+Hq_t
+: mrs_lib::NCLKF_partial< n_states, n_inputs, n_measurements, n_norm_constrained_states >
+
+
+
+
+
- i -
+
+
+
- k -
+K_t
+: mrs_lib::DKF
+, mrs_lib::JLKF< n_states, n_inputs, n_measurements, n_biases >
+, mrs_lib::LKF< n_states, n_inputs, n_measurements >
+, mrs_lib::NCLKF< n_states, n_inputs, n_measurements >
+, mrs_lib::NCLKF_partial< n_states, n_inputs, n_measurements, n_norm_constrained_states >
+, mrs_lib::UKF< n_states, n_inputs, n_measurements >
+
+Kq_t
+: mrs_lib::NCLKF_partial< n_states, n_inputs, n_measurements, n_norm_constrained_states >
+
+
+
+
+
- m -
+
+
+
- o -
+
+
+
- p -
+P_t
+: mrs_lib::DKF
+, mrs_lib::KalmanFilter< n_states, n_inputs, n_measurements >
+, mrs_lib::KalmanFilterAloamGarm< n_states, n_inputs, n_measurements >
+, mrs_lib::LKF< n_states, n_inputs, n_measurements >
+, mrs_lib::NCLKF< n_states, n_inputs, n_measurements >
+, mrs_lib::NCLKF_partial< n_states, n_inputs, n_measurements, n_norm_constrained_states >
+, mrs_lib::Repredictor< Model, disable_reprediction >
+, mrs_lib::RepredictorAloamgarm< Model >
+, mrs_lib::RHEIV< n_states, n_params >
+, mrs_lib::UKF< n_states, n_inputs, n_measurements >
+
+Ps_t
+: mrs_lib::RHEIV< n_states, n_params >
+
+Pzz_t
+: mrs_lib::UKF< n_states, n_inputs, n_measurements >
+
+
+
+
+
- q -
+Q_t
+: mrs_lib::DKF
+, mrs_lib::KalmanFilter< n_states, n_inputs, n_measurements >
+, mrs_lib::KalmanFilterAloamGarm< n_states, n_inputs, n_measurements >
+, mrs_lib::LKF< n_states, n_inputs, n_measurements >
+, mrs_lib::NCLKF< n_states, n_inputs, n_measurements >
+, mrs_lib::NCLKF_partial< n_states, n_inputs, n_measurements, n_norm_constrained_states >
+, mrs_lib::Repredictor< Model, disable_reprediction >
+, mrs_lib::RepredictorAloamgarm< Model >
+, mrs_lib::UKF< n_states, n_inputs, n_measurements >
+
+
+
+
+
- r -
+R_t
+: mrs_lib::DKF
+, mrs_lib::KalmanFilter< n_states, n_inputs, n_measurements >
+, mrs_lib::KalmanFilterAloamGarm< n_states, n_inputs, n_measurements >
+, mrs_lib::LKF< n_states, n_inputs, n_measurements >
+, mrs_lib::NCLKF< n_states, n_inputs, n_measurements >
+, mrs_lib::NCLKF_partial< n_states, n_inputs, n_measurements, n_norm_constrained_states >
+, mrs_lib::Repredictor< Model, disable_reprediction >
+, mrs_lib::RepredictorAloamgarm< Model >
+, mrs_lib::UKF< n_states, n_inputs, n_measurements >
+
+
+
+
+
- s -
+statecov_t
+: mrs_lib::DKF
+, mrs_lib::LKF< n_states, n_inputs, n_measurements >
+, mrs_lib::NCLKF< n_states, n_inputs, n_measurements >
+, mrs_lib::NCLKF_partial< n_states, n_inputs, n_measurements, n_norm_constrained_states >
+, mrs_lib::Repredictor< Model, disable_reprediction >
+, mrs_lib::RepredictorAloamgarm< Model >
+, mrs_lib::UKF< n_states, n_inputs, n_measurements >
+
+
+
+
+
- t -
+
+
+
- u -
+u_t
+: mrs_lib::DKF
+, mrs_lib::KalmanFilter< n_states, n_inputs, n_measurements >
+, mrs_lib::KalmanFilterAloamGarm< n_states, n_inputs, n_measurements >
+, mrs_lib::LKF< n_states, n_inputs, n_measurements >
+, mrs_lib::NCLKF< n_states, n_inputs, n_measurements >
+, mrs_lib::NCLKF_partial< n_states, n_inputs, n_measurements, n_norm_constrained_states >
+, mrs_lib::Repredictor< Model, disable_reprediction >
+, mrs_lib::RepredictorAloamgarm< Model >
+, mrs_lib::RHEIV< n_states, n_params >
+, mrs_lib::UKF< n_states, n_inputs, n_measurements >
+
+
+
+
+
- w -
+
+
+
- x -
+x_t
+: mrs_lib::DKF
+, mrs_lib::KalmanFilter< n_states, n_inputs, n_measurements >
+, mrs_lib::KalmanFilterAloamGarm< n_states, n_inputs, n_measurements >
+, mrs_lib::LKF< n_states, n_inputs, n_measurements >
+, mrs_lib::NCLKF< n_states, n_inputs, n_measurements >
+, mrs_lib::NCLKF_partial< n_states, n_inputs, n_measurements, n_norm_constrained_states >
+, mrs_lib::Repredictor< Model, disable_reprediction >
+, mrs_lib::RepredictorAloamgarm< Model >
+, mrs_lib::RHEIV< n_states, n_params >
+, mrs_lib::UKF< n_states, n_inputs, n_measurements >
+
+X_t
+: mrs_lib::UKF< n_states, n_inputs, n_measurements >
+
+xq_t
+: mrs_lib::NCLKF_partial< n_states, n_inputs, n_measurements, n_norm_constrained_states >
+
+xs_t
+: mrs_lib::RHEIV< n_states, n_params >
+
+
+
+
+
- z -
+z_t
+: mrs_lib::DKF
+, mrs_lib::KalmanFilter< n_states, n_inputs, n_measurements >
+, mrs_lib::KalmanFilterAloamGarm< n_states, n_inputs, n_measurements >
+, mrs_lib::LKF< n_states, n_inputs, n_measurements >
+, mrs_lib::NCLKF< n_states, n_inputs, n_measurements >
+, mrs_lib::NCLKF_partial< n_states, n_inputs, n_measurements, n_norm_constrained_states >
+, mrs_lib::Repredictor< Model, disable_reprediction >
+, mrs_lib::RepredictorAloamgarm< Model >
+, mrs_lib::RHEIV< n_states, n_params >
+, mrs_lib::UKF< n_states, n_inputs, n_measurements >
+
+Z_t
+: mrs_lib::UKF< n_states, n_inputs, n_measurements >
+
+zs_t
+: mrs_lib::RHEIV< n_states, n_params >
+
+
+
+
+
+
+
+
diff --git a/functions_u.html b/functions_u.html
new file mode 100644
index 00000000..cfbb7ea8
--- /dev/null
+++ b/functions_u.html
@@ -0,0 +1,122 @@
+
+
+
+
+
+
+
+mrs_lib: Class Members
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Here is a list of all documented class members with links to the class documentation for each member:
+
+
- u -
+u_t
+: mrs_lib::DKF
+, mrs_lib::KalmanFilter< n_states, n_inputs, n_measurements >
+, mrs_lib::KalmanFilterAloamGarm< n_states, n_inputs, n_measurements >
+, mrs_lib::LKF< n_states, n_inputs, n_measurements >
+, mrs_lib::NCLKF< n_states, n_inputs, n_measurements >
+, mrs_lib::NCLKF_partial< n_states, n_inputs, n_measurements, n_norm_constrained_states >
+, mrs_lib::Repredictor< Model, disable_reprediction >
+, mrs_lib::RepredictorAloamgarm< Model >
+, mrs_lib::RHEIV< n_states, n_params >
+, mrs_lib::UKF< n_states, n_inputs, n_measurements >
+
+UKF()
+: mrs_lib::UKF< n_states, n_inputs, n_measurements >
+
+unwrap()
+: mrs_lib::geometry::cyclic< flt, spec >
+
+usedMsg()
+: mrs_lib::SubscribeHandler< MessageType >
+
+
+
+
+
+
+
+
diff --git a/functions_v.html b/functions_v.html
new file mode 100644
index 00000000..c56eb03d
--- /dev/null
+++ b/functions_v.html
@@ -0,0 +1,115 @@
+
+
+
+
+
+
+
+mrs_lib: Class Members
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Here is a list of all documented class members with links to the class documentation for each member:
+
+
- v -
+
+
+
+
+
+
diff --git a/functions_vars.html b/functions_vars.html
new file mode 100644
index 00000000..d1bb7f3e
--- /dev/null
+++ b/functions_vars.html
@@ -0,0 +1,263 @@
+
+
+
+
+
+
+
+mrs_lib: Class Members - Variables
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
- a -
+
+
+
- b -
+
+
+
- h -
+
+
+
- k -
+
+
+
- l -
+
+
+
- m -
+m
+: mrs_lib::DKF
+, mrs_lib::KalmanFilter< n_states, n_inputs, n_measurements >
+, mrs_lib::KalmanFilterAloamGarm< n_states, n_inputs, n_measurements >
+, mrs_lib::LKF< n_states, n_inputs, n_measurements >
+, mrs_lib::NCLKF< n_states, n_inputs, n_measurements >
+, mrs_lib::NCLKF_partial< n_states, n_inputs, n_measurements, n_norm_constrained_states >
+, mrs_lib::UKF< n_states, n_inputs, n_measurements >
+
+minimum
+: mrs_lib::geometry::cyclic< flt, spec >
+
+
+
+
+
- n -
+n
+: mrs_lib::DKF
+, mrs_lib::KalmanFilter< n_states, n_inputs, n_measurements >
+, mrs_lib::KalmanFilterAloamGarm< n_states, n_inputs, n_measurements >
+, mrs_lib::LKF< n_states, n_inputs, n_measurements >
+, mrs_lib::NCLKF< n_states, n_inputs, n_measurements >
+, mrs_lib::NCLKF_partial< n_states, n_inputs, n_measurements, n_norm_constrained_states >
+, mrs_lib::UKF< n_states, n_inputs, n_measurements >
+
+nh
+: mrs_lib::SubscribeHandlerOptions
+
+no_message_timeout
+: mrs_lib::SubscribeHandlerOptions
+
+node_name
+: mrs_lib::SubscribeHandlerOptions
+
+nq
+: mrs_lib::NCLKF_partial< n_states, n_inputs, n_measurements, n_norm_constrained_states >
+
+
+
+
+
- p -
+p
+: mrs_lib::DKF
+, mrs_lib::KalmanFilter< n_states, n_inputs, n_measurements >
+
+P
+: mrs_lib::KalmanFilter< n_states, n_inputs, n_measurements >::statecov_t
+
+p
+: mrs_lib::KalmanFilterAloamGarm< n_states, n_inputs, n_measurements >
+
+P
+: mrs_lib::KalmanFilterAloamGarm< n_states, n_inputs, n_measurements >::statecov_t
+
+p
+: mrs_lib::LKF< n_states, n_inputs, n_measurements >
+, mrs_lib::NCLKF< n_states, n_inputs, n_measurements >
+, mrs_lib::NCLKF_partial< n_states, n_inputs, n_measurements, n_norm_constrained_states >
+, mrs_lib::UKF< n_states, n_inputs, n_measurements >
+
+
+
+
+
- q -
+
+
+
- r -
+
+
+
- s -
+
+
+
- t -
+
+
+
- w -
+
+
+
- x -
+
+
+
+
+
+
diff --git a/functions_w.html b/functions_w.html
new file mode 100644
index 00000000..41cd219f
--- /dev/null
+++ b/functions_w.html
@@ -0,0 +1,118 @@
+
+
+
+
+
+
+
+mrs_lib: Class Members
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Here is a list of all documented class members with links to the class documentation for each member:
+
+
- w -
+w
+: mrs_lib::UKF< n_states, n_inputs, n_measurements >
+
+W_t
+: mrs_lib::UKF< n_states, n_inputs, n_measurements >
+
+waitForNew()
+: mrs_lib::SubscribeHandler< MessageType >
+
+what()
+: mrs_lib::eigenvector_exception
+, mrs_lib::JLKF< n_states, n_inputs, n_measurements, n_biases >::inverse_exception
+, mrs_lib::LKF< n_states, n_inputs, n_measurements >::inverse_exception
+
+wrap()
+: mrs_lib::geometry::cyclic< flt, spec >
+
+
+
+
+
+
+
+
diff --git a/functions_x.html b/functions_x.html
new file mode 100644
index 00000000..e8218ee8
--- /dev/null
+++ b/functions_x.html
@@ -0,0 +1,126 @@
+
+
+
+
+
+
+
+mrs_lib: Class Members
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Here is a list of all documented class members with links to the class documentation for each member:
+
+
- x -
+x
+: mrs_lib::KalmanFilter< n_states, n_inputs, n_measurements >::statecov_t
+, mrs_lib::KalmanFilterAloamGarm< n_states, n_inputs, n_measurements >::statecov_t
+
+x_t
+: mrs_lib::DKF
+, mrs_lib::KalmanFilter< n_states, n_inputs, n_measurements >
+, mrs_lib::KalmanFilterAloamGarm< n_states, n_inputs, n_measurements >
+, mrs_lib::LKF< n_states, n_inputs, n_measurements >
+, mrs_lib::NCLKF< n_states, n_inputs, n_measurements >
+, mrs_lib::NCLKF_partial< n_states, n_inputs, n_measurements, n_norm_constrained_states >
+, mrs_lib::Repredictor< Model, disable_reprediction >
+, mrs_lib::RepredictorAloamgarm< Model >
+, mrs_lib::RHEIV< n_states, n_params >
+, mrs_lib::UKF< n_states, n_inputs, n_measurements >
+
+X_t
+: mrs_lib::UKF< n_states, n_inputs, n_measurements >
+
+xq_t
+: mrs_lib::NCLKF_partial< n_states, n_inputs, n_measurements, n_norm_constrained_states >
+
+xs_t
+: mrs_lib::RHEIV< n_states, n_params >
+
+
+
+
+
+
+
+
diff --git a/functions_y.html b/functions_y.html
new file mode 100644
index 00000000..63cbc8b2
--- /dev/null
+++ b/functions_y.html
@@ -0,0 +1,104 @@
+
+
+
+
+
+
+
+mrs_lib: Class Members
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Here is a list of all documented class members with links to the class documentation for each member:
+
+
- y -
+
+
+
+
+
+
diff --git a/functions_z.html b/functions_z.html
new file mode 100644
index 00000000..c595c43a
--- /dev/null
+++ b/functions_z.html
@@ -0,0 +1,119 @@
+
+
+
+
+
+
+
+mrs_lib: Class Members
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Here is a list of all documented class members with links to the class documentation for each member:
+
+
- z -
+z_t
+: mrs_lib::DKF
+, mrs_lib::KalmanFilter< n_states, n_inputs, n_measurements >
+, mrs_lib::KalmanFilterAloamGarm< n_states, n_inputs, n_measurements >
+, mrs_lib::LKF< n_states, n_inputs, n_measurements >
+, mrs_lib::NCLKF< n_states, n_inputs, n_measurements >
+, mrs_lib::NCLKF_partial< n_states, n_inputs, n_measurements, n_norm_constrained_states >
+, mrs_lib::Repredictor< Model, disable_reprediction >
+, mrs_lib::RepredictorAloamgarm< Model >
+, mrs_lib::RHEIV< n_states, n_params >
+, mrs_lib::UKF< n_states, n_inputs, n_measurements >
+
+Z_t
+: mrs_lib::UKF< n_states, n_inputs, n_measurements >
+
+zs_t
+: mrs_lib::RHEIV< n_states, n_params >
+
+
+
+
+
+
+
+
diff --git a/functions_~.html b/functions_~.html
new file mode 100644
index 00000000..97b1ac5b
--- /dev/null
+++ b/functions_~.html
@@ -0,0 +1,149 @@
+
+
+
+
+
+
+
+mrs_lib: Class Members
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Here is a list of all documented class members with links to the class documentation for each member:
+
+
- ~ -
+
+
+
+
+
+
diff --git a/geometry_2cyclic_example_8cpp-example.html b/geometry_2cyclic_example_8cpp-example.html
new file mode 100644
index 00000000..124b2e62
--- /dev/null
+++ b/geometry_2cyclic_example_8cpp-example.html
@@ -0,0 +1,324 @@
+
+
+
+
+
+
+
+mrs_lib: geometry/cyclic_example.cpp
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
This example may be run after building mrs_lib by executing rosrun mrs_lib cyclic_example
.
+
+
+
+
#include <random>
+
#include <ros/ros.h>
+
+
+
+
{
+
+
static constexpr double minimum = -180;
+
static constexpr double supremum = 180;
+
};
+
+
+
+
+
+
+
+
template <class T>
+
void printit(const T& a, const std::string& name)
+
{
+
std::cout << name << ":\t" << std::left << std::showpos << std::setprecision(4) << a.value() << "\tin [ " << a.minimum << ",\t" << a.supremum << "\t["
+
<< std::endl;
+
}
+
+
template <class T>
+
void printcont(const T& cont, const std::string& name)
+
{
+
std::cout << name << ":\t" ;
+
for (const auto & el : cont)
+
std::cout << el << "\t" ;
+
std::cout << std::endl;
+
}
+
+
+
+
int main()
+
{
+
+
+
+
+
+
+
+
+
+
+
+
degrees h = radians::convert<degrees>(5 * M_PI_2);
+
+
printit(a, "a" );
+
printit(b, "b" );
+
printit(c, "c" );
+
printit(d, "d" );
+
printit(e, "e" );
+
printit(f, "f" );
+
printit(g, "g" );
+
printit(h, "h" );
+
+
+
+
+
+
+
+
+
+
+
+
printit(WRONG1, "WRONG1" );
+
+
+
+
+
+
+
+
double adouble = a.value();
+
+
double amin = a.minimum;
+
double asup = degrees::supremum;
+
+
std::cout << "adouble:" << std::left << std::showpos << std::setprecision(4) << adouble << "\tin [ " << amin << ",\t" << asup << "\t[\trange: " << aran
+
<< std::endl;
+
+
+
+
std::cout << "----------------------------------------------------------------" << std::endl;
+
+
+
+
+
+
double ang = 666;
+
+
{
+
std::cout << std::left << std::showpos << std::setprecision(4) << ang << "\tis not within [ " << degrees::minimum << ",\t" << degrees::supremum << "\t["
+
<< std::endl;
+
+
+
std::cout << std::left << std::showpos << std::setprecision(4) << ang << "\tafter wrapping: " << wang << std::endl;
+
}
+
+
+
+
+
+
+
std::vector<double> data = {0, 61, 122, 183, 244, 305, 6, 67, 128, 189};
+
printcont(data, "data before unwrapping" );
+
+
for (size_t it = 1; it < data.size(); it++)
+
{
+
const auto prev = data.at(it - 1);
+
auto & cur = data.at(it);
+
+
}
+
printcont(data, "data after unwrapping" );
+
+
+
for (auto & el : data)
+
+
printcont(data, "data after wrapping" );
+
+
+
for (size_t it = 1; it < data.size(); it++)
+
{
+
const auto prev = data.at(it - 1);
+
auto & cur = data.at(it);
+
+
}
+
printcont(data, "data after unwrapping" );
+
+
+
+
std::cout << "----------------------------------------------------------------" << std::endl;
+
+
+
+
+
+
+
+
+
std::cout << std::left << std::showpos << std::setprecision(4) << "A:\t" << A.value() << std::endl
+
<< "B:\t" << B.value() << std::endl
+
+
+
+
+
+
+
+
+
+
+
+
+
std::cout << std::left << std::showpos << std::setprecision(4) << "C:\t" << C.value() << std::endl
+
<< "D:\t" << D.value() << std::endl
+
+
+
+
+
+
+
+
+
+
+
+
std::cout << std::left << std::showpos << std::setprecision(4) << "E:\t" << E.value() << std::endl
+
<< "F:\t" << F.value() << std::endl
+
+
+
+
+
+
+
std::cout << "----------------------------------------------------------------" << std::endl;
+
+
+
+
+
+
+
+
+
+
double a1 = -359;
+
double a2 = -2;
+
double coeff = 1.0 / 3.0;
+
std::cout << std::left << std::showpos << std::setprecision(4) << "a1:\t" << a1 << std::endl
+
<< "a2:\t" << a2 << std::endl
+
<< "coeff:\t" << coeff << std::endl
+
<<
"interp(a1, a2, coeff):\t" <<
degrees::interp (a1, a2, coeff) << std::endl
+
+
+
+
+
return 0;
+
}
+
+
+
+Defines the cyclic class for calculations with cyclic quantities.
+Definition: cyclic_example.cpp:22
+static float pdist(const float from, const float to)
Returns length of the shortest walk in the positive direction from the first parameter to the second ...
Definition: cyclic.h:171
+cyclic()
Default constructor.
Definition: cyclic.h:55
+static float interpUnwrapped(const float from, const float to, const float coeff)
Interpolation between two circular quantities without wrapping of the result.
Definition: cyclic.h:242
+static float diff(const float minuend, const float subtrahend)
Returns the difference between the two circular values.
Definition: cyclic.h:193
+static float dist(const float from, const float to)
Returns the distance between the two circular values.
Definition: cyclic.h:219
+Implementation of the a general cyclic value (such as angles in radians/degrees etc).
Definition: cyclic.h:48
+Convenience specialization of the cyclic class for unsigned radians (from $0$ to $2\pi$).
Definition: cyclic.h:489
+Convenience specialization of the cyclic class for signed radians (from $-\pi$ to $\pi$).
Definition: cyclic.h:499
+static bool inRange(const float val)
Checks if val is within the valid interval of wrapped values.
Definition: cyclic.h:100
+static float unwrap(const float what, const float from)
Returns value of the parameter what modified so that there is no "jump" between from and \t what.
Definition: cyclic.h:157
+static float interp(const float from, const float to, const float coeff)
Interpolation between two circular quantities.
Definition: cyclic.h:264
+static float wrap(const float val)
Returns val, converted to the valid interval of values.
Definition: cyclic.h:114
+static constexpr float range
Range of the valid interval of wrapped values (also the period of the cyclic quantity).
Definition: cyclic.h:87
+static other_t convert(const cyclic &what)
Conversion between two different circular quantities.
Definition: cyclic.h:334
+
+
+
+
diff --git a/gps__conversions_8h.html b/gps__conversions_8h.html
new file mode 100644
index 00000000..b13c51ea
--- /dev/null
+++ b/gps__conversions_8h.html
@@ -0,0 +1,186 @@
+
+
+
+
+
+
+
+mrs_lib: include/mrs_lib/gps_conversions.h File Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Universal Transverse Mercator transforms. Functions to convert (spherical) latitude and longitude to and from (Euclidean) UTM coordinates.
+More...
+
#include <cmath>
+#include <cstdio>
+#include <cstdlib>
+#include <string>
+
+
Go to the source code of this file.
+
+
+ mrs_lib
+ All mrs_lib functions, classes, variables and definitions are contained in this namespace.
+
+
+
+
+const double mrs_lib::RADIANS_PER_DEGREE = M_PI / 180.0
+
+
+const double mrs_lib::DEGREES_PER_RADIAN = 180.0 / M_PI
+
+
+const double mrs_lib::WGS84_A = 6378137.0
+
+
+const double mrs_lib::WGS84_B = 6356752.31424518
+
+
+const double mrs_lib::WGS84_F = 0.0033528107
+
+
+const double mrs_lib::WGS84_E = 0.0818191908
+
+
+const double mrs_lib::WGS84_EP = 0.0820944379
+
+
+const double mrs_lib::UTM_K0 = 0.9996
+
+
+const double mrs_lib::UTM_FE = 500000.0
+
+
+const double mrs_lib::UTM_FN_N = 0.0
+
+
+const double mrs_lib::UTM_FN_S = 10000000.0
+
+
+const double mrs_lib::UTM_E2 = (WGS84_E * WGS84_E)
+
+
+const double mrs_lib::UTM_E4 = (UTM_E2 * UTM_E2)
+
+
+const double mrs_lib::UTM_E6 = (UTM_E4 * UTM_E2)
+
+
+const double mrs_lib::UTM_EP2 = (UTM_E2 / (1 - UTM_E2))
+
+
+
+
Universal Transverse Mercator transforms. Functions to convert (spherical) latitude and longitude to and from (Euclidean) UTM coordinates.
+
Author Chuck Gantz- chuck.nosp@m. .gan.nosp@m. tz@gl.nosp@m. obal.nosp@m. star..nosp@m. com
+
+
+
+
+
+
diff --git a/gps__conversions_8h.js b/gps__conversions_8h.js
new file mode 100644
index 00000000..16a056f0
--- /dev/null
+++ b/gps__conversions_8h.js
@@ -0,0 +1,18 @@
+var gps__conversions_8h =
+[
+ [ "DEGREES_PER_RADIAN", "gps__conversions_8h.html#a936ac9b087815cba51d58fc1f79e0df5", null ],
+ [ "RADIANS_PER_DEGREE", "gps__conversions_8h.html#a1b0be1888d6415e50bccf1d97b67569a", null ],
+ [ "UTM_E2", "gps__conversions_8h.html#af541534981355b9db12705282012786a", null ],
+ [ "UTM_E4", "gps__conversions_8h.html#a8699db73026f4d4bc2f9147815c92eec", null ],
+ [ "UTM_E6", "gps__conversions_8h.html#ab21d4291d66fc4b83ec94cf6cfaa5740", null ],
+ [ "UTM_EP2", "gps__conversions_8h.html#a062139851c2a315cee44dd8c57453e14", null ],
+ [ "UTM_FE", "gps__conversions_8h.html#a634786a113a5b773e4b51d6235d33ece", null ],
+ [ "UTM_FN_N", "gps__conversions_8h.html#ab78760950af658f01b7c63bd34b98426", null ],
+ [ "UTM_FN_S", "gps__conversions_8h.html#a773b1a8b8b3ae12a59841c1a962883a9", null ],
+ [ "UTM_K0", "gps__conversions_8h.html#a22a17cb8ca411d7cd8b249ba01803aa1", null ],
+ [ "WGS84_A", "gps__conversions_8h.html#a4c4520b3f93b357fba7dbde5fdb88a9c", null ],
+ [ "WGS84_B", "gps__conversions_8h.html#a11399734244c9153d49d112430b60d25", null ],
+ [ "WGS84_E", "gps__conversions_8h.html#addc466a492d572ac9cb23fa2b2a12b4f", null ],
+ [ "WGS84_EP", "gps__conversions_8h.html#a1c9799ab8aefb1b9b773cca6d94155a0", null ],
+ [ "WGS84_F", "gps__conversions_8h.html#aa70cc3837c0593f3e96f709a0e4e70eb", null ]
+];
\ No newline at end of file
diff --git a/gps__conversions_8h__incl.map b/gps__conversions_8h__incl.map
new file mode 100644
index 00000000..4147c9fb
--- /dev/null
+++ b/gps__conversions_8h__incl.map
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/gps__conversions_8h__incl.md5 b/gps__conversions_8h__incl.md5
new file mode 100644
index 00000000..699084dc
--- /dev/null
+++ b/gps__conversions_8h__incl.md5
@@ -0,0 +1 @@
+d7ee4c81a10eff367170cd37f9e5d621
\ No newline at end of file
diff --git a/gps__conversions_8h__incl.png b/gps__conversions_8h__incl.png
new file mode 100644
index 00000000..3112d85a
Binary files /dev/null and b/gps__conversions_8h__incl.png differ
diff --git a/gps__conversions_8h_source.html b/gps__conversions_8h_source.html
new file mode 100644
index 00000000..e9e42011
--- /dev/null
+++ b/gps__conversions_8h_source.html
@@ -0,0 +1,366 @@
+
+
+
+
+
+
+
+mrs_lib: include/mrs_lib/gps_conversions.h Source File
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Go to the documentation of this file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
27 const double RADIANS_PER_DEGREE = M_PI / 180.0;
+
28 const double DEGREES_PER_RADIAN = 180.0 / M_PI;
+
+
+
31 const double WGS84_A = 6378137.0;
+
32 const double WGS84_B = 6356752.31424518;
+
33 const double WGS84_F = 0.0033528107;
+
34 const double WGS84_E = 0.0818191908;
+
35 const double WGS84_EP = 0.0820944379;
+
+
+
38 const double UTM_K0 = 0.9996;
+
39 const double UTM_FE = 500000.0;
+
40 const double UTM_FN_N = 0.0;
+
41 const double UTM_FN_S = 10000000.0;
+
42 const double UTM_E2 = (WGS84_E * WGS84_E);
+
43 const double UTM_E4 = (UTM_E2 * UTM_E2);
+
44 const double UTM_E6 = (UTM_E4 * UTM_E2);
+
45 const double UTM_EP2 = (UTM_E2 / (1 - UTM_E2));
+
+
54 static inline void UTM(
double lat,
double lon,
double * x,
double * y) {
+
+
56 const static double m0 = (1 - UTM_E2 / 4 - 3 * UTM_E4 / 64 - 5 * UTM_E6 / 256);
+
57 const static double m1 = -(3 * UTM_E2 / 8 + 3 * UTM_E4 / 32 + 45 * UTM_E6 / 1024);
+
58 const static double m2 = (15 * UTM_E4 / 256 + 45 * UTM_E6 / 1024);
+
59 const static double m3 = -(35 * UTM_E6 / 3072);
+
+
+
62 int cm = ((lon >= 0.0) ? ((int)lon - ((
int )lon) % 6 + 3) : ((int)lon - ((
int )lon) % 6 - 3));
+
+
+
65 double rlat = lat * RADIANS_PER_DEGREE;
+
66 double rlon = lon * RADIANS_PER_DEGREE;
+
67 double rlon0 = cm * RADIANS_PER_DEGREE;
+
+
+
70 double slat = sin(rlat);
+
71 double clat = cos(rlat);
+
72 double tlat = tan(rlat);
+
+
+
75 double fn = (lat > 0) ? UTM_FN_N : UTM_FN_S;
+
+
77 double T = tlat * tlat;
+
78 double C = UTM_EP2 * clat * clat;
+
79 double A = (rlon - rlon0) * clat;
+
80 double M = WGS84_A * (m0 * rlat + m1 * sin(2 * rlat) + m2 * sin(4 * rlat) + m3 * sin(6 * rlat));
+
81 double V = WGS84_A / sqrt(1 - UTM_E2 * slat * slat);
+
+
+
84 *x = UTM_FE + UTM_K0 * V * (A + (1 - T + C) * pow(A, 3) / 6 + (5 - 18 * T + T * T + 72 * C - 58 * UTM_EP2) * pow(A, 5) / 120);
+
+
+
87 (M + V * tlat * (A * A / 2 + (5 - T + 9 * C + 4 * C * C) * pow(A, 4) / 24 + ((61 - 58 * T + T * T + 600 * C - 330 * UTM_EP2) * pow(A, 6) / 720)));
+
+
+
+
+
+
101 static inline char UTMLetterDesignator(
double Lat) {
+
102 char LetterDesignator;
+
+
104 if ((84 >= Lat) && (Lat >= 72))
+
105 LetterDesignator =
'X' ;
+
106 else if ((72 > Lat) && (Lat >= 64))
+
107 LetterDesignator =
'W' ;
+
108 else if ((64 > Lat) && (Lat >= 56))
+
109 LetterDesignator =
'V' ;
+
110 else if ((56 > Lat) && (Lat >= 48))
+
111 LetterDesignator =
'U' ;
+
112 else if ((48 > Lat) && (Lat >= 40))
+
113 LetterDesignator =
'T' ;
+
114 else if ((40 > Lat) && (Lat >= 32))
+
115 LetterDesignator =
'S' ;
+
116 else if ((32 > Lat) && (Lat >= 24))
+
117 LetterDesignator =
'R' ;
+
118 else if ((24 > Lat) && (Lat >= 16))
+
119 LetterDesignator =
'Q' ;
+
120 else if ((16 > Lat) && (Lat >= 8))
+
121 LetterDesignator =
'P' ;
+
122 else if ((8 > Lat) && (Lat >= 0))
+
123 LetterDesignator =
'N' ;
+
124 else if ((0 > Lat) && (Lat >= -8))
+
125 LetterDesignator =
'M' ;
+
126 else if ((-8 > Lat) && (Lat >= -16))
+
127 LetterDesignator =
'L' ;
+
128 else if ((-16 > Lat) && (Lat >= -24))
+
129 LetterDesignator =
'K' ;
+
130 else if ((-24 > Lat) && (Lat >= -32))
+
131 LetterDesignator =
'J' ;
+
132 else if ((-32 > Lat) && (Lat >= -40))
+
133 LetterDesignator =
'H' ;
+
134 else if ((-40 > Lat) && (Lat >= -48))
+
135 LetterDesignator =
'G' ;
+
136 else if ((-48 > Lat) && (Lat >= -56))
+
137 LetterDesignator =
'F' ;
+
138 else if ((-56 > Lat) && (Lat >= -64))
+
139 LetterDesignator =
'E' ;
+
140 else if ((-64 > Lat) && (Lat >= -72))
+
141 LetterDesignator =
'D' ;
+
142 else if ((-72 > Lat) && (Lat >= -80))
+
143 LetterDesignator =
'C' ;
+
+
+
146 LetterDesignator =
'Z' ;
+
147 return LetterDesignator;
+
+
+
159 static inline void LLtoUTM(
const double Lat,
const double Long,
double & UTMNorthing,
double & UTMEasting,
char * UTMZone) {
+
+
161 double eccSquared = UTM_E2;
+
+
+
+
165 double eccPrimeSquared;
+
166 double N, T, C, A, M;
+
+
+
169 double LongTemp = (Long + 180) -
int ((Long + 180) / 360) * 360 - 180;
+
+
171 double LatRad = Lat * RADIANS_PER_DEGREE;
+
172 double LongRad = LongTemp * RADIANS_PER_DEGREE;
+
173 double LongOriginRad;
+
+
+
176 ZoneNumber = int((LongTemp + 180) / 6) + 1;
+
+
+
+
+
+
+
+
184 if (Lat >= 56.0 && Lat < 64.0 && LongTemp >= 3.0 && LongTemp < 12.0)
+
+
+
+
188 if (Lat >= 72.0 && Lat < 84.0) {
+
189 if (LongTemp >= 0.0 && LongTemp < 9.0)
+
+
191 else if (LongTemp >= 9.0 && LongTemp < 21.0)
+
+
193 else if (LongTemp >= 21.0 && LongTemp < 33.0)
+
+
195 else if (LongTemp >= 33.0 && LongTemp < 42.0)
+
+
+
+
199 LongOrigin = (ZoneNumber - 1) * 6 - 180 + 3;
+
200 LongOriginRad = LongOrigin * RADIANS_PER_DEGREE;
+
+
+
203 snprintf(UTMZone, 4,
"%d%c" , ZoneNumber, UTMLetterDesignator(Lat));
+
+
205 eccPrimeSquared = (eccSquared) / (1 - eccSquared);
+
+
207 N = a / sqrt(1 - eccSquared * sin(LatRad) * sin(LatRad));
+
208 T = tan(LatRad) * tan(LatRad);
+
209 C = eccPrimeSquared * cos(LatRad) * cos(LatRad);
+
210 A = cos(LatRad) * (LongRad - LongOriginRad);
+
+
212 M = a * ((1 - eccSquared / 4 - 3 * eccSquared * eccSquared / 64 - 5 * eccSquared * eccSquared * eccSquared / 256) * LatRad -
+
213 (3 * eccSquared / 8 + 3 * eccSquared * eccSquared / 32 + 45 * eccSquared * eccSquared * eccSquared / 1024) * sin(2 * LatRad) +
+
214 (15 * eccSquared * eccSquared / 256 + 45 * eccSquared * eccSquared * eccSquared / 1024) * sin(4 * LatRad) -
+
215 (35 * eccSquared * eccSquared * eccSquared / 3072) * sin(6 * LatRad));
+
+
+
218 (double)(k0 * N * (A + (1 - T + C) * A * A * A / 6 + (5 - 18 * T + T * T + 72 * C - 58 * eccPrimeSquared) * A * A * A * A * A / 120) + 500000.0);
+
+
220 UTMNorthing = (double)(k0 * (M + N * tan(LatRad) *
+
221 (A * A / 2 + (5 - T + 9 * C + 4 * C * C) * A * A * A * A / 24 +
+
222 (61 - 58 * T + T * T + 600 * C - 330 * eccPrimeSquared) * A * A * A * A * A * A / 720)));
+
+
224 UTMNorthing += 10000000.0;
+
+
+
227 static inline void LLtoUTM(
const double Lat,
const double Long,
double & UTMNorthing,
double & UTMEasting, std::string& UTMZone) {
+
228 char zone_buf[] = {0, 0, 0, 0};
+
+
230 LLtoUTM(Lat, Long, UTMNorthing, UTMEasting, zone_buf);
+
+
+
+
+
+
245 static inline void UTMtoLL(
const double UTMNorthing,
const double UTMEasting,
const char * UTMZone,
double & Lat,
double & Long) {
+
+
+
248 double eccSquared = UTM_E2;
+
249 double eccPrimeSquared;
+
250 double e1 = (1 - sqrt(1 - eccSquared)) / (1 + sqrt(1 - eccSquared));
+
251 double N1, T1, C1, R1, D, M;
+
+
+
254 [[maybe_unused]]
double phi1;
+
+
+
+
258 [[maybe_unused]]
int NorthernHemisphere;
+
+
260 x = UTMEasting - 500000.0;
+
+
+
263 ZoneNumber = strtoul(UTMZone, &ZoneLetter, 10);
+
264 if ((*ZoneLetter -
'N' ) >= 0)
+
265 NorthernHemisphere = 1;
+
+
267 NorthernHemisphere = 0;
+
+
+
+
271 LongOrigin = (ZoneNumber - 1) * 6 - 180 + 3;
+
+
273 eccPrimeSquared = (eccSquared) / (1 - eccSquared);
+
+
+
276 mu = M / (a * (1 - eccSquared / 4 - 3 * eccSquared * eccSquared / 64 - 5 * eccSquared * eccSquared * eccSquared / 256));
+
+
278 phi1Rad = mu + (3 * e1 / 2 - 27 * e1 * e1 * e1 / 32) * sin(2 * mu) + (21 * e1 * e1 / 16 - 55 * e1 * e1 * e1 * e1 / 32) * sin(4 * mu) +
+
279 (151 * e1 * e1 * e1 / 96) * sin(6 * mu);
+
280 phi1 = phi1Rad * DEGREES_PER_RADIAN;
+
+
282 N1 = a / sqrt(1 - eccSquared * sin(phi1Rad) * sin(phi1Rad));
+
283 T1 = tan(phi1Rad) * tan(phi1Rad);
+
284 C1 = eccPrimeSquared * cos(phi1Rad) * cos(phi1Rad);
+
285 R1 = a * (1 - eccSquared) / pow(1 - eccSquared * sin(phi1Rad) * sin(phi1Rad), 1.5);
+
+
+
288 Lat = phi1Rad - (N1 * tan(phi1Rad) / R1) * (D * D / 2 - (5 + 3 * T1 + 10 * C1 - 4 * C1 * C1 - 9 * eccPrimeSquared) * D * D * D * D / 24 +
+
289 (61 + 90 * T1 + 298 * C1 + 45 * T1 * T1 - 252 * eccPrimeSquared - 3 * C1 * C1) * D * D * D * D * D * D / 720);
+
290 Lat = Lat * DEGREES_PER_RADIAN;
+
+
292 Long = (D - (1 + 2 * T1 + C1) * D * D * D / 6 + (5 - 2 * C1 + 28 * T1 - 3 * C1 * C1 + 8 * eccPrimeSquared + 24 * T1 * T1) * D * D * D * D * D / 120) /
+
+
294 Long = LongOrigin + Long * DEGREES_PER_RADIAN;
+
+
+
297 static inline void UTMtoLL(
const double UTMNorthing,
const double UTMEasting, std::string UTMZone,
double & Lat,
double & Long) {
+
298 UTMtoLL(UTMNorthing, UTMEasting, UTMZone.c_str(), Lat, Long);
+
+
+
+
+
+
+
+All mrs_lib functions, classes, variables and definitions are contained in this namespace.
Definition: attitude_converter.h:29
+
+
+
+
diff --git a/graph_legend.html b/graph_legend.html
new file mode 100644
index 00000000..2b83f5df
--- /dev/null
+++ b/graph_legend.html
@@ -0,0 +1,161 @@
+
+
+
+
+
+
+
+mrs_lib: Graph Legend
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
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 00000000..8fcdccd1
--- /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 00000000..7e2cbcfb
Binary files /dev/null and b/graph_legend.png differ
diff --git a/hierarchy.html b/hierarchy.html
new file mode 100644
index 00000000..479e97b5
--- /dev/null
+++ b/hierarchy.html
@@ -0,0 +1,214 @@
+
+
+
+
+
+
+
+mrs_lib: Class Hierarchy
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Go to the graphical class hierarchy
+This inheritance list is sorted roughly, but not completely, alphabetically:
+
[detail level 1 2 3 4 ]
+ C mrs_lib::AtomicScopeFlag Convenience class for automatically setting and unsetting an atomic boolean based on the object's scope. Useful e.g. for indicating whether a thread is running or not
+ C mrs_lib::AttitudeConverter The main convertor class. Instantiate with any type in constructor and get the value in any other type by assigning the instance to your variable, as: tf::Quaternion tf1_quaternion = AttitudeConverter(roll, pitch, yaw); All the default Euler angles are in the extrinsic RPY notation
+ C mrs_lib::BatchVisualizer Library for drawing large amounts of geometric objects in RVIZ at the same time
+ C mrs_lib::geometry::Cone Geometric representaiton of a cone
+ C mrs_lib::geometry::Cuboid Geometric representation of a cuboid
+ C mrs_lib::geometry::cyclic< flt, spec > Implementation of the a general cyclic value (such as angles in radians/degrees etc)
+ ► C mrs_lib::geometry::cyclic< double, degrees >
+ C mrs_lib::geometry::degrees Convenience specialization of the cyclic class for unsigned degrees (from $0$ to $360$)
+ ► C mrs_lib::geometry::cyclic< double, radians >
+ C mrs_lib::geometry::radians Convenience specialization of the cyclic class for unsigned radians (from $0$ to $2\pi$)
+ ► C mrs_lib::geometry::cyclic< double, sdegrees >
+ C mrs_lib::geometry::sdegrees Convenience specialization of the cyclic class for signed degrees (from $-180$ to $180$)
+ ► C mrs_lib::geometry::cyclic< double, sradians >
+ C mrs_lib::geometry::sradians Convenience specialization of the cyclic class for signed radians (from $-\pi$ to $\pi$)
+ ► C mrs_lib::geometry::cyclic< float, degrees >
+ C degrees
+ C mrs_lib::geometry::Cylinder Geometric representation of a cylinder
+ C mrs_lib::DynamicPublisher A helper class for easy publishing of ROS messages for debugging purposes
+ C mrs_lib::DynamicReconfigureMgr< ConfigType >
+ C mrs_lib::geometry::Ellipse Geometric representation of an ellipse
+ C mrs_lib::EulerAttitude A small class for storing the Euler angles
+ ► C exception
+ C mrs_lib::AttitudeConverter::EulerFormatException Thrown when the Euler angle format is set wrongly
+ C mrs_lib::AttitudeConverter::GetHeadingException Thrown when calculating of heading is not possible due to atan2 exception
+ C mrs_lib::AttitudeConverter::InvalidAttitudeException Thrown when the internal attitude becomes invalid
+ C mrs_lib::AttitudeConverter::MathErrorException Thrown when math breaks
+ C mrs_lib::AttitudeConverter::SetHeadingException Thrown when the heading cannot be set to an existing attitude
+ C mrs_lib::eigenvector_exception This exception may be thrown when solving the generalized eigenvalue problem with the M and N matrices
+ C mrs_lib::JLKF< n_states, n_inputs, n_measurements, n_biases >::inverse_exception This exception is thrown when taking the inverse of a matrix fails
+ C mrs_lib::LKF< n_states, n_inputs, n_measurements >::inverse_exception This exception is thrown when taking the inverse of a matrix fails
+ C mrs_lib::PointObstacle::WrongHeight
+ C mrs_lib::PointObstacle::WrongRadius
+ C mrs_lib::Polygon::ExtraVertices
+ C mrs_lib::Polygon::WrongNumberOfColumns
+ C mrs_lib::Polygon::WrongNumberOfVertices
+ C mrs_lib::SafetyZone::BorderError
+ C mrs_lib::SafetyZone::PointObstacleError
+ C mrs_lib::SafetyZone::PolygonObstacleError
+ C mrs_lib::UKF< n_states, n_inputs, n_measurements >::inverse_exception Thrown when taking the inverse of a matrix fails during kalman gain calculation
+ C mrs_lib::UKF< n_states, n_inputs, n_measurements >::square_root_exception Thrown when taking the square root of a matrix fails during sigma generation
+ C mrs_lib::IirFilter
+ C mrs_lib::ImagePubliserData
+ C mrs_lib::ImagePublisher
+ C DynamicPublisher::impl
+ ► C mrs_lib::SubscribeHandler< MessageType >::Impl< MessageType >
+ C mrs_lib::SubscribeHandler< MessageType >::ImplThreadsafe< MessageType >
+ C ThreadTimer::Impl
+ C mrs_lib::Intersection
+ ► C mrs_lib::KalmanFilter< n_states, n_inputs, n_measurements > This abstract class defines common interfaces and types for a generic Kalman filter
+ ► C mrs_lib::LKF< 3, -1, 2 >
+ C mrs_lib::DKF Implementation of the Degenerate measurement Linear Kalman filter
+ ► C mrs_lib::LKF< 3, 1, 1 >
+ C mrs_lib::LKF_MRS_odom
+ ► C mrs_lib::LKF< n_states, n_inputs, n_measurements > Implementation of the Linear Kalman filter [3]
+ ► C mrs_lib::NCLKF< n_states, n_inputs, n_measurements > This class implements the norm-constrained linear Kalman filter [5]
+ C mrs_lib::NCLKF_partial< n_states, n_inputs, n_measurements, n_norm_constrained_states > This class implements the partially norm-constrained linear Kalman filter [5]
+ C mrs_lib::varstepLKF< n_states, n_inputs, n_measurements >
+ ► C mrs_lib::UKF< n_states, n_inputs, n_measurements > Implementation of the Unscented Kalman filter [4]
+ C mrs_lib::NCUKF< n_states, n_inputs, n_measurements >
+ ► C mrs_lib::KalmanFilterAloamGarm< n_states, n_inputs, n_measurements > This abstract class defines common interfaces and types for a generic Kalman filter
+ C mrs_lib::JLKF< n_states, n_inputs, n_measurements, n_biases >
+ C mrs_lib::MedianFilter Implementation of a median filter with a fixed-length buffer
+ C mrs_lib::quadratic_throttle_model::MotorParams_t
+ ► C mrs_lib::MRSTimer Common wrapper representing the functionality of the ros::Timer
+ C mrs_lib::ROSTimer Ros::Timer wrapper. The interface is the same as with ros::Timer, except for the initialization method
+ C mrs_lib::ThreadTimer Custom thread-based Timers with the same interface as mrs_lib::ROSTimer
+ C MyPoint
+ C mrs_lib::NotchFilter
+ C obj_t
+ C mrs_lib::ParamLoader Convenience class for loading parameters from rosparam server
+ ► C mrs_lib::ParamProvider
+ C mrs_lib::RosParamProvider
+ C mrs_lib::PointObstacle
+ C mrs_lib::Polygon
+ C mrs_lib::Profiler
+ C mrs_lib::PublisherHandler< TopicType > User wrapper of the publisher handler implementation
+ C mrs_lib::PublisherHandler_impl< TopicType > Implementation of the publisher handler
+ C mrs_lib::geometry::Ray Geometric representation of a ray. Instantiate it by two input Vector3. Use static methods for from-to raycast, or a point-direction raycast
+ C mrs_lib::geometry::Rectangle Geometric representation of a rectangle (can represent any quadrilateral)
+ C mrs_lib::Repredictor< Model, disable_reprediction > Implementation of the Repredictor for fusing measurements with variable delays
+ ► C mrs_lib::Repredictor< Model >
+ C mrs_lib::RepredictorAloamgarm< Model > Implementation of the RepredictorAloamgarm for fusing measurements with variable delays
+ C mrs_lib::RHEIV< n_states, n_params > Implementation of the Reduced Heteroscedastic Errors In Variables surface fitting algorithm [2]
+ C mrs_lib::Routine
+ C mrs_lib::SafetyZone
+ C mrs_lib::ScopeTimer Simple timer which will time a duration of a scope and checkpoints inside the scope in ros time and std::chrono time
+ C mrs_lib::ScopeTimerLogger Simple file logger of scope timer and its checkpoints
+ C mrs_lib::ServiceClientHandler< ServiceType > User wrapper of the service client handler implementation
+ C mrs_lib::ServiceClientHandler_impl< ServiceType > Implementation of the service client handler
+ C mrs_lib::KalmanFilter< n_states, n_inputs, n_measurements >::statecov_t Helper struct for passing around the state and its covariance in one variable
+ C mrs_lib::KalmanFilterAloamGarm< n_states, n_inputs, n_measurements >::statecov_t Helper struct for passing around the state and its covariance in one variable
+ C SubObject
+ C mrs_lib::SubscribeHandler< MessageType > The main class for ROS topic subscription, message timeout handling etc
+ C mrs_lib::SubscribeHandlerOptions A helper class to simplify setup of SubscribeHandler construction. This class is passed to the SubscribeHandler constructor and specifies its common options
+ ► C Test
+ C VectorConverterTest< T >
+ C mrs_lib::ScopeTimer::time_point
+ C mrs_lib::TimeoutManager TODO
+ C mrs_lib::TransformBroadcaster Wrapper for the tf2_ros::TransformBroadcaster. With each sendTransform() command, the message is checked against the last message with the same frame IDs. If the transform was already published in this ros::Time step, then the transform is skipped. Prevents endless stream of warnings from spamming the console output
+ C mrs_lib::Transformer A convenience wrapper class for ROS's native TF2 API to simplify transforming of various messages
+ C mrs_lib::geometry::Triangle Geometric representation of a triangle. Instantiate a new triangle by providing three vertices
+ C std::tuple_element< 0, mrs_lib::AttitudeConverter >
+ C std::tuple_element< 1, mrs_lib::AttitudeConverter >
+ C std::tuple_element< 2, mrs_lib::AttitudeConverter >
+ C std::tuple_size< mrs_lib::AttitudeConverter >
+ C mrs_lib::Vector3Converter Converter of Vector3 representations. Instantiate it with any type of vector3 in constructor and convert it by assigning it to any other type of vector3 variable
+ C mrs_lib::VisualObject
+
+
+
+
+
+
+
+
diff --git a/hierarchy.js b/hierarchy.js
new file mode 100644
index 00000000..8cdccba4
--- /dev/null
+++ b/hierarchy.js
@@ -0,0 +1,128 @@
+var hierarchy =
+[
+ [ "mrs_lib::AtomicScopeFlag", "classmrs__lib_1_1AtomicScopeFlag.html", null ],
+ [ "mrs_lib::AttitudeConverter", "classmrs__lib_1_1AttitudeConverter.html", null ],
+ [ "mrs_lib::BatchVisualizer", "classmrs__lib_1_1BatchVisualizer.html", null ],
+ [ "mrs_lib::geometry::Cone", "classmrs__lib_1_1geometry_1_1Cone.html", null ],
+ [ "mrs_lib::geometry::Cuboid", "classmrs__lib_1_1geometry_1_1Cuboid.html", null ],
+ [ "mrs_lib::geometry::cyclic< flt, spec >", "structmrs__lib_1_1geometry_1_1cyclic.html", null ],
+ [ "mrs_lib::geometry::cyclic< double, degrees >", "structmrs__lib_1_1geometry_1_1cyclic.html", [
+ [ "mrs_lib::geometry::degrees", "structmrs__lib_1_1geometry_1_1degrees.html", null ]
+ ] ],
+ [ "mrs_lib::geometry::cyclic< double, radians >", "structmrs__lib_1_1geometry_1_1cyclic.html", [
+ [ "mrs_lib::geometry::radians", "structmrs__lib_1_1geometry_1_1radians.html", null ]
+ ] ],
+ [ "mrs_lib::geometry::cyclic< double, sdegrees >", "structmrs__lib_1_1geometry_1_1cyclic.html", [
+ [ "mrs_lib::geometry::sdegrees", "structmrs__lib_1_1geometry_1_1sdegrees.html", null ]
+ ] ],
+ [ "mrs_lib::geometry::cyclic< double, sradians >", "structmrs__lib_1_1geometry_1_1cyclic.html", [
+ [ "mrs_lib::geometry::sradians", "structmrs__lib_1_1geometry_1_1sradians.html", null ]
+ ] ],
+ [ "mrs_lib::geometry::cyclic< float, degrees >", "structmrs__lib_1_1geometry_1_1cyclic.html", [
+ [ "degrees", "structdegrees.html", null ]
+ ] ],
+ [ "mrs_lib::geometry::Cylinder", "classmrs__lib_1_1geometry_1_1Cylinder.html", null ],
+ [ "mrs_lib::DynamicPublisher", "classmrs__lib_1_1DynamicPublisher.html", null ],
+ [ "mrs_lib::DynamicReconfigureMgr< ConfigType >", "classmrs__lib_1_1DynamicReconfigureMgr.html", null ],
+ [ "mrs_lib::geometry::Ellipse", "classmrs__lib_1_1geometry_1_1Ellipse.html", null ],
+ [ "mrs_lib::EulerAttitude", "classmrs__lib_1_1EulerAttitude.html", null ],
+ [ "exception", null, [
+ [ "mrs_lib::AttitudeConverter::EulerFormatException", "structmrs__lib_1_1AttitudeConverter_1_1EulerFormatException.html", null ],
+ [ "mrs_lib::AttitudeConverter::GetHeadingException", "structmrs__lib_1_1AttitudeConverter_1_1GetHeadingException.html", null ],
+ [ "mrs_lib::AttitudeConverter::InvalidAttitudeException", "structmrs__lib_1_1AttitudeConverter_1_1InvalidAttitudeException.html", null ],
+ [ "mrs_lib::AttitudeConverter::MathErrorException", "structmrs__lib_1_1AttitudeConverter_1_1MathErrorException.html", null ],
+ [ "mrs_lib::AttitudeConverter::SetHeadingException", "structmrs__lib_1_1AttitudeConverter_1_1SetHeadingException.html", null ],
+ [ "mrs_lib::eigenvector_exception", "structmrs__lib_1_1eigenvector__exception.html", null ],
+ [ "mrs_lib::JLKF< n_states, n_inputs, n_measurements, n_biases >::inverse_exception", "structmrs__lib_1_1JLKF_1_1inverse__exception.html", null ],
+ [ "mrs_lib::LKF< n_states, n_inputs, n_measurements >::inverse_exception", "structmrs__lib_1_1LKF_1_1inverse__exception.html", null ],
+ [ "mrs_lib::PointObstacle::WrongHeight", "structmrs__lib_1_1PointObstacle_1_1WrongHeight.html", null ],
+ [ "mrs_lib::PointObstacle::WrongRadius", "structmrs__lib_1_1PointObstacle_1_1WrongRadius.html", null ],
+ [ "mrs_lib::Polygon::ExtraVertices", "structmrs__lib_1_1Polygon_1_1ExtraVertices.html", null ],
+ [ "mrs_lib::Polygon::WrongNumberOfColumns", "structmrs__lib_1_1Polygon_1_1WrongNumberOfColumns.html", null ],
+ [ "mrs_lib::Polygon::WrongNumberOfVertices", "structmrs__lib_1_1Polygon_1_1WrongNumberOfVertices.html", null ],
+ [ "mrs_lib::SafetyZone::BorderError", "structmrs__lib_1_1SafetyZone_1_1BorderError.html", null ],
+ [ "mrs_lib::SafetyZone::PointObstacleError", "structmrs__lib_1_1SafetyZone_1_1PointObstacleError.html", null ],
+ [ "mrs_lib::SafetyZone::PolygonObstacleError", "structmrs__lib_1_1SafetyZone_1_1PolygonObstacleError.html", null ],
+ [ "mrs_lib::UKF< n_states, n_inputs, n_measurements >::inverse_exception", "structmrs__lib_1_1UKF_1_1inverse__exception.html", null ],
+ [ "mrs_lib::UKF< n_states, n_inputs, n_measurements >::square_root_exception", "structmrs__lib_1_1UKF_1_1square__root__exception.html", null ]
+ ] ],
+ [ "mrs_lib::IirFilter", "classmrs__lib_1_1IirFilter.html", null ],
+ [ "mrs_lib::ImagePubliserData", "structmrs__lib_1_1ImagePubliserData.html", null ],
+ [ "mrs_lib::ImagePublisher", "classmrs__lib_1_1ImagePublisher.html", null ],
+ [ "DynamicPublisher::impl", "classDynamicPublisher_1_1impl.html", null ],
+ [ "mrs_lib::SubscribeHandler< MessageType >::Impl< MessageType >", "classmrs__lib_1_1SubscribeHandler_1_1Impl.html", [
+ [ "mrs_lib::SubscribeHandler< MessageType >::ImplThreadsafe< MessageType >", "classmrs__lib_1_1SubscribeHandler_1_1ImplThreadsafe.html", null ]
+ ] ],
+ [ "ThreadTimer::Impl", "classThreadTimer_1_1Impl.html", null ],
+ [ "mrs_lib::Intersection", "structmrs__lib_1_1Intersection.html", null ],
+ [ "mrs_lib::KalmanFilter< n_states, n_inputs, n_measurements >", "classmrs__lib_1_1KalmanFilter.html", [
+ [ "mrs_lib::LKF< 3, -1, 2 >", "classmrs__lib_1_1LKF.html", [
+ [ "mrs_lib::DKF", "classmrs__lib_1_1DKF.html", null ]
+ ] ],
+ [ "mrs_lib::LKF< 3, 1, 1 >", "classmrs__lib_1_1LKF.html", [
+ [ "mrs_lib::LKF_MRS_odom", "classmrs__lib_1_1LKF__MRS__odom.html", null ]
+ ] ],
+ [ "mrs_lib::LKF< n_states, n_inputs, n_measurements >", "classmrs__lib_1_1LKF.html", [
+ [ "mrs_lib::NCLKF< n_states, n_inputs, n_measurements >", "classmrs__lib_1_1NCLKF.html", [
+ [ "mrs_lib::NCLKF_partial< n_states, n_inputs, n_measurements, n_norm_constrained_states >", "classmrs__lib_1_1NCLKF__partial.html", null ]
+ ] ],
+ [ "mrs_lib::varstepLKF< n_states, n_inputs, n_measurements >", "classmrs__lib_1_1varstepLKF.html", null ]
+ ] ],
+ [ "mrs_lib::UKF< n_states, n_inputs, n_measurements >", "classmrs__lib_1_1UKF.html", [
+ [ "mrs_lib::NCUKF< n_states, n_inputs, n_measurements >", "classmrs__lib_1_1NCUKF.html", null ]
+ ] ]
+ ] ],
+ [ "mrs_lib::KalmanFilterAloamGarm< n_states, n_inputs, n_measurements >", "classmrs__lib_1_1KalmanFilterAloamGarm.html", [
+ [ "mrs_lib::JLKF< n_states, n_inputs, n_measurements, n_biases >", "classmrs__lib_1_1JLKF.html", null ]
+ ] ],
+ [ "mrs_lib::MedianFilter", "classmrs__lib_1_1MedianFilter.html", null ],
+ [ "mrs_lib::quadratic_throttle_model::MotorParams_t", "structmrs__lib_1_1quadratic__throttle__model_1_1MotorParams__t.html", null ],
+ [ "mrs_lib::MRSTimer", "classmrs__lib_1_1MRSTimer.html", [
+ [ "mrs_lib::ROSTimer", "classmrs__lib_1_1ROSTimer.html", null ],
+ [ "mrs_lib::ThreadTimer", "classmrs__lib_1_1ThreadTimer.html", null ]
+ ] ],
+ [ "MyPoint", "structMyPoint.html", null ],
+ [ "mrs_lib::NotchFilter", "classmrs__lib_1_1NotchFilter.html", null ],
+ [ "obj_t", "structobj__t.html", null ],
+ [ "mrs_lib::ParamLoader", "classmrs__lib_1_1ParamLoader.html", null ],
+ [ "mrs_lib::ParamProvider", "classmrs__lib_1_1ParamProvider.html", [
+ [ "mrs_lib::RosParamProvider", "classmrs__lib_1_1RosParamProvider.html", null ]
+ ] ],
+ [ "mrs_lib::PointObstacle", "classmrs__lib_1_1PointObstacle.html", null ],
+ [ "mrs_lib::Polygon", "classmrs__lib_1_1Polygon.html", null ],
+ [ "mrs_lib::Profiler", "classmrs__lib_1_1Profiler.html", null ],
+ [ "mrs_lib::PublisherHandler< TopicType >", "classmrs__lib_1_1PublisherHandler.html", null ],
+ [ "mrs_lib::PublisherHandler_impl< TopicType >", "classmrs__lib_1_1PublisherHandler__impl.html", null ],
+ [ "mrs_lib::geometry::Ray", "classmrs__lib_1_1geometry_1_1Ray.html", null ],
+ [ "mrs_lib::geometry::Rectangle", "classmrs__lib_1_1geometry_1_1Rectangle.html", null ],
+ [ "mrs_lib::Repredictor< Model, disable_reprediction >", "classmrs__lib_1_1Repredictor.html", null ],
+ [ "mrs_lib::Repredictor< Model >", "classmrs__lib_1_1Repredictor.html", [
+ [ "mrs_lib::RepredictorAloamgarm< Model >", "classmrs__lib_1_1RepredictorAloamgarm.html", null ]
+ ] ],
+ [ "mrs_lib::RHEIV< n_states, n_params >", "classmrs__lib_1_1RHEIV.html", null ],
+ [ "mrs_lib::Routine", "classmrs__lib_1_1Routine.html", null ],
+ [ "mrs_lib::SafetyZone", "classmrs__lib_1_1SafetyZone.html", null ],
+ [ "mrs_lib::ScopeTimer", "classmrs__lib_1_1ScopeTimer.html", null ],
+ [ "mrs_lib::ScopeTimerLogger", "classmrs__lib_1_1ScopeTimerLogger.html", null ],
+ [ "mrs_lib::ServiceClientHandler< ServiceType >", "classmrs__lib_1_1ServiceClientHandler.html", null ],
+ [ "mrs_lib::ServiceClientHandler_impl< ServiceType >", "classmrs__lib_1_1ServiceClientHandler__impl.html", null ],
+ [ "mrs_lib::KalmanFilter< n_states, n_inputs, n_measurements >::statecov_t", "structmrs__lib_1_1KalmanFilter_1_1statecov__t.html", null ],
+ [ "mrs_lib::KalmanFilterAloamGarm< n_states, n_inputs, n_measurements >::statecov_t", "structmrs__lib_1_1KalmanFilterAloamGarm_1_1statecov__t.html", null ],
+ [ "SubObject", "classSubObject.html", null ],
+ [ "mrs_lib::SubscribeHandler< MessageType >", "classmrs__lib_1_1SubscribeHandler.html", null ],
+ [ "mrs_lib::SubscribeHandlerOptions", "structmrs__lib_1_1SubscribeHandlerOptions.html", null ],
+ [ "Test", null, [
+ [ "VectorConverterTest< T >", "classVectorConverterTest.html", null ]
+ ] ],
+ [ "mrs_lib::ScopeTimer::time_point", "structmrs__lib_1_1ScopeTimer_1_1time__point.html", null ],
+ [ "mrs_lib::TimeoutManager", "classmrs__lib_1_1TimeoutManager.html", null ],
+ [ "mrs_lib::TransformBroadcaster", "classmrs__lib_1_1TransformBroadcaster.html", null ],
+ [ "mrs_lib::Transformer", "classmrs__lib_1_1Transformer.html", null ],
+ [ "mrs_lib::geometry::Triangle", "classmrs__lib_1_1geometry_1_1Triangle.html", null ],
+ [ "std::tuple_element< 0, mrs_lib::AttitudeConverter >", "structstd_1_1tuple__element_3_010_00_01mrs__lib_1_1AttitudeConverter_01_4.html", null ],
+ [ "std::tuple_element< 1, mrs_lib::AttitudeConverter >", "structstd_1_1tuple__element_3_011_00_01mrs__lib_1_1AttitudeConverter_01_4.html", null ],
+ [ "std::tuple_element< 2, mrs_lib::AttitudeConverter >", "structstd_1_1tuple__element_3_012_00_01mrs__lib_1_1AttitudeConverter_01_4.html", null ],
+ [ "std::tuple_size< mrs_lib::AttitudeConverter >", "structstd_1_1tuple__size_3_01mrs__lib_1_1AttitudeConverter_01_4.html", null ],
+ [ "mrs_lib::Vector3Converter", "classmrs__lib_1_1Vector3Converter.html", null ],
+ [ "mrs_lib::VisualObject", "classmrs__lib_1_1VisualObject.html", null ]
+];
\ No newline at end of file
diff --git a/iir__filter_8h.html b/iir__filter_8h.html
new file mode 100644
index 00000000..56c310da
--- /dev/null
+++ b/iir__filter_8h.html
@@ -0,0 +1,144 @@
+
+
+
+
+
+
+
+mrs_lib: include/mrs_lib/iir_filter.h File Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
#include <ros/ros.h>
+
+
Go to the source code of this file.
+
+
+ mrs_lib
+ All mrs_lib functions, classes, variables and definitions are contained in this namespace.
+
+
+
+
+
+
+
+
+
diff --git a/iir__filter_8h__dep__incl.map b/iir__filter_8h__dep__incl.map
new file mode 100644
index 00000000..064b1faa
--- /dev/null
+++ b/iir__filter_8h__dep__incl.map
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/iir__filter_8h__dep__incl.md5 b/iir__filter_8h__dep__incl.md5
new file mode 100644
index 00000000..6cbb6d54
--- /dev/null
+++ b/iir__filter_8h__dep__incl.md5
@@ -0,0 +1 @@
+d5954449838f983536a58c263d70bb27
\ No newline at end of file
diff --git a/iir__filter_8h__dep__incl.png b/iir__filter_8h__dep__incl.png
new file mode 100644
index 00000000..f2128b53
Binary files /dev/null and b/iir__filter_8h__dep__incl.png differ
diff --git a/iir__filter_8h__incl.map b/iir__filter_8h__incl.map
new file mode 100644
index 00000000..a75daaf3
--- /dev/null
+++ b/iir__filter_8h__incl.map
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/iir__filter_8h__incl.md5 b/iir__filter_8h__incl.md5
new file mode 100644
index 00000000..450eb2c3
--- /dev/null
+++ b/iir__filter_8h__incl.md5
@@ -0,0 +1 @@
+6fd681bcfbf038c0c337c630624730ff
\ No newline at end of file
diff --git a/iir__filter_8h__incl.png b/iir__filter_8h__incl.png
new file mode 100644
index 00000000..eff5b273
Binary files /dev/null and b/iir__filter_8h__incl.png differ
diff --git a/iir__filter_8h_source.html b/iir__filter_8h_source.html
new file mode 100644
index 00000000..f165251e
--- /dev/null
+++ b/iir__filter_8h_source.html
@@ -0,0 +1,131 @@
+
+
+
+
+
+
+
+mrs_lib: include/mrs_lib/iir_filter.h Source File
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Go to the documentation of this file.
+
+
+
+
+
+
+
+
+
+
+
+
15 IirFilter (
const std::vector<double>& a,
const std::vector<double>& b);
+
+
17 double iterate(
const double & input);
+
+
+
+
21 std::vector<double> a_;
+
22 std::vector<double> b_;
+
+
24 std::vector<double> buffer_;
+
+
+
+
+
+
+
+Definition: iir_filter.h:12
+All mrs_lib functions, classes, variables and definitions are contained in this namespace.
Definition: attitude_converter.h:29
+
+
+
+
diff --git a/image__publisher_8h_source.html b/image__publisher_8h_source.html
new file mode 100644
index 00000000..f1e3374d
--- /dev/null
+++ b/image__publisher_8h_source.html
@@ -0,0 +1,151 @@
+
+
+
+
+
+
+
+mrs_lib: include/mrs_lib/image_publisher.h Source File
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
1 #ifndef _IMAGE_TRANSPORTER_
+
2 #define _IMAGE_TRANSPORTER_
+
+
4 #include <opencv2/core/core.hpp>
+
5 #include <cv_bridge/cv_bridge.h>
+
6 #include <image_transport/image_transport.h>
+
+
+
+
+
+
+
+
14 ImagePubliserData (
const image_transport::Publisher& publisher,
const std::string& topic_name,
const ros::Time& last_hit)
+
+
+
17 topic_name(topic_name),
+
18 last_hit(last_hit) {};
+
19 image_transport::Publisher publisher;
+
20 std::string topic_name;
+
+
+
+
+
+
+
+
28 bool publish(std::string topic_name,
double throttle_period, cv::Mat& image,
bool bgr_order =
false );
+
+
+
31 std::string getEncoding(cv::Mat& input,
bool bgr_order);
+
32 bool throttle(
int index,
double throttle_period);
+
+
34 ros::NodeHandlePtr nh;
+
35 std::vector<std::unique_ptr<ImagePubliserData>> imagePublishers;
+
36 std::unique_ptr<image_transport::ImageTransport> transport;
+
37 cv_bridge::CvImage outputImage;
+
38 sensor_msgs::ImagePtr msg;
+
+
40 std::mutex main_pub_mutex;
+
+
+
+
+
+
46 #endif //_IMAGE_TRANSPORTER_
+
+
+Definition: image_publisher.h:13
+All mrs_lib functions, classes, variables and definitions are contained in this namespace.
Definition: attitude_converter.h:29
+Definition: image_publisher.h:25
+
+
+
+
diff --git a/index.html b/index.html
new file mode 100644
index 00000000..35b288ab
--- /dev/null
+++ b/index.html
@@ -0,0 +1,125 @@
+
+
+
+
+
+
+
+mrs_lib: MRS libraries
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+:warning: Attention please: This README is outdated.
+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.
+
+
+Overview
+
This ROS package contains various useful libraries (mostly C++) for the MRS UAV system .
+
+
+Notable libraries:
+
+ParamLoader - wrapper around ROS's param loading for C++ (documentation )
+Transformer - wrapper around ROS's transfomation library (documentation )
+SubscribeHandler - wrapper around ROS's subscriber (documentation )
+AttitudeConverter - a proxy class for converting representations of 3D orientation (documentation )
+LKF - Linear Kalman Filter (documentation )
+UKF - Unscented Kalman Filter (documentation )
+Repredictor - algorithm for fusing variably time-delayed measurements (documentation )
+Profiler - scoped profiling routine (documentation )
+
+
+
+
+
+
+
+
diff --git a/inherit_graph_0.map b/inherit_graph_0.map
new file mode 100644
index 00000000..038102cb
--- /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 00000000..14f960fb
--- /dev/null
+++ b/inherit_graph_0.md5
@@ -0,0 +1 @@
+0241e8942447845c64994ffe3967e84b
\ No newline at end of file
diff --git a/inherit_graph_0.png b/inherit_graph_0.png
new file mode 100644
index 00000000..190007c4
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 00000000..abf3afa0
--- /dev/null
+++ b/inherit_graph_1.map
@@ -0,0 +1,3 @@
+
+
+
diff --git a/inherit_graph_1.md5 b/inherit_graph_1.md5
new file mode 100644
index 00000000..34dc54d7
--- /dev/null
+++ b/inherit_graph_1.md5
@@ -0,0 +1 @@
+5640707098c638512660aef3e7d2d0ff
\ No newline at end of file
diff --git a/inherit_graph_1.png b/inherit_graph_1.png
new file mode 100644
index 00000000..de94de40
Binary files /dev/null and b/inherit_graph_1.png differ
diff --git a/inherit_graph_10.map b/inherit_graph_10.map
new file mode 100644
index 00000000..53c6eebd
--- /dev/null
+++ b/inherit_graph_10.map
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/inherit_graph_10.md5 b/inherit_graph_10.md5
new file mode 100644
index 00000000..336298b0
--- /dev/null
+++ b/inherit_graph_10.md5
@@ -0,0 +1 @@
+8ff9a2e7d4e15417cbee4abc34a2cfb2
\ No newline at end of file
diff --git a/inherit_graph_10.png b/inherit_graph_10.png
new file mode 100644
index 00000000..7a7a47cc
Binary files /dev/null and b/inherit_graph_10.png differ
diff --git a/inherit_graph_11.map b/inherit_graph_11.map
new file mode 100644
index 00000000..4b2cda44
--- /dev/null
+++ b/inherit_graph_11.map
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/inherit_graph_11.md5 b/inherit_graph_11.md5
new file mode 100644
index 00000000..e7045e40
--- /dev/null
+++ b/inherit_graph_11.md5
@@ -0,0 +1 @@
+c58f15a981013f4babf7e51ec7d19397
\ No newline at end of file
diff --git a/inherit_graph_11.png b/inherit_graph_11.png
new file mode 100644
index 00000000..5ca09971
Binary files /dev/null and b/inherit_graph_11.png differ
diff --git a/inherit_graph_12.map b/inherit_graph_12.map
new file mode 100644
index 00000000..55575631
--- /dev/null
+++ b/inherit_graph_12.map
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/inherit_graph_12.md5 b/inherit_graph_12.md5
new file mode 100644
index 00000000..706ae7f2
--- /dev/null
+++ b/inherit_graph_12.md5
@@ -0,0 +1 @@
+3a5cb4a02aa998f48e980cef6faf2de6
\ No newline at end of file
diff --git a/inherit_graph_12.png b/inherit_graph_12.png
new file mode 100644
index 00000000..87d237b3
Binary files /dev/null and b/inherit_graph_12.png differ
diff --git a/inherit_graph_13.map b/inherit_graph_13.map
new file mode 100644
index 00000000..bf6813df
--- /dev/null
+++ b/inherit_graph_13.map
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/inherit_graph_13.md5 b/inherit_graph_13.md5
new file mode 100644
index 00000000..86738a0a
--- /dev/null
+++ b/inherit_graph_13.md5
@@ -0,0 +1 @@
+c6458c8d3c3dbb8032f1a67c0f6c60df
\ No newline at end of file
diff --git a/inherit_graph_13.png b/inherit_graph_13.png
new file mode 100644
index 00000000..897de497
Binary files /dev/null and b/inherit_graph_13.png differ
diff --git a/inherit_graph_14.map b/inherit_graph_14.map
new file mode 100644
index 00000000..05947492
--- /dev/null
+++ b/inherit_graph_14.map
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/inherit_graph_14.md5 b/inherit_graph_14.md5
new file mode 100644
index 00000000..5e3486b1
--- /dev/null
+++ b/inherit_graph_14.md5
@@ -0,0 +1 @@
+4355414a5c7160b285ca6e63621b5a36
\ No newline at end of file
diff --git a/inherit_graph_14.png b/inherit_graph_14.png
new file mode 100644
index 00000000..e41f18b1
Binary files /dev/null and b/inherit_graph_14.png differ
diff --git a/inherit_graph_15.map b/inherit_graph_15.map
new file mode 100644
index 00000000..3874689c
--- /dev/null
+++ b/inherit_graph_15.map
@@ -0,0 +1,3 @@
+
+
+
diff --git a/inherit_graph_15.md5 b/inherit_graph_15.md5
new file mode 100644
index 00000000..69c87dd7
--- /dev/null
+++ b/inherit_graph_15.md5
@@ -0,0 +1 @@
+59762c9735b0dbc187f274c369d6c72a
\ No newline at end of file
diff --git a/inherit_graph_15.png b/inherit_graph_15.png
new file mode 100644
index 00000000..b2d83ffc
Binary files /dev/null and b/inherit_graph_15.png differ
diff --git a/inherit_graph_16.map b/inherit_graph_16.map
new file mode 100644
index 00000000..0af5c047
--- /dev/null
+++ b/inherit_graph_16.map
@@ -0,0 +1,3 @@
+
+
+
diff --git a/inherit_graph_16.md5 b/inherit_graph_16.md5
new file mode 100644
index 00000000..fac0f659
--- /dev/null
+++ b/inherit_graph_16.md5
@@ -0,0 +1 @@
+54211a121173cb8504aa4968b94a390c
\ No newline at end of file
diff --git a/inherit_graph_16.png b/inherit_graph_16.png
new file mode 100644
index 00000000..1bbe7b7c
Binary files /dev/null and b/inherit_graph_16.png differ
diff --git a/inherit_graph_17.map b/inherit_graph_17.map
new file mode 100644
index 00000000..03fc21cf
--- /dev/null
+++ b/inherit_graph_17.map
@@ -0,0 +1,3 @@
+
+
+
diff --git a/inherit_graph_17.md5 b/inherit_graph_17.md5
new file mode 100644
index 00000000..a0060176
--- /dev/null
+++ b/inherit_graph_17.md5
@@ -0,0 +1 @@
+1cd25db510966414ae5635af63c37194
\ No newline at end of file
diff --git a/inherit_graph_17.png b/inherit_graph_17.png
new file mode 100644
index 00000000..8f020957
Binary files /dev/null and b/inherit_graph_17.png differ
diff --git a/inherit_graph_18.map b/inherit_graph_18.map
new file mode 100644
index 00000000..5a118331
--- /dev/null
+++ b/inherit_graph_18.map
@@ -0,0 +1,3 @@
+
+
+
diff --git a/inherit_graph_18.md5 b/inherit_graph_18.md5
new file mode 100644
index 00000000..addd4cf5
--- /dev/null
+++ b/inherit_graph_18.md5
@@ -0,0 +1 @@
+ae4fc37d94cf18424afcd61ee9f82b4d
\ No newline at end of file
diff --git a/inherit_graph_18.png b/inherit_graph_18.png
new file mode 100644
index 00000000..c021e928
Binary files /dev/null and b/inherit_graph_18.png differ
diff --git a/inherit_graph_19.map b/inherit_graph_19.map
new file mode 100644
index 00000000..197a4ab1
--- /dev/null
+++ b/inherit_graph_19.map
@@ -0,0 +1,3 @@
+
+
+
diff --git a/inherit_graph_19.md5 b/inherit_graph_19.md5
new file mode 100644
index 00000000..0bfc362c
--- /dev/null
+++ b/inherit_graph_19.md5
@@ -0,0 +1 @@
+0154f7002a8e3234fb151e7e41a57368
\ No newline at end of file
diff --git a/inherit_graph_19.png b/inherit_graph_19.png
new file mode 100644
index 00000000..1c835551
Binary files /dev/null and b/inherit_graph_19.png differ
diff --git a/inherit_graph_2.map b/inherit_graph_2.map
new file mode 100644
index 00000000..7cdf192e
--- /dev/null
+++ b/inherit_graph_2.map
@@ -0,0 +1,3 @@
+
+
+
diff --git a/inherit_graph_2.md5 b/inherit_graph_2.md5
new file mode 100644
index 00000000..7af8bd76
--- /dev/null
+++ b/inherit_graph_2.md5
@@ -0,0 +1 @@
+e6d55d2ffc452aa2a60641610f869858
\ No newline at end of file
diff --git a/inherit_graph_2.png b/inherit_graph_2.png
new file mode 100644
index 00000000..fc49a9ac
Binary files /dev/null and b/inherit_graph_2.png differ
diff --git a/inherit_graph_20.map b/inherit_graph_20.map
new file mode 100644
index 00000000..91447e18
--- /dev/null
+++ b/inherit_graph_20.map
@@ -0,0 +1,3 @@
+
+
+
diff --git a/inherit_graph_20.md5 b/inherit_graph_20.md5
new file mode 100644
index 00000000..6fed5f76
--- /dev/null
+++ b/inherit_graph_20.md5
@@ -0,0 +1 @@
+9b0e7d4de7e2797b9f2a0b78b2eedcc5
\ No newline at end of file
diff --git a/inherit_graph_20.png b/inherit_graph_20.png
new file mode 100644
index 00000000..8b3bcbb0
Binary files /dev/null and b/inherit_graph_20.png differ
diff --git a/inherit_graph_21.map b/inherit_graph_21.map
new file mode 100644
index 00000000..fb2315b6
--- /dev/null
+++ b/inherit_graph_21.map
@@ -0,0 +1,3 @@
+
+
+
diff --git a/inherit_graph_21.md5 b/inherit_graph_21.md5
new file mode 100644
index 00000000..75db4972
--- /dev/null
+++ b/inherit_graph_21.md5
@@ -0,0 +1 @@
+d91dde2b5c68391de150ef84fee298bd
\ No newline at end of file
diff --git a/inherit_graph_21.png b/inherit_graph_21.png
new file mode 100644
index 00000000..d6ffd49e
Binary files /dev/null and b/inherit_graph_21.png differ
diff --git a/inherit_graph_22.map b/inherit_graph_22.map
new file mode 100644
index 00000000..7178f74c
--- /dev/null
+++ b/inherit_graph_22.map
@@ -0,0 +1,3 @@
+
+
+
diff --git a/inherit_graph_22.md5 b/inherit_graph_22.md5
new file mode 100644
index 00000000..9957585f
--- /dev/null
+++ b/inherit_graph_22.md5
@@ -0,0 +1 @@
+d6b204009b39cd863d499716b8ceb8d3
\ No newline at end of file
diff --git a/inherit_graph_22.png b/inherit_graph_22.png
new file mode 100644
index 00000000..da02f256
Binary files /dev/null and b/inherit_graph_22.png differ
diff --git a/inherit_graph_23.map b/inherit_graph_23.map
new file mode 100644
index 00000000..52ca6baa
--- /dev/null
+++ b/inherit_graph_23.map
@@ -0,0 +1,3 @@
+
+
+
diff --git a/inherit_graph_23.md5 b/inherit_graph_23.md5
new file mode 100644
index 00000000..4b9588df
--- /dev/null
+++ b/inherit_graph_23.md5
@@ -0,0 +1 @@
+c9ac2e740f8fa22b8ad5983f51417e84
\ No newline at end of file
diff --git a/inherit_graph_23.png b/inherit_graph_23.png
new file mode 100644
index 00000000..559fbd85
Binary files /dev/null and b/inherit_graph_23.png differ
diff --git a/inherit_graph_24.map b/inherit_graph_24.map
new file mode 100644
index 00000000..6eb0ff40
--- /dev/null
+++ b/inherit_graph_24.map
@@ -0,0 +1,3 @@
+
+
+
diff --git a/inherit_graph_24.md5 b/inherit_graph_24.md5
new file mode 100644
index 00000000..b7ade448
--- /dev/null
+++ b/inherit_graph_24.md5
@@ -0,0 +1 @@
+2f494b4d9e51e1ab10d1273623ce2fd4
\ No newline at end of file
diff --git a/inherit_graph_24.png b/inherit_graph_24.png
new file mode 100644
index 00000000..76e60959
Binary files /dev/null and b/inherit_graph_24.png differ
diff --git a/inherit_graph_25.map b/inherit_graph_25.map
new file mode 100644
index 00000000..d0bfb0b2
--- /dev/null
+++ b/inherit_graph_25.map
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/inherit_graph_25.md5 b/inherit_graph_25.md5
new file mode 100644
index 00000000..1f5d83ea
--- /dev/null
+++ b/inherit_graph_25.md5
@@ -0,0 +1 @@
+de98fea7c1229081ffd6db7eae896a75
\ No newline at end of file
diff --git a/inherit_graph_25.png b/inherit_graph_25.png
new file mode 100644
index 00000000..f076f245
Binary files /dev/null and b/inherit_graph_25.png differ
diff --git a/inherit_graph_26.map b/inherit_graph_26.map
new file mode 100644
index 00000000..12397cbb
--- /dev/null
+++ b/inherit_graph_26.map
@@ -0,0 +1,3 @@
+
+
+
diff --git a/inherit_graph_26.md5 b/inherit_graph_26.md5
new file mode 100644
index 00000000..0232ab8d
--- /dev/null
+++ b/inherit_graph_26.md5
@@ -0,0 +1 @@
+394b3cd6ca392805d1269f9ba550a065
\ No newline at end of file
diff --git a/inherit_graph_26.png b/inherit_graph_26.png
new file mode 100644
index 00000000..b250b735
Binary files /dev/null and b/inherit_graph_26.png differ
diff --git a/inherit_graph_27.map b/inherit_graph_27.map
new file mode 100644
index 00000000..9deab16a
--- /dev/null
+++ b/inherit_graph_27.map
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/inherit_graph_27.md5 b/inherit_graph_27.md5
new file mode 100644
index 00000000..cbea0247
--- /dev/null
+++ b/inherit_graph_27.md5
@@ -0,0 +1 @@
+88c6e44d1cf08262c0ce67acc35434a8
\ No newline at end of file
diff --git a/inherit_graph_27.png b/inherit_graph_27.png
new file mode 100644
index 00000000..16a435d4
Binary files /dev/null and b/inherit_graph_27.png differ
diff --git a/inherit_graph_28.map b/inherit_graph_28.map
new file mode 100644
index 00000000..285c5a44
--- /dev/null
+++ b/inherit_graph_28.map
@@ -0,0 +1,3 @@
+
+
+
diff --git a/inherit_graph_28.md5 b/inherit_graph_28.md5
new file mode 100644
index 00000000..7e20f240
--- /dev/null
+++ b/inherit_graph_28.md5
@@ -0,0 +1 @@
+4f33985b5f49c5395b126fbc42e4e449
\ No newline at end of file
diff --git a/inherit_graph_28.png b/inherit_graph_28.png
new file mode 100644
index 00000000..b8a38908
Binary files /dev/null and b/inherit_graph_28.png differ
diff --git a/inherit_graph_29.map b/inherit_graph_29.map
new file mode 100644
index 00000000..071cd821
--- /dev/null
+++ b/inherit_graph_29.map
@@ -0,0 +1,3 @@
+
+
+
diff --git a/inherit_graph_29.md5 b/inherit_graph_29.md5
new file mode 100644
index 00000000..4bf45501
--- /dev/null
+++ b/inherit_graph_29.md5
@@ -0,0 +1 @@
+93a0d9605aa39fb60b47cdfc3f79662b
\ No newline at end of file
diff --git a/inherit_graph_29.png b/inherit_graph_29.png
new file mode 100644
index 00000000..e5aae231
Binary files /dev/null and b/inherit_graph_29.png differ
diff --git a/inherit_graph_3.map b/inherit_graph_3.map
new file mode 100644
index 00000000..4b553de7
--- /dev/null
+++ b/inherit_graph_3.map
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/inherit_graph_3.md5 b/inherit_graph_3.md5
new file mode 100644
index 00000000..b3d118d9
--- /dev/null
+++ b/inherit_graph_3.md5
@@ -0,0 +1 @@
+68be2e40b5a925dcafb80b21624203ad
\ No newline at end of file
diff --git a/inherit_graph_3.png b/inherit_graph_3.png
new file mode 100644
index 00000000..a408ff85
Binary files /dev/null and b/inherit_graph_3.png differ
diff --git a/inherit_graph_30.map b/inherit_graph_30.map
new file mode 100644
index 00000000..15d51350
--- /dev/null
+++ b/inherit_graph_30.map
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/inherit_graph_30.md5 b/inherit_graph_30.md5
new file mode 100644
index 00000000..6bd131d4
--- /dev/null
+++ b/inherit_graph_30.md5
@@ -0,0 +1 @@
+d47627af1977ac67869b23fb15e85312
\ No newline at end of file
diff --git a/inherit_graph_30.png b/inherit_graph_30.png
new file mode 100644
index 00000000..4ef015cc
Binary files /dev/null and b/inherit_graph_30.png differ
diff --git a/inherit_graph_31.map b/inherit_graph_31.map
new file mode 100644
index 00000000..2d3470a1
--- /dev/null
+++ b/inherit_graph_31.map
@@ -0,0 +1,3 @@
+
+
+
diff --git a/inherit_graph_31.md5 b/inherit_graph_31.md5
new file mode 100644
index 00000000..25009f55
--- /dev/null
+++ b/inherit_graph_31.md5
@@ -0,0 +1 @@
+4f7e27387b36cd05377f2a8dee9f789c
\ No newline at end of file
diff --git a/inherit_graph_31.png b/inherit_graph_31.png
new file mode 100644
index 00000000..6f0962a4
Binary files /dev/null and b/inherit_graph_31.png differ
diff --git a/inherit_graph_32.map b/inherit_graph_32.map
new file mode 100644
index 00000000..e95de130
--- /dev/null
+++ b/inherit_graph_32.map
@@ -0,0 +1,3 @@
+
+
+
diff --git a/inherit_graph_32.md5 b/inherit_graph_32.md5
new file mode 100644
index 00000000..b97998c7
--- /dev/null
+++ b/inherit_graph_32.md5
@@ -0,0 +1 @@
+9665b516e066a820bab1a9a7d34660f5
\ No newline at end of file
diff --git a/inherit_graph_32.png b/inherit_graph_32.png
new file mode 100644
index 00000000..bd9946cd
Binary files /dev/null and b/inherit_graph_32.png differ
diff --git a/inherit_graph_33.map b/inherit_graph_33.map
new file mode 100644
index 00000000..1b2104d6
--- /dev/null
+++ b/inherit_graph_33.map
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/inherit_graph_33.md5 b/inherit_graph_33.md5
new file mode 100644
index 00000000..db2e47d9
--- /dev/null
+++ b/inherit_graph_33.md5
@@ -0,0 +1 @@
+a0639f37c3d2c5518048c6d424d576cd
\ No newline at end of file
diff --git a/inherit_graph_33.png b/inherit_graph_33.png
new file mode 100644
index 00000000..64b0773b
Binary files /dev/null and b/inherit_graph_33.png differ
diff --git a/inherit_graph_34.map b/inherit_graph_34.map
new file mode 100644
index 00000000..ee343399
--- /dev/null
+++ b/inherit_graph_34.map
@@ -0,0 +1,3 @@
+
+
+
diff --git a/inherit_graph_34.md5 b/inherit_graph_34.md5
new file mode 100644
index 00000000..8b56b98e
--- /dev/null
+++ b/inherit_graph_34.md5
@@ -0,0 +1 @@
+6ca6126daf6db4e0b3d9fd855d21ca3c
\ No newline at end of file
diff --git a/inherit_graph_34.png b/inherit_graph_34.png
new file mode 100644
index 00000000..7f999884
Binary files /dev/null and b/inherit_graph_34.png differ
diff --git a/inherit_graph_35.map b/inherit_graph_35.map
new file mode 100644
index 00000000..86faef1d
--- /dev/null
+++ b/inherit_graph_35.map
@@ -0,0 +1,3 @@
+
+
+
diff --git a/inherit_graph_35.md5 b/inherit_graph_35.md5
new file mode 100644
index 00000000..b9351588
--- /dev/null
+++ b/inherit_graph_35.md5
@@ -0,0 +1 @@
+889ac9c0c4782e654e10370790733666
\ No newline at end of file
diff --git a/inherit_graph_35.png b/inherit_graph_35.png
new file mode 100644
index 00000000..a259f8cb
Binary files /dev/null and b/inherit_graph_35.png differ
diff --git a/inherit_graph_36.map b/inherit_graph_36.map
new file mode 100644
index 00000000..7baa471a
--- /dev/null
+++ b/inherit_graph_36.map
@@ -0,0 +1,3 @@
+
+
+
diff --git a/inherit_graph_36.md5 b/inherit_graph_36.md5
new file mode 100644
index 00000000..23294624
--- /dev/null
+++ b/inherit_graph_36.md5
@@ -0,0 +1 @@
+59f3c1872d1765b359113a59c59a2e64
\ No newline at end of file
diff --git a/inherit_graph_36.png b/inherit_graph_36.png
new file mode 100644
index 00000000..c9148861
Binary files /dev/null and b/inherit_graph_36.png differ
diff --git a/inherit_graph_37.map b/inherit_graph_37.map
new file mode 100644
index 00000000..7f1c2c91
--- /dev/null
+++ b/inherit_graph_37.map
@@ -0,0 +1,3 @@
+
+
+
diff --git a/inherit_graph_37.md5 b/inherit_graph_37.md5
new file mode 100644
index 00000000..b2ae2d84
--- /dev/null
+++ b/inherit_graph_37.md5
@@ -0,0 +1 @@
+03ce98642c8f65f7115a35ff82788469
\ No newline at end of file
diff --git a/inherit_graph_37.png b/inherit_graph_37.png
new file mode 100644
index 00000000..6dea9680
Binary files /dev/null and b/inherit_graph_37.png differ
diff --git a/inherit_graph_38.map b/inherit_graph_38.map
new file mode 100644
index 00000000..62a91f9a
--- /dev/null
+++ b/inherit_graph_38.map
@@ -0,0 +1,3 @@
+
+
+
diff --git a/inherit_graph_38.md5 b/inherit_graph_38.md5
new file mode 100644
index 00000000..275a8667
--- /dev/null
+++ b/inherit_graph_38.md5
@@ -0,0 +1 @@
+39929e33a61b397655f0fe800dc91cca
\ No newline at end of file
diff --git a/inherit_graph_38.png b/inherit_graph_38.png
new file mode 100644
index 00000000..06e2216d
Binary files /dev/null and b/inherit_graph_38.png differ
diff --git a/inherit_graph_39.map b/inherit_graph_39.map
new file mode 100644
index 00000000..a025ede3
--- /dev/null
+++ b/inherit_graph_39.map
@@ -0,0 +1,3 @@
+
+
+
diff --git a/inherit_graph_39.md5 b/inherit_graph_39.md5
new file mode 100644
index 00000000..362b58ca
--- /dev/null
+++ b/inherit_graph_39.md5
@@ -0,0 +1 @@
+403975f9fff2ac4726a78e10644ece5b
\ No newline at end of file
diff --git a/inherit_graph_39.png b/inherit_graph_39.png
new file mode 100644
index 00000000..0faa5b1b
Binary files /dev/null and b/inherit_graph_39.png differ
diff --git a/inherit_graph_4.map b/inherit_graph_4.map
new file mode 100644
index 00000000..76be07e7
--- /dev/null
+++ b/inherit_graph_4.map
@@ -0,0 +1,3 @@
+
+
+
diff --git a/inherit_graph_4.md5 b/inherit_graph_4.md5
new file mode 100644
index 00000000..cd77ea8d
--- /dev/null
+++ b/inherit_graph_4.md5
@@ -0,0 +1 @@
+2807343d80cad7493eae7d564f8b3630
\ No newline at end of file
diff --git a/inherit_graph_4.png b/inherit_graph_4.png
new file mode 100644
index 00000000..0d8c5c7c
Binary files /dev/null and b/inherit_graph_4.png differ
diff --git a/inherit_graph_40.map b/inherit_graph_40.map
new file mode 100644
index 00000000..69c86f8c
--- /dev/null
+++ b/inherit_graph_40.map
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/inherit_graph_40.md5 b/inherit_graph_40.md5
new file mode 100644
index 00000000..f1730b85
--- /dev/null
+++ b/inherit_graph_40.md5
@@ -0,0 +1 @@
+5432811fd61eeaaa0721afffa137daee
\ No newline at end of file
diff --git a/inherit_graph_40.png b/inherit_graph_40.png
new file mode 100644
index 00000000..1556e32b
Binary files /dev/null and b/inherit_graph_40.png differ
diff --git a/inherit_graph_41.map b/inherit_graph_41.map
new file mode 100644
index 00000000..8d83a2d6
--- /dev/null
+++ b/inherit_graph_41.map
@@ -0,0 +1,3 @@
+
+
+
diff --git a/inherit_graph_41.md5 b/inherit_graph_41.md5
new file mode 100644
index 00000000..84e0f824
--- /dev/null
+++ b/inherit_graph_41.md5
@@ -0,0 +1 @@
+e96f98c092a2d7ec0e2d92d43d93d8c2
\ No newline at end of file
diff --git a/inherit_graph_41.png b/inherit_graph_41.png
new file mode 100644
index 00000000..0dd124b4
Binary files /dev/null and b/inherit_graph_41.png differ
diff --git a/inherit_graph_42.map b/inherit_graph_42.map
new file mode 100644
index 00000000..5d5242dd
--- /dev/null
+++ b/inherit_graph_42.map
@@ -0,0 +1,3 @@
+
+
+
diff --git a/inherit_graph_42.md5 b/inherit_graph_42.md5
new file mode 100644
index 00000000..06a1b396
--- /dev/null
+++ b/inherit_graph_42.md5
@@ -0,0 +1 @@
+5617995742b895162dfe812eeb77ef35
\ No newline at end of file
diff --git a/inherit_graph_42.png b/inherit_graph_42.png
new file mode 100644
index 00000000..57060f9a
Binary files /dev/null and b/inherit_graph_42.png differ
diff --git a/inherit_graph_43.map b/inherit_graph_43.map
new file mode 100644
index 00000000..8eacf884
--- /dev/null
+++ b/inherit_graph_43.map
@@ -0,0 +1,3 @@
+
+
+
diff --git a/inherit_graph_43.md5 b/inherit_graph_43.md5
new file mode 100644
index 00000000..8c620f67
--- /dev/null
+++ b/inherit_graph_43.md5
@@ -0,0 +1 @@
+4eaa7019a6967595a00a6e56beda1ece
\ No newline at end of file
diff --git a/inherit_graph_43.png b/inherit_graph_43.png
new file mode 100644
index 00000000..1b780e5b
Binary files /dev/null and b/inherit_graph_43.png differ
diff --git a/inherit_graph_44.map b/inherit_graph_44.map
new file mode 100644
index 00000000..653545cf
--- /dev/null
+++ b/inherit_graph_44.map
@@ -0,0 +1,3 @@
+
+
+
diff --git a/inherit_graph_44.md5 b/inherit_graph_44.md5
new file mode 100644
index 00000000..428bdae0
--- /dev/null
+++ b/inherit_graph_44.md5
@@ -0,0 +1 @@
+8bba6df488c21d9472556f439d29b22f
\ No newline at end of file
diff --git a/inherit_graph_44.png b/inherit_graph_44.png
new file mode 100644
index 00000000..004d8e82
Binary files /dev/null and b/inherit_graph_44.png differ
diff --git a/inherit_graph_45.map b/inherit_graph_45.map
new file mode 100644
index 00000000..37674bbf
--- /dev/null
+++ b/inherit_graph_45.map
@@ -0,0 +1,3 @@
+
+
+
diff --git a/inherit_graph_45.md5 b/inherit_graph_45.md5
new file mode 100644
index 00000000..dbb13725
--- /dev/null
+++ b/inherit_graph_45.md5
@@ -0,0 +1 @@
+e7842aabc8c41d2106f846d37d401156
\ No newline at end of file
diff --git a/inherit_graph_45.png b/inherit_graph_45.png
new file mode 100644
index 00000000..a2c7f10d
Binary files /dev/null and b/inherit_graph_45.png differ
diff --git a/inherit_graph_46.map b/inherit_graph_46.map
new file mode 100644
index 00000000..1c84814a
--- /dev/null
+++ b/inherit_graph_46.map
@@ -0,0 +1,3 @@
+
+
+
diff --git a/inherit_graph_46.md5 b/inherit_graph_46.md5
new file mode 100644
index 00000000..dc8f4a18
--- /dev/null
+++ b/inherit_graph_46.md5
@@ -0,0 +1 @@
+1105797aedf6a20223ec8c14d2054ce0
\ No newline at end of file
diff --git a/inherit_graph_46.png b/inherit_graph_46.png
new file mode 100644
index 00000000..69bb86a3
Binary files /dev/null and b/inherit_graph_46.png differ
diff --git a/inherit_graph_47.map b/inherit_graph_47.map
new file mode 100644
index 00000000..7c71865f
--- /dev/null
+++ b/inherit_graph_47.map
@@ -0,0 +1,3 @@
+
+
+
diff --git a/inherit_graph_47.md5 b/inherit_graph_47.md5
new file mode 100644
index 00000000..055fbe4e
--- /dev/null
+++ b/inherit_graph_47.md5
@@ -0,0 +1 @@
+413db63486b61425e9c76063b772418d
\ No newline at end of file
diff --git a/inherit_graph_47.png b/inherit_graph_47.png
new file mode 100644
index 00000000..e08ccdf8
Binary files /dev/null and b/inherit_graph_47.png differ
diff --git a/inherit_graph_48.map b/inherit_graph_48.map
new file mode 100644
index 00000000..7ea4dfbd
--- /dev/null
+++ b/inherit_graph_48.map
@@ -0,0 +1,3 @@
+
+
+
diff --git a/inherit_graph_48.md5 b/inherit_graph_48.md5
new file mode 100644
index 00000000..703e7564
--- /dev/null
+++ b/inherit_graph_48.md5
@@ -0,0 +1 @@
+b7aa8bc35cd8a15215fa7bbe3754801f
\ No newline at end of file
diff --git a/inherit_graph_48.png b/inherit_graph_48.png
new file mode 100644
index 00000000..321e2a2f
Binary files /dev/null and b/inherit_graph_48.png differ
diff --git a/inherit_graph_49.map b/inherit_graph_49.map
new file mode 100644
index 00000000..838a115d
--- /dev/null
+++ b/inherit_graph_49.map
@@ -0,0 +1,3 @@
+
+
+
diff --git a/inherit_graph_49.md5 b/inherit_graph_49.md5
new file mode 100644
index 00000000..e73783c2
--- /dev/null
+++ b/inherit_graph_49.md5
@@ -0,0 +1 @@
+420610f30a8c198ef368fe0a77e09dc0
\ No newline at end of file
diff --git a/inherit_graph_49.png b/inherit_graph_49.png
new file mode 100644
index 00000000..ff1aeed8
Binary files /dev/null and b/inherit_graph_49.png differ
diff --git a/inherit_graph_5.map b/inherit_graph_5.map
new file mode 100644
index 00000000..ae995c37
--- /dev/null
+++ b/inherit_graph_5.map
@@ -0,0 +1,3 @@
+
+
+
diff --git a/inherit_graph_5.md5 b/inherit_graph_5.md5
new file mode 100644
index 00000000..452cd808
--- /dev/null
+++ b/inherit_graph_5.md5
@@ -0,0 +1 @@
+c19219901a925d0912375822cd8c2f88
\ No newline at end of file
diff --git a/inherit_graph_5.png b/inherit_graph_5.png
new file mode 100644
index 00000000..f93d3af9
Binary files /dev/null and b/inherit_graph_5.png differ
diff --git a/inherit_graph_50.map b/inherit_graph_50.map
new file mode 100644
index 00000000..280aeaa7
--- /dev/null
+++ b/inherit_graph_50.map
@@ -0,0 +1,3 @@
+
+
+
diff --git a/inherit_graph_50.md5 b/inherit_graph_50.md5
new file mode 100644
index 00000000..6aace65c
--- /dev/null
+++ b/inherit_graph_50.md5
@@ -0,0 +1 @@
+91a10fae25bb81e706d4bf317256b1db
\ No newline at end of file
diff --git a/inherit_graph_50.png b/inherit_graph_50.png
new file mode 100644
index 00000000..72f4c676
Binary files /dev/null and b/inherit_graph_50.png differ
diff --git a/inherit_graph_51.map b/inherit_graph_51.map
new file mode 100644
index 00000000..c85322c1
--- /dev/null
+++ b/inherit_graph_51.map
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/inherit_graph_51.md5 b/inherit_graph_51.md5
new file mode 100644
index 00000000..a3121312
--- /dev/null
+++ b/inherit_graph_51.md5
@@ -0,0 +1 @@
+d7dec8ea0c3809ebc1fa2b4a653d2817
\ No newline at end of file
diff --git a/inherit_graph_51.png b/inherit_graph_51.png
new file mode 100644
index 00000000..8f4559f5
Binary files /dev/null and b/inherit_graph_51.png differ
diff --git a/inherit_graph_52.map b/inherit_graph_52.map
new file mode 100644
index 00000000..9b9f2bb3
--- /dev/null
+++ b/inherit_graph_52.map
@@ -0,0 +1,3 @@
+
+
+
diff --git a/inherit_graph_52.md5 b/inherit_graph_52.md5
new file mode 100644
index 00000000..f6c1b4e3
--- /dev/null
+++ b/inherit_graph_52.md5
@@ -0,0 +1 @@
+840761a9c1ca2de900fbc28b52d09f5c
\ No newline at end of file
diff --git a/inherit_graph_52.png b/inherit_graph_52.png
new file mode 100644
index 00000000..98f97da2
Binary files /dev/null and b/inherit_graph_52.png differ
diff --git a/inherit_graph_53.map b/inherit_graph_53.map
new file mode 100644
index 00000000..e1f0359e
--- /dev/null
+++ b/inherit_graph_53.map
@@ -0,0 +1,3 @@
+
+
+
diff --git a/inherit_graph_53.md5 b/inherit_graph_53.md5
new file mode 100644
index 00000000..2e383471
--- /dev/null
+++ b/inherit_graph_53.md5
@@ -0,0 +1 @@
+b57d81213cfabfcb536d60b55ce1dc09
\ No newline at end of file
diff --git a/inherit_graph_53.png b/inherit_graph_53.png
new file mode 100644
index 00000000..12a172c7
Binary files /dev/null and b/inherit_graph_53.png differ
diff --git a/inherit_graph_54.map b/inherit_graph_54.map
new file mode 100644
index 00000000..9f5db9b9
--- /dev/null
+++ b/inherit_graph_54.map
@@ -0,0 +1,3 @@
+
+
+
diff --git a/inherit_graph_54.md5 b/inherit_graph_54.md5
new file mode 100644
index 00000000..9ba91750
--- /dev/null
+++ b/inherit_graph_54.md5
@@ -0,0 +1 @@
+a05dc455b4d92dc0e07b801355d66942
\ No newline at end of file
diff --git a/inherit_graph_54.png b/inherit_graph_54.png
new file mode 100644
index 00000000..ba2db1aa
Binary files /dev/null and b/inherit_graph_54.png differ
diff --git a/inherit_graph_55.map b/inherit_graph_55.map
new file mode 100644
index 00000000..748287e1
--- /dev/null
+++ b/inherit_graph_55.map
@@ -0,0 +1,3 @@
+
+
+
diff --git a/inherit_graph_55.md5 b/inherit_graph_55.md5
new file mode 100644
index 00000000..e1a22fc0
--- /dev/null
+++ b/inherit_graph_55.md5
@@ -0,0 +1 @@
+2f5727f8cf90c01d1432009ca26eb31e
\ No newline at end of file
diff --git a/inherit_graph_55.png b/inherit_graph_55.png
new file mode 100644
index 00000000..3213fcf6
Binary files /dev/null and b/inherit_graph_55.png differ
diff --git a/inherit_graph_56.map b/inherit_graph_56.map
new file mode 100644
index 00000000..8a6b667a
--- /dev/null
+++ b/inherit_graph_56.map
@@ -0,0 +1,3 @@
+
+
+
diff --git a/inherit_graph_56.md5 b/inherit_graph_56.md5
new file mode 100644
index 00000000..fa041342
--- /dev/null
+++ b/inherit_graph_56.md5
@@ -0,0 +1 @@
+617296c31571838867e276ad83076967
\ No newline at end of file
diff --git a/inherit_graph_56.png b/inherit_graph_56.png
new file mode 100644
index 00000000..18bc024f
Binary files /dev/null and b/inherit_graph_56.png differ
diff --git a/inherit_graph_57.map b/inherit_graph_57.map
new file mode 100644
index 00000000..7f4c8299
--- /dev/null
+++ b/inherit_graph_57.map
@@ -0,0 +1,3 @@
+
+
+
diff --git a/inherit_graph_57.md5 b/inherit_graph_57.md5
new file mode 100644
index 00000000..14952d47
--- /dev/null
+++ b/inherit_graph_57.md5
@@ -0,0 +1 @@
+327f35617f82a8bf967bb2a3cee2de6b
\ No newline at end of file
diff --git a/inherit_graph_57.png b/inherit_graph_57.png
new file mode 100644
index 00000000..710d3f49
Binary files /dev/null and b/inherit_graph_57.png differ
diff --git a/inherit_graph_58.map b/inherit_graph_58.map
new file mode 100644
index 00000000..2b895500
--- /dev/null
+++ b/inherit_graph_58.map
@@ -0,0 +1,3 @@
+
+
+
diff --git a/inherit_graph_58.md5 b/inherit_graph_58.md5
new file mode 100644
index 00000000..b15d12f0
--- /dev/null
+++ b/inherit_graph_58.md5
@@ -0,0 +1 @@
+87de09fce2bf5a33e043ff5aa78fe481
\ No newline at end of file
diff --git a/inherit_graph_58.png b/inherit_graph_58.png
new file mode 100644
index 00000000..3b572206
Binary files /dev/null and b/inherit_graph_58.png differ
diff --git a/inherit_graph_59.map b/inherit_graph_59.map
new file mode 100644
index 00000000..0ab11a78
--- /dev/null
+++ b/inherit_graph_59.map
@@ -0,0 +1,3 @@
+
+
+
diff --git a/inherit_graph_59.md5 b/inherit_graph_59.md5
new file mode 100644
index 00000000..a1a63fcf
--- /dev/null
+++ b/inherit_graph_59.md5
@@ -0,0 +1 @@
+549bd3049e640920c7aa64fcfdc94576
\ No newline at end of file
diff --git a/inherit_graph_59.png b/inherit_graph_59.png
new file mode 100644
index 00000000..31431f21
Binary files /dev/null and b/inherit_graph_59.png differ
diff --git a/inherit_graph_6.map b/inherit_graph_6.map
new file mode 100644
index 00000000..78fb6cdf
--- /dev/null
+++ b/inherit_graph_6.map
@@ -0,0 +1,3 @@
+
+
+
diff --git a/inherit_graph_6.md5 b/inherit_graph_6.md5
new file mode 100644
index 00000000..2ec90b44
--- /dev/null
+++ b/inherit_graph_6.md5
@@ -0,0 +1 @@
+f4219a13349e70f05b1c4f8257847d39
\ No newline at end of file
diff --git a/inherit_graph_6.png b/inherit_graph_6.png
new file mode 100644
index 00000000..5d604af6
Binary files /dev/null and b/inherit_graph_6.png differ
diff --git a/inherit_graph_60.map b/inherit_graph_60.map
new file mode 100644
index 00000000..8f5af22a
--- /dev/null
+++ b/inherit_graph_60.map
@@ -0,0 +1,3 @@
+
+
+
diff --git a/inherit_graph_60.md5 b/inherit_graph_60.md5
new file mode 100644
index 00000000..381c461f
--- /dev/null
+++ b/inherit_graph_60.md5
@@ -0,0 +1 @@
+d6be8c06131ef958fa1a7b1eb750758c
\ No newline at end of file
diff --git a/inherit_graph_60.png b/inherit_graph_60.png
new file mode 100644
index 00000000..c32505e9
Binary files /dev/null and b/inherit_graph_60.png differ
diff --git a/inherit_graph_61.map b/inherit_graph_61.map
new file mode 100644
index 00000000..4de3bf41
--- /dev/null
+++ b/inherit_graph_61.map
@@ -0,0 +1,3 @@
+
+
+
diff --git a/inherit_graph_61.md5 b/inherit_graph_61.md5
new file mode 100644
index 00000000..566447cb
--- /dev/null
+++ b/inherit_graph_61.md5
@@ -0,0 +1 @@
+a965d3f71560c996494bc4481ae72da5
\ No newline at end of file
diff --git a/inherit_graph_61.png b/inherit_graph_61.png
new file mode 100644
index 00000000..26609484
Binary files /dev/null and b/inherit_graph_61.png differ
diff --git a/inherit_graph_62.map b/inherit_graph_62.map
new file mode 100644
index 00000000..300fc625
--- /dev/null
+++ b/inherit_graph_62.map
@@ -0,0 +1,3 @@
+
+
+
diff --git a/inherit_graph_62.md5 b/inherit_graph_62.md5
new file mode 100644
index 00000000..1a3ce1cc
--- /dev/null
+++ b/inherit_graph_62.md5
@@ -0,0 +1 @@
+94f27ed0bfdd9eefe88e3a92761a0dfa
\ No newline at end of file
diff --git a/inherit_graph_62.png b/inherit_graph_62.png
new file mode 100644
index 00000000..3bfbf34b
Binary files /dev/null and b/inherit_graph_62.png differ
diff --git a/inherit_graph_63.map b/inherit_graph_63.map
new file mode 100644
index 00000000..3d04a1a9
--- /dev/null
+++ b/inherit_graph_63.map
@@ -0,0 +1,3 @@
+
+
+
diff --git a/inherit_graph_63.md5 b/inherit_graph_63.md5
new file mode 100644
index 00000000..30d2e4bb
--- /dev/null
+++ b/inherit_graph_63.md5
@@ -0,0 +1 @@
+3f05696f770922918071ae94115fe53e
\ No newline at end of file
diff --git a/inherit_graph_63.png b/inherit_graph_63.png
new file mode 100644
index 00000000..e2d2e0d2
Binary files /dev/null and b/inherit_graph_63.png differ
diff --git a/inherit_graph_64.map b/inherit_graph_64.map
new file mode 100644
index 00000000..1885b531
--- /dev/null
+++ b/inherit_graph_64.map
@@ -0,0 +1,3 @@
+
+
+
diff --git a/inherit_graph_64.md5 b/inherit_graph_64.md5
new file mode 100644
index 00000000..8e2e2b95
--- /dev/null
+++ b/inherit_graph_64.md5
@@ -0,0 +1 @@
+afa2744f0dca2c84fa39cf862a185dac
\ No newline at end of file
diff --git a/inherit_graph_64.png b/inherit_graph_64.png
new file mode 100644
index 00000000..d8aa0db2
Binary files /dev/null and b/inherit_graph_64.png differ
diff --git a/inherit_graph_65.map b/inherit_graph_65.map
new file mode 100644
index 00000000..569f2ea5
--- /dev/null
+++ b/inherit_graph_65.map
@@ -0,0 +1,3 @@
+
+
+
diff --git a/inherit_graph_65.md5 b/inherit_graph_65.md5
new file mode 100644
index 00000000..ee1ce742
--- /dev/null
+++ b/inherit_graph_65.md5
@@ -0,0 +1 @@
+c2648869ab89a83c4c6e13eb11915b6a
\ No newline at end of file
diff --git a/inherit_graph_65.png b/inherit_graph_65.png
new file mode 100644
index 00000000..e6de6547
Binary files /dev/null and b/inherit_graph_65.png differ
diff --git a/inherit_graph_66.map b/inherit_graph_66.map
new file mode 100644
index 00000000..5a9afe58
--- /dev/null
+++ b/inherit_graph_66.map
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/inherit_graph_66.md5 b/inherit_graph_66.md5
new file mode 100644
index 00000000..0d49fe73
--- /dev/null
+++ b/inherit_graph_66.md5
@@ -0,0 +1 @@
+ec322e9d7679440100f96f7d5330ad5f
\ No newline at end of file
diff --git a/inherit_graph_66.png b/inherit_graph_66.png
new file mode 100644
index 00000000..6eea481b
Binary files /dev/null and b/inherit_graph_66.png differ
diff --git a/inherit_graph_7.map b/inherit_graph_7.map
new file mode 100644
index 00000000..853486ae
--- /dev/null
+++ b/inherit_graph_7.map
@@ -0,0 +1,3 @@
+
+
+
diff --git a/inherit_graph_7.md5 b/inherit_graph_7.md5
new file mode 100644
index 00000000..50be1ac7
--- /dev/null
+++ b/inherit_graph_7.md5
@@ -0,0 +1 @@
+5a180c027b537c07d76206131cab1ad1
\ No newline at end of file
diff --git a/inherit_graph_7.png b/inherit_graph_7.png
new file mode 100644
index 00000000..7ad87167
Binary files /dev/null and b/inherit_graph_7.png differ
diff --git a/inherit_graph_8.map b/inherit_graph_8.map
new file mode 100644
index 00000000..1b491472
--- /dev/null
+++ b/inherit_graph_8.map
@@ -0,0 +1,3 @@
+
+
+
diff --git a/inherit_graph_8.md5 b/inherit_graph_8.md5
new file mode 100644
index 00000000..a4cab890
--- /dev/null
+++ b/inherit_graph_8.md5
@@ -0,0 +1 @@
+1a01d2fbb833cc6d373f78d74729a49a
\ No newline at end of file
diff --git a/inherit_graph_8.png b/inherit_graph_8.png
new file mode 100644
index 00000000..1f982fcb
Binary files /dev/null and b/inherit_graph_8.png differ
diff --git a/inherit_graph_9.map b/inherit_graph_9.map
new file mode 100644
index 00000000..5c0341fc
--- /dev/null
+++ b/inherit_graph_9.map
@@ -0,0 +1,3 @@
+
+
+
diff --git a/inherit_graph_9.md5 b/inherit_graph_9.md5
new file mode 100644
index 00000000..c3e2396e
--- /dev/null
+++ b/inherit_graph_9.md5
@@ -0,0 +1 @@
+fc444da1659898ca99b33fc776d0a5d3
\ No newline at end of file
diff --git a/inherit_graph_9.png b/inherit_graph_9.png
new file mode 100644
index 00000000..b7439e01
Binary files /dev/null and b/inherit_graph_9.png differ
diff --git a/inherits.html b/inherits.html
new file mode 100644
index 00000000..63bcad19
--- /dev/null
+++ b/inherits.html
@@ -0,0 +1,480 @@
+
+
+
+
+
+
+
+mrs_lib: Class Hierarchy
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/jlkf_8h_source.html b/jlkf_8h_source.html
new file mode 100644
index 00000000..8384c485
--- /dev/null
+++ b/jlkf_8h_source.html
@@ -0,0 +1,389 @@
+
+
+
+
+
+
+
+mrs_lib: include/mrs_lib/jlkf.h Source File
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mrs_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
17 #include <mrs_msgs/Float64ArrayStamped.h>
+
18 #include <mrs_msgs/Float64Stamped.h>
+
19 #include <mrs_msgs/BoolStamped.h>
+
+
+
+
+
+
25 template <
int n_states,
int n_inputs,
int n_measurements,
int n_biases>
+
+
+
+
+
30 static const int n = n_states;
+
31 static const int m = n_inputs;
+
32 static const int p = n_measurements;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
47 typedef Eigen::Matrix<double, n, n>
A_t ;
+
48 typedef Eigen::Matrix<double, n, m>
B_t ;
+
49 typedef Eigen::Matrix<double, p, n>
H_t ;
+
50 typedef Eigen::Matrix<double, n, p>
K_t ;
+
52 typedef Eigen::Matrix<double, p, p>
C_t ;
+
53 typedef Eigen::Matrix<double, n, n>
D_t ;
+
55 using generateA_t = std::function<
A_t (
double )>;
+
56 using generateB_t = std::function<
B_t (
double )>;
+
+
+
+
+
72 const char *
what ()
const throw()
+
+
74 return "LKF: could not compute matrix inversion!!! Fix your covariances (the measurement's is probably too low...)" ;
+
+
+
+
+
+
87 JLKF (
const generateA_t& generateA,
const generateB_t& generateB,
const H_t & H,
const ros::NodeHandle& nh,
const double & nis_thr,
+
88 const double & nis_avg_thr)
+
89 : m_generateA(generateA),
+
90 m_generateB(generateB),
+
+
+
+
94 m_nis_avg_thr(nis_avg_thr)
+
+
96 debug_nis_pub = m_nh.advertise<mrs_msgs::Float64ArrayStamped>(
"debug_nis" , 1);
+
+
+
+
117 virtual statecov_t
predict (
const statecov_t& sc,
const u_t& u,
const Q_t& Q,
double dt)
const override
+
+
+
+
121 A_t A = m_generateA(dt);
+
122 B_t B = m_generateB(dt);
+
123 ret.x = state_predict(A, sc.x, B, u);
+
124 ret.P = covariance_predict(A, sc.P, Q, dt);
+
125 ret.nis_buffer = sc.nis_buffer;
+
+
+
+
+
+
143 virtual statecov_t
correct (
const statecov_t& sc,
const z_t& z,
const R_t& R)
const override
+
+
+
146 return correction_impl(sc, z, R, H);
+
+
+
+
+
+
152 static R_t invert_W(R_t W)
+
+
154 Eigen::ColPivHouseholderQR<R_t> qr(W);
+
155 if (!qr.isInvertible())
+
+
+
158 R_t ident = R_t::Identity(W.rows(), W.cols());
+
+
+
161 if (!qr.isInvertible())
+
+
+
164 throw inverse_exception();
+
+
+
167 const R_t W_inv = qr.inverse();
+
+
+
+
+
+
+
174 virtual K_t computeKalmanGain(
const statecov_t& sc, [[maybe_unused]]
const z_t& z,
const R_t& R,
const H_t& H,
double & nis, H_t& H_out,
+
175 const double & nis_thr,
const double & nis_avg_thr)
const
+
+
+
+
179 R_t W = H * sc.P * H.transpose() + R;
+
180 R_t W_inv = invert_W(W);
+
181 K_t K = sc.P * H.transpose() * W_inv;
+
182 z_t y = z - (H * sc.x);
+
+
+
185 nis = (y.transpose() * W_inv * y)(0, 0);
+
+
+
188 bool nis_over_thr =
false ;
+
+
190 double nis_thr_tmp = nis_thr;
+
+
192 if (H(0, 0) > 0 && H(0, 3) != 0)
+
+
+
195 mrs_msgs::Float64ArrayStamped msg;
+
196 msg.header.stamp = sc.stamp;
+
+
198 msg.values.push_back(nis);
+
+
200 if (sc.nis_buffer !=
nullptr )
+
+
+
203 sc.nis_buffer->push_back(nis);
+
204 for (
auto it = sc.nis_buffer->begin(); it != sc.nis_buffer->end(); it++)
+
+
+
+
208 if (*it > nis_thr_tmp)
+
+
+
+
+
+
+
+
+
217 msg.values.push_back(nis_avg);
+
218 msg.values.push_back(nis_thr_tmp);
+
+
220 if (nis > nis_thr_tmp)
+
+
+
+
224 A_t mask = mask.Zero();
+
225 for (
int i = n_states - n_biases; i < n_states; i++)
+
+
+
+
229 const H_t H_bias_only = H * mask;
+
230 K = H_bias_only.transpose() * invert_W(H_bias_only * H_bias_only.transpose());
+
+
+
+
234 debug_nis_pub.publish(msg);
+
+
+
237 K_t test = H.transpose() * invert_W(H * H.transpose());
+
+
+
+
+
+
+
244 template <
int check = n>
+
245 typename std::enable_if<check >= 0, statecov_t>::type correction_impl(
const statecov_t& sc,
const z_t& z,
const R_t& R,
const H_t& H)
const
+
+
+
+
+
+
251 const K_t K = computeKalmanGain(sc, z, R, H, nis, H_out, m_nis_thr, m_nis_avg_thr);
+
252 ret.x = sc.x + K * (z - (H * sc.x));
+
253 ret.P = (P_t::Identity() - (K * H_out)) * sc.P;
+
254 ret.nis_buffer = sc.nis_buffer;
+
+
+
+
258 template <
int check = n>
+
259 typename std::enable_if < check<0, statecov_t>::type correction_impl(
const statecov_t& sc,
const z_t& z,
const R_t& R,
const H_t& H)
const
+
+
+
+
+
+
265 const K_t K = computeKalmanGain(sc, z, R, H, nis, H_out, m_nis_thr, m_nis_avg_thr);
+
266 ret.x = sc.x + K * (z - (H * sc.x));
+
267 ret.P = (P_t::Identity(sc.P.rows(), sc.P.cols()) - (K * H_out)) * sc.P;
+
268 ret.nis_buffer = sc.nis_buffer;
+
+
+
+
+
+
274 ros::NodeHandle m_nh;
+
275 ros::Publisher debug_nis_pub;
+
276 std::vector<double> m_nis_window;
+
+
278 double m_nis_avg_thr;
+
+
+
+
282 generateA_t m_generateA;
+
283 generateB_t m_generateB;
+
+
+
+
+
+
+
+
292 static P_t covariance_predict(
const A_t& A,
const P_t& P,
const Q_t& Q,
const double dt)
+
+
294 return A * P * A.transpose() + dt*Q;
+
+
+
+
+
299 template <
int check = n_inputs>
+
300 static inline typename std::enable_if<check == 0, x_t>::type state_predict(
const A_t& A,
const x_t& x, [[maybe_unused]]
const B_t& B,
+
301 [[maybe_unused]]
const u_t& u)
+
+
+
+
+
306 template <
int check = n_inputs>
+
307 static inline typename std::enable_if<check != 0, x_t>::type state_predict(
const A_t& A,
const x_t& x,
const B_t& B,
const u_t& u)
+
+
309 return A * x + B * u;
+
+
+
+
+
+
+
+
+
+
+
+
+This exception is thrown when taking the inverse of a matrix fails.
Definition: jlkf.h:65
+Eigen::Matrix< double, n, p > K_t
Kalman gain matrix type .
Definition: jlkf.h:50
+Eigen::Matrix< double, p, p > R_t
Measurement noise covariance matrix type .
Definition: kalman_filter_aloamgarm.h:40
+Eigen::Matrix< double, n, n > A_t
System transition matrix type .
Definition: jlkf.h:47
+Eigen::Matrix< double, n, n > Q_t
Process noise covariance matrix type .
Definition: kalman_filter_aloamgarm.h:41
+virtual statecov_t predict(const statecov_t &sc, const u_t &u, const Q_t &Q, double dt) const override
Applies the prediction (time) step of the Kalman filter.
Definition: jlkf.h:117
+Helper struct for passing around the state and its covariance in one variable.
Definition: kalman_filter_aloamgarm.h:48
+This abstract class defines common interfaces and types for a generic Kalman filter.
Definition: kalman_filter_aloamgarm.h:27
+Eigen::Matrix< double, m, 1 > u_t
Input vector type .
Definition: kalman_filter_aloamgarm.h:36
+Eigen::Matrix< double, n, m > B_t
Input to state mapping matrix type .
Definition: jlkf.h:48
+
+JLKF(const generateA_t &generateA, const generateB_t &generateB, const H_t &H, const ros::NodeHandle &nh, const double &nis_thr, const double &nis_avg_thr)
The main constructor.
Definition: jlkf.h:87
+Eigen::Matrix< double, p, n > H_t
State to measurement mapping matrix type .
Definition: jlkf.h:49
+const char * what() const
Returns the error message, describing what caused the exception.
Definition: jlkf.h:72
+virtual statecov_t correct(const statecov_t &sc, const z_t &z, const R_t &R) const override
Applies the correction (update, measurement, data) step of the Kalman filter.
Definition: jlkf.h:143
+All mrs_lib functions, classes, variables and definitions are contained in this namespace.
Definition: attitude_converter.h:29
+Eigen::Matrix< double, n, n > D_t
D .
Definition: jlkf.h:53
+Defines KalmanFilter - an abstract class, defining common interfaces and types for a generic Kalman f...
+Eigen::Matrix< double, p, 1 > z_t
Measurement vector type .
Definition: kalman_filter_aloamgarm.h:37
+Eigen::Matrix< double, p, p > C_t
correntropy gain
Definition: jlkf.h:52
+Eigen::Matrix< double, n, n > P_t
State uncertainty covariance matrix type .
Definition: kalman_filter_aloamgarm.h:39
+Eigen::Matrix< double, n, 1 > x_t
State vector type .
Definition: kalman_filter_aloamgarm.h:35
+
+
+
+
diff --git a/jquery.js b/jquery.js
new file mode 100644
index 00000000..103c32d7
--- /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_lib
+
+ Various reusable classes, functions and utilities for use in MRS projects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Defines KalmanFilter - an abstract class, defining common interfaces and types for a generic Kalman filter.
+More...
+
#include <Eigen/Dense>
+#include <ros/ros.h>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Go to the source code of this file.
+
+
+ mrs_lib
+ All mrs_lib functions, classes, variables and definitions are contained in this namespace.
+
+
+
+
Defines KalmanFilter - an abstract class, defining common interfaces and types for a generic Kalman filter.
+
Author Matouš Vrba - vrbam.nosp@m. ato@.nosp@m. fel.c.nosp@m. vut..nosp@m. cz
+
+
+
+
+
+