联合标定单目相机和imu,使用工具Kalibr

使用Kalibr工具标定单目相机和IMU的外参,操作过程和联合标定双目相机和IMU类似,以下介绍不同部分。

最后标定时所需要的相机参数由双目变成了单目,以下是配置文件的格式:

cam0:
  camera_model: pinhole
  distortion_coeffs: [-7.1295821564421172e-02, -4.3443376760623504e-03,-5.1875249882739520e-03,1.3588426034275964e-03]
  distortion_model: equidistant
  intrinsics: [5.3509541321021049e+02, 5.3512807716648979e+02, 6.4285236686543988e+02, 5.2015046295410457e+02]
  resolution: [1280, 1024]
  rostopic: /camera/image_right

在标定过程中出现了以下问题:

Extracting calibration target corners
  Progress 3 / 857 	 Time remaining: 38m 28s                 Process Process-3:
Traceback (most recent call last):
  File "/usr/lib/python2.7/multiprocessing/process.py", line 258, in _bootstrap
    self.run()
  File "/usr/lib/python2.7/multiprocessing/process.py", line 114, in run
    self._target(*self._args, **self._kwargs)
  File "/var/kalibr-build/src/kalibr/aslam_offline_calibration/kalibr/python/kalibr_common/TargetExtractor.py", line 24, in multicoreExtractionWrapper
    success, obs = detector.findTarget(stamp, np.array(image))
TypeError: Conversion is only valid for arrays with 1 or 2 dimensions. Argument has 3 dimensions
。。。。
    success, obs = detector.findTarget(stamp, np.array(image))
TypeError: Conversion is only valid for arrays with 1 or 2 dimensions. Argument has 3 dimensions
    success, obs = detector.findTarget(stamp, np.array(image))
TypeError: Conversion is only valid for arrays with 1 or 2 dimensions. Argument has 3 dimensions
 
[FATAL] [1595408077.066000]: No corners could be extracted for camera /camera/image_right! Check the calibration target configuration and dataset.

解决办法(在github lssues 中查到):

将ImageDatasetReader.py中117行img_data = np.array(self.CVB.imgmsg_to_cv(data))修改为
img_data = np.squeeze(np.array(self.CVB.imgmsg_to_cv2(data, "mono8")))
  • 1
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
相机IMU联合标定是一种常用的技术,用于将相机和惯性测量单元(IMU)的数据进行融合,以实现精确的定位和姿态估计。在这个过程中,我们需要确定相机IMU之间的外部参数(如旋转矩阵和平移向量),以及IMU的内部参数(如加速度计和陀螺仪的偏置)。以下是一个常见的相机IMU联合标定的步骤: 1. 数据采集:在进行标定之前,我们需要同时记录相机IMU的数据。这可以通过将相机IMU固定在一个刚性平台上,并进行一系列运动来实现。 2. 图像特征提取:从相机捕获的图像中提取特征点,例如角点或ORB特征点。这些特征点将用于之后的相机标定。 3. 相机标定使用采集到的图像数据,对相机进行标定,以获取内部参数(例如焦距、主点位置等)和外部参数(例如旋转矩阵和平移向量)。这可以使用常见的相机标定算法,如张正友标定法。 4. IMU预处理:对采集到的IMU数据进行预处理,包括去除噪声、对齐时间戳等操作。这有助于提高后续的联合标定精度。 5. 特征匹配:将IMU数据与图像特征进行匹配,以建立二者之间的对应关系。这可以通过使用IMU数据的角速度和线性加速度与特征点的运动进行配准。 6. 联合优化:使用非线性优化方法,如扩展卡尔曼滤波(EKF)或优化器,将相机IMU之间的外部参数进行联合优化。这可以通过最小化重投影误差来实现,即将图像特征投影到3D空间,并与IMU数据进行对比。 通过以上步骤,我们可以获得相机IMU之间的精确外部参数,从而实现精确的相机姿态估计和定位。这对于许多应用领域,如增强现实、机器人导航等都是非常重要的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值