Apollo学习之定位(一)——激光雷达定位

在Apollo的多传感器定位文件夹里(/modules/localization/msf)的这些文件()记录了apollo进行激光雷达定位的方式(文件如下)
在这里插入图片描述现在让我们来剖析这些文件
首先来看看localization_lidar.cc

LocalizationLidar::LocalizationLidar()
LocalizationLidar::~LocalizationLidar()
构造函数与析构函数(构建函数里有说明雷达的高度,如果要用自己调试的车辆注意修改其高度值)

bool LocalizationLidar::Init(const std::string& map_path,
const unsigned int search_range_x,
const unsigned int search_range_y,
const int zone_id,
const unsigned int resolution_id)
确定已知地图点云是否读入且识别成功

void LocalizationLidar::SetVelodyneExtrinsic(const Eigen::Affine3d& pose)
进行激光雷达的外部校准

void LocalizationLidar::SetVehicleHeight(double height)
设置激光雷达的高度

void LocalizationLidar::SetValidThreshold(float valid_threashold)
设置激光雷达的定位阈值

void LocalizationLidar::SetImageAlignMode(int mode)
设置激光雷达标定的方式

void LocalizationLidar::SetLocalizationMode(int mode)
设置定位方式

void LocalizationLidar::SetDeltaYawLimit(double limit)

void LocalizationLidar::SetDeltaPitchRollLimit(double limit)

int LocalizationLidar::Update(const unsigned int frame_idx,
const Eigen::Affine3d& pose,
const Eigen::Vector3d velocity,
const LidarFrame& lidar_frame)
检查是否载入点云地图
load all needed map
preload map for next locate
生成合成地图进行比较
将地图节点传送到的定位器
将雷达得到的点云传送到的定位器
进行激光雷达的点云匹配lidar_locator_->Compute

void LocalizationLidar::GetResult(Eigen::Affine3d *location,
Eigen::Matrix3d *covariance)
获得匹配结果

void LocalizationLidar::GetLocalizationDistribution(
Eigen::MatrixXd *distribution)
从固态驱动盘中分配到空间

void LocalizationLidar::RefineAltitudeFromMap(Eigen::Affine3d *pose)
获得雷达的海拔

void LocalizationLidar::ComposeMapNode(const Eigen::Vector3d& trans)
构建地图的节点

你可能感兴趣的:(Autoware)