Closed mariusbruehlmeier closed 3 years ago
Test FAILed.
Test FAILed.
Test FAILed.
Test PASSed.
Test PASSed.
Test FAILed.
test this please
Test FAILed.
Test FAILed.
Test PASSed.
Test FAILed.
Test PASSed.
Test FAILed.
Test PASSed.
Test PASSed.
Test PASSed.
Test FAILed.
Test PASSed.
Test PASSed.
Test PASSed.
Test PASSed.
Test PASSed.
Test PASSed.
Test PASSed.
Test PASSed.
Test PASSed.
Hi, thanks for you pr to involve lidar features for higher precision and roubustness, have 2 question here:
Hi @hexdforward
Thanks for your interest in this PR.
The dataset belongs to ASL. I no longer work there and don't have access to the bag anymore. Maybe @floriantschopp can help you with this.
The work of this PR is my master thesis about LiDAR mapping. For the PR, I divided it into two parts.
"feature/lidar_features_bundle_adjustment" contains all the backend needed to expand maplab with LiDAR features, i.e. map optimization, new landmark types and some very simple loop closure. It assumes that you already have detected, described and tracked LiDAR features .
"feature/lidar_features_compelete_pipeline" is the complete code of my thesis. It includes my version of LiDAR feature detection, mapping and description by using a 2D image. It should with a bag and the calibration file. However, it is much less cleaned up than the branch that I want to merge in this PR.
Let me know if this was helpful and if you have any more questions.
Hi @mariusbruehlmeier, thank your reply so much. Still have few question:
@hexdforward
The whole work will be part of a publication at a later stage and therefore I, unfortunately, cannot share my work at this time.
The pipeline should be running with a data set as described in the general ROVIO & Maplab tutorials. The exact configs that I used are in this branch: https://github.com/ethz-asl/maplab/tree/feature/lidar_features_compelete_pipeline
Test FAILed.
Test FAILed.
Test FAILed.
Test FAILed.
Test FAILed.
Test FAILed.
Test FAILed.
Test FAILed.
Test FAILed.
Test FAILed.
Test FAILed.
Test FAILed.
Test FAILed.
Closing this now. Moved to a separate package.
Overview
This PR includes the parts of the LiDAR features pipeline that are run in postprocessing. This includes loop closure, bundle adjustment, and retriangulation. It does not include map building, feature extraction, feature tracking, or image generation. These parts are on the branch that contains the whole pipeline.
A short summary of the changes:
ceres_error_term: A new error term is defined and implemented for the LiDAR features. It is a Euclidean error between the position of the landmark in the map and the 3D measurement of the LiDAR. Generally, the added files are similar to the existing visual error term. Note, the only new Jacobian is
J_p_C_fi_wrt_p_C_I
, which is an Identity matrix (lidar-error-terms-inl.h l.126). All other Jacobians are derived from this matrix.map-optimization: A new function, AddLidarErrorTerm, that is very similar to AddVisualTerm. The new function gets called if there is 3D data (KeypointVectors) in the queried visual frame. Per default, this new error term is not added to the optimization. It can be added with either the command
optvi --ba_include_lidar=true
or the new commandoptvil
, which adds visual and LiDAR features.__aslam_cv__: The new visual frame includes additional channels for 3D measurements, 2D measurements, Track IDs and descriptors of LiDAR features. The PR for this is here.
landmark-triangulation: Added new command
retriangulate_lidar_landmarks
/rtll
to retriangulate LiDAR features.__loop_closure__: If the camera of the loop closure is a LiDAR camera, then the loop closure will use a 3D RANSAC to check for geometric consistency. This RANSAC is in aslam_cv. Otherwise, the loop closure engine is the same as for visual mapping. Note, that at the moment only frames that contain either visual or LiDAR data can be loop-closed.
Testing
A dataset of LiDAR features can be found here. It contains visual frames with only LiDAR data and was generated by running the complete pipeline and launched with
roslaunch maplab_node maplab_node_rovioli_lidar_features.launch
Possible tests:
rtll
with different LiDAR landmark quality settingsoptvil --ba_include_visual=false
, if you run justoptvil
, it will try to add visual constraints to the optimization problem and give a warning as there are none. Note that it takes much more iterations (in this data set: ca. 173 iterations) to converge compared to pure visual.lc
ellq
There is also a second data set, which is a vi-map with frames that contain only visual data. It should be possible to use this and any other dataset with the new LiDAR features.
Open Questions
Loop closure: Works poorly and is more specific to my thesis than the other parts. Does it belong here?
Map building: Still in the other branch. Should it be here?
Results
A visualization of the bundle adjustment is shown here: