假期学习Probabilistic Robotics的一些笔记
使用的教材为《Probabilistic Robotics》
RECURSIVE STATE ESTIMATION
Introduction
State estimation seeks to recover state variables from the data. Probabilistic state estimation algorithms compute belief distributions over possible world states.
在概率机器人学中,我们依靠一些简单的概率论规则来进行机器人的建模,尤其是Bayes法则
这里特别提一下Bayes的相关公式是
$$!p(a|b)=\frac{p(b|a)\cdot p(a)}{p(b)}$$
其中
$$!p(b)=p(b|a_1)p(a_1)da_1$$
另外是我们定义$$x_t$$表示系统的完全状态,$$u_t$$为传感器动作,$$z_t$$ 为当下的传感器所测定的数值,为方便一般取时间为离散量。
另外,$$x_{1:t}$$表示过去1-t时间内x的集合
Bayes Filter
所谓 Bayes filter是概率论一个不错的应用,大规模使用了Bayes法则
Belief Distributions
Bayes Filter 的核心在于对信念分布的操作,所谓信念分布,是在已知传感器数据,动作器动作的情况下对状态$$x_t$$的一个估计
先定义
$$!bel(x_t)=p(x|z_{1:t},u_{1:t})$$
$$!\overline{bel(x_t)}=p(x|z_{1:t-1},u_{1:t})$$
也就是说,$$bel(x_t)$$是用于表示在给定的测量序列和动作序列的基础上x的分布,$$\overline{bel(x_t)}$$则是知道t-1时刻的信息后对于t时刻的$$u_t$$的一个预测。
Bayes 的迭代规则
在这里,我们可以轻松证明$$bel(x_t)$$,$$\overline{bel(x_t)}$$和$$bel(x_{t-1})$$之间的关系
$$!\overline{bel(x_t)}=\int p(x_t|u_t,x_{t-1}) bel(x_{t-1})dx$$
$$!bel(x_t)=\frac{p(z_t|x_t)\overline{bel(x_t)}}{p(z_i)}$$
$$p(z_i)$$为归一化常数,我们在这里仅仅讨论上面二式的物理学意义
先说$$!\overline{bel(x_t)}=\int p(x_t|u_t,x_{t-1}) bel(x_{t-1})dx$$
在这个式子里如果我们将$$u_1:t-1$$ $$z_{1:t-1}$$当作给定条件,那么bel(x_{t-1})实际上意味着上一步已知的对状态x的估计分布,而$$p(x_t|u_t,x_{t-1})$$正是通过x的估计分布和下一步对应的动作来讨论未来的状态分布,则容易理解这一式子的意义是根据已知的概率分布和动作$$u_t$$对于状态概率分布的影响来预测下一步的概率分布。
另一个式子$$!bel(x_t)=\eta p(z_t|x_t)\overline{bel(x_t)}$$的意思则不那么明确,在这里我们给出了对于$$bel(x_t)$$的一个预测$$\overline{bel(x_t)}$$ ,但是这里的预测并不依赖于$$z_t$$的准确测量,那么我们可以利用bayes法则来更新他,利用
$$x_t$$,$$z_t$$之间的关系,通过乘因子$$p(z_t|x_t)$$和归一化后,我们得到了对于x估计的完整值。
一个简单的栗子
上面这么多绕口的公式并不足以直观理解,这里我引用书中的一个栗子
一个萌萌哒机器人走到一扇门前,他需要确定门是否是开着的,并且大喝一声芝麻开门来打开这扇门。
这里为了书写方便,我们这里大写字母表示状态变量,小写字母表示状态的本征值,比如 $$x_0$$表示门打开, $$ !x_0$$ 表示门关闭
首先,我们先认为门在机器人到来之前的状态是随机的,这是对于状态x的先验概率一个估计,也就是
$$!bel(x_0)=0.5$$
$$!bel(!x_0)=0.5$$
我们假设萌萌哒机器人的传感器工作并不稳定(这里$$z_t$$,$$ !z_t$$分别表示传感器观测到打开或者关闭),比如
$$!p(x_t|x_t)=0.6$$
$$!p(!z_t|x_t)=0.4$$
$$!p(z_t|!x_t)=0.2$$
$$!p(!z_t|!x_t)=0.8$$
另外是对于打开一扇门,机器人只有80%的成功概率,但是机器人并不会造成门的意外关闭
即
$$!p(x_t|!x_{t-1},U_t)=0.8$$
$$!p(!x_t|!x_{t-1},U_t)=0.2$$
$$!p(x_t|x_{t-1},U_t)=1$$
$$!p(!x_t|x_{t-1},U_t)=0$$
那么我们开始进行分析系统的变化
首先写出预测迭代的表达式
$$!\overline{bel(X_t)}=\int p(x_t|U_t,x_{t-1}) bel(x_{t-1})dx$$
在这里
$$!\overline{bel(X_t)}=\sum_{x_{t-1}} p(x_t|U_1,x_{t-1}) bel(x_{t-1})$$
$$!\overline{bel{X_t}}=p(X_t|U_t,!x_{t-1}) bel(!x_{t-1})+p(X_{t}|U_t,x_{t-1}) bel(x_{t-1})$$
假设$$U_1=!u$$,那么有
$$!\overline{bel{x_1}}=bel(!x_1)=0.5$$
此时,假设我们的机器人观测到门是打开的,
$$!bel(X_t)=\eta \cdot p(Z_t|X_t) \overline{bel(X_t)} = p(z_t|X_t)\overline{bel(x_t)}$$
那么
$$!bel(x_1)=\eta 0.6\cdot 0.5=0.3\eta$$
$$!bel(!x_1)=\eta 0.2\cdot 0.5=0.1\eta$$
归一化后
$$!bel(x_1)=0.75; bel(!x_1)=0.25 $$
好这个时候我们做一个push操作
$$!overline(x_2)=0.751+0.250.8=0.95$$
$$!overline(!x_2)=00.75+0.250.2=0.05$$
也就是说,此时根据预测门处于打开的概率为0.95,
这个时候我们又观测到了门打开,那么$$bel(x2)=0.983$$ $$bel(!x2)=0.017$$
也就是我们观测到门是开的,再去开门,仍然有0.017的概率使得门是关的,当然了,我们可以重复这一动作进行迭代。
总结
关于Bayes Filter的基本内容就是这么多,可以看到这是一种使用概率来分析每一个过程迁移的,后面还有一些关于马尔可夫过程的分析,就不讲了,这里我们无妨比较一下Bayes Filter和量子力学的异同。
首先是,对于物体,我们仅仅知道其处于一些本征态的概率叠加,我们无法准确的说,到底物体处于哪个态,但是不同的是,一次量子力学观测可以使物体坍塌到观测矩阵的一个本征值,而且就这么不变下去,但是对于Bayes Filter,尽管观测坍塌了,我们还是不能说,这个粒子就处于了这个态,仅仅是对于先验概率的一次迭代加强。
另外我想讨论是否有这么一个可能性,对于什么情况下,经过无数次观测,物体的观测值会趋向于态0。
关键应当在于$$p(z_t|x_t)$$也就是传感器的灵敏度。
态0不就跳不出去了吗