图2.1 阐释了一个机器人(Robot)与其所处环境(Environment)的交互过程。一个robot的Environment,或者称为world,是一个动态的具有内部状态的系统。Robot可以使用传感器(Sensor)获取环境(Environment)信息。然而传感器获得的信息包含噪声,并且很多信息是无法通过传感器直接获取的。因此,Robot内部需要维护对环境的估计(belief),见上图左侧。Rotot 也可以通过执行器(actuators)来影响环境。然而,这么做的结果经常无法预测。现在我们将更加正式地描述这个交互过程。
Enviroments 可以使用State来概括其特征。在本书的资料中,为了便利起见,我们认为State就是Robot和Environment的所有方面的集合,并且可以影响将来。State 会随着时间变化,例如人的位置;State也可能保持不变,例如(大多数)建筑物的墙。会变化的State 称为动态状态(Dynamic state),相对的,不变的State被称为 静态状态(Static State or no-changing state)。State也包含关于Robot自身的变量,例如位置姿态(pose)、速度(velocity)。在本书中,State将被记为向量 x , x 中的具体变量取决于应用的上下文。时间 t 的State被记为xt,典型的状态(State)在本书中有:
状态 xt 被称为 完整(complete)的:当 xt 是未来(future)的最佳预测器。换句话说 完整性(completeness)意味着,此前的State,measurment,control 对更加准确的预测未来(future)没有帮助。需要注意的是,completeness 的定义并不需要未来(future)是当前状态(State)的确定性函数(deterministic function)。未来可以是随机的,但是没有其他变量比 xt 对未来状态的随机进化影响更大,除非这个依赖关系是通过 xt 来体现。能够满足上述条件的时间域过程(temporal processes)通常被称为马尔科夫链(Markov chains)。
状态完整(state completeness)的观念在理论上比较重要。然而在实践中,描述一个实际的机器人系统complete state 是不可能的。一个完整状态不仅包含会影响未来状态的各种环境因素,而且同样包含robot自身的信息,例如计算机内存内容,周围人群的意图。这些信息是很难获取的。因此,实战中仅选取上述状态变量的一个子集,这样的状态被称为不完整状态(incomplete state)。
大部分机器人学应用中,状态是连续(continuous)的,也就是说 xt 是在连续统(continuum)的。一个明显的例子是Robot Pose(机器人位姿,相对于外部坐标系的位置和朝向)。有时候,状态是离散(discrete)的。离散的例子如描述sensor是否坏掉的二值状态变量。同时包含连续和离散的变量的状态空间(state space)被称为混合状态空间(hybrid state spaces)。
在大多数机器人学问题中,状态随着时间变化。在本书中,时间(Time)是离散的,也就是说,我们感兴趣的事件将会发生在离散的时间节点:
Robot与Environment 交互有两种基本类型:
- Robot可以通过其执行器(actuator)影响State。
- Robot可以通过其传感器(Sensor)收集State的信息。
两种交互类型可以同时进行,但是为了教学方便,我们在本书中对两个过程加以区别。交互过程在图2.1中已经阐释过。
- Sensor Measurements传感器测量
- Control Actions 控制行为
假定,Robot保留了所有过去的传感器测量和控制行为记录。我们将此称为数据data,与上文保持一致,Robot 有两个数据流:
- Measurement data 测量数据
即环境的瞬时状态。measurement data的例子包括相片、测距扫描(range scan)等。
时间t 的测量数据被记为: zt ,
在本书中,我们假设Robot在一个时间点做一次测量。这个假设是为了数学表达方便,不影响书中算法的有效性,因为本书中所有算法都可以被轻易的扩展,使Robot在一个时间节点上获取 n 个测量(n即状态变量个数)。以下数学标记(2.30):
- Control data 控制数据
即环境状态变化(change of state)的信息。在移动机器人领域,一个典型控制数据(control data)的例子是机器人的速度。将机器人的速度设为10cm/s,执行5秒后,机器人的位姿将大约向前移动50cm。所以说,Control data 主要关注State的变化。
另一个可选的control data 源是里程计(odometers).里程计是测量机器人(或车)的轮子转动运行的传感器。尽管odometer是传感器,我们仍然将其读数作为control data,因为其反映了robot pose的变化。
control data 将被记为 ut 。作为变量, ut 表示在时间间隔 (t−1,t] 发生的状态变化。像以前一样,我们将control data序列记为
区分测量(measurement)与控制(control)是一个非常关键的问题,这两种不同类型的数据在接下来的要讲的内容分别扮演了不同的基础角色。感知(Perception)过程提供了环境的状态信息,此次增加了机器人的知识(knowledge)。另一方面,行为(Motion)却趋向于引起机器人的知识损失,原因是机器人驱动的固有噪音和机器人所处环境的随机性;尽管有些情况下,一个控制行为(control)会使机器人对的状态更加确定。我们这里强调两者的区别,并不是说两者不会同时进行。相反,感知(Perception)和控制行为(control)经常同时发生;很多传感器会影响环境。
状态和测量的演化是被概率法则支配的。通常来说,某个时间点的状态xt是随机生成的。因此,我们需要搞清楚 xt 所服从的概率分布。初看之下, xt 取决于所有过去的状态(states),测量(measurements),控制行为(controls)。因此, 状态(state)的演化可以用如下概率分布表达:
然而,如果状态 x 是完整(complete)的,那么它可以充分代表过去的所有信息。特别的,xt−1应当是对之前的所有controls和measurements,即 u1:t−1 和 z1:t−1 ,的充分统计量(suffient statistic)。在上述表达式的所有变量中,只有控制行为 ut 在已知状态 xt−1 的情况下有意义。用概率论属于,这个见解可以用下面的等式表达:
上面等式表达的特性是条件独立性(conditional independence)的一个例子。条件独立性是指:在已知第三方变量,即条件变量conditioning variables,的情况下,一些变量相对其他变量是独立的。条件独立性(conditional independence)在本书遍地可见,他是概率机器人学算法易用性的保证。
相似的,我们也可以对measurement(测量)数据的生成进行建模。同理,如果 xt 是完整的,有如下的一个重要条件独立性(conditional independence)的例子:
以上讨论的成果是两个条件概率: p(xt|xt−1,ut) 和 p(zt|xt) 。
p(zt|xt)被称作测量概率(measurement probability),同上,若不使用时间索引 t ,可被记为p(z|x)。测量概率描述了从环境状态 x 生成测量数据z所服从的概率法则。测量数据通常是状态的带有噪音的投射(noisy projection)。
状态转移概率和测量概率结合起来,描述了机器人与环境的动态随机系统。上述的基于时序的生成模型也被称作隐藏马尔科夫模型(hidden Markov model, HMM)或者动态贝叶斯网络(dynamic Bayes network,DBN)。为了完整的表达这个模型,我们需要一个初始状态分布 p(x0) 。
Belief 是概率机器人学另一个关键概念。Belief 反映了机器人对于环境状态的认知。我们已经讨论过有些状态是无法直接测量的。例如,机器人的位置姿态可能是在全局坐标系的 x=(14.12,12.7,0.755) ,但也有可能无法直接获取(即使有GPS也不行!)。在无法直接测量的情况下,机器人必须从数据中推断他的位置姿态。因此,我们需要区分真实的状态(true state)和机器人内部的belief,或者称为对应此状态的状态认知(state of knowledge)。
概率机器人学通过条件概率分布(conditional probability distributions)来表达状态认知belief。一个状态认知分布(belief distribution)会给对应真实状态每个可能的假定值一个概率(或者密度值)。belief 分布是关于状态变量的后验概率,并且以数据为条件。我们用 bel(xt) 来表示状态变量 xt 上的belief,即下面这个后验概率的缩写: