pose increase error: need to fix
							parent
							
								
									5e2a26e1ab
								
							
						
					
					
						commit
						7a56d2337c
					
				|  | @ -19,4 +19,4 @@ extractor_config: | |||
| 
 | ||||
| odometry_config:  | ||||
|   icp_iter_num : 2 | ||||
|   dist_sq_thresh: 100 | ||||
|   match_dist_thresh: 0.5 | ||||
|  | @ -77,7 +77,8 @@ void Extractor::SplitScan(const PointCloud& cloud, | |||
|       half_passed = true; | ||||
|       yaw_start += kTwoPi; | ||||
|     } | ||||
|     (*scans)[scan_id].points.emplace_back(pt.x, pt.y, pt.z, yaw_diff / kTwoPi); | ||||
|     (*scans)[scan_id].points.emplace_back(pt.x, pt.y, pt.z, | ||||
|                                           yaw_diff / kTwoPi + scan_id); | ||||
|   } | ||||
| } | ||||
| 
 | ||||
|  |  | |||
|  | @ -20,16 +20,26 @@ void Odometry::Process(const FeaturePoints& feature, Pose3D* const pose) { | |||
|     is_initialized = true; | ||||
|     UpdatePre(feature); | ||||
|     *pose = pose_curr2world_; | ||||
|     AINFO << "Odometry initialized...."; | ||||
|     return; | ||||
|   } | ||||
|   double match_dist_sq_thresh = config_["match_dist_sq_thresh"].as<double>(); | ||||
|   double match_dist_thresh = config_["match_dist_thresh"].as<double>(); | ||||
|   AINFO << "Pose before: " << pose_curr2world_.ToString(); | ||||
|   for (int i = 0; i < config_["icp_iter_num"].as<int>(); ++i) { | ||||
|     std::vector<PointLinePair> pl_pairs; | ||||
|     std::vector<PointPlanePair> pp_pairs; | ||||
|     MatchCornPoints(*feature.sharp_corner_pts, *corn_pts_pre_, &pl_pairs, | ||||
|                     match_dist_sq_thresh); | ||||
|                     match_dist_thresh); | ||||
|     AINFO_IF(i == 0) << "PL mathch: src size = " | ||||
|                      << feature.sharp_corner_pts->size() | ||||
|                      << ", tgt size = " << corn_pts_pre_->size(); | ||||
|     MatchSurfPoints(*feature.flat_surf_pts, *surf_pts_pre_, &pp_pairs, | ||||
|                     match_dist_sq_thresh); | ||||
|                     match_dist_thresh); | ||||
|     AINFO_IF(i == 0) << "PP mathch: src size = " | ||||
|                      << feature.flat_surf_pts->size() | ||||
|                      << ", tgt size = " << surf_pts_pre_->size(); | ||||
|     AINFO << "Matched num, pl = " << pl_pairs.size() | ||||
|           << ", pp = " << pp_pairs.size(); | ||||
|     if (pl_pairs.size() + pp_pairs.size() < kMinMatchNum) { | ||||
|       AWARN << "Too less correspondence: num = " | ||||
|             << pl_pairs.size() + pp_pairs.size(); | ||||
|  | @ -48,6 +58,8 @@ void Odometry::Process(const FeaturePoints& feature, Pose3D* const pose) { | |||
|   } | ||||
|   pose_curr2world_ = pose_curr2world_ * pose_curr2last_; | ||||
|   *pose = pose_curr2world_; | ||||
|   AWARN << "Pose increase: " << pose_curr2last_.ToString(); | ||||
|   AWARN << "Pose after: " << pose_curr2world_.ToString(); | ||||
|   UpdatePre(feature); | ||||
| } | ||||
| 
 | ||||
|  | @ -55,6 +67,7 @@ void Odometry::MatchCornPoints(const TPointCloud& src, const TPointCloud& tgt, | |||
|                                std::vector<PointLinePair>* const pairs, | ||||
|                                double dist_thresh) const { | ||||
|   kdtree_corn_pts_->setInputCloud(tgt.makeShared()); | ||||
| 
 | ||||
|   for (const auto& query_pt : src) { | ||||
|     std::vector<int> indices; | ||||
|     std::vector<float> dists; | ||||
|  | @ -97,6 +110,8 @@ void Odometry::MatchSurfPoints(const TPointCloud& src, const TPointCloud& tgt, | |||
|                                std::vector<PointPlanePair>* const pairs, | ||||
|                                double dist_thresh) const { | ||||
|   kdtree_surf_pts_->setInputCloud(tgt.makeShared()); | ||||
|   AINFO << "Point to plane mathch: src size = " << src.size() | ||||
|         << ", tgt size = " << tgt.size(); | ||||
|   for (const auto& query_pt : src) { | ||||
|     std::vector<int> indices; | ||||
|     std::vector<float> dists; | ||||
|  |  | |||
|  | @ -33,7 +33,6 @@ void OhMyLoam::Run(const PointCloud& cloud_in, double timestamp) { | |||
|   Pose3D pose; | ||||
|   odometry_->Process(feature_points, &pose); | ||||
|   poses_.emplace_back(pose); | ||||
|   AINFO << pose.ToString(); | ||||
| } | ||||
| 
 | ||||
| void OhMyLoam::RemoveOutliers(const PointCloud& cloud_in, | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue