This is a part of my master's degree research using Growing Neural Gas (GNG) and 3D data image from Kinect device. The goal of this repository is processing pcd format files into 3D data corresponding to edges and vortex.
Growing Neural Gas (GNG) is a widely used algorithm in mobile robotics to enhance the learning capability of autonomous systems. GNG is a neural network that has the ability to grow and adapt to the environment, allowing mobile robots to acquire knowledge and adjust to new situations. This algorithm is particularly useful for creating cognitive maps, where the robot can map and understand the environment in real-time, identifying obstacles, safe areas, and other relevant information for autonomous navigation.
By utilizing GNG, mobile robots can :
- improve their ability to make intelligent decisions,
- optimize routes,
- avoid collisions,
- efficiently explore unknown environments and so on.
Thus, Growing Neural Gas plays a crucial role in mobile robotics, providing a solid foundation for enhancing the intelligence and autonomy of robots in their interactions with the physical world.
This repository is organized according to the table below:
| Directory / File | Description |
|---|---|
| ./database | directory for all files used to trained and test the neural network's performance |
| ./image_io | there is the auxiliary functions to load, process, compute and for visualization tasks |
| ./result | edges and vortex 3D data JSON files |
| gng3d_reconstruction.py | GNG processing |
| main.py | script to set paths and calls the main funtions for processing the tasks |
This project was developed on Ubuntu 22.04 and Python 3.7 operating system. For install all the dependencies you may run:
pip install -r requirements.txtThis will install the necessaries libraries used to performe the GNG at 3D points, such as:
To compute the GNG and to show the 3D graph, just run:
python main.pyor
python3 main.pyThis script will generate GNG through 3D plot according to the input data.
Some paths are as default in main.py, such as:
-
Path for read the Point Cloud data file: path_single_pcd = "./database/bag2pcdRGB"
-
Path to save the edges and vortex data files: path_es_vs_result = "./result"
Here are some brief results by performing the GNG algorithm.
The input data, aquired through Kinect device:
scene_1_open3D.mp4
In the figure below it is possible to see the comparison of the image on the left, which represents the point cloud input. And on the right, we have the resulting GNG from that input.
