Autonomous Robot Motion Planning|Summary of Map Related Concepts
map representation
The map is divided into two modules:
- The map is loaded in the data structure of the data
- Map Information Fusion Method
Occupancy grid map
The most widely used is Occupancy grid map Occupancy grid map
3D grid map
2D grid map
2.5d grid map
Features of occupancy grid maps:
- most dense
- structured
- Direct coordinate index query
Grid map resources: https://github.com/ANYbotics/grid_map
Octree map (Octo-map)
Data structure
The advantage of such a map data structure is that it can form the following data types. The above
cube can be considered as a room. There are no obstacles in many places, so it does not need to be so finely divided, and the places with obstacles can be divided into finer points.
This reduces computing resource consumption
Octree map features:
- Sparse
- structured
- Indirect coordinate index query
Octrees-based resources:
https://octomap.github.io
Use octotrees to represent point cloud map examples
Use octrees to represent point cloud objects with different resolutions
Voxel hashing (hash table map)
Similar to the idea of an octree,
Voxel means a three-dimensional grid
hashing, which means storing the map in the form of a hash table.
The above picture is a camera observation of an obstacle surface, and only the grid on the obstacle is added. Memory, such as the blue and red squares above, the specific way to add memory is to use a hash table to map the coordinates xyz of the grid into a hash key value through a function. With the hash key value, it can be inserted In the table, it is equivalent to the way of dictionary query to perform map query.
Hash table map features:
- most sparse
- structured
- Indirect coordinate index query
Public resources of Voxel hashing: https://github.com/niessner/VoxelHashing
This kind of map is most commonly used to build dense maps based on RGBD depth cameras.
You can refer to the open source project of infiniTAM http://www.robots.ox.ac.uk/~victor/infinitam/
Point cloud map
The most basic of sensors, a collection of raw measurements. The biggest feature is that it is out of order, and it is not possible to search for point indexes.
Point clouds can be used to represent dense information about obstacles.
Point cloud map features:
- out of order
- No index coordinates
Point cloud resource PCL: http://pointclouds.org/
TSDF map
The full name of TSDF is: Truncated Signed Distance Functions truncated signed distance function map (TSDF map)
As shown in the figure above, a camera is observing the environment, and there is a curved surface in front of it.
TSDF will assume that there is a distance field directly between the surface and the camera, and the distance field between the camera and the surface is upright, indicating the closest point to the obstacle. distance.
Behind the surface, there is also a distance field, and each point also represents the closest distance to the obstacle, but is a negative value.
The distance is represented by different colors, and the following figure is formed.
Truncated represents truncated
meaning: the value outside the camera field of view is not concerned, and the value of a certain distance range of obstacles is concerned. The distance It doesn't matter if it's far away. Therefore, in the above picture, no color is formed at points that are very close to the camera and outside the field of view.
A typical application is OpenChisel
https://github.com/personalrobotics/OpenChisel provides a complete front-end camera information fusion project to the back-end TSDF map.
ESDF map
The full name of ESDF is Euclidean Signed Distance Functions.
The difference between ESDF and the TSDF mentioned above is: ESDF has no truncation, and cares about the value of all distance fields
The darker the color, the red means the closer to the obstacle, and the green means the farther away from the obstacle
Open source tools are:
- VoxBlox is a tool for building ESDF maps in the shortest possible time
https://github.com/ethz-asl/voxblox - FIESTA Accuracy and Performance Exceeds VoxBlox
https://github.com/HKUST-Aerial-Robotics/FIESTA - TRR's Local Map
is a complete UAV autonomous flight resource, which is equivalent to building a local ESDF map, and FIESTA is equivalent to incrementally building a global ESDF map
https://github.com/HKUST-Aerial-Robotics/Teach- Repeat-Replan