localization_in_auto_driving
localization_in_auto_driving copied to clipboard
运动畸变的小问题
在models/scan_adjust/distortion_adjust.cpp中有下面的代码片段:
float start_orientation = atan2(origin_cloud_ptr->points[0].y, origin_cloud_ptr->points[0].x);
Eigen::AngleAxisf t_V(start_orientation, Eigen::Vector3f::UnitZ());
Eigen::Matrix3f rotate_matrix = t_V.matrix();
Eigen::Matrix4f transform_matrix = Eigen::Matrix4f::Identity();
transform_matrix.block<3,3>(0,0) = rotate_matrix.inverse();
pcl::transformPointCloud(*origin_cloud_ptr, *origin_cloud_ptr, transform_matrix);
velocity_ = rotate_matrix * velocity_;
angular_rate_ = rotate_matrix * angular_rate_;
这里对原始点云绕Z轴旋转start_orientation的角度不是很理解,而且角速度和线速度都有这样的操作。知乎上面也没有给出相应的解释,谢谢分享。
作者自己说过,因为kitti里用的velodyne采集数据的时候不是每次都从0度开始,所以起始方向计算了一个夹角,并且把0度附近的点云舍弃掉,然后通过姿态和速度对点云做补偿