You’re reading an older version of the Slamcore SDK documenation. The latest one is 23.04.
File subsystems.hpp
Core API subsystems.
Includes the majority of the subsystems that are used when using the SLAMcore API. Along with their definition, we define load_minimal
, save_minimal
helper functions as well as the operator<<
for storing/dumping their types.
Note
Notice that the majority of the classes are suffixed with *Interface
. That’s because when you get access to the corresponding instance, you do via a pointer type (namely std::shared_ptr or the class member aliases Ptr
, CPtr
) and not through the actual class instance.
Helper functions for slamcore::SubsystemType
-
template<class Archive>
static inline void load_minimal(const Archive&, SubsystemType &obj, const std::string &value)
-
template<class Archive>
static inline std::string save_minimal(const Archive&, const SubsystemType &obj)
-
static inline std::ostream &operator<<(std::ostream &os, const SubsystemType obj)
Enums
-
namespace slamcore
Main namespace for the SLAMcore public API
Get information about the client library
Helper functions for slamcore::SubsystemType
-
template<class Archive>
static inline void load_minimal(const Archive&, SubsystemType &obj, const std::string &value)
-
template<class Archive>
static inline std::string save_minimal(const Archive&, const SubsystemType &obj)
-
static inline std::ostream &operator<<(std::ostream &os, const SubsystemType obj)
Helper conversion methods
slamcore::ImageFormat \(\leftrightarrow\) BytesPerPixel
Enums
-
class CameraSensorsInfoInterface : public SubsystemInterface
- #include <subsystems.hpp>
Subsystem to access factory camera calibration.
Public Types
-
using Ptr = std::shared_ptr<CameraSensorsInfoInterface>
-
using CPtr = std::shared_ptr<const CameraSensorsInfoInterface>
Public Functions
-
inline virtual SubsystemType type() const
Type of the object.
-
virtual ~CameraSensorsInfoInterface() = default
-
virtual std::vector<SensorIDT> getCameraList() const = 0
Return the IDs for camera sensors in the system.
-
virtual Vector getCameraSensorSize(const SensorIDT sid) const = 0
Get camera sensor image dimensions.
-
virtual ImageFormat getCameraImageFormat(const SensorIDT sid) const = 0
Get camera sensor image format.
-
virtual Vector getCameraFactoryFocalLength(const SensorIDT sid) const = 0
Get camera sensor focal length (factory).
-
virtual Vector getCameraFactoryPrincipalPoint(const SensorIDT sid) const = 0
Get camera sensor principal point (factory).
-
virtual std::string getCameraFactoryDistortionModel(const SensorIDT sid) const = 0
Get camera sensor distortion model (factory).
Public Static Attributes
-
static constexpr SubsystemType Type = SubsystemType::CameraSensorsInfo
-
using Ptr = std::shared_ptr<CameraSensorsInfoInterface>
-
class HeightMappingSubsystemInterface : public SubsystemInterface
- #include <subsystems.hpp>
Subsystem for accessing height maps.
Public Types
-
using Ptr = std::shared_ptr<HeightMappingSubsystemInterface>
-
using CPtr = std::shared_ptr<const HeightMappingSubsystemInterface>
Public Functions
-
inline virtual SubsystemType type() const
Type of the object.
-
virtual ~HeightMappingSubsystemInterface() = default
-
template<typename _Rep = int64_t, typename _Period = std::ratio<1>>
inline bool fetch(const std::chrono::duration<_Rep, _Period> &timeout = std::chrono::seconds(0)) Update the internal state with the most recent data.
-
virtual std::shared_ptr<const Map2DInterface> get() const = 0
Get the map data.
Public Static Attributes
-
static constexpr SubsystemType Type = SubsystemType::HeightMapping
-
using Ptr = std::shared_ptr<HeightMappingSubsystemInterface>
-
class MobileRobotSubsystemInterface : public SubsystemInterface
- #include <subsystems.hpp>
Subsystem for feeding mobile robots wheel odometry.
Public Types
-
using Ptr = std::shared_ptr<MobileRobotSubsystemInterface>
-
using CPtr = std::shared_ptr<const MobileRobotSubsystemInterface>
Public Functions
-
inline virtual SubsystemType type() const
Type of the object.
-
virtual ~MobileRobotSubsystemInterface() = default
-
virtual std::error_code feedOdometry(const PoseInterface<odometry_clock>::CPtr wo) = 0
Feed wheel odometry from an external source.
Public Static Attributes
-
static constexpr SubsystemType Type = SubsystemType::MobileRobot
-
using Ptr = std::shared_ptr<MobileRobotSubsystemInterface>
-
class SubsystemInterface
- #include <subsystems.hpp>
Common interface for all the objects - enables runtime polymorphism.
Subclassed by CameraSensorsInfoInterface, HeightMappingSubsystemInterface, MobileRobotSubsystemInterface, TrajectorySubsystemInterface
Public Types
-
using Ptr = std::shared_ptr<SubsystemInterface>
-
using CPtr = std::shared_ptr<const SubsystemInterface>
Public Functions
-
virtual ~SubsystemInterface() = default
-
inline virtual SubsystemType type() const
Type of the object.
Protected Functions
-
inline SubsystemInterface()
-
using Ptr = std::shared_ptr<SubsystemInterface>
-
class TrajectorySubsystemInterface : public SubsystemInterface
- #include <subsystems.hpp>
Subsystem for accessing trajectories.
A common way of using this subsystem would be as follows:
// Get subsystem from the SLAM system const auto subsystem = slam->getSubsystem<slamcore::TrajectorySubsystemInterface>(); // Fetch most recent trajectories subsystem->fetch(); // You can retrieve some data const auto unoptimisedTrajectory = subsystem->getUnoptimisedTrajectory(); const auto optimisedTrajectory = subsystem->getOptimisedTrajectory(); const auto trackingStatus = subsystem->getTrackingStatus(); // Or you can write the trajectories as csv files to an output directory subsystem->write("trajectories");
Note
There are some positioning modes where the optimised trajectory is not produced. In these cases,
getOptimisedTrajectory
will returnnullptr
.Note
Not thread safe.
Public Types
-
using Ptr = std::shared_ptr<TrajectorySubsystemInterface>
-
using CPtr = std::shared_ptr<const TrajectorySubsystemInterface>
Public Functions
-
inline virtual SubsystemType type() const
Type of the object.
-
virtual ~TrajectorySubsystemInterface() = default
-
template<typename _Rep = int64_t, typename _Period = std::ratio<1>>
inline bool fetch(const std::chrono::duration<_Rep, _Period> &timeout = std::chrono::seconds(0)) Update the internal state with the most recent data.
-
virtual std::shared_ptr<const PoseListInterface<camera_clock>> getUnoptimisedTrajectory() const = 0
Get Unoptimised Trajectory.
-
virtual std::shared_ptr<const TrackingStatusListInterface> getTrackingStatus() const = 0
Get Tracking Status.
-
virtual std::shared_ptr<const PoseListInterface<camera_clock>> getOptimisedTrajectory() const = 0
Get Optimised Trajectory.
Note
For some positioning modes this can return
nullptr
-
virtual TrajectoryPaths write(const std::string &outputDirectory) const = 0
Write trajectories as csv files in given output directory.
Public Static Attributes
-
static constexpr SubsystemType Type = SubsystemType::Trajectory
-
struct TrajectoryPaths
- #include <subsystems.hpp>
-
using Ptr = std::shared_ptr<TrajectorySubsystemInterface>
-
template<class Archive>