Giter Club home page Giter Club logo

clbrl's Introduction

这是什么

clb(Calibrate) rl(Rotate Lidar)

这是一个标定激光雷达和旋转电机安装偏差的项目, 具体偏差请看下面图示
其中 L 为激光雷达坐标系, M 为电机坐标系, 二者在理想状态下应完全重合, 这样后续拼装数据只需要考虑激光雷达跟随电机的朝向, 但是因为这个安装误差的存在会导致在只考虑电机朝向时原数据出现畸变, 即无法正确还原原始场景

项目架构

    • preprocessor: 一些预处理工具, 包括 io, 拼装, 提取特征等
    • calibrator: 外参矫正算法, 设置好各种配置后直接调用 run(ans) 就能得到标定结果
    • utils: 配合 yaml-cpp 读写配置文件
  • 可执行文件
    • cmb: 不考虑外部参数的情况下只根据电机朝向组装数据, 从 raw_dirname 加载数据, 将组装好的数据保存到cmb_filename
    • calib: 根据提取出来的特征进行标定, 读取 raw_dirnameobj_dirname, 标定结果写入 mat_file_name
    • apb: 根据 mat_file_name 中的外参组装 raw_dirname 中的原始数据, 并保存到 cmb_filename, 供可视化检验

算法

算法参考了以下论文

  • J. Kang 和 N. L. Doh, 《Full-DOF Calibration of a Rotating 2-D LIDAR With a Simple Plane Measurement》, IEEE Trans. Robot., 卷 32, 期 5, 页 1245–1263, 10 月 2016, doi: 10.1109/TRO.2016.2596769.

测试数据

数据都放在 谷歌网盘

  • single-line-data:单线激光数据
  • multi-line-data:多线激光数据(目前没有)

文件夹结构:

  • raw:原始数据
  • objs:提取好的平面特征(由用户手动提取,链接里提供的只是一个示范,算法并不会自动提取平面特征)
  • resault.yaml:外参计算结果,可以使用 apb 程序将标定结果应用到原始数据上,查看标定效果
  • cmb_output.ply:cmb 程序组合 raw 文件夹下数据得到的结果,用于提取平面特征

使用方法

拉取代码

# 添加了 yaml-cpp 的子模块, 所以拉取代码需要加一个选项用于处理子模块的事情🤷
git clone --recursive https://github.com/HopeCollector/clbrl.git

构建项目

构建项目需要以下组件

  • ceres
  • pcl
  • Eigen

语言标准 c++ 17

cmake -D CMAKE_BUILD_TYPE=Release -S . -B build
cmake --build build

原始数据采集方法

  1. 确定好激光的旋转轴
  2. 激光旋转到某个指定的角度,保持这个角度,尽可能让激光不要抖动
  3. 尽可能在电机静止时(有些电机会有抖动)记录一帧激光的数据
  4. 将点云数据转换为 pcl::PointXYZI 的类型
  5. 将的角度以弧度(rad)写入每一个点的 intensity
  6. 将这一帧数据保存为 pcd 格式,文件名为数据采集这一帧数据的序号

最终得到的原始数据看起来就是 0.pcd 1.pcd 2.pcd ... n.pcd

使用

  1. 修改 cfg/config.yaml , 保证后面程序运行时能找到对应的文件
  2. 使用 caliba_cmb 将原始数据组装在一起
  3. 使用任何一种点云可视化软件将组装结果中面积较大, 点数较多的平面分割出来, 分别保存到不同的文件中, 支持 pcd ply 两种格式 如果使用 cloudcompare 注意保存后的结果中 scalar 部分, 软件会自动添加 scalar_ 前缀, 需要删掉
  4. 使用 caliba_clb 进行外参标定
  5. 如果不确定标定效, 可使用 caliba_apb 对原始数据应用标定结果, 用可视化软件查看标定结果

输出结果

输出的格式为

theta: x, y, z
trans: x, y, z
mat: # 4x4 齐次矩阵
  -[row1]
  -[row2]
  -[row3]
  -[row4]

clbrl's People

Contributors

hopecollector avatar

Stargazers

bob wang avatar YangLiang avatar Charlie avatar sjwa avatar TechFlowAI avatar Jin avatar  avatar  avatar  avatar NEU-Junshun avatar  avatar  avatar SHINE avatar

Watchers

James Cloos avatar  avatar

clbrl's Issues

关于实验数据

能否请作者提供一份实验数据呢?我将我自己的数据输入到程序中,发现效果不好,如果作者可以提供一份您使用的数据的话,必将万分感谢!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.