概览#
Python模块 imu_py 暴露 IMUDriver;C++公共头为 imu_driver.hpp。支持的驱动为HIPNUC。
创建接口#
Python
IMUDriver.create_imu(imu_id, interface_type, interface, imu_type, baudrate=0)| 参数 | 含义 |
|---|---|
imu_id |
设备ID,C++类型为 uint16_t |
interface_type |
HIPNUC实现支持 serial 或 can |
interface |
实际串口路径或CAN接口名 |
imu_type |
该工厂实现接受 HIPNUC |
baudrate |
默认0;实际设置须符合通信接口和实现支持范围 |
工厂建立对应通信对象,不是离线配置解析。其他 imu_type 会抛出 IMU type not supported。
状态读取#
| 方法 | 返回与约定 |
|---|---|
get_imu_id() |
设备ID |
get_quat() |
四元数 [w,x,y,z] |
get_ang_vel() |
[x,y,z],rad/s |
get_lin_acc() |
[x,y,z],m/s² |
get_temperature() |
温度;反馈取决于协议与设备 |
getter读取异步解析缓存,没有通用的同步 read() 或反馈时间戳。串口解析将角速度从度制转换到弧度制,将加速度转换到m/s²。判断在线状态时检查通信与反馈更新,避免仅使用初始零值或连续相同值。
坐标变换#
驱动输出与机身坐标不自动等同。仓库 IMU例程使用 extrinsic_R 和SciPy进行变换,并在SciPy边界把 wxyz 转为 xyzw,处理完再转回。该矩阵只适用于例程假定的安装方向;实际机身方向应核对 robot.yaml 中的外参。
读取原始缓存的例子见 最小接入示例。完整上游例程还依赖NumPy和SciPy。