Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/lorenwel/linefit_ground_segmentation
Ground Segmentation from Lidar Point Clouds
https://github.com/lorenwel/linefit_ground_segmentation
lidar ros segmentation
Last synced: 10 days ago
JSON representation
Ground Segmentation from Lidar Point Clouds
- Host: GitHub
- URL: https://github.com/lorenwel/linefit_ground_segmentation
- Owner: lorenwel
- License: bsd-3-clause
- Created: 2016-10-24T08:03:55.000Z (about 8 years ago)
- Default Branch: master
- Last Pushed: 2024-07-26T16:25:41.000Z (3 months ago)
- Last Synced: 2024-10-28T00:24:02.976Z (12 days ago)
- Topics: lidar, ros, segmentation
- Language: C++
- Homepage:
- Size: 4.05 MB
- Stars: 677
- Watchers: 14
- Forks: 148
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-robotic-tooling - linefit_ground_segmentation - Implementation of the ground segmentation algorithm. (Sensor Processing / Lidar and Point Cloud Processing)
README
# linefit_ground_segmentation
Implementation of the ground segmentation algorithm proposed in
```
@inproceedings{himmelsbach2010fast,
title={Fast segmentation of 3d point clouds for ground vehicles},
author={Himmelsbach, Michael and Hundelshausen, Felix V and Wuensche, H-J},
booktitle={Intelligent Vehicles Symposium (IV), 2010 IEEE},
pages={560--565},
year={2010},
organization={IEEE}
}
```
The `linefit_ground_segmentation` package contains the ground segmentation library.
A ROS interface is available in `linefit_ground_segmentation_ros`The library can be compiled separately from the ROS interface if you're not using ROS.
## Installation
Requires the following dependencies to be installed:
- *catkin_simple* `https://github.com/catkin/catkin_simple.git`
- *eigen_conversions* `sudo apt install ros-noetic-eigen-conversions`Compile using your favorite catkin build tool (e.g. `catkin build linefit_ground_segmentation_ros`)
## Launch instructions
The ground segmentation ROS node can be launch by executing `roslaunch linefit_ground_segmentation_ros segmentation.launch`.
Input and output topic names can be specified in the same file.Getting up and running with your own point cloud source should be as simple as:
1. Change the `input_topic` parameter in `segmentation.launch` to your topic.
2. Adjust the `sensor_height` parameter in `segmentation_params.yaml` to the height where the sensor is mounted on your robot (e.g. KITTI Velodyne: 1.8m)## Parameter description
Parameters are set in `linefit_ground_segmentation_ros/launch/segmentation_params.yaml`
This algorithm works on the assumption that you known the height of the sensor above ground.
Therefore, **you have to adjust the `sensor_height`** to your robot specifications, otherwise, it will not work.The default parameters should work on the KITTI dataset.
### Ground Condition
- **sensor_height** Sensor height above ground.
- **max_dist_to_line** maximum vertical distance of point to line to be considered ground.
- **max_slope** Maximum slope of a line.
- **min_slope** Minimum slope of a line.
- **max_fit_error** Maximum error a point is allowed to have in a line fit.
- **max_start_height** Maximum height difference between new point and estimated ground height to start a new line.
- **long_threshold** Distance after which the max_height condition is applied.
- **max_height** Maximum height difference between line points when they are farther apart than *long_threshold*.
- **line_search_angle** How far to search in angular direction to find a line. A higher angle helps fill "holes" in the ground segmentation.
- **gravity_aligned_frame** Name of a coordinate frame which has its z-axis aligned with gravity. If specified, the incoming point cloud will be rotated, but not translated into this coordinate frame. If left empty, the sensor frame will be used.### Segmentation
- **r_min** Distance at which segmentation starts.
- **r_max** Distance at which segmentation ends.
- **n_bins** Number of radial bins.
- **n_segments** Number of angular segments.### Other
- **n_threads** Number of threads to use.
- **latch** Latch output point clouds in ROS node.
- **visualize** Visualize the segmentation result. **ONLY FOR DEBUGGING.** Do not set true during online operation.