欧拉积分、中点积分与龙格-库塔积分
在 SLAM 系统中经常用到各种不同的数值积分方法,工程上最常见的有三种:欧拉积分(Euler method)、中点积分(Midpoint method)和龙格-库塔法积分(Runge–Kutta methods)。他们的区别就是如何用数值方法模拟一个斜率。这里简单总结如下:
一、欧拉积分
设有如下微分方程:
并且 和 时刻的差为 ,则欧拉积分定义为:
也就是说用 t 时刻的斜率作为整个 时刻的导数。
二、中点积分
设有如下微分方程:
并且 和 时刻的差为 ,则显式中点积分定义为:
则隐式中点积分定义为:
也就是说用 时刻的斜率作为整个 时刻的导数。
欧拉积分与中点积分都是一阶近似并没有本质不同,二者只是一阶导数所取位置不同,他们的性能也有差别,如下图所示,作为一阶积分近似方法来讲,中点积分有时会稍好一些(带来更快的收敛速度)。
图示为方程 ...
[C++11] C++11 中的回调
之前写 Java 和 OC 非常羡慕其中的回调机制,之前的博客也介绍了一个使用 fast delegate 回调的 C++ 机制(参见:[C++] 简单高效的 delegate 方法)。现在 C++11 已经普及了,也同样支持了回调,虽然比高阶的语言 Java 和 OC 之类还稍显繁琐,但是基本功能已经都有了,这里简单说明如下。
1、回调基本函数
在 C++11 中使用 std::function 定义回调函数和参数类型,使用 std::bind 绑定回调函数。示例如下:
C++
#include...