cartographer/common/configuration_file_resolver.h¶
Overview¶
ConfigurationFileResolver locates and reads Lua configuration files, handling include directives and search paths.
Class: cartographer::common::ConfigurationFileResolver¶
Construction¶
explicit ConfigurationFileResolver(
const std::vector<std::string>& configuration_files_directories);
Methods¶
// Get file content with includes resolved
std::string GetFileContentOrDie(const std::string& filename);
// Get full path to file
std::string GetFullPathOrDie(const std::string& filename);
Include Resolution¶
When a Lua file contains include "other.lua":
Searches
configuration_files_directoriesin orderReads included file
Recursively resolves its includes
Concatenates all content
Search Paths¶
Directories searched in order:
Current working directory (for relative paths)
Directories passed to constructor (in order)
Compile-time default (e.g.,
/usr/local/share/cartographer/configuration_files)
Usage¶
// Configure search paths
std::vector<std::string> config_dirs = {
"/etc/cartographer",
"./config",
"/opt/cartographer/share/configuration_files"
};
auto resolver = std::make_unique<ConfigurationFileResolver>(config_dirs);
// Load main config (resolves all includes)
std::string lua_code = resolver->GetFileContentOrDie("my_robot.lua");
// Parse to LuaParameterDictionary
auto lua_dict = common::MakeLuaParameterDictionary(lua_code);
Include Syntax¶
-- In Lua config file
include "base_config.lua"
include "trajectory_builder_2d.lua"
include "pose_graph.lua"
-- Can use relative paths
include "my_robot/sensor_config.lua"
Error Handling¶
File not found →
LOG(FATAL)(crash)Include cycles →
LOG(FATAL)Use
GetFullPathOrDie()to verify path before loading
See Also¶
LuaParameterDictionary — Parses resolved Lua code
MapBuilder — Uses resolver for config