Skip to content

Commit c520441

Browse files
author
yanguohang
committed
modify calibration documents
1 parent fd66541 commit c520441

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

46 files changed

+1203
-544
lines changed

README.md

+14-14
Original file line numberDiff line numberDiff line change
@@ -4,33 +4,33 @@ SensorsCalibration is a simple calibration toolbox and open source project, main
44

55
## Introduction
66

7-
Sensor calibration is the foundation block of any autonomous system and its constituent sensors and must be performed correctly before sensor fusion may be implemented. Precise calibrations are vital for further processing steps, such as sensor fusion and implementation of algorithms for obstacle detection, localization and mapping, and control. Further, sensor fusion is one of the essential tasks in autonomous driving applications that fuses information obtained from multiple sensors to reduce the uncertainties compared to when sensors are used individually. To solve the problem of sensor calibration for autonomous vehicles, we provide a sensors calibration toolbox. The calibration toolbox can be used to calibrate sensors such as IMU, Lidar, Camera, and Radar.
7+
Sensor calibration is the foundation block of any autonomous system and its constituent sensors and must be performed correctly before sensor fusion may be implemented. Precise calibrations are vital for further processing steps, such as sensor fusion and implementation of algorithms for obstacle detection, localization and mapping, and control. Further, sensor fusion is one of the essential tasks in autonomous driving applications that fuses information obtained from multiple sensors to reduce the uncertainties compared to when sensors are used individually. To solve the problem of sensor calibration for autonomous vehicles, we provide a sensors calibration toolbox. The calibration toolbox can be used to calibrate sensors such as **IMU, Lidar, Camera, and Radar**.
88

99
### Sensors calibration
1010
This calibration toolbox provides some calibration tools based on road scenes. The specific contents are as follows. If you want to use one of the calibration tools in the list below, you can click the use link to enter the instruction page.
1111

1212
| calibration param |calibration type| calibration method | mannual calibration | auto calibration | usage |
1313
| :--------------: |:--------------:| :------------: | :--------------: | :------------: | :------------: |
1414
| camera intrinsice| intrinsic | target-based | | ✔ |[camera intrinsic](camera_intrinsic/README.md)|
15-
| imu heading | extrinsic | target-less | | ✔ ||
16-
| lidar2imu | extrinsic | target-less | ✔ | ✔ ||
17-
| lidar2camera | extrinsic | target-less | ✔ | ✔ ||
18-
| lidar2lidar | extrinsic | target-less | ✔ | ✔ ||
19-
| radar2camera | extrinsic | target-less | ✔ | ||
20-
| radar2lidar | extrinsic | target-less | ✔ | ||
15+
| imu heading | extrinsic | target-less | | ✔ |[imu heaidng](imu_heading/README.md)|
16+
| lidar2imu | extrinsic | target-less | ✔ | ✔ |[lidar2imu](lidar2imu/README.md)|
17+
| lidar2camera | extrinsic | target-less | ✔ | ✔ |[lidar2camera](lidar2camera/README.md)|
18+
| lidar2lidar | extrinsic | target-less | ✔ | ✔ |[lidar2lidar](lidar2lidar/README.md)|
19+
| radar2camera | extrinsic | target-less | ✔ | |[radar2camera](radar2camera/README.md)|
20+
| radar2lidar | extrinsic | target-less | ✔ | |[radar2lidar](radar2lidar/README.md)|
2121

2222

2323
### Factory calibration
2424
At the same time, the calibration toolbox also provides some factory calibration tools.
2525

26-
| calibration board type | calibration sensor | calibration board pattern | remove opencv | auto calibration | link |
26+
| calibration board type | calibration sensor | calibration board pattern | remove opencv | auto calibration | usage |
2727
| :--------------: |:--------------:| :------------: | :--------------: | :------------: | :------------: |
28-
| chessboard | camera | | ✔ | ✔ ||
29-
| circle board | camera | | ✔ | ✔ ||
30-
| vertical board | camera | | ✔ | ✔ ||
31-
| aruco marker board | camera | | ✔ | ✔ ||
32-
| apriltag board | camera | | ✔ | ✔ ||
33-
| round hole board | camera and lidar | | ✔ | ✔ ||
28+
| chessboard | camera | | ✔ | ✔ |[factory calib](factory_calib/README.md)|
29+
| circle board | camera | | ✔ | ✔ |[factory calib](factory_calib/README.md)|
30+
| vertical board | camera | | ✔ | ✔ |[factory calib](factory_calib/README.md)|
31+
| aruco marker board | camera | | ✔ | ✔ |[factory calib](factory_calib/README.md)|
32+
| apriltag board | camera | | ✔ | ✔ |[factory calib](factory_calib/README.md)|
33+
| round hole board | camera and lidar | | ✔ | ✔ |[factory calib](factory_calib/README.md)|
3434

3535
## Related paper
3636
Related paper available on arxiv:

camera_intrinsic/README.md

+16
Original file line numberDiff line numberDiff line change
@@ -50,3 +50,19 @@ run command:
5050
- **Intrinsic Calibration:** Program will automatically run intrinsic calibration. Corner-detect result will be displayed. All input calibration images will be undistorted and save to `<calibration_image_dir>/undistort/` dir.
5151

