MegviiRobot / CamLaserCalibraTool

Extrinsic Calibration of a Camera and 2d Laser
BSD 3-Clause "New" or "Revised" License
660 stars 200 forks source link

标定平移误差大,每次calibrate_offline会有不同 #19

Open QING-ML opened 4 years ago

QING-ML commented 4 years ago
  1. 我在使用SR300和2D laser进行标定时,标定结果z轴高度方向误差大约30-40cm,且同一次的数据为什么每次执行calibr_offline的结果会不同

2.标定时使用kalibr_tag是否所有码块都需要在视野内,且旋转幅度是否不能过大

3.能否提供,代码现在默认的laser和camera的外参坐标系

HeYijia commented 4 years ago
  1. 不应该每次执行结果都不一致哈。2. 不需要全部,只需要几个就行,apritag 最好别离相机太远,1-2m。3. 坐标系是 SLAM 中通用的坐标系。相机 z 轴是从相机光心指向图像平面,x 轴是图像平面中心水平从左向右的向量,y 轴是图像平面中心竖直从上往下的向量。 激光水平放在地面,正前方是坐标系的 x 轴,垂直地面向上是 z 轴,y 轴是水平从右往左。
peterWon commented 3 years ago

@HeYijia 贺博,您好!我也是平移误差较大,不知道啥原因。我用的鱼眼相机,模型选的是MEI,用Kalibr标的内参,模型用的MEI+radtan。运行二维码检测的时候,轴基本上是准的,自动检测直线看起来也没有问题。标定出的旋转量看着倒是差不多的,平移量出入有点大。

hushunda commented 3 years ago

@HeYijia 贺博,您好!我也是平移误差较大,不知道啥原因。我用的鱼眼相机,模型选的是MEI,用Kalibr标的内参,模型用的MEI+radtan。运行二维码检测的时候,轴基本上是准的,自动检测直线看起来也没有问题。标定出的旋转量看着倒是差不多的,平移量出入有点大。 https://github.com/hushunda/CameraLaserCalibrate opencv的MEI模型有他自己的问题

SquirminatorHotHead commented 2 years ago
  1. 我在使用SR300和2D laser进行标定时,标定结果z轴高度方向误差大约30-40cm,且同一次的数据为什么每次执行calibr_offline的结果会不同

2.标定时使用kalibr_tag是否所有码块都需要在视野内,且旋转幅度是否不能过大

3.能否提供,代码现在默认的laser和camera的外参坐标系

这个情况很奇怪,我用Qilong Zhang的算法做了测试,最后的结果也是重投影的激光点在实际的激光点上面一些, 其他轴好像就没有什么问题。我的猜测是可能这个是由于算法本身的缺陷导致的,猜测的解决办法是尽可能得多变换calibration target的位姿。(请指正) Update: #16

另外我看贺博士的项目中, 应该是去掉了相机的IR-Filter使得激光扫描线在图像里面可视化了(或者用了本身不带这个的相机), 用来做为是否对齐的参照数据,这一点好像没有提及(也可能是我疏漏没看到)。

这一块的话有相关论文可以查看,如果对于如何选取相机以及如何在不破坏相机的情况下移除IR-Filter有疑惑,可以DM我,我有一些经验。——————这条留给正好看到此处,并且遇到困惑的小伙伴,没必要重复造轮子

woshicver commented 2 years ago

@HeYijia 贺博,您好!我也是平移误差较大,不知道啥原因。我用的鱼眼相机,模型选的是MEI,用Kalibr标的内参,模型用的MEI+radtan。运行二维码检测的时候,轴基本上是准的,自动检测直线看起来也没有问题。标定出的旋转量看着倒是差不多的,平移量出入有点大。 https://github.com/hushunda/CameraLaserCalibrate opencv的MEI模型有

  1. 我在使用SR300和2D laser进行标定时,标定结果z轴高度方向误差大约30-40cm,且同一次的数据为什么每次执行calibr_offline的结果会不同

2.标定时使用kalibr_tag是否所有码块都需要在视野内,且旋转幅度是否不能过大

3.能否提供,代码现在默认的laser和camera的外参坐标系

你好,我想问一下你这个标定不准确的问题解决了么,我也是标出来结果误差很大,根据标定板位姿的图像应该比较准确,问题应该在激光点数据有问题,但是感觉也没啥异常。

woshicver commented 2 years ago

请问,标定误差的问题有解决么,我也是标出来的误差很大

SquirminatorHotHead commented 2 years ago

请问,标定误差的问题有解决么,我也是标出来的误差很大

你好,这个问题也困扰我很久,最终算是解决了。 要提高calibration的精度,要从至少3个方面去入手:

  1. 相机内参的校正默认比较准确的情况下,你每一帧的image的质量需要提高,这样对于标定平面的估计会更准确。
  2. 激光雷达的数据,这一方面是有提高的空间的。你关注一下这一边你是否预处理了这些数据, 如果用原始数据,不做任何处理,可能会导致标定误差较大。
  3. pose set 的选取,这一点贺博已经援引Zhou Lipu的论文阐述了平行平面几乎等效这个问题 (实际选取位姿的时候,我个人经验是还是挺容易出现很多非常接近平行的平面的)。 位姿的选取可以参照贺博的小视频。 针对标定板,你只需要在 Pitch 跟 Yaw两个方向上转动。 这里要注意,标定板的法向量跟相机的夹角不宜过大,不然可能会导致标定平面的估计出现更多错误。

希望这些经验对你有用。

zhaqh-github commented 1 year ago

@SquirminatorHotHead 您好,感谢您的解答,请问能不能详细解释一下应该怎么预处理激光雷达数据。我在另外两点上已经尝试了,得到的结果有改善但还不是很精确。

SquirminatorHotHead commented 1 year ago

@SquirminatorHotHead 您好,感谢您的解答,请问能不能详细解释一下应该怎么预处理激光雷达数据。我在另外两点上已经尝试了,得到的结果有改善但还不是很精确。

预处理怎样的数据?可以发出来看一下么?