-
Notifications
You must be signed in to change notification settings - Fork 389
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Question regarding coordinate systems and determining the yaw angle from bearing #42
Comments
Hi, From this line: .# INFO: Reprojection error after triangulation: avg = The correct attitude quaternion should correspond to a yaw around the
On Mon, Oct 26, 2015 at 7:54 PM, Supannee Tanathong <
|
@hengli Here is what I got from my GPS. I have crossed check and the bearing from my GPS is ranged between [0-359] and is measured from North, and the positive goes in the east direction. Here, I got my yaw_angle as which for my data for Image 1, I got yaw_degree for 226 degree. Here is what my input for Event.dat for CamOdoCal. Please let me know if things are wrong with me. Or would it be possible for me to see part of your input for CamOdocal (Event.dat) file? If you are not comfortable, that's fine. Thank you very much for your help. 16 CAM 0 Front_1.jpg @Hu20130201 |
Hi, Can you provide a plot of the GPS positions and bearing angles so that I Also, is the GPS data time-synchronized to the camera data? Thanks, On Wed, Oct 28, 2015 at 12:39 AM, Supannee Tanathong <
|
@hengli Thank you for your response. Here is what the plot of GPS data input to CamOdoCal. Plot of bearing angle and computed yaw angle is shown here. My bearing angle obtained from GPS is measured from North (0 is towards North, 90 is towards east). So, I determined my yaw angle as double yaw_degree = 360.0 - bearing_degree More plot for yaw angle Also, is the GPS data time-synchronized to the camera data? Could you please advise if there should be anything wrong with my data? the yaw angle and the trajectory of the collected data? Thank you very much for your help. |
The trajectory and bearing plots look ok to me, though I have never tested One thing I could recommend to aid debugging is to triangulate the feature
On Thu, Nov 5, 2015 at 9:47 PM, Supannee Tanathong <notifications@github.com
|
@hengli |
@hengli Thanks very much. I'm not sure if that's the case. Using a dataset from one camera, the program could finish its processing without no problem. I'm setting a clean ubuntu to run CamOdoCal on this. The reason the program broke at Stage 3 is due to its use of Surf GPU, while I have no GPU on my VirtualBox. I will keep you post once I have finished this. Thanks. Cheers, |
Hi, please allow me to answer your question. CamOdoCal is very easy to use. What you have to do is
The importance thing is that you have to make sure that you put things in the correct format and folder structure. Here is an example of my data structure: The GPS/INS data should be formatted correctly, please refer to my previous question here: I hope this help. |
@stanathong Is it the picture data continous frame picture, not keyfame picture? |
It's a sequence of images ordered by time. Thanks.
|
Hi Stanathong, Would it be possible to share your data to run the CamOdoCal. Dropbox is fine. Thanks alot. |
@ethcamera |
Hi Stanathong, May I know how to access you google drive! Thank you alot! |
@ethcamera if you write instructions please submit a pull request! I will be happy to merge it |
I think my question has been answered so close. |
@stanathong Thank you so much for considering my issue. |
Hi! Thank you for this rep! I do not understand my extrinsic calibration results. Can you help me, please? I have only one front camera, it looks exactly forward, I use syntetic dataset. And I suppose, that result extrinsic matrix must be almost identity, because yaw pitch roll are zeros. But the result is different. What extrinsic matrix must be in my case? Not identity? |
@Unlingius my result is also not good. But When I use the simulation data, I can get the exact result! Do you solved your problem? If you can help me, I'm very appreciated! Thank you |
@yuyadanyadan I try to execute several times on the same simulation dataset and get results angles +- 1 degree. But the main problem is coordinate system understanding. I looked source: |
Hi Unlingius |
@stanathong I would be interested in your google drive link as well |
@stanathong |
@stanathong @yuyadanyadan . |
Hi,if you got the data, can you share it with me? Thank you very much! |
@stanathong @yuyadanyadan @Chatoyant19 @wk199 |
@stanathong @yuyadanyadan @Chatoyant19 @wk199 @kunnalparihar Hi, if you got the data, can you also share with me? Thank you very much! |
@stanathong |
@stanathong |
@stanathong |
@stanathong |
Hi, I would really appreciate your help in answering my questions below. I have been struggling with this for over three weeks now.
(1) I have a 5-camera mounted on a van with a GPS receiver (only 3 is used in the testing with CamOdoCal). I obtained position (Lat/Lon) and bearing angle from GPS. As I don't have an IMU, I computed the yaw angle which tells the orientation around the Z axis.
Here, I assume the coordinate system used in CamOdoCal is ENU, and the vehicle's positive x-axis points toward the direction of movement, positive y-axis on the the vehicle left. I wonder if my assumption is right, please help confirm.
In the testing to perform extrinsic calibration for multi-camera, we only made the yaw motion, ensuring that the ground is flat (making no pitch and roll).
(2) Using those yaw angles converted to rotation matrix then quaternion, and input into CamOdoCal in the form of
[timestamp] CAM [camera_id] [image filename]
[timestamp] IMU [quaternion x] [quaternion y] [quaternion z] [quaternion w]
[timestamp] GPS [latitude] [longitude] [alt]
and, despite changing some setting such as detector and descriptor, I still couldn't have CamOdoCal run past stage 3 of CamaeraRigBA::Run.
[PASSED] stage 1 - triangulate 3D points with feature correspondences from mono VO and run BA
[PASSED ] stage 2 - run robust pose graph SLAM and find inlier 2D-3D correspondences from loop closures
[PROGRAM STOPPED HERE] stage 3 - find local inter-camera 3D-3D correspondences
with the following log messages: (no crashed)
Please can you suggest what should I do to make it work with my system. Your help is really much appreciated. Thank you very much.
.......
Ceres Solver Report: Iterations: 31, Initial cost: 2.702882e+01, Final cost: 1.206417e+01, Termination: FUNCTION_TOLERANCE.
.# INFO: After refinement:
H_cam_odo =
0.693116 0.168301 0.700903 -0.100646
-0.144071 0.985086 -0.0940688 0.325688
-0.706282 -0.0357792 0.707026 0
0 0 0 1
scales =
-0.0966268
.#. INFO: Calibrating odometry - camera 2...
Rotation:
0.693116 0.168301 0.700903
-0.144071 0.985086 -0.0940688
-0.706282 -0.0357792 0.707026
Translation:
-0.100646 0.325688 0
Ceres Solver Report: Iterations: 25, Initial cost: 1.799722e+01, Final cost: 1.064531e+01, Termination: FUNCTION_TOLERANCE.
.# INFO: After refinement:
H_cam_odo =
0.713364 -0.280516 -0.642202 -0.113423
0.0840694 0.944029 -0.31897 0.294703
0.695733 0.173552 0.697019 0
0 0 0 1
scales =
0.0699959
.# INFO: Calibrating odometry - camera 1...
Rotation:
0.713364 -0.280516 -0.642202
0.0840694 0.944029 -0.31897
0.695733 0.173552 0.697019
Translation:
-0.113423 0.294703 0
Ceres Solver Report: Iterations: 75, Initial cost: 2.484698e+01, Final cost: 1.217647e+01, Termination: FUNCTION_TOLERANCE.
.# INFO: After refinement:
H_cam_odo =
0.0996435 -0.98357 0.150533 -0.111327
0.710327 -0.0356262 -0.702969 0.349939
0.696783 0.176974 0.695107 0
0 0 0 1
scales =
0.0813187
.# INFO: Calibrating odometry - camera 0...
Rotation:
0.0996435 -0.98357 0.150533
0.710327 -0.0356262 -0.702969
0.696783 0.176974 0.695107
Translation:
-0.111327 0.349939 0
.# INFO: Reprojection error for camera 2: avg = 0.516288 px | max = 801.914 px
.# INFO: Reprojection error for camera 0: avg = 0.565628 px | max = 469.029 px
.# INFO: Reprojection error for camera 1: avg = 0.304846 px | max = 84.1896 px
.# INFO: Completed camera-odometry calibration for all cameras.
.# INFO: Saving intermediate data...
Done. Took 24.46s.
.# INFO: Running camera rig calibration.
.# INFO: # segments = 1
.# INFO: Segment 0: # frame sets = 59
.# INFO: Reprojection error: avg = 0.45 px | max = 493.62 px | # obs = 389194
.# INFO: Triangulating feature correspondences...
.# INFO: Reprojection error after triangulation: avg = 9400363031163346944.00 px | max = 1178337959001900481249280.00 px | # obs = 269012
.# INFO: # 3D scene points: 101400
.# INFO: Checking the validity of the graph...
.# INFO: Finished checking the validity of the graph.
.# INFO: Reprojection error after pruning: avg = 632419244318232832.00 px | max = 146216321810127040544768.00 px | # obs = 245574
.# INFO: # 3D scene points: 97063
.# INFO: Running BA on odometry data...
.# INFO: Done.
.# INFO: Reprojection error after BA (odometry): avg = 45.00 px | max = 10016.56 px | # obs = 233509
.# INFO: # 3D scene points: 92924
.# INFO: Running robust pose graph optimization...
.# INFO: Building odometry edges...
.# INFO: Built 58 odometry edges.
.# INFO: Building loop closure edges...
.# INFO: Built 0 loop closure edges.
Ceres Solver Report: Iterations: 0, Initial cost: 2.572128e-31, Final cost: 2.572128e-31, Termination: PARAMETER_TOLERANCE.
.# INFO: # inlier 2D-3D correspondences: 0
.# INFO: Merged 0 3D scene points.
.# INFO: Running BA on odometry data...
.# INFO: Reprojection error after robust pose-graph optimization: avg = 43.25 px | max = 4145.38 px | # obs = 229033
.# INFO: # 3D scene points: 90947
.# INFO: Finding inter-map 3D-3D correspondences...
.# INFO: Entering frame set node 0-0 [ 1 0 1 ]
The text was updated successfully, but these errors were encountered: