NASA Astrobee Robot Software  Astrobee Version:
Flight software for the Astrobee robots operating inside the International Space Station.
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
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