跳转到内容

ChassisLocalization::EKF API

文档稀疏
符号
68
已记录
34
类型
5
继承关系
2
源码分支
main

34 / 68 个公开 API 符号没有说明。

继承关系总览

继承图尚未加载。

全部继承关系

共 5 个类型

类型目录
类

chassis::loc::LocEKF

查看源码

可配置历史缓冲容量的 ESKF 定位系统实现类。 继承 IChassisLoc 接口,与底盘系统统一对接 封装 ESKF 算法,提供轮速 + 陀螺仪 + 外部位姿观测的融合能力 自动同步 ESKF 状态到 IChassisLoc 的 posture 和 velocity 历史状态缓冲容量可在工程接入时按回放需求和 RAM 预算做权衡 特性: update() updateLidar() 本类默认和使用的是同一时间基准 如果外部观测来自另一套时钟,必须先由接入工程完成对时或时间映射 本驱动库不负责上下位机对时 时间基准边界: StateBufferCapacity 保存多少个历史状态点,用于晚到观测回放 InputBufferCapacity 保存多少个尚未推进进 EKF 的输入样本,默认 4

继承关系

基类
  • IChassisLoc公开

构造与析构

1

LocEKF

函数公开
        chassis::loc::LocEKF< StateBufferCapacity, InputBufferCapacity >::LocEKF (motion::IChassisMotion &motion, const Config &cfg, sensors::gyro::HWT101CT &gyro, const uint32_t delta_ticks=1)
      

motion 作为里程计输入来源的 Motion cfg 滤波配置 gyro 提供 yaw / wz 观测的陀螺仪 delta_ticks update() 两次调用之间预计相隔多少个 HAL tick 若初始状态依赖首次外部观测,推荐先让 Motion 独立运行,待拿到第一帧雷达位姿和 第一帧陀螺仪数据,并准备好 cfg.x_init 等初始条件后,再构造本对象。

Localization/EKF/LocEKF.hpp:418

成员函数

15

dt

函数私有const
        float chassis::loc::LocEKF< StateBufferCapacity, InputBufferCapacity >::dt () const
      

约定 HAL tick 为 1ms,因此这里直接换算成秒。

Localization/EKF/LocEKF.hpp:252

isGyroEnabled

函数公开const
        bool chassis::loc::LocEKF< StateBufferCapacity, InputBufferCapacity >::isGyroEnabled () const
      

上游未提供说明。

Localization/EKF/LocEKF.hpp:396

isLidarEnabled

函数公开const
        bool chassis::loc::LocEKF< StateBufferCapacity, InputBufferCapacity >::isLidarEnabled () const
      

上游未提供说明。

Localization/EKF/LocEKF.hpp:397

next_idx

函数私有const
        uint32_t chassis::loc::LocEKF< StateBufferCapacity, InputBufferCapacity >::next_idx () const
      

只有两个缓冲区,因此这里直接在 0 / 1 之间切换。

Localization/EKF/LocEKF.hpp:457

postureInWorld

函数公开const
        Posture chassis::loc::LocEKF< StateBufferCapacity, InputBufferCapacity >::postureInWorld () const override
      

双缓冲读取,避免读到 update 中间态。

Localization/EKF/LocEKF.hpp:437

resetState

函数公开
        void chassis::loc::LocEKF< StateBufferCapacity, InputBufferCapacity >::resetState (const Config &cfg)
      

用新的初始状态和协方差重置 EKF,并丢弃旧的回放历史。

Localization/EKF/LocEKF.hpp:400

setGyroEnabled

函数公开
        void chassis::loc::LocEKF< StateBufferCapacity, InputBufferCapacity >::setGyroEnabled (const bool enabled)
      

上游未提供说明。

Localization/EKF/LocEKF.hpp:394

setLidarEnabled

函数公开
        void chassis::loc::LocEKF< StateBufferCapacity, InputBufferCapacity >::setLidarEnabled (const bool enabled)
      

上游未提供说明。

Localization/EKF/LocEKF.hpp:395

update

函数公开
        void chassis::loc::LocEKF< StateBufferCapacity, InputBufferCapacity >::update ()
      

按固定 dt 采样底盘速度和陀螺仪,并推进一次滤波状态。 dt 由构造参数 delta_ticks 决定,默认假设 tick 时间基准为 1ms。

Localization/EKF/LocEKF.hpp:318

updateEKF

函数私有
        void chassis::loc::LocEKF< StateBufferCapacity, InputBufferCapacity >::updateEKF ()
      

消费输入缓冲并推进 EKF,然后同步对外可读状态。

Localization/EKF/LocEKF.hpp:266

