基于整数的传感器 Fusion/Kalman 过滤器
Integer Based Sensor Fusion/Kalman Filter
是否有人知道在大多数开源实现中仅使用整数运算而不是所有浮点运算的传感器融合实现 accumulates/divides/multiplies?
在我的处理器上执行重复的浮点计算非常昂贵,我想尽可能地减少它们。我可能会失去一些精度,但我的应用程序不需要高精度输出。
将所有变量都转换为整数并精确地命中是否有任何问题?任何建议都会很好,谢谢大家。
fixed-point的使用是在没有 FPU 的设备上进行灵活数学运算的最佳解决方案。
Anthony Williams 的 fixed point maths library 会适合,它使用 64 位整数类型提供 34Q28(34 位整数位,28 位小数位)格式的浮点类型,具有广泛的数学、运算符和转换功能。它是用 C++ 编写的,用于将 fixed
类型创建为 class,具有广泛的运算符重载和标准数学函数,因此它主要是 inter-changeable 和 float
或 double
在现有代码中。
我知道这个问题被标记为 C,但你不需要广泛使用 C++ 语法,只需将你的 C 代码编译为 C++,包括 fixed.hpp header,替换 float
或double
与 fixed
和 compile/link fixed.cpp 文件与您的项目。
是否有人知道在大多数开源实现中仅使用整数运算而不是所有浮点运算的传感器融合实现 accumulates/divides/multiplies?
在我的处理器上执行重复的浮点计算非常昂贵,我想尽可能地减少它们。我可能会失去一些精度,但我的应用程序不需要高精度输出。
将所有变量都转换为整数并精确地命中是否有任何问题?任何建议都会很好,谢谢大家。
fixed-point的使用是在没有 FPU 的设备上进行灵活数学运算的最佳解决方案。
Anthony Williams 的 fixed point maths library 会适合,它使用 64 位整数类型提供 34Q28(34 位整数位,28 位小数位)格式的浮点类型,具有广泛的数学、运算符和转换功能。它是用 C++ 编写的,用于将 fixed
类型创建为 class,具有广泛的运算符重载和标准数学函数,因此它主要是 inter-changeable 和 float
或 double
在现有代码中。
我知道这个问题被标记为 C,但你不需要广泛使用 C++ 语法,只需将你的 C 代码编译为 C++,包括 fixed.hpp header,替换 float
或double
与 fixed
和 compile/link fixed.cpp 文件与您的项目。