About | Content | Tests | Starting | Implementation | License | Author |
Script for extracting features (corners) in laser data (eg. 360 lidar scans). Script is based on gradient technique. The designed algorithm works very good with corner detection task. The examples show that the algorithm finds the corners correctly. There is only one user-adjusted variable to set - the threshold. It is possible to implement a version of this algorithm with adaptive threshold adjustment, but this could affect its execution speed. The presented algorithm is good for feature-based localisation.
features_detection.py - main script data - directory with example data
# Clone this project
$ git clone https://github.com/KamilGos/lidar-scans-feature-extraction
# Access
$ cd lidar-scans-feature-extraction
# Run the project
$ sudo python3 features_detection.py
To extract corners from given sets of data the gradient-based algorithm was used. The first step was to plot the data in polar scale to see the data that we have to deal with. The data refer to the situation when robot is next to the box. The box is a cube, that has a notch in the middle. On the left there is a wall. In the next step, the data was presented in relation of distance to angle.
Knowing, that the data satisfy the assumptions of the function, then the gradient ofeach measurement was calculated. It can be observed that the gradient local extremescorresponds to the corners. Next step was to filter the gradient values using the thresholdfunction (true value correspond to success corner detection)
True if gradinet > threshold or gradinet < - threshold
False else
The last step is to translate the data from polar to Cartesian coordinate system:
This project is under license from MIT.
Made with ❤️ by Kamil Goś