5252
- **Distortion Evaluation:** Sampled points of original and undistorted images will be displayed. Undistorted distortion_image will be save to `<output_dir>`.
53+
54+
## Citation
55+
This distortion evaluation code is based on the research below:
56+
```
57+
@article{tang2012high,
58+
title={High-precision camera distortion measurements with a “calibration harp”},
59+
author={Tang, Zhongwei and von Gioi, Rafael Grompone and Monasse, Pascal and Morel, Jean-Michel},
60+
journal={JOSA A},
61+
volume={29},
62+
number={10},
63+
pages={2134--2143},
64+
year={2012},
65+
publisher={Optical Society of America}
66+
}
67+
68+
```

factory_calib/README.md

+52
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
## Introduction
2+
3+
This is a project for intrinsic calibration and evalution.
4+
5+
It mainly includes two part: intrinsic calibration, distortion measurement.
6+
7+
## Prerequisites
8+
9+
- Cmake
10+
- opencv 2.4
11+
- eigen 3
12+
13+
## Compile
14+
Compile in their respective folders
15+
16+
```shell
17+
# mkdir build
18+
mkdir -p build && cd build
19+
# build
20+
cmake .. && make
21+
```
22+
23+
## Input data
24+
- <calibration_image_dir>: contains only seleted chessboard calibration image
25+
- <distortion_image_path>: distortion harp image
26+
27+
## Calibration targets
28+
29+
Camera intrinsic calibration board, size 900 * 1000 mm, each grid size 100 * 100 mm
30+
31+
<img src="./images/board2.jpg" width="20%" height="20%" alt="checkerboard" div align=center /><br>
32+
33+
Camera intrinsic calibration board, size 900 * 1000 mm, each grid size 50 * 50 mm
34+
35+
<img src="./images/board1.jpg" width="20%" height="20%" alt="checkerboard" div align=center /><br>
36+
37+
Camera distortion measurement board, size 900 * 1000 mm
38+
39+
<img src="./images/board3.jpg" width="20%" height="20%" alt="distortion" div align=center /><br>
40+
41+
## Run
42+
run command:
43+
```shell
44+
# run intrinsic calibration
45+
./bin/run_intrinsic_calibration <calibration_image_dir>
46+
# run distortion measurement
47+
./bin/run_distortion_measure <distortion_image_path>
48+
```
49+
50+
- **Intrinsic Calibration:** Program will automatically run intrinsic calibration. Corner-detect result will be displayed. All input calibration images will be undistorted and save to `<calibration_image_dir>/undistort/` dir.
51+
52+
- **Distortion Evaluation:** Sampled points of original and undistorted images will be displayed. Undistorted distortion_image will be save to `<output_dir>`.

imu_heading/README.md

+36
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
## Introduction
2+
3+
This is a project for imu heading angle calibration and evalution.
4+
5+
<img src="./images/imu_heading.png" width="20%" height="20%" alt="checkerboard" div align=center /><br>
6+
7+
## Prerequisites
8+
9+
- Cmake
10+
- eigen 3
11+
12+
## Compile
13+
Compile in their respective folders
14+
15+
```shell
16+
# mkdir build
17+
mkdir -p build && cd build
18+
# build
19+
cmake .. && make
20+
```
21+
22+
## Calibration data collection
23+
24+
According to the figure below for data collection, the calibration vehicle records IMU and GPS data in a straight line.
25+
26+
<img src="./images/data_collect.png" width="20%" height="20%" alt="checkerboard" div align=center /><br>
27+
28+
## Run
29+
run command:
30+
```shell
31+
# run imu heading calibration
32+
./bin/run_imu_heading method_id <data_dir>
33+
```
34+
- **Imu heading calibration:** The imu heading angle is obtained by the registration calculation of GPS trajectory and imu data.
35+
36+
- **Imu heading evaluation:** Speed projection verification of imu through the calibrated heading angle of imu.

imu_heading/auto_calib/CMakeLists.txt

+1-2
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ set(CMAKE_CXX_FLAGS "-std=c++11 -g -Wall")
44
find_package(PCL REQUIRED)
55
find_package(Boost REQUIRED system)
66

7-
include_directories(${PCL_INCLUDE_DIRS})
87
include_directories(${EIGEN_ROOT})
98
include_directories(${PROJECT_SOURCE_DIR}/include)
109
include_directories(${PROJECT_SOURCE_DIR}/src)
@@ -15,7 +14,7 @@ set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/bin)
1514

