Skip to content
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

Lib extration #33

Merged
merged 9 commits into from
Dec 4, 2017
Merged

Lib extration #33

merged 9 commits into from
Dec 4, 2017

Commits on Dec 1, 2017

  1. Extracted scan registration component into classes.

    * Extracted common scan registration logic into a ScanRegistration base class. This simplifies concrete implementations for different types of lidar sensors.
    * Extracted velodyne specific scan registration logic into VelodyneScanRegistration class.
    * Extracted remeining parts of main function into velodyne_scan_registration_node.cpp file.
    * Added struct for scan registration parameters.
    * Added struct for (accumulated) IMU states.
    * Created CircularBuffer class for holding the IMU state data history.
    * Moved some math functions from common.h to math_util.h.
    * Changed rotation functions to override input vector / point. Almost all rotations were performed on temporary data structures and then directly stored in their target data structure.
    
    Changes to the logic:
    * Calculate imuShiftFromStart and imuVelocityFromStart values only at the end of a sweep, as they are not used (more than once) inbetween.
    * Changed calculation of scan start and end indices, by using the individual ring cloud sizes.
    
    Bugfixes:
    * Fixed a copy & paste error in transformToStartIMU.
    
    New features:
    * All buffers within the scan registration components used during feature extration are now dynamic and automatically adapted during processing. Also, the buffer scopes - and with that their typical sizes - are reduced to their required minimum, to reduce the memory footprint. However, the number of scans per sweep in the VelodyneScanRegistration is still required to be 16, due to the scan ring mapping.
    * There exist two different modi: active and passtive. In active mode, the component works just like before. Passive mode is intended for offline processing of bag files and does not listen to topics nor publish any messages.
    StefanGlaser committed Dec 1, 2017
    Configuration menu
    Copy the full SHA
    40ac7a1 View commit details
    Browse the repository at this point in the history
  2. Extracted laser odometry component into own class.

    * Let transformToEnd transform a whole cloud at once instead of only one point, since it was only called in loops over whole clouds.
    * Reduced scopes of variables where possible.
    
    Changes to the logic:
    * Do not publish corner and surface clouds during initialization, as they are anyhow rejected without the corresponding full resolution cloud (which was not sent during initialization).
    
    New Features:
    * All buffers used during optimization are now dynamic and automatically adapted to the currently processed cloud sizes.
    * Again, there are two modis: active and passive. However, passive mode requires some further work with respect to result management.
    StefanGlaser committed Dec 1, 2017
    Configuration menu
    Copy the full SHA
    5fe0300 View commit details
    Browse the repository at this point in the history
  3. Extracted transform maintenance component into own class.

    No changes to the logic. Active / passive modi added, but passive mode needs further work to be usable.
    StefanGlaser committed Dec 1, 2017
    Configuration menu
    Copy the full SHA
    d4c0782 View commit details
    Browse the repository at this point in the history

Commits on Dec 2, 2017

  1. Removed active/passive modi again...

    ...as they may be confusing and it's not clear yet how the potential offline version is supposed to work.
    StefanGlaser committed Dec 2, 2017
    Configuration menu
    Copy the full SHA
    c44f0be View commit details
    Browse the repository at this point in the history
  2. Extracted laser mapping component into own class.

    * Moved code for pose optimization into own function.
    * Reduced scopes of variables where possible.
    
    No changes to the logic.
    
    This commit completes the extraction of the code into an object oriented library.
    StefanGlaser committed Dec 2, 2017
    Configuration menu
    Copy the full SHA
    f7457e7 View commit details
    Browse the repository at this point in the history

Commits on Dec 3, 2017

  1. Code and project cleanup.

    * Moved all class header files into include directory.
    * Moved Vector3, Angle and Twist class definitions from math_utils.h into own loam_types.h in include directory.
    * Added publish cloud message function to common.h to simplify publishing of cloud messages.
    * Made all point calculations / transformations in math_utils.h generic with respect to the pcl point type.
    StefanGlaser committed Dec 3, 2017
    Configuration menu
    Copy the full SHA
    aa9965d View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    55d90c4 View commit details
    Browse the repository at this point in the history

Commits on Dec 4, 2017

  1. Further code cleanup in scan registration components.

    * Replaced scan start and end indices vectors with one std::pair vector.
    * Removed _nScans variable from ScanRegistration class and replaced its usage with the size of the scan indices vector. This way feature extration will automatically run for all available scans.
    * Extracted neighbor marking on feature selection into own function.
    * Removed some duplicate code for IMU interpolation.
    * Split interpolation of IMU state and point transformation into two functions and store all relevant information needed for the transformation. This way, multi-laser lidars can use the same IMU interpolation for registering all laser measurements to a given point in time.
    * Removed point cloud getters.
    * Automatically generate IMU transformation information cloud when publishing the result.
    * Removed unnecessary shared pointer declaration of internal cloud buffers.
    * Some minor simplifications.
    StefanGlaser committed Dec 4, 2017
    1 Configuration menu
    Copy the full SHA
    44fb3e4 View commit details
    Browse the repository at this point in the history
  2. Some further project cleanup.

    * Moved Angle, Vector3 and Twist classes into separate header files and removed loam_types.h again.
    StefanGlaser committed Dec 4, 2017
    Configuration menu
    Copy the full SHA
    3ca101a View commit details
    Browse the repository at this point in the history