-
Notifications
You must be signed in to change notification settings - Fork 11
SDK Examples
Luke edited this page Jun 29, 2026
·
1 revision
This directory contains example code for using SimpleSensorSync, with a total of 5 demos:
Path: CustomCam/
Demonstrates how to implement a custom sensor by inheriting the Sensor class.
Core Files:
-
cus_cam.h/cus_cam.cpp- Custom camera class, inheriting fromSensor -
main.cpp- Demonstrates how to configure the synchronizer and receive data
Usage:
// 1. Create synchronizer
Synchronizer synchronizer;
synchronizer.SetNetLink("192.168.1.188", 8888);
// 2. Configure custom sensor
auto mv_cam = std::make_shared<CustomCam>();
mv_cam->SetParams({{"cam_1", CAM_1}, {"cam_2", CAM_2}});
synchronizer.UseSensor(mv_cam);
// 3. Start synchronization
synchronizer.Start();
// 4. Subscribe to data
Messenger::GetInstance().SubStruct("imu_1", ImuCallback);
Messenger::GetInstance().SubStruct("cam_1", ImageCallback);
// 5. Stop
synchronizer.Stop();Path: VideoCam/
Uses OpenCV to read USB video devices, supporting simultaneous multi-camera acquisition.
Core Files:
-
video_cam.h/video_cam.cpp- InheritsSensor, usescv::VideoCaptureto read cameras -
main.cpp- Basic example -
main_ros.cpp- ROS version -
main_ros2.cpp- ROS2 version
Features:
- Each camera has its own independent reading thread
- Thread-safe data access
Path: VideoCam_LVI/
LVI device-specific version of VideoCam, with the same interface as VideoCam.
Path: NetCam/
Supports Ethernet industrial cameras (e.g., Hikvision, etc.), including ROS and ROS2 examples.
Core Files:
-
mv_cam.h/mv_cam.cpp- Ethernet camera implementation -
main.cpp- Basic example -
main_ros.cpp- ROS version -
main_ros2.cpp- ROS2 version
Path: NetCam_LVI/
LVI device-specific version of NetCam.
cd example
mkdir build && cd build
cmake ..
makevoid ImuCallback(const void* msg, size_t) {
const auto* imu_data = static_cast<const ImuData*>(msg);
// Process IMU data
}
void ImageCallback(const void* msg, size_t) {
const auto* cam_data = static_cast<const CamData*>(msg);
// Process image data
}class MyCam final : public Sensor {
public:
~MyCam() override;
bool Initialization() override; // Initialize camera
void Stop() override; // Stop acquisition
void Start() override; // Start acquisition
private:
void Receive(void* handle, const std::string&) override; // Data reception
};