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)
構建地圖的節點
總結
以上是生活随笔為你收集整理的Apollo学习之定位(一)——激光雷达定位的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python逻辑量有_python逻辑运
- 下一篇: 【2023校招刷题】常见面试问题总结(一