All Projects → MegviiRobot → Camlasercalibratool

MegviiRobot / Camlasercalibratool

Licence: bsd-3-clause
Extrinsic Calibration of a Camera and 2d Laser

Projects that are alternatives of or similar to Camlasercalibratool

Evo
Python package for the evaluation of odometry and SLAM
Stars: ✭ 1,373 (+395.67%)
Mutual labels:  robotics, ros, slam
Se2lam
(ICRA 2019) Visual-Odometric On-SE(2) Localization and Mapping
Stars: ✭ 285 (+2.89%)
Mutual labels:  robotics, ros, slam
Orb slam 2 ros
A ROS implementation of ORB_SLAM2
Stars: ✭ 294 (+6.14%)
Mutual labels:  robotics, ros, slam
Awesome Robotic Tooling
Tooling for professional robotic development in C++ and Python with a touch of ROS, autonomous driving and aerospace.
Stars: ✭ 1,876 (+577.26%)
Mutual labels:  robotics, ros, slam
Se2clam
SE(2)-Constrained Localization and Mapping by Fusing Odometry and Vision (IEEE Transactions on Cybernetics 2019)
Stars: ✭ 116 (-58.12%)
Mutual labels:  robotics, ros, slam
direct lidar odometry
Direct LiDAR Odometry: Fast Localization with Dense Point Clouds
Stars: ✭ 202 (-27.08%)
Mutual labels:  robotics, ros, slam
Cleanit
Open-source Autonomy Software in Rust-lang with gRPC for the Roomba series robot vacuum cleaners. Under development.
Stars: ✭ 125 (-54.87%)
Mutual labels:  robotics, ros, slam
2019-UGRP-DPoom
2019 DGIST DPoom project under UGRP : SBC and RGB-D camera based full autonomous driving system for mobile robot with indoor SLAM
Stars: ✭ 35 (-87.36%)
Mutual labels:  robotics, ros, slam
ROS
ROS机器人操作系统 学习(写于2020年夏)
Stars: ✭ 102 (-63.18%)
Mutual labels:  ros, slam
Bonnet
Bonnet: An Open-Source Training and Deployment Framework for Semantic Segmentation in Robotics.
Stars: ✭ 274 (-1.08%)
Mutual labels:  robotics, ros
rosbots setup tools
Set up ROS, OpenCV and other ROSbots modules for your ROBbots robot
Stars: ✭ 97 (-64.98%)
Mutual labels:  robotics, ros
bht-ams-playerstage
Player/Stage SLAM
Stars: ✭ 35 (-87.36%)
Mutual labels:  robotics, slam
ROS-GPS
GPS Localization with ROS, OSM and rviz
Stars: ✭ 19 (-93.14%)
Mutual labels:  robotics, ros
Free gait
An Architecture for the Versatile Control of Legged Robots
Stars: ✭ 263 (-5.05%)
Mutual labels:  robotics, ros
trac ik
ROS 2 port of `trac_ik`, an alternative Inverse Kinematics solver to the popular inverse Jacobian methods in KDL.
Stars: ✭ 14 (-94.95%)
Mutual labels:  robotics, ros
FusionAD
An open source autonomous driving stack by San Jose State University Autonomous Driving Team
Stars: ✭ 30 (-89.17%)
Mutual labels:  robotics, ros
ROS-TCP-Connector
No description or website provided.
Stars: ✭ 123 (-55.6%)
Mutual labels:  robotics, ros
erwhi-hedgehog
Erwhi Hedgehog main repository
Stars: ✭ 31 (-88.81%)
Mutual labels:  robotics, ros
ndt localizer
This robot lcoalisation package for lidar-map based localisation using multi-sensor state estimation.
Stars: ✭ 32 (-88.45%)
Mutual labels:  robotics, slam
bio ik
MoveIt kinematics_base plugin based on particle optimization & GA
Stars: ✭ 104 (-62.45%)
Mutual labels:  robotics, ros

Camera Laser Calibration Tool

Build Status

标定相关的理论推导以及拓展知识请阅读知乎专栏文章:https://zhuanlan.zhihu.com/p/137501892

1. 介绍

这是一个基于 ROS 的单线激光和相机外参数自动标定代码。标定原理如下图所示,相机通过二维码估计标定板平面在相机坐标系下的平面方程,由于激光点云落在平面上,将点云通过激光坐标系到相机坐标系的外参数 $ T_{cl} $ 转换到相机坐标系,构建点到平面的距离作为误差,使用非线性最小二乘进行求解。 lasercamcal

2. 特征

  1. 支持多 April tag 格式。 可以选择多 apriltag 的标定板 ( kalibr_tag.pdf ) 或者自己打印一个 apriltag 做标定板(apriltag.pdf)。
  2. 支持多种相机模型radial-tangential (radtan) : (distortion_coeffs: [k1 k2 r1 r2]); equidistant (equi):distortion_coeffs: [k1 k2 k3 k4]). More info please visit kalibr website.
  3. 激光线自动检测,无须手标。会自动提取激光线中落在标定板上的激光点,前提是标定板在激光正前方 120 度范围内,并且激光前方 2m 范围内只会存在一个连续的直线线段,所以请你在空旷的地方采集数据,不然激光数据会提取错误。
  4. 利用标定板的边界约束,标定结果更加准确。这个是隐藏的功能,暂时未对外开放接口,需要你修改代码。

3. 编译方法

mkdir LaserCameraCal_ws
mkdir ../src
cd src
git clone https://github.com/MegviiRobot/CamLaserCalibraTool
cd ..
catkin_make -DCMAKE_BUILD_TYPE=Release

4. 运行

4.1 仿真数据

**强烈建议: **先用仿真数据试试这个标定系统,系统的可观性问题在仿真代码里都能找到验证,这样就能指导你如何采集数据。

cd LaserCameraCal_ws
source devel/setup.bash 
rosrun lasercamcal_ros simulation_lasercamcal_node

特别地,请仔细阅读 main/calibr_simulation.cpp ,修改数据的生成观察系统的可观性。

4.2 实际数据,运行前的准备

请配置好 config/calibra_config.yaml 文件,里面有相机模型参数,rosbag 数据包的名字和保存路径,相机模型以及标定板的尺寸和类型等等。 具体请参考对应的 config.yaml。

采集激光数据制作 rosbag,请将标定板放于激光和相机前方 0.3m ~ 1.5m 左右,充分运动标定板(各个轴,各个角度,各个距离都充分运动)。datacollect

4.3 先运行 kalibr 检测图像二维码

会把相机和标定板之间的姿态保存成一个 txt,用于后续标定。

cd LaserCameraCal_ws
source devel/setup.bash
roslaunch lasercamcal_ros kalibra_apriltag.launch 

4.4 再运行激光视觉外参数标定代码

会自动检测激光在标定板上的线段,并完成标定和保存结果。

roslaunch lasercamcal_ros calibra_offline.launch 

激光线条的自动获取如下图所示,其中红色部分为激光检测到的标定板线段,请注意保持激光前方是空旷区域:

detect

4.5 验证结果

roslaunch lasercamcal_ros debug.launch 
rosbag play data.bag

运行 debug 工具,看激光光条和图像是否对齐的比较好。 calibra

5. TODO

  1. 支持修改相机采样间隔??? 还是说采用自动判断信息熵?

6. Authors

  1. Yijia He, if you have any question, please contact heyijia_2013 at 163 dot com
  2. XiZhen Xiao
  3. Xiao Liu, his homepage

7. Ref:

2004, Qilong Zhang, Extrinsic Calibration of a Camera and Laser Range Finder (improves camera calibration).

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].