TERRAIN and VEGETATION Classification: This network classifies TERRAIN and VEGETATION as non-traversable classes.
The neural networks were trained in Matlab, and their weights were exported in .csv files.
Usage:
Usage Instructions:
Input Point Clouds:
The ROS node accepts two types of input point clouds:
XYZI Point Cloud (Topic: “lidar_points”): Use this for interfacing with LiDAR sensors.
XYZIRGBL Point Cloud: Use this for training. To generate this input, follow the instructions in the semantickitti2bag repository.
1. Input Point Clouds: The ROS node accepts two types of input point clouds:
XYZI Point Cloud (Topic: “lidar_points”): This is used for interfacing with LiDAR sensors.
XYZIRGBL Point Cloud (Topic: “ground_truth_lidar_points”): This is used for training. To generate this input, follow the instructions in the semantickitti2bag repository.
2. Algorithm Settings: The settings of the algorithm are in the params/iri_ground_segmentation.yaml file. Here, you can adjust all the parameters described in the paper. Additionally, you can select whether to use the shallow neural network, which network to load, and whether to generate a dataset for training a new network (and assign it a filename).
3. Neural Network Training: The shallow neural network training is carried out in Matlab. All the required scripts can be found in the gata_neural_net_training folder. The workflow for neural net training is as follows:
Step 1: You need a rosbag with labels (XYZIRGBL) mapped to the “ground_truth_lidar_points” topic.
Step 2: Specify the filename and path for the csv dataset that will be generated and set the param “extract_data_to_external_training_of_the_network” in the yaml file to true.
Step 3: Launch the iri_ground_segmentation.launch file and reproduce the training rosbag(s).
Step 4: Once finished, stop the iri_ground_segmentation node. The resulting dataset in csv format will be dumped to file.
Step 5: Open Matlab and navigate to the gata_neural_network. Modify the param_loader.m values to match your needs (pointing to your ros-generated dataset, selecting which classes are considered to be traversable, network layers dimensions, etc.).
Step 6: After adjusting the param_loader script, run the GATANeuralNetTraining.m script.
Step 7: Matlab will start the neural net training, opening some GUI to monitor the progress. Once you are satisfied with the results (or the max epoch number is reached), stop the training. The network will be dumped to a .csv file that is ready to be used for inference in the iri_ground_segmentation ros node.
Step 8: Try the new network by modifying the “neural_net_filename_with_global_path” value in the iri_ground_segmentation.yaml file, launch the node, and feed it with a rosbag (either annotated or not) or a LiDAR sensor.
We hope you find this work useful! For any questions or comments, please contact us at idelpino@iri.upc.edu. If you use this work, please remember to cite the paper.
dataset_filename_with_global_path:'/home/idelpino/Documentos/dataset.csv',# This is the filename with path where the data for neural net training is dumped