LibMultiSense
LibMultiSense Documentation
Loading...
Searching...
No Matches
MultiSenseChannel.hh
Go to the documentation of this file.
1
37#pragma once
38
39#include <functional>
40#include <optional>
41
42#include "MultiSenseTypes.hh"
43
44namespace multisense {
45
47public:
53 {
57 LEGACY
58 };
59
66 {
70 size_t num_small_buffers = 100;
74 size_t small_buffer_size = 1500;
78 size_t num_large_buffers = 32;
82 size_t large_buffer_size = 1920*1200*3;
83 };
84
85 struct Config
86 {
90 std::string ip_address = "10.66.171.21";
91
97 std::optional<int16_t> mtu = static_cast<uint16_t>(1500);
98
103 std::optional<std::chrono::milliseconds> receive_timeout = std::chrono::milliseconds(500);
104
109 uint16_t command_port{9001};
110
114 std::optional<std::string> interface = std::nullopt;
115
120 ReceiveBufferConfig receive_buffer_configuration{};
121
125 bool connect_on_initialization = true;
126 };
127
132 static std::unique_ptr<Channel> create(const Config &config,
133 const ChannelImplementation &impl = ChannelImplementation::LEGACY);
134
135 Channel() = default;
136
140 Channel(const Channel&) = delete;
141 Channel& operator=(const Channel&) = delete;
142
146 Channel(Channel&&) noexcept = default;
147 Channel& operator=(Channel&&) noexcept = default;
148
149 virtual ~Channel() = default;
150
154 virtual Status start_streams(const std::vector<DataSource> &sources) = 0;
155
160 virtual Status stop_streams(const std::vector<DataSource> &sources) = 0;
161
165 virtual void add_image_frame_callback(std::function<void(const ImageFrame&)> callback) = 0;
166
170 virtual void add_imu_frame_callback(std::function<void(const ImuFrame&)> callback) = 0;
171
175 virtual Status connect(const Config &config) = 0;
176
180 virtual void disconnect() = 0;
181
190 virtual std::optional<ImageFrame> get_next_image_frame() = 0;
191
200 virtual std::optional<ImuFrame> get_next_imu_frame() = 0;
201
205 virtual MultiSenseConfig get_config() = 0;
206
210 virtual Status set_config(const MultiSenseConfig &config) = 0;
211
216 virtual StereoCalibration get_calibration() = 0;
217
222 virtual Status set_calibration(const StereoCalibration &calibration) = 0;
223
227 virtual MultiSenseInfo get_info() = 0;
228
233 virtual Status set_device_info(const MultiSenseInfo::DeviceInfo &device_info, const std::string &key) = 0;
234
238 virtual std::optional<MultiSenseStatus> get_system_status() = 0;
239
247 virtual Status set_network_config(const MultiSenseInfo::NetworkInfo &config,
248 const std::optional<std::string> &broadcast_interface) = 0;
249};
250
251}
Copyright 2013-2025 Carnegie Robotics, LLC 4501 Hatfield Street, Pittsburgh, PA 15201 http://www....
#define MULTISENSE_API
Channel(Channel &&) noexcept=default
Movable.
Channel(const Channel &)=delete
Non-copyable.
ChannelImplementation
Identifiers for the different Channel implementations.
static std::unique_ptr< Channel > create(const Config &config, const ChannelImplementation &impl=ChannelImplementation::LEGACY)
Factory create function which allows for switching between different channel implementations.
Channel & operator=(const Channel &)=delete
DataSource
Identifies which camera or data source the image is from.
Certain implementations may use a fixed set of internal buffers to manage incoming camera data.
A frame containing multiple images (indexed by DataSource).
A collection of IMU samples from the camera.
Complete configuration object for configuring the MultiSense.
Static status info for the MultiSense.
Consolidated status information which can be queried on demand from the MultiSense.