From 07d3f4462f44beefb392941566c2e507d54d1726 Mon Sep 17 00:00:00 2001 From: idelpino <telecosg@gmail.com> Date: Thu, 18 Apr 2024 12:53:35 +0200 Subject: [PATCH] Update Readme.md --- .gitmodules | 1 + README.md | 33 +++++++++++++++++++++-------- kf_based_terrain_analysis | 2 +- params/iri_ground_segmentation.yaml | 2 +- 4 files changed, 27 insertions(+), 11 deletions(-) diff --git a/.gitmodules b/.gitmodules index 40da8b2..d001770 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,3 +1,4 @@ [submodule "kf_based_terrain_analysis"] path = kf_based_terrain_analysis url = https://gitlab.iri.upc.edu/idelpino/kf_based_terrain_analysis + branch = main diff --git a/README.md b/README.md index 6f5abc7..223ec8f 100644 --- a/README.md +++ b/README.md @@ -1,21 +1,36 @@ -We are pleased to share the code repository associated with our paper, “Probabilistic Graph-based Real-Time Ground Segmentation for Urban Robotics.†This paper has been accepted for publication in the IEEE Transactions on Intelligent Vehicles. You can access the Early Access Version of the paper here: https://ieeexplore.ieee.org/document/10487036 +We are pleased to share the code repository associated with our paper, “Probabilistic Graph-based Real-Time Ground Segmentation for Urban Robotics.†+This paper has been accepted for publication in the IEEE Transactions on Intelligent Vehicles. + +You can access the Early Access Version of the paper here: https://ieeexplore.ieee.org/document/10487036 Currently, our team is diligently working on cleaning and documenting the repository. In just a few days, it will be fully prepared and ready for exploration! --- -This package implements a ROS node for traversable ground / non-traversable ground / obstacle and overhanging obstacle segmentation. It provides the interface to the library kf_based_terrain_analysis, which angularly exploring a poincloud from the origin to the limits, generates a graph of ground references containing their 2D coordinates (XY) and three Gaussian variables (Z, slope in X (tan(pitch)) and slope in Y (tan(roll))) with means and variances. These three variables are estimated by means of a Kalman Filter. +ROS Node for Ground Segmentation and Obstacle Detection + +This package contains a ROS node designed for ground segmentation and obstacle detection. It interfaces with the kf_based_terrain_analysis library, which generates a probabilistic ground model. Let’s dive into the details: +Features: -Dependences: + Ground Model Generation: + The ground model consists of nodes with 2D coordinates (XY) and three Gaussian variables: Z (height), slope in X (tan(pitch)), and slope in Y (tan(roll)). + These Gaussian variables are described by means and variances. + The model predicts a Gaussian distribution in the Z-axis for any desired XY coordinate, allowing us to treat obstacle detection as an outlier rejection problem. -1) gnss_lidar_navigation_preprocessing (https://gitlab.iri.upc.edu/idelpino/gnss_lidar_navigation_preprocessing): + Traversable vs. Non-Traversable Ground: + To distinguish between traversable and non-traversable ground, we employ a shallow neural network. + The neural network operates on features extracted from the ground model. + We provide two pre-trained neural networks: + ROAD Detection: This network identifies ROAD areas (which are considered traversable). + 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. -Regarding the ground segmentation algorithm it provides: -- A node to adapt the input point cloud to the format internally used by the kf_based_terrain_analysis. -- And a node for fusing two pointclouds into one (for the ADD robot). +Usage: -2) the kf_based_terrain_analysis library (https://gitlab.iri.upc.edu/idelpino/kf_based_terrain_analysis) + 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. -To launch the whole ground segmentation pipeline for the ADD robot just roslaunch the iri_ground_segmentation add_ground_segmentation_pipeline.launch diff --git a/kf_based_terrain_analysis b/kf_based_terrain_analysis index c1be17b..61c1886 160000 --- a/kf_based_terrain_analysis +++ b/kf_based_terrain_analysis @@ -1 +1 @@ -Subproject commit c1be17b68e5a1af56cdb1a050b45374b1bce963c +Subproject commit 61c1886b8227e98ec5315dfb2f8f05d011f982ff diff --git a/params/iri_ground_segmentation.yaml b/params/iri_ground_segmentation.yaml index 6403f9c..613c87a 100644 --- a/params/iri_ground_segmentation.yaml +++ b/params/iri_ground_segmentation.yaml @@ -37,7 +37,7 @@ iri_ground_segmentation: { # Neural Network related parameters use_neural_network: true, - extract_data_to_external_training_of_the_network: false, + extract_data_to_external_training_of_the_network: true, 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 neural_net_filename_with_global_path: '/home/idelpino/iri-lab/ground_segmentation_ws/src/iri_ground_segmentation/shallow_neural_nets/veg_terrain_and_obs_13_features_39_neurons.csv', neural_net_number_of_features: 13, -- GitLab