forked from logzhan/ORB-SLAM3-UESTC
54 lines
1.1 KiB
C++
54 lines
1.1 KiB
C++
// IMUReader.h
|
|
#pragma once
|
|
|
|
#include <iostream>
|
|
#include <thread>
|
|
#include <chrono>
|
|
#include <string>
|
|
#include <boost/asio.hpp>
|
|
#include <boost/array.hpp>
|
|
|
|
// 结构体定义 IMU 数据
|
|
struct IMUData {
|
|
float accelX;
|
|
float accelY;
|
|
float accelZ;
|
|
float gyroX;
|
|
float gyroY;
|
|
float gyroZ;
|
|
};
|
|
|
|
class IMUReader {
|
|
public:
|
|
// 构造函数
|
|
IMUReader(std::string ComNumber);
|
|
|
|
// 构造函数
|
|
IMUReader();
|
|
|
|
// 析构函数
|
|
~IMUReader();
|
|
|
|
// 初始化 IMU
|
|
void IMUInit(std::string ComNumber);
|
|
|
|
// 获取 IMU 数据状态
|
|
int ReadData(IMUData& data);
|
|
|
|
private:
|
|
boost::asio::io_service io;
|
|
boost::asio::serial_port* serial;
|
|
// boost::asio::serial_port serial(io, "/dev/ttyUSB0"); // 替换成你的串口设备路径
|
|
|
|
bool isRunning; // 控制是否退出循环的标志变量
|
|
std::thread dataThread; // 数据读取线程
|
|
IMUData data;
|
|
// 读取 IMU 数据的循环
|
|
int IMUReadUartData();
|
|
|
|
void IMUReadDataThread(void);
|
|
|
|
// 辅助函数,生成随机浮点数(模拟实际获取的传感器数据)
|
|
float getRandomFloat();
|
|
};
|