- ROS1 Noetic
- Ceres 2.1.0
- OpenCV 4
sudo apt install libdw-dev
mkdir -p ws_fisheye_calib_tools/src
cd ws_fisheye_calib_tools/src
git clone https://github.com/Derkai52/FishEye-Calib-Tools.git
cd .. && catkin_make
将相机放置在固定位置,手持棋盘格标定板,执行:
roslaunch calib_image_saver single_collect_image.launch
将标定板在相机视野内进行移动(包含上下左右、近远、倾角等状态),实时采集的数据会出现在左侧的投影点中,当黄色的投影点尽可能覆盖完整个黑色区域后(如下图所示),即可手动关闭程序结束数据采集。图像数据存储路径: launch 文件中的 image_path。
填入对应参数并执行:
rosrun camera_model Calibration --camera-name mycamera --input /home/xxx/ws_fisheye_calib_tools/src/fisheye_calib_tools/calib_image_saver/calibration_example_data -w 8 -h 6 --size 400 --camera-model myfisheye --opencv true
参数表 | |
---|---|
--camera-name | 相机自定义名称(最后生成标定文件也以这个开头) |
--input | 读取标定图像的路径 |
-w | 棋盘格在宽方向的角点数(不含边界的) |
-h | 棋盘格在高方向的角点数(不含边界的) |
--size | 棋盘格单个格的边长(mm) |
--camera-model | 相机模型类型(Pinhole、Cata、Equidistant、Scaramuzza、Polynomial(默认)、FOV) |
-opencv | 使用OpenCV的检测器(默认) |
等待片刻,标定结果 <相机名称>_camera_calib.yaml
会保存到项目根目录,结果图如下所示:
设置相机标定配置文件的读取路径 ,执行:
roslaunch fisheye_flattener flattener.launch
如果有黑边,就调整launch文件里面的FOV参数即可消除。