1615
file(GLOB_RECURSE PARSER_PATH src/*.cpp)
1716
add_library(${PROJECT_NAME} STATIC ${PARSER_PATH})
18-
target_link_libraries(${PROJECT_NAME} libjsoncpp.a ${PCL_LIBRARIES} ${Boost_SYSTEM_LIBRARY})
17+
target_link_libraries(${PROJECT_NAME} libjsoncpp.a ${Boost_SYSTEM_LIBRARY})
1918

2019
add_executable(run_imu_heading src/run_imu_heading.cpp )
2120
target_link_libraries(run_imu_heading ${PROJECT_NAME})
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
roll_offset_degree,pitch_offset_degree,yaw_offset_degree,roll_offset_rad,pitch_offset_rad,yaw_offset_rad
2-
0.000000,0.000000,0.303795,0.000000,0.000000,0.005302
2+
-0.574228,0.310852,0.430412,-0.010022,0.005425,0.007512

imu_heading/auto_calib/include/imu_heading.hpp

+4-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
/*
2-
* Copyright (C) 2020 by SenseTime Group Limited. All rights reserved.
3-
* Liu Zhuochun <[email protected]>
2+
* Copyright (C) 2021 by Autonomous Driving Group, Shanghai AI Laboratory
3+
* Limited. All rights reserved.
4+
* Yan Guohang <[email protected]>
5+
* Liu Zhuochun <[email protected]>
46
*/
57

68
#pragma once

imu_heading/auto_calib/src/imu_heading.cpp

+4-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
/*
2-
* Copyright (C) 2020 by SenseTime Group Limited. All rights reserved.
3-
* Liu Zhuochun <[email protected]>
2+
* Copyright (C) 2021 by Autonomous Driving Group, Shanghai AI Laboratory
3+
* Limited. All rights reserved.
4+
* Yan Guohang <[email protected]>
5+
* Liu Zhuochun <[email protected]>
46
*/
57
#include "imu_heading.hpp"
68

imu_heading/auto_calib/src/run_imu_heading.cpp

+5-4
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
/*
2-
* Copyright (C) 2020 by SenseTime Group Limited. All rights reserved.
3-
* Yan Guohang <[email protected]>
4-
* Liu Zhuochun <[email protected]>
2+
* Copyright (C) 2021 by Autonomous Driving Group, Shanghai AI Laboratory
3+
* Limited. All rights reserved.
4+
* Yan Guohang <[email protected]>
5+
* Liu Zhuochun <[email protected]>
56
*/
67

78
#include <dirent.h>
@@ -17,7 +18,7 @@ const char usage[] = "\t./bin/run_imu_heading method_id <data_dir>\n"
1718

1819
int main(int argc, char **argv) {
1920
if (argc < 3) {
20-
std::cout << argv[0] << usage;
21+
std::cout << usage;
2122
return 1;
2223
}
2324
int method_id = std::stod(argv[1]);

imu_heading/auto_calib/src/utils/GPS_time.cpp

+4-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
/*
2-
* Copyright (C) 2019 by SenseTime Group Limited. All rights reserved.
3-
* Li WenQiang <[email protected]>
2+
* Copyright (C) 2021 by Autonomous Driving Group, Shanghai AI Laboratory
3+
* Limited. All rights reserved.
4+
* Yan Guohang <[email protected]>
5+
* Liu Zhuochun <[email protected]>
46
*/
57

68
#include "time.h"

imu_heading/auto_calib/src/utils/GPS_time.h

+4-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
/*
2-
* Copyright (C) 2019 by SenseTime Group Limited. All rights reserved.
3-
* Li WenQiang <[email protected]>
2+
* Copyright (C) 2021 by Autonomous Driving Group, Shanghai AI Laboratory
3+
* Limited. All rights reserved.
4+
* Yan Guohang <[email protected]>
5+
* Liu Zhuochun <[email protected]>
46
*/
57

68
#pragma once

imu_heading/auto_calib/src/utils/Ransac_fitline.cpp

+4-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
/*
2-
* Copyright (C) 2020 by SenseTime Group Limited. All rights reserved.
3-
* Liu Zhuochun <[email protected]>
2+
* Copyright (C) 2021 by Autonomous Driving Group, Shanghai AI Laboratory
3+
* Limited. All rights reserved.
4+
* Yan Guohang <[email protected]>
5+
* Liu Zhuochun <[email protected]>
46
*/
57
#include "utils/Ransac_fitline.h"
68

imu_heading/auto_calib/src/utils/Ransac_fitline.h

+4-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
/*
2-
* Copyright (C) 2020 by SenseTime Group Limited. All rights reserved.
3-
* Liu Zhuochun <[email protected]>
2+
* Copyright (C) 2021 by Autonomous Driving Group, Shanghai AI Laboratory
3+
* Limited. All rights reserved.
4+
* Yan Guohang <[email protected]>
5+
* Liu Zhuochun <[email protected]>
46
*/
57
#pragma once
68

imu_heading/auto_calib/src/utils/common.h

+4-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
/*
2-
* Copyright (C) 2019 by SenseTime Group Limited. All rights reserved.
3-
* Li WenQiang <[email protected]>
2+
* Copyright (C) 2021 by Autonomous Driving Group, Shanghai AI Laboratory
3+
* Limited. All rights reserved.
4+
* Yan Guohang <[email protected]>
5+
* Liu Zhuochun <[email protected]>
46
*/
57
#pragma once
68

imu_heading/images/data_collect.png

31.1 KB
Loading

imu_heading/images/imu_heading.png

43.5 KB
Loading

0 commit comments

Comments
 (0)