GithubHelp home page GithubHelp logo

camodomcalibratool's Introduction

CAM_ODO_CALIB

calibrate the internel parameters and extrinsec parameters between camera and odometer

1. Prerequisites

1.1 Ubuntu and ROS

Ubuntu 64-bit 16.04 or 18.04. ROS Kinetic or Melodic. ROS Installation

1.2. Ceres Solver

Follow Ceres Installation.

1.3. Others

OpenCV 3.3 , Eigen3

2. Build

Clone the repository and catkin_make:

    cd ~/catkin_ws/src
    git clone xxx
    cd ../
    catkin_make
    source ~/catkin_ws/devel/setup.bash

(if you fail in this step, try to find another computer with clean system or reinstall Ubuntu and ROS)

3. Attention

3.1 record your testBag

record the rosbag with image and odom datas.

3.2 Configuration file

Write a config file for your rosbag.

3.3 Remind

You need to change the "wheel_callback" function for your odo input; You need to remind the coordinate directions relations between camera and odometer.the struct "scan_match_results" in "data_selection.cpp" ,"axis" in main_node.cpp , "M" matrix in solveQyx.cpp may need to be changed.

4. Calibration

    roslaunch cam_odo_cal S800.launch
    rosbag play xxx.bag

5. Authors

  1. Dongfu ZHU, Research Intern at Megvii, will graduate from Huazhong University of Science and Technology with a bachelor degree in July 2020, contact with (dongfuzhu at hust dot edu dot cn).

  2. Zheng CHAI, Researcher at Megvii-R-SLAM, if you have any question, please contact (icecc_sunny at 163 dot com)

6. References

Guo, C. X., Mirzaei, F. M., & Roumeliotis, S. I. (2012, May). An analytical least-squares solution to the odometer-camera extrinsic calibration problem. In 2012 IEEE International Conference on Robotics and Automation (pp. 3962-3968). IEEE.

Heng, L., Li, B., & Pollefeys, M. (2013, November). Camodocal: Automatic intrinsic and extrinsic calibration of a rig with multiple generic cameras and odometry. In 2013 IEEE/RSJ International Conference on Intelligent Robots and Systems (pp. 1793-1800). IEEE.

Censi, Andrea, Franchi, Antonio, Marchionni, Luca & Oriolo, Giuseppe (2013). Simultaneous calibration of odometry and sensor parameters for mobile robots. IEEE Transactions on Robotics, 29, 475-492.

camodomcalibratool's People

Contributors

chaizheng2157 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

camodomcalibratool's Issues

只有摄像头离Apriltag标定板特别近的时候才能识别

我按照kalibr仓库里下载打印的A0大小的Apriltag的标定板,但是为什么只有摄像头离标定板特别近(大概30cm)才可以识别到呢?摄像头是D455。这样的话小车就没法再做充分的运动了。发现这个问题是看到程序报段错误
data_selection::startPosAlign data_selection.cpp:210
初步原因是camDatas里没有值,这个好像和没有识别到标定板有关系。

A few questions

Hello, I have a few questions about the implementation.

In SolveConstraintqyx, can you provide the mathematical details of this function? I understand that the constraints are being used as per the referenced paper. I cannot see how the transformations to the form ax^2+ bx + c = 0 is being done

Thanks

Angle Axis inversion

Can you explain why the following is done when computing the change in angle for the camera frame?

Eigen::AngleAxisd rotation_vector(q_cl);
Eigen::Vector3d axis = rotation_vector.axis();
double deltaTheta_cl = rotation_vector.angle();  
if(axis(1)>0)
{
  deltaTheta_cl *= -1;
  axis *= -1;
} 

What does it mean that axis(1) > 0, and why should you multiply by -1?

您好, 關於工业内参,转换成了左右轮速的問題

hii,您好
当我改变wheelodomaCallback中的轮胎的工业内参(rl = rr = 0.035, baseline = 0.2)
则得到以下结果

image

不过当替换rr = rl = 0.1(默认) baseline = 0.5 时,则校正看似正常

可以請作者提供bag文件,想針對姿勢的姿態對應做一個參考,
對於相機的座標(知乎的說明中)與目前校正板上面Twc有些疑問,可根據作者提供的範例bag來了解感謝

代码编写是否有误??

