Skip to content

SDK示例

Luke edited this page May 9, 2026 · 1 revision

Example Demos

本目录包含使用 SimpleSensorSync 的示例代码,共 5 个 Demo:


1. CustomCam - 自定义相机

路径: CustomCam/

展示如何通过继承 Sensor 类实现自定义传感器。

核心文件:

  • cus_cam.h/cus_cam.cpp - 自定义相机类,继承自 Sensor
  • main.cpp - 演示如何配置同步器并接收数据

使用方法:

// 1. 创建同步器
Synchronizer synchronizer;
synchronizer.SetNetLink("192.168.1.188", 8888);

// 2. 配置自定义传感器
auto mv_cam = std::make_shared<CustomCam>();
mv_cam->SetParams({{"cam_1", CAM_1}, {"cam_2", CAM_2}});
synchronizer.UseSensor(mv_cam);

// 3. 开启同步
synchronizer.Start();

// 4. 订阅数据
Messenger::GetInstance().SubStruct("imu_1", ImuCallback);
Messenger::GetInstance().SubStruct("cam_1", ImageCallback);

// 5. 停止
synchronizer.Stop();

2. VideoCam - 视频相机

路径: VideoCam/

使用 OpenCV 读取 USB 视频设备,支持多相机同时采集。

核心文件:

  • video_cam.h/video_cam.cpp - 继承 Sensor,使用 cv::VideoCapture 读取相机
  • main.cpp - 基础示例
  • main_ros.cpp - ROS 版本
  • main_ros2.cpp - ROS2 版本

特点:

  • 每个相机独立线程读取
  • 线程安全的数据访问

3. VideoCam_LVI - LVI 视频相机

路径: VideoCam_LVI/

VideoCam 的 LVI 设备专用版本,接口与 VideoCam 相同。


4. NetCam - 网口工业相机

路径: NetCam/

支持网口工业相机(如海康威视等),包含 ROS 和 ROS2 示例。

核心文件:

  • mv_cam.h/mv_cam.cpp - 网口相机实现
  • main.cpp - 基础示例
  • main_ros.cpp - ROS 版本
  • main_ros2.cpp - ROS2 版本

5. NetCam_LVI - LVI 网口相机

路径: NetCam_LVI/

NetCam 的 LVI 设备专用版本。


编译方法

cd example
mkdir build && cd build
cmake ..
make

数据回调示例

void ImuCallback(const void* msg, size_t) {
    const auto* imu_data = static_cast<const ImuData*>(msg);
    // 处理IMU数据
}

void ImageCallback(const void* msg, size_t) {
    const auto* cam_data = static_cast<const CamData*>(msg);
    // 处理图像数据
}

继承 Sensor 类的标准写法

class MyCam final : public Sensor {
 public:
  ~MyCam() override;

  bool Initialization() override;  // 初始化相机
  void Stop() override;            // 停止采集
  void Start() override;           // 开始采集

 private:
  void Receive(void* handle, const std::string&) override;  // 数据接收
};

Clone this wiki locally