updateInput

函数私有
        void chassis::loc::LocEKF< StateBufferCapacity, InputBufferCapacity >::updateInput ()
      

把当前轮速和陀螺仪采样压入输入缓冲。

Localization/EKF/LocEKF.hpp:255

updateLidar

函数公开
        void chassis::loc::LocEKF< StateBufferCapacity, InputBufferCapacity >::updateLidar (const Posture &pos, const uint32_t ticks)
      

注入一帧外部位姿观测。 pos 外部观测的世界系位姿,单位语义与 Posture 一致 ticks update() 该观测对应的时间戳,必须与内部采样使用的时间基准一致; 若观测来自另一套时钟,需先由接入工程换算到统一时基后再传入 StateBufferCapacity 如果观测晚到但仍在历史缓冲区范围内,当前实现会回溯状态并重放后续输入。 可回放窗口长度由模板参数决定。

Localization/EKF/LocEKF.hpp:339

updateLoc

函数私有
        void chassis::loc::LocEKF< StateBufferCapacity, InputBufferCapacity >::updateLoc ()
      

根据当前 EKF 状态刷新对外暴露的 posture / velocity 缓冲。

Localization/EKF/LocEKF.hpp:287

velocityInBody

函数公开const
        Velocity chassis::loc::LocEKF< StateBufferCapacity, InputBufferCapacity >::velocityInBody () const override
      

双缓冲读取,避免读到 update 中间态。

Localization/EKF/LocEKF.hpp:427

velocityInWorld

函数公开const
        Velocity chassis::loc::LocEKF< StateBufferCapacity, InputBufferCapacity >::velocityInWorld () const override
      

双缓冲读取,避免读到 update 中间态。

Localization/EKF/LocEKF.hpp:432

成员变量

14

dticks_

变量私有
        uint32_t chassis::loc::LocEKF< StateBufferCapacity, InputBufferCapacity >::dticks_
      

相邻 update 之间的 tick 间隔

Localization/EKF/LocEKF.hpp:247

gyro_

变量公开
        sensors::gyro::HWT101CT& chassis::loc::LocEKF< StateBufferCapacity, InputBufferCapacity >::gyro_
      

提供 yaw / wz 观测的陀螺仪

Localization/EKF/LocEKF.hpp:52

gyro_enabled_

变量私有
        bool chassis::loc::LocEKF< StateBufferCapacity, InputBufferCapacity >::gyro_enabled_
      

上游未提供说明。

Localization/EKF/LocEKF.hpp:223

idx_

变量私有
        std::atomic<size_t> chassis::loc::LocEKF< StateBufferCapacity, InputBufferCapacity >::idx_
      

当前对外可见缓冲区下标

Localization/EKF/LocEKF.hpp:454

in_body

变量公开
        Velocity chassis::loc::LocEKF< StateBufferCapacity, InputBufferCapacity >::in_body
      

上游未提供说明。

Localization/EKF/LocEKF.hpp:450

in_world

变量公开
        Posture chassis::loc::LocEKF< StateBufferCapacity, InputBufferCapacity >::in_world
      

上游未提供说明。

Localization/EKF/LocEKF.hpp:445

in_world

变量公开
        Velocity chassis::loc::LocEKF< StateBufferCapacity, InputBufferCapacity >::in_world
      

上游未提供说明。

Localization/EKF/LocEKF.hpp:451

input_buffer_

变量私有
        Deque<Input, InputBufferCapacity> chassis::loc::LocEKF< StateBufferCapacity, InputBufferCapacity >::input_buffer_
      

尚未推进进 EKF 的输入样本队列

Localization/EKF/LocEKF.hpp:245

lidar_enabled_

变量私有
        bool chassis::loc::LocEKF< StateBufferCapacity, InputBufferCapacity >::lidar_enabled_
      

上游未提供说明。

Localization/EKF/LocEKF.hpp:224

lock_

变量私有
        AtomicFlagLock chassis::loc::LocEKF< StateBufferCapacity, InputBufferCapacity >::lock_
      

雷达回放时用于阻止并发 updateEKF()

Localization/EKF/LocEKF.hpp:249

pos_ekf_

变量私有
        PositionEKF chassis::loc::LocEKF< StateBufferCapacity, InputBufferCapacity >::pos_ekf_
      

真正执行滤波计算的内部对象

Localization/EKF/LocEKF.hpp:221

posture_

变量私有
        struct chassis::loc::LocEKF::@145332172176301216031344167226201262207172340035 chassis::loc::LocEKF< StateBufferCapacity, InputBufferCapacity >::posture_[2] [2]
      

