1. 19 Aug, 2021 15 commits
    • Julia Sanchez's avatar
      [feat] Add backend · d3aaa1dc
      Julia Sanchez authored
      d3aaa1dc
    • Julia Sanchez's avatar
      [refact] Add main sensor state structure · f16be619
      Julia Sanchez authored
      * For now we just had a front end and a main thread. If we want to add a 
      backend, a new external pose info must be received with pose covariance 
      and time.
      
      * A new SensorState structure is added in SensorConstraint.h file
      
      * The State structure is transformed to LidarState and is derived from 
      SensorState
      f16be619
    • Julia Sanchez's avatar
      [refact][feat] Adapt sensor data reception to multithreading · 19e69588
      Julia Sanchez authored
      * Before this commit, external sensor info could only be used in post 
      processing, loading a csv file containing this info
      
      * External sensor data can now be used in front end directly
      
      * These data would be received by the main thread and added to the 
      sensor managers
      
      * Sensor managers now contain deque of measures (instead of vectors)
      
      * The constraints computation are mutex protected against measures 
      external modifications (Adding)
      
      * Documentation is updated and completed
      
      * WARNING : only an interpolation is performed between external sensor 
      measurements to find the mesure corresponding to Lidar Frame timestamp 
      (no extrapolation). It supposes external sensors have a frequency higher 
      than the Lidar. Other measures in between two Lidar timestamps are not 
      used.
      19e69588
    • Julia Sanchez's avatar
      [fix] fix Compilation C++11 · d8738b36
      Julia Sanchez authored
      * C++11 does not support correctly the hash maps with enum types
      
      * The corresponding hash type is added to the definition
      
      * It seems weird that it works for Keypoint enum though...
      d8738b36
    • Julia Sanchez's avatar
      e26dd8b9
    • Julia Sanchez's avatar
      [feat] Add a SLAM internal output manager · 0d8e915c
      Julia Sanchez authored
      * Outputs were always computed whether they were published or not by the wrappings
      
      * A map member is added to SLAM lib to internally not compute useless
      features
      
      * In PV, the map is set to correspond to filter output and the advance
      settings features
      
      * In ROS it is directly parameterizable through config file. Warning :
      it is still computed even if no one is listening to the topic, the user
      has to deal with the config file
      0d8e915c
    • Julia Sanchez's avatar
      [refact][fix] Add a time check in CheckFrames() · b39bd70c
      Julia Sanchez authored
      * A new member TimeDependentProcessesEnabled to enable/disable motion
      model based ego-motion + undistortion + velocity/acceleration estimation
      
      * This new boolean value is filled in CheckFrames()
      
      * This value is stored in the state to be used after to estimate
      velocity
      
      * The velocity is estimated only if the times in the window are valid
      b39bd70c
    • Julia Sanchez's avatar
      [fix] Fix PV freezing · 9f07ba48
      Julia Sanchez authored
      * In Lidarview, all processes (frame processing and publishing) need to
      be done in RequestDatafunction.
      
      * With this new multiprocessing, the local SLAM loop can return nothing
      (lack of keypoints, time problems...). If the publiser thread is the
      main thread, it will be locked indefinitly, waiting for results.
      
      * This commit allows to publish a result from the localSLAM thread even
      when the SLAM computation has not been performed and so, to let the
      request data keep going.
      9f07ba48
    • Julia Sanchez's avatar
      [feat][PV] Adapt Lidarview wrapping to multithreading · dd74abef
      Julia Sanchez authored and Julia Sanchez's avatar Julia Sanchez committed
      * Adapt RequestData function :
         * Add a new frame in waiting list,
         * wait for result,
         * pop and publish it.
      
      * All Slam getters and members are replaced with the publishable object
      data
      dd74abef
    • Julia Sanchez's avatar
      [feat][ROS] Adapt Ros wrapping to multithreading · 61ac8bda
      Julia Sanchez authored and Julia Sanchez's avatar Julia Sanchez committed
      * Adapt functions using transform objects
      
      * Add publisher thread which is launched in node constructor. This thread :
         * waits for a new data in publishable list,
         * pops it and publishes it
      
      * Add destructor to stop Slam process and join publisher thread
      
      * All Slam getters and members are replaced with the publishable object data
      
      * Adapt Logging parameter
      61ac8bda
    • Julia Sanchez's avatar
      [feat] Multithreading · 7833f3d0
      Julia Sanchez authored and Julia Sanchez's avatar Julia Sanchez committed
      * A local Slam thread is launched in Slam constructor to pop and process
      frames. This thread calls the new function GetAndProcessFrames().
      
      * A destructor is added to free all list waiting threads and to wait for
      the front end thread to finish frame processing and to join.
      
      * A stop function can do the same in order to join a potential external
      publisher thread before removing slam object.
      
      * AddFrame and AddFrames functions are renamed ProcessFrame and ProcessFrames to avoid confusion with the "adding" terminology with new waiting lists.
      
      * The new logged data + published data structures are filled in
      LogCurrentFrameState and stored in shared lists. All other log** objects
      are removed and dangerous getters/setters are removed or privatized.
      
      * The transform object is changed to only process a transform. It will
      still be useful in ROS.
      
      * PreviousTworld is removed and all processes which needs to access
      previous transforms now copy elements of logged data list.
      
      * The wrapping are not updated at this step.
      
      * 2 Mutexes are added :
         1. Protect the parameters changes from user in main thread while reading them in front end / back end
         2. Protect the local variables (Tworld / maps / keypoints / previous states...) from front end / back end computations and some command functions (SetWorldTransformFromGuess, LoadMapsFromPCD)
      7833f3d0
    • Julia Sanchez's avatar
      [feat] Create structures to store logged data + published data · 50867c82
      Julia Sanchez authored and Julia Sanchez's avatar Julia Sanchez committed
      * logged data will be used for undistortion, ego-motion and for a global
      optimization step. It contains :
         * a timestamp
         * an ID
         * an Isometry (world)
         * a covariance
         * the relative frame undistorted keypoints (base)
      
      * publishable data will be used to publish info about a current computed
      pose in wrappings. It contains :
         * a state
         * the relative frame undistorted keypoints (world)
         * the local maps
         * the input frames registered in the map
         * debug arrays / info
         * the latency corrected transform
      50867c82
    • Julia Sanchez's avatar
      [feat] Add shared list structure to lib · 86ea4e58
      Julia Sanchez authored and Julia Sanchez's avatar Julia Sanchez committed
      * This new container will be used to store frames and SLAM results waiting to be processed/published AND to store log results
      * The requirements are :
         * allow a thread to wait for data and pop the front one
         * allow an access to the last elements (for undistortion/ego-motion/resetting)
         * be able to free threads waiting
         * have a max size and erase oldest data
         * atomize all external actions on this container (clear/copy...)
      86ea4e58
    • Julia Sanchez's avatar
      [refact][hack] Disable pose graph and GPS use · e48c1960
      Julia Sanchez authored and Julia Sanchez's avatar Julia Sanchez committed
      * These parts will be refactored from the new multithreaded version in a next MR
      * They will become online processes
      * They are disabled to allow a clean refactoring step
      e48c1960
    • Julia Sanchez's avatar
      [refact] Remove Trelative member · 86936791
      Julia Sanchez authored and Julia Sanchez's avatar Julia Sanchez committed
      * This transform is not used from outside ego motion part
      * It is removed to clarify threads access to members
      * Tworld is directly updated in ego motion function
      86936791
  2. 17 Aug, 2021 2 commits
  3. 16 Aug, 2021 1 commit
  4. 21 Jul, 2021 2 commits
    • Julia Sanchez's avatar
      Merge branch 'FixLVwrapping' into 'master' · 65f0773e
      Julia Sanchez authored
      [fix] Fix segfault when applying SLAM
      
      See merge request !146
      65f0773e
    • Julia Sanchez's avatar
      [fix] Fix segfault when applying SLAM · 61b9e99a
      Julia Sanchez authored
      * By now, SLAM can only be applied on the field Frame which is a 
      polydata and not on Trailingframe which is a multiBlock
      
      * TrailingFrame is selected by default when loading a pcap so the first 
      call to the SLAM filter without changing the selected field in Pipeline 
      browser makes LV crash (SegFault).
      
      * This commit allows to apply the filter on the Trailingframe input
      
      * It checks the input in RequestData and extract the polydata from the 
      multiblock if needed
      61b9e99a
  5. 29 Jun, 2021 3 commits
  6. 28 Jun, 2021 2 commits
  7. 24 Jun, 2021 4 commits
  8. 23 Jun, 2021 2 commits
  9. 22 Jun, 2021 1 commit
  10. 21 Jun, 2021 6 commits
  11. 18 Jun, 2021 2 commits