kahowang / FAST_LIO_SAM

Front_end : fastlio2 Back_end : lio_sam
521 stars 92 forks source link

开启feature_extract_enable后会崩溃 #42

Open Simon-Leung opened 2 weeks ago

Simon-Leung commented 2 weeks ago

PCL版本1.8,GTSAM版本4.0.0

~~~~/home/ros/liosam_ws/src/FAST_LIO_SAM/FAST_LIO_SAM/ file opened
[ WARN] [1731062949.593435740]: No point, skip this scan!

[ INFO] [1731062949.594543096]: IMU Initial Done
[ WARN] [1731062949.594580016]: No point, skip this scan!

[laserMapping-1] process has died [pid 14266, exit code -11, cmd /home/ros/liosam_ws/devel/lib/fast_lio_sam/fastlio_sam_mapping __name:=laserMapping __log:=/home/ros/.ros/log/10238224-9dbf-11ef-99b4-00e269807a64/laserMapping-1.log].
log file: /home/ros/.ros/log/10238224-9dbf-11ef-99b4-00e269807a64/laserMapping-1*.log

or 闭环崩溃

~~~~/home/ros/liosam_ws/src/FAST_LIO_SAM/FAST_LIO_SAM/ file opened
[ INFO] [1731063273.123093298]: IMU Initial Done
[ WARN] [1731063273.123441330]: No point, skip this scan!