上游未提供说明。

Localization/EKF/LocEKF.hpp:446

state_buffer_

变量私有
        Deque<StatePoint, StateBufferCapacity> chassis::loc::LocEKF< StateBufferCapacity, InputBufferCapacity >::state_buffer_
      

历史状态,用于处理晚到观测回放

Localization/EKF/LocEKF.hpp:244

velocity_

变量私有
        struct chassis::loc::LocEKF::@173032060166225015142253032031131170225127244036 chassis::loc::LocEKF< StateBufferCapacity, InputBufferCapacity >::velocity_[2] [2]
      

上游未提供说明。

Localization/EKF/LocEKF.hpp:452

嵌套类型

4

Config

类型定义公开
        using chassis::loc::LocEKF< StateBufferCapacity, InputBufferCapacity >::Config = typename PositionEKF::Config
      

上游未提供说明。

Localization/EKF/LocEKF.hpp:311
结构体

chassis::loc::LocEKF::Input

查看源码

上游未提供类型说明。

成员变量

3

ticks

变量公开
        uint32_t chassis::loc::LocEKF< StateBufferCapacity, InputBufferCapacity >::Input::ticks
      

输入对应的时间戳;默认来自本地 tick,若外部观测参与回放,工程侧需先把时间基准对齐

Localization/EKF/LocEKF.hpp:229

vel

变量公开
        Velocity chassis::loc::LocEKF< StateBufferCapacity, InputBufferCapacity >::Input::vel
      

该时刻的里程计预测输入

Localization/EKF/LocEKF.hpp:231

yaw_gyro

变量公开
        float chassis::loc::LocEKF< StateBufferCapacity, InputBufferCapacity >::Input::yaw_gyro
      

该时刻的陀螺仪 yaw 观测

Localization/EKF/LocEKF.hpp:232
类

chassis::loc::LocEKF::PositionEKF

查看源码

内部位置 EKF。 [x, y, yaw, yaw_offset] 状态向量是, 其中 yaw_offset 用来吸收陀螺仪与外部绝对观测之间可能存在的偏差。

继承关系

基类
  • math::ekf::EKF< float, 4 >私有

构造与析构

1

PositionEKF

函数公开
        chassis::loc::LocEKF< StateBufferCapacity, InputBufferCapacity >::PositionEKF::PositionEKF (const Config &cfg)
      

上游未提供说明。

Localization/EKF/LocEKF.hpp:136

成员函数

6

covariance

函数公开const
        auto chassis::loc::LocEKF< StateBufferCapacity, InputBufferCapacity >::PositionEKF::covariance () const
      

返回当前状态协方差。

Localization/EKF/LocEKF.hpp:145

gyroUpdate

函数公开
        void chassis::loc::LocEKF< StateBufferCapacity, InputBufferCapacity >::PositionEKF::gyroUpdate (const float &yaw)
      

用陀螺仪 yaw 做一次量测更新。

Localization/EKF/LocEKF.hpp:180

lidarUpdate

函数公开
        void chassis::loc::LocEKF< StateBufferCapacity, InputBufferCapacity >::PositionEKF::lidarUpdate (const Posture &pos)
      

用外部绝对位姿做一次量测更新。

Localization/EKF/LocEKF.hpp:188

odomUpdate

函数公开
        void chassis::loc::LocEKF< StateBufferCapacity, InputBufferCapacity >::PositionEKF::odomUpdate (const Velocity &vel, const float dt)
      

只用轮速里程计推进一次预测。

Localization/EKF/LocEKF.hpp:155

reset

函数公开
        void chassis::loc::LocEKF< StateBufferCapacity, InputBufferCapacity >::PositionEKF::reset (const VecS &state, const MatS &covariance)
      

用指定状态和协方差直接覆盖滤波器,供回溯重放使用。

Localization/EKF/LocEKF.hpp:148

state

函数公开const
        auto chassis::loc::LocEKF< StateBufferCapacity, InputBufferCapacity >::PositionEKF::state () const
      

返回当前 EKF 状态向量。

Localization/EKF/LocEKF.hpp:143

成员变量

2

R_gyro_

变量私有
        math::Mat<float, 1, 1> chassis::loc::LocEKF< StateBufferCapacity, InputBufferCapacity >::PositionEKF::R_gyro_
      

上游未提供说明。

Localization/EKF/LocEKF.hpp:218

R_lidar_

变量私有
        math::Mat<float, 3, 3> chassis::loc::LocEKF< StateBufferCapacity, InputBufferCapacity >::PositionEKF::R_lidar_
      

上游未提供说明。

Localization/EKF/LocEKF.hpp:219

