NASA Astrobee Robot Software  0.19.1
Flight software for the Astrobee robots operating inside the International Space Station.
utilities.h
Go to the documentation of this file.
1 /* Copyright (c) 2017, United States Government, as represented by the
2  * Administrator of the National Aeronautics and Space Administration.
3  *
4  * All rights reserved.
5  *
6  * The Astrobee platform is licensed under the Apache License, Version 2.0
7  * (the "License"); you may not use this file except in compliance with the
8  * License. You may obtain a copy of the License at
9  *
10  * http://www.apache.org/licenses/LICENSE-2.0
11  *
12  * Unless required by applicable law or agreed to in writing, software
13  * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
14  * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
15  * License for the specific language governing permissions and limitations
16  * under the License.
17  */
18 
19 #ifndef LOCALIZATION_COMMON_UTILITIES_H_
20 #define LOCALIZATION_COMMON_UTILITIES_H_
21 
23 #include <ff_msgs/CombinedNavState.h>
24 #include <ff_msgs/GraphVIOState.h>
25 #include <ff_msgs/VisualLandmarks.h>
31 
32 #include <gtsam/geometry/Cal3_S2.h>
33 #include <gtsam/geometry/Pose3.h>
34 #include <gtsam/linear/NoiseModel.h>
35 #include <gtsam/nonlinear/NonlinearFactorGraph.h>
36 
37 #include <Eigen/Core>
38 
39 #include <geometry_msgs/Pose.h>
40 #include <geometry_msgs/PoseStamped.h>
41 #include <geometry_msgs/TransformStamped.h>
42 #include <std_msgs/Header.h>
43 
44 #include <string>
45 #include <utility>
46 #include <vector>
47 
48 namespace localization_common {
49 gtsam::Pose3 LoadTransform(config_reader::ConfigReader& config, const std::string& transform_config_name,
50  const std::string& prefix = "");
51 
52 gtsam::Vector3 LoadVector3(config_reader::ConfigReader& config, const std::string& config_name,
53  const std::string& prefix = "");
54 
56  const std::string& intrinsics_config_name, const std::string& prefix = "");
57 
58 gtsam::Cal3_S2 LoadCameraIntrinsics(config_reader::ConfigReader& config, const std::string& intrinsics_config_name,
59  const std::string& prefix = "");
60 
61 gtsam::Pose3 GtPose(const Eigen::Isometry3d& eigen_pose);
62 
63 Eigen::Isometry3d EigenPose(const CombinedNavState& combined_nav_state);
64 
65 Eigen::Isometry3d EigenPose(const gtsam::Pose3& pose);
66 
67 // Returns pose in body frame
68 gtsam::Pose3 PoseFromMsgWithExtrinsics(const geometry_msgs::Pose& pose, const gtsam::Pose3& sensor_T_body);
69 
70 // Load either iss or granite graph localizer config depending on environment variable for ASTROBEE_WORLD
71 void LoadGraphLocalizerConfig(config_reader::ConfigReader& config, const std::string& path_prefix = "");
72 
73 void LoadGraphVIOConfig(config_reader::ConfigReader& config, const std::string& path_prefix = "");
74 
75 void SetEnvironmentConfigs(const std::string& world = "iss", const std::string& robot_config_file = "bumble.config");
76 
77 ros::Time RosTimeFromHeader(const std_msgs::Header& header);
78 
79 Time TimeFromHeader(const std_msgs::Header& header);
80 
81 Time TimeFromRosTime(const ros::Time& time);
82 
83 void TimeToHeader(const Time timestamp, std_msgs::Header& header);
84 
85 void TimeToMsg(const Time timestamp, ros::Time& time_msg);
86 
87 gtsam::Pose3 PoseFromMsg(const geometry_msgs::PoseStamped& msg);
88 
89 gtsam::Pose3 PoseFromMsg(const geometry_msgs::Pose& msg_pose);
90 
91 void PoseToMsg(const gtsam::Pose3& pose, geometry_msgs::Pose& msg_pose);
92 
93 geometry_msgs::TransformStamped PoseToTF(const Eigen::Isometry3d& pose, const std::string& parent_frame,
94  const std::string& child_frame, const Time timestamp,
95  const std::string& platform_name = "");
96 
97 geometry_msgs::TransformStamped PoseToTF(const gtsam::Pose3& pose, const std::string& parent_frame,
98  const std::string& child_frame, const Time timestamp,
99  const std::string& platform_name = "");
100 
101 CombinedNavState CombinedNavStateFromMsg(const ff_msgs::CombinedNavState& msg);
102 
103 CombinedNavStateCovariances CombinedNavStateCovariancesFromMsg(const ff_msgs::CombinedNavState& msg);
104 
105 TimestampedSet<PoseCovariance> CorrelationCovariancesFromMsg(const ff_msgs::CombinedNavState& msg);
106 
107 // Returns gravity corrected accelerometer measurement
108 gtsam::Vector3 RemoveGravityFromAccelerometerMeasurement(const gtsam::Vector3& global_F_gravity,
109  const gtsam::Pose3& body_T_imu,
110  const gtsam::Pose3& global_T_body,
111  const gtsam::Vector3& uncorrected_accelerometer_measurement);
112 
113 ff_msgs::CombinedNavState CombinedNavStateToMsg(const CombinedNavState& combined_nav_state,
114  const PoseCovariance& pose_covariance,
115  const Eigen::Matrix3d& velocity_covariance,
116  const Eigen::Matrix<double, 6, 6>& imu_bias_covariance,
117  const TimestampedSet<PoseCovariance>& correlation_covariances = {});
118 
119 template <class LocMsgType>
120 void CombinedNavStateToLocMsg(const CombinedNavState& combined_nav_state, LocMsgType& loc_msg);
121 
122 template <class LocMsgType>
123 void CombinedNavStateCovariancesToLocMsg(const CombinedNavStateCovariances& covariances, LocMsgType& loc_msg);
124 
125 template <typename MatrixType>
126 double LogDeterminant(const MatrixType& matrix);
127 
128 double PoseCovarianceSane(const Eigen::Matrix<double, 6, 6>& pose_covariance,
129  const double position_covariance_threshold = 0,
130  const double orientation_covariance_threshold = 0,
131  const bool check_position_covariance = true, const bool check_orientation_covariance = true);
132 
133 template <typename RotationType>
134 Eigen::Isometry3d Isometry3d(const Eigen::Vector3d& translation, const RotationType& rotation);
135 
136 double Deg2Rad(const double degrees);
137 
138 double Rad2Deg(const double radians);
139 
140 // Assumes angles in degrees, ordered as rho, phi, z
141 Eigen::Vector3d CylindricalToCartesian(const Eigen::Vector3d& cylindrical_coordinates);
142 
143 // Uses Euler Angles in intrinsic ypr representation in degrees
144 Eigen::Matrix3d RotationFromEulerAngles(const double yaw, const double pitch, const double roll);
145 
146 // Returns the relative covariance between two pose with covariances.
147 // Optionally uses the correlation covariance matrix covariance_a_b for a more accurate estimate if provided.
148 PoseCovariance RelativePoseCovariance(const PoseWithCovariance& a, const PoseWithCovariance& b,
149  const boost::optional<PoseCovariance> covariance_a_b = boost::none);
150 
151 Eigen::Isometry3d FrameChangeRelativePose(const Eigen::Isometry3d& a_F_relative_pose, const Eigen::Isometry3d& b_T_a);
152 
153 Eigen::Matrix<double, 6, 6> FrameChangeRelativeCovariance(
154  const Eigen::Matrix<double, 6, 6>& a_F_relative_pose_covariance, const Eigen::Isometry3d& b_T_a);
155 
156 PoseWithCovariance FrameChangeRelativePoseWithCovariance(const PoseWithCovariance& a_F_relative_pose_with_covariance,
157  const Eigen::Isometry3d& b_T_a);
158 
159 PoseWithCovariance InvertPoseWithCovariance(const PoseWithCovariance& pose_with_covariance);
160 
161 template <int CostDim, int StateDim>
162 boost::optional<Eigen::Matrix<double, StateDim, StateDim>> LeastSquaresCovariance(
163  const std::vector<Eigen::Matrix<double, CostDim, StateDim>>& cost_jacobians);
164 
165 template <typename T>
166 std::vector<T> Transform(const std::vector<T>& a_T_elements, const Eigen::Isometry3d& b_T_a);
167 
168 template <typename T>
169 std::vector<T> Rotate(const std::vector<T>& a_F_a_T_elements, const Eigen::Matrix3d& b_R_a);
170 
171 std::pair<std::vector<Eigen::Vector3d>, std::vector<Eigen::Vector3d>> TransformPointsWithNormals(
172  const std::vector<Eigen::Vector3d>& points, const std::vector<Eigen::Vector3d>& normals,
173  const Eigen::Isometry3d& b_T_a);
174 
175 Eigen::Isometry3d Interpolate(const Eigen::Isometry3d& lower_bound_pose, const Eigen::Isometry3d& upper_bound_pose,
176  const double alpha);
177 
178 PoseWithCovariance Interpolate(const PoseWithCovariance& lower_bound_pose, const PoseWithCovariance& upper_bound_pose,
179  const double alpha);
180 
181 gtsam::noiseModel::Robust::shared_ptr Robust(const gtsam::SharedNoiseModel& noise, const double huber_k);
182 
183 template <typename FactorType>
184 void DeleteFactors(gtsam::NonlinearFactorGraph& graph);
185 
186 template <typename FactorType>
187 int NumFactors(const gtsam::NonlinearFactorGraph& graph);
188 
189 template <typename FactorType>
190 std::vector<const FactorType*> Factors(const gtsam::NonlinearFactorGraph& graph);
191 
192 // Implementations
193 template <class LocMsgType>
194 void CombinedNavStateToLocMsg(const CombinedNavState& combined_nav_state, LocMsgType& loc_msg) {
195  PoseToMsg(combined_nav_state.pose(), loc_msg.pose);
196  msg_conversions::VectorToMsg(combined_nav_state.velocity(), loc_msg.velocity);
197  msg_conversions::VectorToMsg(combined_nav_state.bias().accelerometer(), loc_msg.accel_bias);
198  msg_conversions::VectorToMsg(combined_nav_state.bias().gyroscope(), loc_msg.gyro_bias);
199  TimeToHeader(combined_nav_state.timestamp(), loc_msg.header);
200 }
201 
202 template <class LocMsgType>
203 void CombinedNavStateCovariancesToLocMsg(const CombinedNavStateCovariances& covariances, LocMsgType& loc_msg) {
204  // Orientation (0-2)
205  msg_conversions::VariancesToCovDiag(covariances.orientation_variances(), &loc_msg.cov_diag[0]);
206 
207  // Gyro Bias (3-5)
208  msg_conversions::VariancesToCovDiag(covariances.gyro_bias_variances(), &loc_msg.cov_diag[3]);
209 
210  // Velocity (6-8)
211  msg_conversions::VariancesToCovDiag(covariances.velocity_variances(), &loc_msg.cov_diag[6]);
212 
213  // Accel Bias (9-11)
214  msg_conversions::VariancesToCovDiag(covariances.accel_bias_variances(), &loc_msg.cov_diag[9]);
215 
216  // Position (12-14)
217  msg_conversions::VariancesToCovDiag(covariances.position_variances(), &loc_msg.cov_diag[12]);
218 }
219 
220 template <typename MatrixType>
221 double LogDeterminant(const MatrixType& matrix) {
222  return std::log10(matrix.determinant());
223 }
224 
225 template <typename RotationType>
226 Eigen::Isometry3d Isometry3d(const Eigen::Vector3d& translation, const RotationType& rotation) {
227  Eigen::Isometry3d pose = Eigen::Isometry3d::Identity();
228  pose.translation() = translation;
229  pose.linear() = Eigen::Quaterniond(rotation).toRotationMatrix();
230  return pose;
231 }
232 
233 template <int CostDim, int StateDim>
234 boost::optional<Eigen::Matrix<double, StateDim, StateDim>> LeastSquaresCovariance(
235  const std::vector<Eigen::Matrix<double, CostDim, StateDim>>& cost_jacobians) {
236  const int num_costs = cost_jacobians.size();
237  Eigen::MatrixXd stacked_jacobians(num_costs * CostDim, StateDim);
238  int row_index = 0;
239  for (const auto& jacobian : cost_jacobians) {
240  stacked_jacobians.block(row_index, 0, CostDim, StateDim) = jacobian;
241  row_index += CostDim;
242  }
243  const Eigen::Matrix<double, 6, 6> hessian = stacked_jacobians.transpose() * stacked_jacobians;
244  const Eigen::FullPivLU<Eigen::Matrix<double, StateDim, StateDim>> lu(hessian);
245  if (!lu.isInvertible()) return boost::none;
246  // Use lu inverse rather than hessian.inverse() for improved numerical stability
247  const Eigen::Matrix<double, 6, 6> covariance = lu.inverse();
248  return covariance;
249 }
250 
251 template <typename T>
252 std::vector<T> Transform(const std::vector<T>& a_T_elements, const Eigen::Isometry3d& b_T_a) {
253  std::vector<T> b_T_elements;
254  for (const auto& a_T_element : a_T_elements) {
255  b_T_elements.emplace_back(b_T_a * a_T_element);
256  }
257  return b_T_elements;
258 }
259 
260 template <typename T>
261 std::vector<T> Rotate(const std::vector<T>& a_F_a_T_elements, const Eigen::Matrix3d& b_R_a) {
262  std::vector<T> b_F_a_T_elements;
263  for (const auto& a_F_a_T_element : a_F_a_T_elements) {
264  b_F_a_T_elements.emplace_back(b_R_a * a_F_a_T_element);
265  }
266  return b_F_a_T_elements;
267 }
268 
269 template <typename FactorType>
270 void DeleteFactors(gtsam::NonlinearFactorGraph& graph) {
271  int num_removed_factors = 0;
272  for (auto factor_it = graph.begin(); factor_it != graph.end();) {
273  if (dynamic_cast<FactorType*>(factor_it->get())) {
274  factor_it = graph.erase(factor_it);
275  ++num_removed_factors;
276  continue;
277  }
278  ++factor_it;
279  }
280 }
281 
282 template <typename FactorType>
283 int NumFactors(const gtsam::NonlinearFactorGraph& graph) {
284  int num_factors = 0;
285  for (const auto& factor : graph) {
286  if (dynamic_cast<const FactorType*>(factor.get())) {
287  ++num_factors;
288  }
289  }
290  return num_factors;
291 }
292 
293 template <typename FactorType>
294 std::vector<const FactorType*> Factors(const gtsam::NonlinearFactorGraph& graph) {
295  std::vector<const FactorType*> factors;
296  for (const auto& factor : graph) {
297  const FactorType* casted_factor = dynamic_cast<const FactorType*>(factor.get());
298  if (casted_factor) {
299  factors.emplace_back(casted_factor);
300  }
301  }
302  return factors;
303 }
304 } // namespace localization_common
305 
306 #endif // LOCALIZATION_COMMON_UTILITIES_H_
localization_common
Definition: averager.h:33
localization_common::Rad2Deg
double Rad2Deg(const double radians)
Definition: utilities.cc:212
localization_common::TimeFromRosTime
Time TimeFromRosTime(const ros::Time &time)
Definition: utilities.cc:111
localization_common::CombinedNavStateCovariances::velocity_variances
Eigen::Vector3d velocity_variances() const
Definition: combined_nav_state_covariances.h:48
localization_common::CombinedNavStateFromMsg
CombinedNavState CombinedNavStateFromMsg(const ff_msgs::CombinedNavState &msg)
Definition: utilities.cc:147
localization_common::DeleteFactors
void DeleteFactors(gtsam::NonlinearFactorGraph &graph)
Definition: utilities.h:270
pose_with_covariance.h
localization_common::PoseFromMsg
gtsam::Pose3 PoseFromMsg(const geometry_msgs::PoseStamped &msg)
Definition: utilities.cc:117
localization_common::TransformPointsWithNormals
std::pair< std::vector< Eigen::Vector3d >, std::vector< Eigen::Vector3d > > TransformPointsWithNormals(const std::vector< Eigen::Vector3d > &points, const std::vector< Eigen::Vector3d > &normals, const Eigen::Isometry3d &b_T_a)
Definition: utilities.cc:305
localization_common::CombinedNavState
Definition: combined_nav_state.h:48
localization_common::CombinedNavState::timestamp
Time timestamp() const
Definition: combined_nav_state.h:54
localization_common::RotationFromEulerAngles
Eigen::Matrix3d RotationFromEulerAngles(const double yaw, const double pitch, const double roll)
Definition: utilities.cc:222
localization_common::LeastSquaresCovariance
boost::optional< Eigen::Matrix< double, StateDim, StateDim > > LeastSquaresCovariance(const std::vector< Eigen::Matrix< double, CostDim, StateDim >> &cost_jacobians)
Definition: utilities.h:234
localization_common::SetEnvironmentConfigs
void SetEnvironmentConfigs(const std::string &world="iss", const std::string &robot_config_file="bumble.config")
Definition: utilities.cc:98
localization_common::CylindricalToCartesian
Eigen::Vector3d CylindricalToCartesian(const Eigen::Vector3d &cylindrical_coordinates)
Definition: utilities.cc:214
localization_common::LoadGraphVIOConfig
void LoadGraphVIOConfig(config_reader::ConfigReader &config, const std::string &path_prefix="")
Definition: utilities.cc:85
localization_common::Rotate
std::vector< T > Rotate(const std::vector< T > &a_F_a_T_elements, const Eigen::Matrix3d &b_R_a)
Definition: utilities.h:261
localization_common::CombinedNavStateToMsg
ff_msgs::CombinedNavState CombinedNavStateToMsg(const CombinedNavState &combined_nav_state, const PoseCovariance &pose_covariance, const Eigen::Matrix3d &velocity_covariance, const Eigen::Matrix< double, 6, 6 > &imu_bias_covariance, const TimestampedSet< PoseCovariance > &correlation_covariances={})
Definition: utilities.cc:182
vision_common::Isometry3d
Eigen::Isometry3d Isometry3d(const cv::Mat &rodrigues_rotation_cv, const cv::Mat &translation_cv)
Definition: utilities.cc:58
localization_common::EigenPose
Eigen::Isometry3d EigenPose(const CombinedNavState &combined_nav_state)
Definition: utilities.cc:64
localization_common::Deg2Rad
double Deg2Rad(const double degrees)
Definition: utilities.cc:210
localization_common::RemoveGravityFromAccelerometerMeasurement
gtsam::Vector3 RemoveGravityFromAccelerometerMeasurement(const gtsam::Vector3 &global_F_gravity, const gtsam::Pose3 &body_T_imu, const gtsam::Pose3 &global_T_body, const gtsam::Vector3 &uncorrected_accelerometer_measurement)
Definition: utilities.cc:172
localization_common::LogDeterminant
double LogDeterminant(const MatrixType &matrix)
Definition: utilities.h:221
localization_common::PoseFromMsgWithExtrinsics
gtsam::Pose3 PoseFromMsgWithExtrinsics(const geometry_msgs::Pose &pose, const gtsam::Pose3 &sensor_T_body)
Definition: utilities.cc:68
localization_common::PoseCovariance
Eigen::Matrix< double, 6, 6 > PoseCovariance
Definition: pose_with_covariance.h:27
localization_common::PoseToTF
geometry_msgs::TransformStamped PoseToTF(const Eigen::Isometry3d &pose, const std::string &parent_frame, const std::string &child_frame, const Time timestamp, const std::string &platform_name="")
Definition: utilities.cc:136
localization_common::CombinedNavStateCovariancesToLocMsg
void CombinedNavStateCovariancesToLocMsg(const CombinedNavStateCovariances &covariances, LocMsgType &loc_msg)
Definition: utilities.h:203
localization_common::CombinedNavStateCovariances::gyro_bias_variances
Eigen::Vector3d gyro_bias_variances() const
Definition: combined_nav_state_covariances.h:49
localization_common::Isometry3d
Eigen::Isometry3d Isometry3d(const Eigen::Vector3d &translation, const RotationType &rotation)
Definition: utilities.h:226
localization_common::PoseToMsg
void PoseToMsg(const gtsam::Pose3 &pose, geometry_msgs::Pose &msg_pose)
Definition: utilities.cc:124
localization_common::Transform
std::vector< T > Transform(const std::vector< T > &a_T_elements, const Eigen::Isometry3d &b_T_a)
Definition: utilities.h:252
localization_common::PoseCovarianceSane
double PoseCovarianceSane(const Eigen::Matrix< double, 6, 6 > &pose_covariance, const double position_covariance_threshold=0, const double orientation_covariance_threshold=0, const bool check_position_covariance=true, const bool check_orientation_covariance=true)
Definition: utilities.cc:288
localization_common::CombinedNavStateCovariancesFromMsg
CombinedNavStateCovariances CombinedNavStateCovariancesFromMsg(const ff_msgs::CombinedNavState &msg)
Definition: utilities.cc:156
msg_conversions::VectorToMsg
void VectorToMsg(const VectorType &vector, MsgVectorType &msg_vector)
Definition: msg_conversions.h:137
point_cloud_common::Vector3d
Eigen::Vector3d Vector3d(const PointType &point)
Definition: utilities.h:328
time.h
localization_common::CombinedNavState::velocity
const gtsam::Velocity3 & velocity() const
Definition: combined_nav_state.h:57
localization_common::LoadGraphLocalizerConfig
void LoadGraphLocalizerConfig(config_reader::ConfigReader &config, const std::string &path_prefix="")
Definition: utilities.cc:74
localization_common::InvertPoseWithCovariance
PoseWithCovariance InvertPoseWithCovariance(const PoseWithCovariance &pose_with_covariance)
Definition: utilities.cc:280
localization_common::LoadCameraIntrinsics
gtsam::Cal3_S2 LoadCameraIntrinsics(config_reader::ConfigReader &config, const std::string &intrinsics_config_name, const std::string &prefix="")
Definition: utilities.cc:53
localization_common::FrameChangeRelativePoseWithCovariance
PoseWithCovariance FrameChangeRelativePoseWithCovariance(const PoseWithCovariance &a_F_relative_pose_with_covariance, const Eigen::Isometry3d &b_T_a)
Definition: utilities.cc:271
localization_common::CombinedNavStateCovariances::accel_bias_variances
Eigen::Vector3d accel_bias_variances() const
Definition: combined_nav_state_covariances.h:50
localization_common::FrameChangeRelativePose
Eigen::Isometry3d FrameChangeRelativePose(const Eigen::Isometry3d &a_F_relative_pose, const Eigen::Isometry3d &b_T_a)
Definition: utilities.cc:258
localization_common::TimeFromHeader
Time TimeFromHeader(const std_msgs::Header &header)
Definition: utilities.cc:109
config_reader::ConfigReader
Definition: config_reader.h:48
combined_nav_state_covariances.h
localization_common::LoadTransform
gtsam::Pose3 LoadTransform(config_reader::ConfigReader &config, const std::string &transform_config_name, const std::string &prefix="")
Definition: utilities.cc:34
combined_nav_state.h
localization_common::CombinedNavState::bias
const gtsam::imuBias::ConstantBias & bias() const
Definition: combined_nav_state.h:58
localization_common::TimeToMsg
void TimeToMsg(const Time timestamp, ros::Time &time_msg)
Definition: utilities.cc:115
localization_common::Interpolate
Eigen::Isometry3d Interpolate(const Eigen::Isometry3d &lower_bound_pose, const Eigen::Isometry3d &upper_bound_pose, const double alpha)
Definition: utilities.cc:313
localization_common::FrameChangeRelativeCovariance
Eigen::Matrix< double, 6, 6 > FrameChangeRelativeCovariance(const Eigen::Matrix< double, 6, 6 > &a_F_relative_pose_covariance, const Eigen::Isometry3d &b_T_a)
Definition: utilities.cc:265
localization_common::RelativePoseCovariance
PoseCovariance RelativePoseCovariance(const PoseWithCovariance &a, const PoseWithCovariance &b, const boost::optional< PoseCovariance > covariance_a_b=boost::none)
Definition: utilities.cc:233
config_reader.h
localization_common::LoadVector3
gtsam::Vector3 LoadVector3(config_reader::ConfigReader &config, const std::string &config_name, const std::string &prefix="")
Definition: utilities.cc:40
localization_common::CombinedNavState::pose
gtsam::Pose3 pose() const
Definition: combined_nav_state.h:56
localization_common::GtPose
gtsam::Pose3 GtPose(const Eigen::Isometry3d &eigen_pose)
Definition: utilities.cc:60
localization_common::RosTimeFromHeader
ros::Time RosTimeFromHeader(const std_msgs::Header &header)
Definition: utilities.cc:107
localization_common::NumFactors
int NumFactors(const gtsam::NonlinearFactorGraph &graph)
Definition: utilities.h:283
localization_common::CombinedNavStateCovariances
Definition: combined_nav_state_covariances.h:27
localization_common::CombinedNavStateToLocMsg
void CombinedNavStateToLocMsg(const CombinedNavState &combined_nav_state, LocMsgType &loc_msg)
Definition: utilities.h:194
localization_common::TimeToHeader
void TimeToHeader(const Time timestamp, std_msgs::Header &header)
Definition: utilities.cc:113
msg_conversions.h
localization_common::Robust
gtsam::noiseModel::Robust::shared_ptr Robust(const gtsam::SharedNoiseModel &noise, const double huber_k)
Definition: utilities.cc:334
localization_common::CombinedNavStateCovariances::position_variances
Eigen::Vector3d position_variances() const
Definition: combined_nav_state_covariances.h:46
localization_common::CombinedNavStateCovariances::orientation_variances
Eigen::Vector3d orientation_variances() const
Definition: combined_nav_state_covariances.h:47
localization_common::Time
double Time
Definition: time.h:23
localization_common::Factors
std::vector< const FactorType * > Factors(const gtsam::NonlinearFactorGraph &graph)
Definition: utilities.h:294
localization_common::CorrelationCovariancesFromMsg
TimestampedSet< PoseCovariance > CorrelationCovariancesFromMsg(const ff_msgs::CombinedNavState &msg)
Definition: utilities.cc:163
msg_conversions::VariancesToCovDiag
void VariancesToCovDiag(const Eigen::Vector3d &variances, float *const cov_diag)
Definition: msg_conversions.cc:388
localization_common::LoadCameraIntrinsicsMatrix
Eigen::Matrix3d LoadCameraIntrinsicsMatrix(config_reader::ConfigReader &config, const std::string &intrinsics_config_name, const std::string &prefix="")
Definition: utilities.cc:47