2. SDK安装和配置方法 
2.1 系统要求 
- C++ 编译器: GCC 7+ / Clang 5+ / MSVC 2017+
 - CMake 版本: 3.10 或更高版本
 - C++ 标准: C++17
 - 操作系统: Linux / Windows / macOS
 - 依赖: 无外部依赖(仅 C++ 标准库)
 
2.2 编译和安装 SDK 
2.2.1 标准安装方法 
bash
# 进入 C++ SDK 目录
cd psi-glove-SDK/cpp_sdk
# 创建构建目录
mkdir build && cd build
# 配置 CMake(默认配置)
cmake ..
# 编译(使用所有 CPU 核心)
make -j$(nproc)
# 安装到系统目录(需要 root 权限)
sudo make install
# 更新动态链接库缓存(Linux)
sudo ldconfig默认安装路径:
| 组件 | 安装路径 | 
|---|---|
| 头文件 | /usr/local/include/psi_glove_sdk/ | 
| 库文件 | /usr/local/lib/libpsi_glove_sdk.so (Linux)/usr/local/lib/libpsi_glove_sdk.dylib (macOS)C:\Program Files\psi_glove_sdk\lib\psi_glove_sdk.dll (Windows) | 
| CMake 配置 | /usr/local/lib/cmake/psi_glove_sdk/ | 
2.2.2 自定义安装路径 
bash
# 安装到自定义目录(不需要 root 权限)
cd cpp_sdk
mkdir build && cd build
# 指定安装前缀
cmake -DCMAKE_INSTALL_PREFIX=$HOME/.local ..
# 编译和安装
make -j$(nproc)
make install
# 配置环境变量
export LD_LIBRARY_PATH=$HOME/.local/lib:$LD_LIBRARY_PATH
export CMAKE_PREFIX_PATH=$HOME/.local:$CMAKE_PREFIX_PATH2.2.3 Windows 平台编译 
powershell
# 使用 Visual Studio 2017 或更高版本
cd psi-glove-SDK\cpp_sdk
mkdir build
cd build
# 配置(生成 Visual Studio 解决方案)
cmake -G "Visual Studio 15 2017 Win64" ..
# 编译(或在 Visual Studio 中打开 .sln 文件)
cmake --build . --config Release
# 安装
cmake --install . --config Release2.3 SDK 可配置参数说明 
SDK 提供多个可配置参数以适应不同应用场景:
2.3.1 CMake 构建选项 
bash
cmake [选项] ..| 选项 | 类型 | 默认值 | 说明 | 
|---|---|---|---|
BUILD_EXAMPLES | BOOL | OFF | 是否编译示例程序 | 
BUILD_SHARED_LIBS | BOOL | ON | 编译动态库(OFF 为静态库) | 
CMAKE_BUILD_TYPE | STRING | Release | 构建类型:Debug/Release/RelWithDebInfo | 
CMAKE_INSTALL_PREFIX | PATH | /usr/local | 安装路径前缀 | 
CMAKE_CXX_STANDARD | STRING | 17 | C++ 标准版本 | 
使用示例:
bash
# 编译示例程序 + 调试模式
cmake -DBUILD_EXAMPLES=ON -DCMAKE_BUILD_TYPE=Debug ..
# 静态库 + 自定义安装路径
cmake -DBUILD_SHARED_LIBS=OFF -DCMAKE_INSTALL_PREFIX=/opt/psi_glove ..
# 完整配置
cmake \
  -DBUILD_EXAMPLES=ON \
  -DCMAKE_BUILD_TYPE=Release \
  -DCMAKE_INSTALL_PREFIX=$HOME/.local \
  -DCMAKE_CXX_COMPILER=g++-9 \
  ..2.3.2 SDK 运行时参数 
SerialInterface 构造函数参数 
cpp
SerialInterface(
    const std::string& port,           // 串口路径
    int baudrate = 115200,             // 波特率
    std::chrono::milliseconds timeout = std::chrono::milliseconds(6),  // 超时
    bool auto_connect = false,         // 是否自动连接
    bool mock = false                  // 模拟模式(用于测试)
);| 参数 | 类型 | 默认值 | 说明 | 
|---|---|---|---|
port | std::string | 必填 | 串口设备路径(如 /dev/ttyACM0, COM31) | 
baudrate | int | 115200 | 通信波特率,支持 115200、500000 等 | 
timeout | std::chrono::milliseconds | 6ms | 读写超时时间 | 
auto_connect | bool | false | 是否在创建时自动连接设备 | 
mock | bool | false | 模拟模式,用于测试(无需实际硬件) | 
PSIGloveController 构造函数参数 
cpp
PSIGloveController(
    std::unique_ptr<CommunicationInterface> interface,  // 通信接口
    size_t smoothing_window_size = 10                   // 平滑窗口大小
);| 参数 | 类型 | 默认值 | 说明 | 
|---|---|---|---|
interface | std::unique_ptr<CommunicationInterface> | 必填 | 通信接口实例(如 SerialInterface) | 
smoothing_window_size | size_t | 10 | 移动平均滤波窗口大小(样本数) | 
参数选择建议:
- 高频采集(低延迟): 
baudrate=500000,timeout=3ms,smoothing_window_size=5 - 稳定数据: 
baudrate=115200,timeout=6ms,smoothing_window_size=10 - 嵌入式系统: 静态库 + 最小平滑窗口(
smoothing_window_size=3) 
2.4 典型配置示例 
配置 1: 标准配置(推荐) 
cpp
#include <psi_glove_sdk/psi_glove.hpp>
// 创建串口接口
auto serial = std::make_unique<psi_glove::SerialInterface>(
    "/dev/ttyACM0",                     // 串口路径
    115200,                              // 波特率
    std::chrono::milliseconds(6),        // 超时
    false,                               // 不自动连接
    false                                // 不使用模拟数据
);
// 创建控制器
psi_glove::PSIGloveController controller(
    std::move(serial),
    10  // 平滑窗口大小
);配置 2: 高速配置(低延迟) 
cpp
// 高速串口 + 小平滑窗口
auto serial = std::make_unique<psi_glove::SerialInterface>(
    "/dev/ttyACM0",
    500000,                              // 高波特率
    std::chrono::milliseconds(3),        // 短超时
    true,                                // 自动连接
    false
);
psi_glove::PSIGloveController controller(std::move(serial), 5);  // 小窗口配置 3: 模拟模式(用于测试) 
cpp
// 无需实际硬件
auto serial = std::make_unique<psi_glove::SerialInterface>(
    "/dev/ttyUSB0",
    115200,
    std::chrono::milliseconds(6),
    false,
    true  // 启用模拟数据
);
psi_glove::PSIGloveController controller(std::move(serial), 10);