嵌套类型

1
结构体

chassis::loc::LocEKF::PositionEKF::Config

查看源码

上游未提供类型说明。

成员变量

11

covP

变量公开
        struct chassis::loc::LocEKF::PositionEKF::Config::@007103227310027305026102154020312164355357035052 chassis::loc::LocEKF< StateBufferCapacity, InputBufferCapacity >::PositionEKF::Config::covP
      

上游未提供说明。

Localization/EKF/LocEKF.hpp:97

gyro

变量公开
        struct chassis::loc::LocEKF::PositionEKF::Config::@101333314345004074132312303221246003261163207252::@175340041104356104356371041244266301212256374154 chassis::loc::LocEKF< StateBufferCapacity, InputBufferCapacity >::PositionEKF::Config::gyro
      

上游未提供说明。

Localization/EKF/LocEKF.hpp:122

lidar

变量公开
        struct chassis::loc::LocEKF::PositionEKF::Config::@101333314345004074132312303221246003261163207252::@014206313035024112145210232025306065301174046155 chassis::loc::LocEKF< StateBufferCapacity, InputBufferCapacity >::PositionEKF::Config::lidar
      

上游未提供说明。

Localization/EKF/LocEKF.hpp:132

noiseQ

变量公开
        struct chassis::loc::LocEKF::PositionEKF::Config::@324300371120222061137354153047074105277163021363 chassis::loc::LocEKF< StateBufferCapacity, InputBufferCapacity >::PositionEKF::Config::noiseQ
      

上游未提供说明。

Localization/EKF/LocEKF.hpp:110

noiseR

变量公开
        struct chassis::loc::LocEKF::PositionEKF::Config::@101333314345004074132312303221246003261163207252 chassis::loc::LocEKF< StateBufferCapacity, InputBufferCapacity >::PositionEKF::Config::noiseR
      

上游未提供说明。

Localization/EKF/LocEKF.hpp:133

x

变量公开
        float chassis::loc::LocEKF< StateBufferCapacity, InputBufferCapacity >::PositionEKF::Config::x
      

上游未提供说明。

Localization/EKF/LocEKF.hpp:79

x_init

变量公开
        struct chassis::loc::LocEKF::PositionEKF::Config::@076150034055000002104272336301152127011334367235 chassis::loc::LocEKF< StateBufferCapacity, InputBufferCapacity >::PositionEKF::Config::x_init
      

上游未提供说明。

Localization/EKF/LocEKF.hpp:84

xy

变量公开
        float chassis::loc::LocEKF< StateBufferCapacity, InputBufferCapacity >::PositionEKF::Config::xy
      

外部位姿观测中的平移噪声

Localization/EKF/LocEKF.hpp:89

y

变量公开
        float chassis::loc::LocEKF< StateBufferCapacity, InputBufferCapacity >::PositionEKF::Config::y
      

上游未提供说明。

Localization/EKF/LocEKF.hpp:79

yaw

变量公开
        float chassis::loc::LocEKF< StateBufferCapacity, InputBufferCapacity >::PositionEKF::Config::yaw
      

陀螺仪 yaw 观测噪声 外部位姿观测中的航向噪声

Localization/EKF/LocEKF.hpp:80

yaw_offset

变量公开
        float chassis::loc::LocEKF< StateBufferCapacity, InputBufferCapacity >::PositionEKF::Config::yaw_offset
      

上游未提供说明。

Localization/EKF/LocEKF.hpp:81
结构体

chassis::loc::LocEKF::StatePoint

查看源码

上游未提供类型说明。

成员变量

3

P

变量公开
        PositionEKF::MatS chassis::loc::LocEKF< StateBufferCapacity, InputBufferCapacity >::StatePoint::P
      

上游未提供说明。

Localization/EKF/LocEKF.hpp:239

input

变量公开
        Input chassis::loc::LocEKF< StateBufferCapacity, InputBufferCapacity >::StatePoint::input
      

推导出该状态时所使用的输入样本

Localization/EKF/LocEKF.hpp:241

x

变量公开
        PositionEKF::VecS chassis::loc::LocEKF< StateBufferCapacity, InputBufferCapacity >::StatePoint::x
      

上游未提供说明。

Localization/EKF/LocEKF.hpp:238

其他公开符号

宏定义

1

文件

1

Localization/EKF/LocEKF.hpp

文件

基于扩展卡尔曼滤波的底盘定位后端。 syhanjin 2026-03-11 使用 fastlio2(10Hz) + encoder(1kHz) + HWT101CT(yaw, 1kHz) 融合定位

Localization/EKF/LocEKF.hpp