Apollo
6.0
Open source self driving car software
|
The data structure of the base map. More...
#include <base_map.h>
Public Member Functions | |
BaseMap (BaseMapConfig *config) | |
The constructor. More... | |
virtual | ~BaseMap () |
The destructor. More... | |
virtual void | InitMapNodeCaches (int cacheL1_size, int cahceL2_size) |
void | AttachMapNodePool (BaseMapNodePool *p_map_node_pool) |
Attach map node pointer. More... | |
BaseMapNode * | GetMapNode (const MapNodeIndex &index) |
Return the map node, if it's not in the cache, return false. More... | |
BaseMapNode * | GetMapNodeSafe (const MapNodeIndex &index) |
Return the map node, if it's not in the cache, safely load it. More... | |
bool | IsMapNodeExist (const MapNodeIndex &index) |
Check if the map node in the cache. More... | |
bool | SetMapFolderPath (const std::string folder_path) |
Set the directory of the map. More... | |
void | AddDataset (const std::string dataset_path) |
Add a dataset path to the map config. More... | |
void | Release () |
Release resources. More... | |
virtual void | PreloadMapArea (const Eigen::Vector3d &location, const Eigen::Vector3d &trans_diff, unsigned int resolution_id, unsigned int zone_id) |
Preload map nodes for the next frame location calculation. It will forecasts the nodes by the direction of the car moving. Because the progress of loading will cost a long time (over 100ms), it must do this for a period of time in advance. After the index of nodes calculate finished, it will create loading tasks, but will not wait for the loading finished, eigen version. More... | |
virtual bool | LoadMapArea (const Eigen::Vector3d &seed_pt3d, unsigned int resolution_id, unsigned int zone_id, int filter_size_x, int filter_size_y) |
Load map nodes for the location calculate of this frame. If the forecasts are correct in last frame, these nodes will be all in cache, if not, then need to create loading tasks, and wait for the loading finish, in order to the nodes which the following calculate needed are all in the memory, eigen version. More... | |
void | ComputeMd5ForAllMapNodes () |
Compute md5 for all map node file in map. More... | |
bool | CheckMap () |
Check if map is normal. More... | |
bool | CheckMapStrictly () |
Check if map is normal(with map node checking). More... | |
const BaseMapConfig & | GetMapConfig () const |
Get the map config. More... | |
BaseMapConfig & | GetMapConfig () |
Get the map config. More... | |
const std::vector< std::string > & | GetAllMapNodePaths () const |
Get all map node paths. More... | |
const std::vector< std::string > & | GetAllMapNodeMd5s () const |
Get all map node md5s. More... | |
Protected Member Functions | |
void | GetAllMapIndexAndPath () |
MapNodeIndex | GetMapIndexFromMapPath (const std::string &map_path) |
void | LoadMapNodes (std::set< MapNodeIndex > *map_ids) |
Load map node by index. More... | |
void | PreloadMapNodes (std::set< MapNodeIndex > *map_ids) |
Load map node by index. More... | |
void | LoadMapNodeThreadSafety (const MapNodeIndex &index, bool is_reserved=false) |
Load map node by index, thread_safety. More... | |
void | CheckAndUpdateCache (std::set< MapNodeIndex > *map_ids) |
Check map node in L2 Cache. More... | |
Protected Attributes | |
BaseMapConfig * | map_config_ = nullptr |
The map settings. More... | |
MapNodeCache< MapNodeIndex, BaseMapNode >::DestroyFunc | destroy_func_lvl1_ |
MapNodeCache< MapNodeIndex, BaseMapNode >::DestroyFunc | destroy_func_lvl2_ |
std::unique_ptr< MapNodeCache< MapNodeIndex, BaseMapNode > > | map_node_cache_lvl1_ = nullptr |
The cache for map node preload. More... | |
std::unique_ptr< MapNodeCache< MapNodeIndex, BaseMapNode > > | map_node_cache_lvl2_ = nullptr |
BaseMapNodePool * | map_node_pool_ = nullptr |
The map node memory pool pointer. More... | |
std::set< MapNodeIndex > | map_preloading_task_index_ |
boost::recursive_mutex | map_load_mutex_ |
The mutex for preload map node. More... | |
std::vector< MapNodeIndex > | all_map_node_indices_ |
All the map nodes in the Map (in the disk). More... | |
std::vector< std::string > | all_map_node_paths_ |
std::vector< std::string > | all_map_node_md5s_ |
All the map nodes' md5 in the Map (in the disk). More... | |
The data structure of the base map.
|
explicit |
The constructor.
|
virtual |
The destructor.
void apollo::localization::msf::pyramid_map::BaseMap::AddDataset | ( | const std::string | dataset_path | ) |
Add a dataset path to the map config.
void apollo::localization::msf::pyramid_map::BaseMap::AttachMapNodePool | ( | BaseMapNodePool * | p_map_node_pool | ) |
Attach map node pointer.
|
protected |
Check map node in L2 Cache.
bool apollo::localization::msf::pyramid_map::BaseMap::CheckMap | ( | ) |
Check if map is normal.
bool apollo::localization::msf::pyramid_map::BaseMap::CheckMapStrictly | ( | ) |
Check if map is normal(with map node checking).
void apollo::localization::msf::pyramid_map::BaseMap::ComputeMd5ForAllMapNodes | ( | ) |
Compute md5 for all map node file in map.
|
protected |
|
inline |
Get all map node md5s.
|
inline |
Get all map node paths.
|
inline |
Get the map config.
|
inline |
Get the map config.
|
protected |
BaseMapNode* apollo::localization::msf::pyramid_map::BaseMap::GetMapNode | ( | const MapNodeIndex & | index | ) |
Return the map node, if it's not in the cache, return false.
BaseMapNode* apollo::localization::msf::pyramid_map::BaseMap::GetMapNodeSafe | ( | const MapNodeIndex & | index | ) |
Return the map node, if it's not in the cache, safely load it.
|
virtual |
bool apollo::localization::msf::pyramid_map::BaseMap::IsMapNodeExist | ( | const MapNodeIndex & | index | ) |
Check if the map node in the cache.
|
virtual |
Load map nodes for the location calculate of this frame. If the forecasts are correct in last frame, these nodes will be all in cache, if not, then need to create loading tasks, and wait for the loading finish, in order to the nodes which the following calculate needed are all in the memory, eigen version.
|
protected |
Load map node by index.
|
protected |
Load map node by index, thread_safety.
|
virtual |
Preload map nodes for the next frame location calculation. It will forecasts the nodes by the direction of the car moving. Because the progress of loading will cost a long time (over 100ms), it must do this for a period of time in advance. After the index of nodes calculate finished, it will create loading tasks, but will not wait for the loading finished, eigen version.
|
protected |
Load map node by index.
void apollo::localization::msf::pyramid_map::BaseMap::Release | ( | ) |
Release resources.
bool apollo::localization::msf::pyramid_map::BaseMap::SetMapFolderPath | ( | const std::string | folder_path | ) |
Set the directory of the map.
|
protected |
All the map nodes in the Map (in the disk).
|
protected |
All the map nodes' md5 in the Map (in the disk).
|
protected |
|
protected |
|
protected |
|
protected |
The map settings.
|
protected |
The mutex for preload map node.
|
protected |
The cache for map node preload.
|
protected |
brief The dynamic map node preloading thread pool pointer.
|
protected |
The map node memory pool pointer.
|
protected |
Keep the index of preloading nodes.