一. 及格部分
代码跑通
直接编译,跑通:
catkin config --install && catkin build
二. 良好部分
从原点开始初始化定位, 这个在代码中已经实现了,直接跑就行。
可是跑一下就会飞,估计是因为原始的Rotation也没有(就一个Identity Matrix啥都没…),匹配不上。
不过只要跑就可以良好,所以咱们在第三题解决这个初始化问题。
三. 优秀部分
Scan Context
(为了理解这个SC方法,我写了一篇博客1来分析它的原理)
简单来说,Scan Context会直接通过与全局的Scan Context Matrix进行Two-phase search来找到最有可能re-localization的位置的pose(包括R, t)。 在咱们作业里,直接一句代码就可以调用:
bool MatchingFlow::UpdateMatching() {
if (!matching_ptr_->HasInited()) {
matching_ptr_->SetScanContextPose(current_cloud_data_);
}
return matching_ptr_->Update(current_cloud_data_, laser_odometry_);
}
(鉴于老师说不能用Scan Context,我就没继续尝试200s 300s了,但估计效果都可以)
只是这里有个问题,Odom Trajectory是右上角绿色那佗,是正常的。
小红薯: 但是, GNSS轨迹就还是以(0,0)为起点在走,而不是100s的位置开始走,所以左边黄色那根轨迹,平移了好远!
小红薯: 这个我就不知道怎么设置GNSS的轨迹也重新按100s 200s的点为起点了…
大师兄: 其实,这个就是咱们下一题GNSS要解决的问题!
GNSS牛刀小试
- 先尝试直接一句话来