solver.cpp: 328行,
//int colnum = eigenvalues.minCoeff(); Eigen::VectorXd v0 = eigenvectors.col(eigenvalues.minCoeff());// min value
应更改为:
int col ; eigenvalues.minCoeff(&col); Eigen::VectorXd v0 = eigenvectors.col(col);// 最小特征值对应的特征向量
@chaizheng2157

代码解读

将约束条件xy = -zw,转换为ax^2+bx+c=0是怎样转换的?

无法检测到Apriltag

您好!
非常感谢您的工作!我在使用的时候,相机模型是pinhole,采集了链接里给的Apriltag图像,但运行的时候程序检测不到Apriltag(p2ds.num = 0),请问是哪里出了问题呢?

谢谢!

可以提供测试数据吗?

如果方便的话可以提供一两个bag包和最后的标定结果真值?
我看在知乎里已经有非常详细的结果分析了。那可以把对应的bag传上来吗?
谢谢您!

Matrix Condition

If the condition value of the matrix is high when trying to compute J21 and J22, what advice do you have? I am looking into preconditioning, would you have any insight on this?

在播放数据后报错

hngl@hngl-ThinkPad-T440p:~/calibration/src/CamOdomCalibraTool$ roslaunch cam_odo_cal S800.launch
... logging to /home/hngl/.ros/log/08a128d4-0a17-11eb-be1b-5c514f7384e4/roslaunch-hngl-ThinkPad-T440p-11098.log
Checking log directory for disk usage. This may take a while.
Press Ctrl-C to interrupt
Done checking log file disk usage. Usage is <1GB.

started roslaunch server http://hngl-ThinkPad-T440p:44717/

SUMMARY

PARAMETERS

  • /rosdistro: melodic
  • /rosversion: 1.14.7

NODES
/
cam_odo_cal (cam_odo_cal/cam_odo_cal)

auto-starting new master
process[master]: started with pid [11108]
ROS_MASTER_URI=http://localhost:11311

setting /run_id to 08a128d4-0a17-11eb-be1b-5c514f7384e4
process[rosout-1]: started with pid [11119]
started core service [/rosout]
process[cam_odo_cal-2]: started with pid [11122]

images counts waiting for processing:
============ calibrating... ===============
[cam_odo_cal-2] process has died [pid 11122, exit code -11, cmd /home/hngl/calibration/devel/lib/cam_odo_cal/cam_odo_cal /home/hngl/calibration/src/CamOdomCalibraTool/config.yaml __name:=cam_odo_cal __log:=/home/hngl/.ros/log/08a128d4-0a17-11eb-be1b-5c514f7384e4/cam_odo_cal-2.log].
log file: /home/hngl/.ros/log/08a128d4-0a17-11eb-be1b-5c514f7384e4/cam_odo_cal-2*.log
^C[rosout-1] killing on exit
[master] killing on exit
shutting down processing monitor...
... shutting down processing monitor complete
done

Questions about the resulting transform

Hi and thank you for this package.

I am trying to use it to find the relative transform between the base of my robot (base_link frame, x axis forward, y axis left and z axis upward) and a camera mounted on top of it (camera_link frame x axis forward, y axis left and z axis upward). I managed to make it run but didn't obtained good results.

That's why there are some point I would like to confirm:

-the transformation (Rrc, trc) provided by the calibration designed the pose of the robot base with regard to the camera, or the pose of the camera with regard to the robot?

-the results are given considering the camera_link frame, or the camera_optical_frame frame (x right, y down and z forward)?

Calibration Result

Issue summary
使用一个标定好的相机和误差为2%的Odomtry测试标定:
1、虽然有标定结果,但是和实际相差挺大,原因尚且不知;
2、标定结果显示z值为0,所以这个标定其实是只标x/y/yawl吗?还是我的数据问题?
3、是否有官方标定数据集?或者能不能把具体的标定流程和需要注意的事项放在github上?

applicable to fisheye camera?

I read the source code which is applicable to pinhole camera, whereas it does not work for omnidirectional camera?

The source code contains the Scaramuzza model, however, the estimation code cannot detect apriltag captured by omnidirectional camera and it also does not include code to estimation 3d-2d correspondences captured by omnidirectional one.

KANNALA_BRANDT works for fisheye?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.