[ INFO] [1731063277.762159765]: Find loop clousre frame 
fastlio_sam_mapping: /build/pcl-0nnAvv/pcl-1.7.2/kdtree/include/pcl/kdtree/impl/kdtree_flann.hpp:136: int pcl::KdTreeFLANN<PointT, Dist>::nearestKSearch(const PointT&, int, std::vector<int>&, std::vector<float>&) const [with PointT = pcl::PointXYZINormal; Dist = flann::L2_Simple<float>]: Assertion `point_representation_->isValid (point) && "Invalid (NaN, Inf) point coordinates given to nearestKSearch!"' failed.
[laserMapping-1] process has died [pid 18633, exit code -6, cmd /home/ros/liosam_ws/devel/lib/fast_lio_sam/fastlio_sam_mapping __name:=laserMapping __log:=/home/ros/.ros/log/10238224-9dbf-11ef-99b4-00e269807a64/laserMapping-1.log].
log file: /home/ros/.ros/log/10238224-9dbf-11ef-99b4-00e269807a64/laserMapping-1*.log
Simon-Leung commented 2 weeks ago

yaml

common:
    lid_topic:  "/vanjee_points720_16"
    imu_topic:  "/vanjee_lidar_imu_packets"

#NCLT
#    lid_topic: "/points_raw"
#    imu_topic: "/imu_raw"

#KITTI
#    lid_topic: "/kitti/velo/pointcloud"
#    imu_topic: "/kitti/oxts/imu"

#RS LiDar
#    lid_topic: "/rslidar"
#    imu_topic: "/imu"
    time_sync_en: false         # ONLY turn on when external time synchronization is really not possible

preprocess:
    lidar_type: 5                # 1 for Livox serials LiDAR, 2 for Velodyne LiDAR, 3 for ouster LiDAR, 
    scan_line: 16
    scan_rate: 20                # only need to be set for velodyne, unit: Hz,
    blind: 1

mapping:
    acc_cov: 0.1
    gyr_cov: 0.1
    b_acc_cov: 0.0001
    b_gyr_cov: 0.0001
    fov_degree:    180
    det_range:     100.0
    extrinsic_est_en:  true      # true: enable the online estimation of IMU-LiDAR extrinsic,
    extrinsic_T: [ 0, 0, 0]
    extrinsic_R: [ 1, 0, 0, 
                   0, 1, 0, 
                   0, 0, 1]

publish:
    path_en:  true
    scan_publish_en:  true       # false: close all the point cloud output
    dense_publish_en: false       # false: low down the points number in a global-frame point clouds scan.
    scan_bodyframe_pub_en: true  # true: output the point cloud scans in IMU-body-frame

pcd_save:
    pcd_save_en: true
    interval: -1                 # how many LiDAR frames saved in each pcd file; 
                                 # -1 : all frames will be saved in ONE pcd file, may lead to memory crash when having too much frames.

# voxel filter paprams
odometrySurfLeafSize: 0.2                     # default: 0.4 - outdoor, 0.2 - indoor
mappingCornerLeafSize: 0.1                    # default: 0.2 - outdoor, 0.1 - indoor
mappingSurfLeafSize: 0.2                      # default: 0.4 - outdoor, 0.2 - indoor

# robot motion constraint (in case you are using a 2D robot)
z_tollerance: 1000                            # meters
rotation_tollerance: 1000                     # radians

# CPU Params
numberOfCores: 16                              # number of cores for mapping optimization
mappingProcessInterval: 0.15                  # seconds, regulate mapping frequency

# Surrounding map
surroundingkeyframeAddingDistThreshold: 2.0   # meters, regulate keyframe adding threshold
surroundingkeyframeAddingAngleThreshold: 0.2  # radians, regulate keyframe adding threshold
surroundingKeyframeDensity: 1.0               # meters, downsample surrounding keyframe poses   
surroundingKeyframeSearchRadius: 50.0         # meters, within n meters scan-to-map optimization (when loop closure disabled)

# Loop closure
loopClosureEnableFlag: true                   # use loopclousre or not 
loopClosureFrequency: 1.0                     # Hz, regulate loop closure constraint add frequency
surroundingKeyframeSize: 50                   # submap size (when loop closure enabled)
historyKeyframeSearchRadius: 10               # meters, key frame that is within n meters from current pose will be considerd for loop closure
historyKeyframeSearchTimeDiff: 1.0           #0.5# seconds, key frame that is n seconds older will be considered for loop closure
historyKeyframeSearchNum: 30                  #100# number of hostory key frames will be fused into a submap for loop closure
historyKeyframeFitnessScore: 0.1              # icp threshold, the smaller the better alignment

# Visualization
globalMapVisualizationSearchRadius: 1000.0    # meters, global map visualization radius
globalMapVisualizationPoseDensity: 10         # meters, global map visualization keyframe density
globalMapVisualizationLeafSize: 1.0           # meters, global map visualization cloud density

# visual iktree_map  
visulize_IkdtreeMap: false

# visual iktree_map  
recontructKdTree: false

# Export settings
savePCD: true                         # https://github.com/TixiaoShan/LIO-SAM/issues/3
savePCDDirectory: "/map"              # in your home folder, starts and ends with "/". Warning: the code deletes "LOAM" folder then recreates it. See "mapOptimization" for implementation

launch

<launch>
  <!-- Launch file for velodyne16 VLP-16 LiDAR -->

    <arg name="rviz" default="true" />

    <rosparam command="load" file="$(find fast_lio_sam)/config/wlr720.yaml" />

    <param name="feature_extract_enable" type="bool" value="1"/>
    <param name="point_filter_num" type="int" value="4"/>
    <param name="max_iteration" type="int" value="3" />
  <!--  单帧内,畸变纠正后降采样的分辨率-->
    <param name="filter_size_surf" type="double" value="0.5" />
    <param name="filter_size_map" type="double" value="0.5" />
    <param name="cube_side_length" type="double" value="1000" />
    <param name="runtime_pos_log_enable" type="bool" value="0" />
    <node pkg="fast_lio_sam" type="fastlio_sam_mapping" name="laserMapping" output="screen" /> 

    <group if="$(arg rviz)">
    <node launch-prefix="nice" pkg="rviz" type="rviz" name="rviz" args="-d $(find fast_lio_sam)/rviz_cfg/loam_livox.rviz" />
    </group>

</launch>