机器在不同场景中有不同的运行结果,针对特殊情况需要做特殊处理,这对于定位系统来说是必要的,下面做简要讨论。
机器分为自动和手动运行状态,不同运行状态的处理逻辑也不同,对应用层,定位层和传感器层是相互依赖互相影响的,要保证数据和处理结果的信息同步。三个层分别由三个程序节点负责执行任务,应用层接收定位层发送的位置信息,传感器层将里程计数据传输给定位层,定位层也反馈信息给传感器层。如果传感器层在传输里程计数据,这时定位层关闭则造成位置累积错误产生定位偏差。所以只有静止时才能关闭定位层。另外还涉及到地图层,地图层负责保存定位层的地图数据,并接收定位层数据实时刷新,其中一种异常情况是机器出地图,可能是人为推出地图外,这时定位层位置丢失,可以有两种处理办法一种是关闭定位报定位丢失,提醒用户做重定位,另外一种是不关闭定位但这时定位不可靠存在风险,关闭定位是合理的。另外一个特殊场景是电梯出入,因为通常来说在建图时不会对电梯内部建图只会标记电梯门口位置。因此在机器进电梯过程中随时可能出地图边界,因此需要做特殊处理比如报位置丢失或重新退到电梯外。自动进入电梯的情况会自动运行上述处理逻辑,手动推进电梯则与出地图边界的处理逻辑相同,先报定位丢失,再进行重定位恢复位置。
实际场景中人为介入的情况非常多,因此无论机器在手动自动状态都要保证定位只要机器运动就打开随时跟踪位置,只要出边界就关闭以免造成地图重叠重影,对于多张地图或有多个楼层的情况要能多地图重定位。