35#include <condition_variable>
86 std::vector<std::pair<libstp::foundation::Pose, double>>
particles;
118 [[nodiscard]]
bool ok() const noexcept {
return m_ok.load(); }
123 void serializeFrame(
const FrameInput& frame, std::uint64_t t_ns);
127 void emit(
const char* data, std::size_t n);
130 void flushRamToDisk();
135 void pruneOldRecordings();
138 std::uint64_t m_startedAtUnixNs{0};
139 std::chrono::system_clock::time_point m_startWall{};
143 std::chrono::steady_clock::time_point m_startSteady{};
146 std::uint64_t m_tickCounter{0};
147 std::uint32_t m_downsampleStride{1};
151 std::mutex m_queueMutex;
152 std::condition_variable m_queueCv;
153 std::deque<FrameInput> m_queue;
154 std::uint64_t m_droppedSinceLastReport{0};
156 std::atomic<bool> m_ok{
false};
157 std::atomic<bool> m_stopRequested{
false};
164 static constexpr std::size_t kRamChunkBytes = std::size_t{1} << 20;
165 std::deque<std::string> m_ramChunks;
166 std::string m_ramCurrent;
LocalizationRecorder(RecorderConfig cfg)
LocalizationRecorder & operator=(const LocalizationRecorder &)=delete
LocalizationRecorder(LocalizationRecorder &&)=delete
LocalizationRecorder & operator=(LocalizationRecorder &&)=delete
LocalizationRecorder(const LocalizationRecorder &)=delete
bool recordFrame(FrameInput frame, bool force)
compat::stop_token stop_token
Position plus planar heading used by several motion-related modules.
int particle_count_hint
For the header line.
double record_hz
Target rate after downsampling.
std::string table_map_json
std::string path
Absolute target file path.
double tick_hz
For the header line.
std::size_t queue_capacity