laser_scan_matcher.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2011, Ivan Dryanovski, William Morris
3  * All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions are met:
7  *
8  * * Redistributions of source code must retain the above copyright
9  * notice, this list of conditions and the following disclaimer.
10  * * Redistributions in binary form must reproduce the above copyright
11  * notice, this list of conditions and the following disclaimer in the
12  * documentation and/or other materials provided with the distribution.
13  * * Neither the name of the CCNY Robotics Lab nor the names of its
14  * contributors may be used to endorse or promote products derived from
15  * this software without specific prior written permission.
16  *
17  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
18  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
20  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
21  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
22  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
23  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
24  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
25  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
26  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
27  * POSSIBILITY OF SUCH DAMAGE.
28  */
29 
30 /* This package uses Canonical Scan Matcher [1], written by
31  * Andrea Censi
32  *
33  * [1] A. Censi, "An ICP variant using a point-to-line metric"
34  * Proceedings of the IEEE International Conference
35  * on Robotics and Automation (ICRA), 2008
36  */
37 
38 /* This package contains modifications that are copyright by Nokia
39  *
40  * Licensed under the BSD 3-Clause "New" or "Revised" License
41  * SPDX-License-Identifier: BSD-3-Clause
42  */
43 
44 #ifndef LASER_SCAN_MATCHER_LASER_SCAN_MATCHER_H
45 #define LASER_SCAN_MATCHER_LASER_SCAN_MATCHER_H
46 
47 #include <ros/ros.h>
48 #include <sensor_msgs/LaserScan.h>
49 #include <geometry_msgs/PoseStamped.h>
50 #include <geometry_msgs/Pose2D.h>
51 #include <geometry_msgs/PoseWithCovarianceStamped.h>
52 #include <geometry_msgs/PoseWithCovariance.h>
53 #include <geometry_msgs/TwistStamped.h>
54 #include <std_msgs/Empty.h>
55 #include <nav_msgs/Odometry.h>
56 #include <nav_msgs/OccupancyGrid.h>
57 #include <nav_msgs/MapMetaData.h>
58 #include <tf/transform_datatypes.h>
59 #include <tf/transform_listener.h>
61 #include <csm/csm_all.h> // csm defines min and max, but Eigen complains
62 #include <gsl/gsl_blas.h>
63 #include <gsl/gsl_linalg.h>
64 
66 #undef min
67 #undef max
68 
69 #define MAX_ODOM_HISTORY 1024
70 #define MAX_ODOM_AGE 2.0
71 
72 namespace scan_tools
73 {
74 
76 {
77  public:
78 
81 
82  private:
83 
84  // **** ros
87 
92 
95 
96  tf::Transform base_to_laser_; // static, cached
97  tf::Transform laser_to_base_; // static, cached, calculated from base_to_laser_
100 
108 
113 
114  // **** parameters
115 
116  std::string base_frame_;
117  std::string fixed_frame_;
118  std::string odom_frame_;
119  std::string initialpose_topic_;
126  bool use_map_;
139  std::vector<double> position_covariance_;
140  std::vector<double> orientation_covariance_;
141 
145 
146  bool use_odom_;
148 
149  // **** state variables
150 
151  boost::mutex mutex_;
152 
154  bool have_map_;
164  std::string observed_scan_frame_;
166 
171  tf::Transform f2pcl_; // fixed-to-point-cloud-local tf
172  tf::Transform pcl2f_; // (and its inverse)
173 
174  tf::Transform f2b_; // fixed-to-base tf (pose of base frame in fixed frame)
175  tf::Transform f2b_kf_; // pose of the last keyframe scan in fixed frame
176 
178 
179  nav_msgs::Odometry current_odom_msg_;
180  nav_msgs::Odometry reference_odom_msg_;
181 
182  std::vector<double> constructed_intensities_;
183  std::vector<double> constructed_ranges_;
184  std::deque<nav_msgs::Odometry> odom_history_;
185 
186  // covariance tracking
187  gsl_matrix *Sigma_odom_;
188  gsl_matrix *Sigma_odom_trans_;
189  gsl_matrix *Sigma_measured_;
190  gsl_matrix *B_odom_;
191  gsl_matrix *Sigma_u_;
192  gsl_matrix *I1_;
193  gsl_matrix *I2_;
194  gsl_permutation *P2_;
195  gsl_matrix *trans_sigma_;
196  gsl_matrix *kalman_gain_;
197  gsl_matrix *kalman_gain_comp_;
198  gsl_vector *xvec_;
199  gsl_vector *yvec_;
200  double theta_odom_;
201 
205 
206  // **** methods
207 
208  void initParams();
209  void resetState();
210  double syncOdom(const ros::Time& time);
211  void addOdomToHistory(const nav_msgs::Odometry::ConstPtr& o);
212  double getOdomDeltaT(const nav_msgs::Odometry::ConstPtr& o);
213  void setTransSigmaMatrix(const double yaw);
214 
215  nav_msgs::Odometry* earliestOdomAfter(const ros::Time& time);
216  nav_msgs::Odometry* latestOdomBefore(const ros::Time& time);
217  tf::Vector3 fusePoses(const tf::Transform& pose_delta);
218  int processScan(LDP& curr_ldp_scan, const ros::Time& time);
219  int processScan(LDP& curr_ldp_scan, LDP& ref_ldp_scan, const ros::Time& time);
220  void doPredictPose(double delta_t);
221  void doPublishScanRate(const ros::Time& time);
222  void doPublishOdomRate(const ros::Time& time);
223  void doPublishDebugTF(const ros::Time& time, const tf::Transform& odom_delta, const ros::Publisher& publisher, const std::string& frame);
224 
225  void laserScanToLDP(const sensor_msgs::LaserScan::ConstPtr& scan_msg,
226  LDP& ldp);
227  void constructedScanToLDP(LDP& ldp);
228  void constructScan(const ros::Time& timestamp);
229 
230  void mapCallback (const nav_msgs::OccupancyGrid::ConstPtr& map_msg);
231 
232  void initialposeCallback (const geometry_msgs::PoseWithCovarianceStamped::ConstPtr& pose_msg);
233 
234  void scanCallback (const sensor_msgs::LaserScan::ConstPtr& scan_msg);
235  void odomCallback(const nav_msgs::Odometry::ConstPtr& odom_msg);
236  bool getBaseToLaserTf (const std::string& frame_id);
237  bool getBaseToFootprintTf (const std::string& frame_id);
238 
239  bool newKeyframeNeeded(const tf::Transform& d);
240 
241  void getPrediction(double& pr_ch_x, double& pr_ch_y,
242  double& pr_ch_a, double dt);
243 
244  void createTfFromXYTheta(double x, double y, double theta, tf::Transform& t);
245 };
246 
247 } // namespace scan_tools
248 
249 #endif // LASER_SCAN_MATCHER_LASER_SCAN_MATCHER_H
scan_tools::LaserScanMatcher::map_occupancy_threshold_
double map_occupancy_threshold_
Definition: laser_scan_matcher.h:125
scan_tools::LaserScanMatcher::Sigma_odom_
gsl_matrix * Sigma_odom_
Definition: laser_scan_matcher.h:187
scan_tools::LaserScanMatcher::predicted_pose_in_pcl_
tf::Transform predicted_pose_in_pcl_
Definition: laser_scan_matcher.h:169
scan_tools::LaserScanMatcher::debug_laser_delta_publisher_
ros::Publisher debug_laser_delta_publisher_
Definition: laser_scan_matcher.h:110
scan_tools::LaserScanMatcher::debug_odom_current_publisher_
ros::Publisher debug_odom_current_publisher_
Definition: laser_scan_matcher.h:112
scan_tools::LaserScanMatcher::measured_pose_publisher_
ros::Publisher measured_pose_publisher_
Definition: laser_scan_matcher.h:106
scan_tools::LaserScanMatcher::doPredictPose
void doPredictPose(double delta_t)
Definition: laser_scan_matcher.cpp:491
scan_tools::LaserScanMatcher::latestOdomBefore
nav_msgs::Odometry * latestOdomBefore(const ros::Time &time)
Definition: laser_scan_matcher.cpp:411
scan_tools::LaserScanMatcher::max_allowed_range_
double max_allowed_range_
Definition: laser_scan_matcher.h:123
scan_tools::LaserScanMatcher::mapCallback
void mapCallback(const nav_msgs::OccupancyGrid::ConstPtr &map_msg)
Definition: laser_scan_matcher.cpp:685
ros::Publisher
scan_tools::LaserScanMatcher::observed_angle_max_
double observed_angle_max_
Definition: laser_scan_matcher.h:160
scan_tools::LaserScanMatcher::kf_dist_angular_
double kf_dist_angular_
Definition: laser_scan_matcher.h:144
scan_tools::LaserScanMatcher::getBaseToFootprintTf
bool getBaseToFootprintTf(const std::string &frame_id)
Definition: laser_scan_matcher.cpp:1314
scan_tools::LaserScanMatcher::f2pcl_
tf::Transform f2pcl_
Definition: laser_scan_matcher.h:171
scan_tools::LaserScanMatcher::initialpose_valid_
bool initialpose_valid_
Definition: laser_scan_matcher.h:127
scan_tools::LaserScanMatcher::odom_frame_
std::string odom_frame_
Definition: laser_scan_matcher.h:118
scan_tools::LaserScanMatcher::base_to_footprint_
tf::Transform base_to_footprint_
Definition: laser_scan_matcher.h:98
scan_tools::LaserScanMatcher::map_subscriber_
ros::Subscriber map_subscriber_
Definition: laser_scan_matcher.h:89
scan_tools::LaserScanMatcher::tf_listener_
tf::TransformListener tf_listener_
Definition: laser_scan_matcher.h:93
scan_tools::LaserScanMatcher::initialpose_topic_
std::string initialpose_topic_
Definition: laser_scan_matcher.h:119
scan_tools::LaserScanMatcher::I2_
gsl_matrix * I2_
Definition: laser_scan_matcher.h:193
scan_tools::LaserScanMatcher::constructedScanToLDP
void constructedScanToLDP(LDP &ldp)
Definition: laser_scan_matcher.cpp:1265
ros.h
scan_tools::LaserScanMatcher::laserScanToLDP
void laserScanToLDP(const sensor_msgs::LaserScan::ConstPtr &scan_msg, LDP &ldp)
Definition: laser_scan_matcher.cpp:1222
scan_tools::LaserScanMatcher::prev_ldp_scan_
LDP prev_ldp_scan_
Definition: laser_scan_matcher.h:204
scan_tools::LaserScanMatcher::kalman_gain_
gsl_matrix * kalman_gain_
Definition: laser_scan_matcher.h:196
scan_tools::LaserScanMatcher::base_to_laser_
tf::Transform base_to_laser_
Definition: laser_scan_matcher.h:96
scan_tools::LaserScanMatcher::kalman_gain_comp_
gsl_matrix * kalman_gain_comp_
Definition: laser_scan_matcher.h:197
scan_tools::LaserScanMatcher::constructed_intensities_
std::vector< double > constructed_intensities_
Definition: laser_scan_matcher.h:182
scan_tools::LaserScanMatcher::nh_private_
ros::NodeHandle nh_private_
Definition: laser_scan_matcher.h:86
scan_tools::LaserScanMatcher::use_map_
bool use_map_
Definition: laser_scan_matcher.h:126
scan_tools::LaserScanMatcher::resetState
void resetState()
Definition: laser_scan_matcher.cpp:188
scan_tools::LaserScanMatcher::trans_sigma_
gsl_matrix * trans_sigma_
Definition: laser_scan_matcher.h:195
scan_tools::LaserScanMatcher::publish_pose_stamped_
bool publish_pose_stamped_
Definition: laser_scan_matcher.h:133
scan_tools::LaserScanMatcher::f2b_
tf::Transform f2b_
Definition: laser_scan_matcher.h:174
scan_tools::LaserScanMatcher::doPublishDebugTF
void doPublishDebugTF(const ros::Time &time, const tf::Transform &odom_delta, const ros::Publisher &publisher, const std::string &frame)
Definition: laser_scan_matcher.cpp:798
sm_params
scan_tools::LaserScanMatcher::skipped_poses_
int skipped_poses_
Definition: laser_scan_matcher.h:165
scan_tools::LaserScanMatcher::observed_angle_inc_
double observed_angle_inc_
Definition: laser_scan_matcher.h:161
scan_tools::LaserScanMatcher::initial_pose_
tf::Transform initial_pose_
Definition: laser_scan_matcher.h:170
scan_tools::LaserScanMatcher::tf_broadcaster_
tf::TransformBroadcaster tf_broadcaster_
Definition: laser_scan_matcher.h:94
scan_tools::ScanConstructor
Definition: scan_constructor.h:19
scan_tools::LaserScanMatcher::publish_pose_with_covariance_
bool publish_pose_with_covariance_
Definition: laser_scan_matcher.h:132
scan_tools::LaserScanMatcher::addOdomToHistory
void addOdomToHistory(const nav_msgs::Odometry::ConstPtr &o)
Definition: laser_scan_matcher.cpp:439
scan_tools::LaserScanMatcher::scanCallback
void scanCallback(const sensor_msgs::LaserScan::ConstPtr &scan_msg)
Definition: laser_scan_matcher.cpp:721
scan_tools::LaserScanMatcher::predicted_pose_
tf::Transform predicted_pose_
Definition: laser_scan_matcher.h:167
scan_tools::LaserScanMatcher::publish_debug_
bool publish_debug_
Definition: laser_scan_matcher.h:137
scan_tools::LaserScanMatcher::observed_time_inc_
double observed_time_inc_
Definition: laser_scan_matcher.h:163
scan_tools::LaserScanMatcher::mutex_
boost::mutex mutex_
Definition: laser_scan_matcher.h:151
scan_tools::LaserScanMatcher::output_
sm_result output_
Definition: laser_scan_matcher.h:203
scan_tools::LaserScanMatcher::yvec_
gsl_vector * yvec_
Definition: laser_scan_matcher.h:199
scan_tools::LaserScanMatcher::scan_subscriber_
ros::Subscriber scan_subscriber_
Definition: laser_scan_matcher.h:88
scan_tools::LaserScanMatcher::initialposeCallback
void initialposeCallback(const geometry_msgs::PoseWithCovarianceStamped::ConstPtr &pose_msg)
Definition: laser_scan_matcher.cpp:640
scan_tools::LaserScanMatcher::getOdomDeltaT
double getOdomDeltaT(const nav_msgs::Odometry::ConstPtr &o)
Definition: laser_scan_matcher.cpp:484
scan_tools::LaserScanMatcher::initialpose_subscriber_
ros::Subscriber initialpose_subscriber_
Definition: laser_scan_matcher.h:91
transform_broadcaster.h
scan_tools::LaserScanMatcher::fusePoses
tf::Vector3 fusePoses(const tf::Transform &pose_delta)
Definition: laser_scan_matcher.cpp:926
scan_tools::LaserScanMatcher::reference_odom_msg_
nav_msgs::Odometry reference_odom_msg_
Definition: laser_scan_matcher.h:180
scan_tools::LaserScanMatcher::observed_scan_time_
double observed_scan_time_
Definition: laser_scan_matcher.h:162
scan_tools::LaserScanMatcher::Sigma_odom_trans_
gsl_matrix * Sigma_odom_trans_
Definition: laser_scan_matcher.h:188
scan_tools::LaserScanMatcher::debug_odom_reference_publisher_
ros::Publisher debug_odom_reference_publisher_
Definition: laser_scan_matcher.h:111
scan_tools::LaserScanMatcher::observed_angle_min_
double observed_angle_min_
Definition: laser_scan_matcher.h:159
scan_tools::LaserScanMatcher::orientation_covariance_
std::vector< double > orientation_covariance_
Definition: laser_scan_matcher.h:140
scan_tools::LaserScanMatcher::footprint_to_base_
tf::Transform footprint_to_base_
Definition: laser_scan_matcher.h:99
scan_tools::LaserScanMatcher::debug_odom_delta_publisher_
ros::Publisher debug_odom_delta_publisher_
Definition: laser_scan_matcher.h:109
scan_tools::LaserScanMatcher::I1_
gsl_matrix * I1_
Definition: laser_scan_matcher.h:192
scan_tools::LaserScanMatcher::doPublishScanRate
void doPublishScanRate(const ros::Time &time)
Definition: laser_scan_matcher.cpp:830
scan_tools::LaserScanMatcher::max_variance_rot_
double max_variance_rot_
Definition: laser_scan_matcher.h:122
scan_tools
Definition: laser_scan_matcher.h:72
tf::TransformBroadcaster
scan_tools::LaserScanMatcher::syncOdom
double syncOdom(const ros::Time &time)
Definition: laser_scan_matcher.cpp:446
scan_tools::LaserScanMatcher::debug_csm_
bool debug_csm_
Definition: laser_scan_matcher.h:138
scan_tools::LaserScanMatcher::xvec_
gsl_vector * xvec_
Definition: laser_scan_matcher.h:198
scan_tools::LaserScanMatcher::have_map_
bool have_map_
Definition: laser_scan_matcher.h:154
scan_tools::LaserScanMatcher::odom_subscriber_
ros::Subscriber odom_subscriber_
Definition: laser_scan_matcher.h:90
scan_tools::LaserScanMatcher::use_odom_
bool use_odom_
Definition: laser_scan_matcher.h:146
scan_tools::LaserScanMatcher::setTransSigmaMatrix
void setTransSigmaMatrix(const double yaw)
Definition: laser_scan_matcher.cpp:580
scan_tools::LaserScanMatcher::getPrediction
void getPrediction(double &pr_ch_x, double &pr_ch_y, double &pr_ch_a, double dt)
Definition: laser_scan_matcher.cpp:1339
scan_tools::LaserScanMatcher::newKeyframeNeeded
bool newKeyframeNeeded(const tf::Transform &d)
Definition: laser_scan_matcher.cpp:1211
scan_tools::LaserScanMatcher::constructScan
void constructScan(const ros::Time &timestamp)
Definition: laser_scan_matcher.cpp:588
scan_tools::LaserScanMatcher::theta_odom_
double theta_odom_
Definition: laser_scan_matcher.h:200
scan_tools::LaserScanMatcher::P2_
gsl_permutation * P2_
Definition: laser_scan_matcher.h:194
scan_tools::LaserScanMatcher::position_covariance_
std::vector< double > position_covariance_
Definition: laser_scan_matcher.h:139
tf::Transform
scan_tools::LaserScanMatcher::max_pose_delta_yaw_
double max_pose_delta_yaw_
Definition: laser_scan_matcher.h:124
scan_tools::LaserScanMatcher::getBaseToLaserTf
bool getBaseToLaserTf(const std::string &frame_id)
Definition: laser_scan_matcher.cpp:1291
scan_tools::LaserScanMatcher::current_odom_msg_
nav_msgs::Odometry current_odom_msg_
Definition: laser_scan_matcher.h:179
scan_tools::LaserScanMatcher::measured_pose_
tf::Transform measured_pose_
Definition: laser_scan_matcher.h:168
scan_tools::LaserScanMatcher::LaserScanMatcher
LaserScanMatcher(ros::NodeHandle nh, ros::NodeHandle nh_private)
Definition: laser_scan_matcher.cpp:50
scan_tools::LaserScanMatcher::nh_
ros::NodeHandle nh_
Definition: laser_scan_matcher.h:85
scan_tools::LaserScanMatcher::laser_to_base_
tf::Transform laser_to_base_
Definition: laser_scan_matcher.h:97
scan_tools::LaserScanMatcher::Sigma_measured_
gsl_matrix * Sigma_measured_
Definition: laser_scan_matcher.h:189
scan_tools::LaserScanMatcher::initParams
void initParams()
Definition: laser_scan_matcher.cpp:212
transform_listener.h
scan_tools::LaserScanMatcher::odomCallback
void odomCallback(const nav_msgs::Odometry::ConstPtr &odom_msg)
Definition: laser_scan_matcher.cpp:553
scan_tools::LaserScanMatcher::predicted_pose_publisher_
ros::Publisher predicted_pose_publisher_
Definition: laser_scan_matcher.h:105
scan_constructor.h
scan_tools::LaserScanMatcher::pcl2f_
tf::Transform pcl2f_
Definition: laser_scan_matcher.h:172
scan_tools::LaserScanMatcher::kf_dist_linear_sq_
double kf_dist_linear_sq_
Definition: laser_scan_matcher.h:143
scan_tools::LaserScanMatcher::observed_scan_frame_
std::string observed_scan_frame_
Definition: laser_scan_matcher.h:164
scan_tools::LaserScanMatcher::publish_pose_with_covariance_stamped_
bool publish_pose_with_covariance_stamped_
Definition: laser_scan_matcher.h:134
scan_tools::LaserScanMatcher::fixed_frame_
std::string fixed_frame_
Definition: laser_scan_matcher.h:117
transform_datatypes.h
scan_tools::LaserScanMatcher::received_odom_
bool received_odom_
Definition: laser_scan_matcher.h:155
ros::Time
scan_tools::LaserScanMatcher::max_variance_trans_
double max_variance_trans_
Definition: laser_scan_matcher.h:121
sm_result
scan_tools::LaserScanMatcher::observed_range_max_
double observed_range_max_
Definition: laser_scan_matcher.h:158
scan_tools::LaserScanMatcher::processScan
int processScan(LDP &curr_ldp_scan, const ros::Time &time)
Definition: laser_scan_matcher.cpp:1095
scan_tools::LaserScanMatcher::observed_range_min_
double observed_range_min_
Definition: laser_scan_matcher.h:157
scan_tools::LaserScanMatcher::publish_base_tf_
bool publish_base_tf_
Definition: laser_scan_matcher.h:129
scan_tools::LaserScanMatcher
Definition: laser_scan_matcher.h:75
scan_tools::LaserScanMatcher::earliestOdomAfter
nav_msgs::Odometry * earliestOdomAfter(const ros::Time &time)
Definition: laser_scan_matcher.cpp:420
scan_tools::LaserScanMatcher::odom_history_
std::deque< nav_msgs::Odometry > odom_history_
Definition: laser_scan_matcher.h:184
scan_tools::LaserScanMatcher::no_odom_fusing_
bool no_odom_fusing_
Definition: laser_scan_matcher.h:147
scan_tools::LaserScanMatcher::publish_constructed_scan_
bool publish_constructed_scan_
Definition: laser_scan_matcher.h:128
tf::TransformListener
scan_tools::LaserScanMatcher::pose_publisher_
ros::Publisher pose_publisher_
Definition: laser_scan_matcher.h:101
scan_tools::LaserScanMatcher::B_odom_
gsl_matrix * B_odom_
Definition: laser_scan_matcher.h:190
laser_data
scan_tools::LaserScanMatcher::pose_stamped_publisher_
ros::Publisher pose_stamped_publisher_
Definition: laser_scan_matcher.h:102
scan_tools::LaserScanMatcher::last_icp_time_
ros::Time last_icp_time_
Definition: laser_scan_matcher.h:177
scan_tools::LaserScanMatcher::constructed_scan_publisher_
ros::Publisher constructed_scan_publisher_
Definition: laser_scan_matcher.h:107
scan_tools::LaserScanMatcher::constructed_ranges_
std::vector< double > constructed_ranges_
Definition: laser_scan_matcher.h:183
scan_tools::LaserScanMatcher::scan_constructor_
ScanConstructor scan_constructor_
Definition: laser_scan_matcher.h:156
scan_tools::LaserScanMatcher::pose_with_covariance_stamped_publisher_
ros::Publisher pose_with_covariance_stamped_publisher_
Definition: laser_scan_matcher.h:104
scan_tools::LaserScanMatcher::f2b_kf_
tf::Transform f2b_kf_
Definition: laser_scan_matcher.h:175
scan_tools::LaserScanMatcher::Sigma_u_
gsl_matrix * Sigma_u_
Definition: laser_scan_matcher.h:191
scan_tools::LaserScanMatcher::createTfFromXYTheta
void createTfFromXYTheta(double x, double y, double theta, tf::Transform &t)
Definition: laser_scan_matcher.cpp:1370
scan_tools::LaserScanMatcher::~LaserScanMatcher
~LaserScanMatcher()
Definition: laser_scan_matcher.cpp:171
scan_tools::LaserScanMatcher::doPublishOdomRate
void doPublishOdomRate(const ros::Time &time)
Definition: laser_scan_matcher.cpp:808
scan_tools::LaserScanMatcher::publish_predicted_pose_
bool publish_predicted_pose_
Definition: laser_scan_matcher.h:135
scan_tools::LaserScanMatcher::scan_downsample_rate_
int scan_downsample_rate_
Definition: laser_scan_matcher.h:120
scan_tools::LaserScanMatcher::base_frame_
std::string base_frame_
Definition: laser_scan_matcher.h:116
scan_tools::LaserScanMatcher::publish_odom_tf_
bool publish_odom_tf_
Definition: laser_scan_matcher.h:130
scan_tools::LaserScanMatcher::publish_measured_pose_
bool publish_measured_pose_
Definition: laser_scan_matcher.h:136
scan_tools::LaserScanMatcher::input_
sm_params input_
Definition: laser_scan_matcher.h:202
scan_tools::LaserScanMatcher::pose_with_covariance_publisher_
ros::Publisher pose_with_covariance_publisher_
Definition: laser_scan_matcher.h:103
csm_all.h
scan_tools::LaserScanMatcher::initialized_
bool initialized_
Definition: laser_scan_matcher.h:153
scan_tools::LaserScanMatcher::kf_dist_linear_
double kf_dist_linear_
Definition: laser_scan_matcher.h:142
scan_tools::LaserScanMatcher::publish_pose_
bool publish_pose_
Definition: laser_scan_matcher.h:131
ros::NodeHandle
ros::Subscriber


lsm_localization
Author(s): Ivan Dryanovski , Ilija Hadzic
autogenerated on Fri Dec 23 2022 03:09:11