···29293030// For implementation: same as IMPLEMENTATION_VERSION_*
3131// For user: expected IMPLEMENTATION_VERSION_*. Should be checked in runtime.
3232-constexpr int HEADER_VERSION_MAJOR = 4; //!< API Breakages
3232+constexpr int HEADER_VERSION_MAJOR = 5; //!< API Breakages
3333constexpr int HEADER_VERSION_MINOR = 0; //!< Backwards compatible API changes
3434constexpr int HEADER_VERSION_PATCH = 0; //!< Backw. comp. .h-implemented changes
3535···8888};
89899090/*!
9191+ * @brief Parameters for creating the system pipeline.
9292+ */
9393+struct slam_config {
9494+ //! Path to a implementation-specific config file. If null, use defaults.
9595+ std::shared_ptr<std::string> config_file;
9696+9797+ //! If supported, whether to open the system's UI.
9898+ bool show_ui;
9999+};
100100+101101+/*!
91102 * @brief slam_tracker serves as an interface between Monado and external SLAM
92103 * systems.
93104 *
···95106 * should be provided by an external SLAM system.
96107 */
97108struct slam_tracker {
9898- /*!
9999- * @brief Construct a new slam tracker object
100100- *
101101- * @param config_file SLAM systems parameters tend to be numerous and very
102102- * specific, so they usually use a configuration file as the main way to set
103103- * them up. Therefore, this constructor receives a path to a
104104- * implementation-specific configuration file.
105105- */
106106- slam_tracker(const std::string &config_file);
109109+ slam_tracker(const slam_config &config);
107110 ~slam_tracker();
108111109112 slam_tracker(const slam_tracker &) = delete;
···465465{
466466 enum u_logging_level log_level; //!< SLAM tracking logging level
467467 const char *slam_config; //!< Config file path, format is specific to the SLAM implementation in use
468468+ bool slam_ui; //!< Whether to open the external UI of the external SLAM system
468469 bool submit_from_start; //!< Whether to submit data to the SLAM tracker without user action
469470 enum t_slam_prediction_type prediction; //!< Which level of prediction to use
470471 bool write_csvs; //!< Whether to enable CSV writers from the start for later analysis