课程 23:Project – RunawayRobot

课程 23:Project – RunawayRobot

1.   Welcome to Runaway Robot!

    这节课进入项目阶段,这个项目被称为 Runaway Robot(失控机器人),范围是追逐一个试图逃走的机器人。第一个版本具有完全的可观测性。你的任务是预测失控机器人的未来状态信息,进一步是如何去捕获它。

2.   练习:Part 1: Noiseless Prediction

    由于没有噪声,可以一步步地模拟,根据第二次测量参数,可以知道heading值,根据第三次测量参数,可以知道turning值,由于知道其运行方式。所以3步就预测正确了下一个位置。

    刚开始的时候,想了多种方法,比如卡尔曼,online_slam之类的,结果反而预测不到。实际上这个场景不适合使用经典卡尔曼过滤法,因为运动方式并不是线性的。

3.   Introduction to AddingNoise

4.   练习:Part 2:Adding Noise

    我假设已知失控机器人的真实轨迹就是一个圆及其运动方式,然后仅根据记录的每次目标测量的结果,使用统计法取得均值,然后用均值进行预测,仅仅几十步,就正确预测了带测量噪声的失控机器人的位置。效果图:

5.   Introduction to the Chase

6.   练习:Part 3: The Chase Begins

    前2次测试都是预测下一步,这次引入了一个hunter bot去捕获。我用统计方式预测值,然后去捕捉,顺利的话,仅仅三十几步就能捕获。也是假设我已知Runaway bot的大概运动方式。如下结果图中,仅用了31步:

7.   Introduction to Chasing witha Plan

8.   练习:Part 4:Chasing with a Plan

    这节跟 Part 3的主要区别在于,Hunt bot的速度变低了,之前是大于Runaway bot的,即使用一步步模拟的方式,仅仅通过模拟当前位置的下一个位置,只要预测足够准确,也能追上Runaway bot。而使Hunt bot的速度低于Runaway bot,就得指定一个计划去追Runaway bot了,比如多预测几步,或者一直呆在一个比较准确的可能被Runaway bot再次路过的点附近。我是假设它一直在做真实的圆周运动,多预测几步,然后跑到最快的可以相遇的点。

     我做的最好的方式,依然是使用统计,得出均值的方式。在测量噪声小的时候,是好用的。下图是一次运行的结果,花了113步:

下图是仅36步就追上了的:

9.   Introduction to the FinalHunt

10. 练习:Part 5: The Final Hunt(Bonus)

    这道有点难,测量噪声太大了。我没有得出很好的值。

    然后回到Part2做测试,也设定测量噪声一样大,然后假设一开始已知heading,turning,speed,measurement_noise的话,加上每次的measurement,用贝叶斯定理,有时可以在几十步的时候,就预测到正确的下一步。仅仅根据 measurement, 我尝试做平滑,得到的平均速度基本大于2,与实际的移动速度1.5有差距。

    下图是在Part2中增大measurement_noise到跟Part5一样,然后预测值,没有预测足够准确。绿点是真实值,红点是measurement值,蓝点是预测值。可以看到蓝点的预测值实际上跟绿点也比较接近了。

    假如用粒子过滤法做的话,事实上前面的一些例子里已经可以看到,粒子过滤时,一般也是设定了跟目标机器人一样的初始值,而仅仅使用每次的measurement值的情况下,用粒子过滤也会面临未知参数的个数较多的问题。

    尝试过采用scipy中的曲线拟合来做,因为我们大概知道目标bot的运动方式,通过部分测量得到的样本数据,得到拟合的曲线的参数(我设置的未知参数是(x0,y0,heading0,turning,speed,sigma)  x0,y0是运动的最初真实起点,heading0是最初的真实heading, sigma是测量时的标准差),然后代入到运动方式的变换方程中,预测下一个值。我是过一定时间就做一次参数拟合。比如测量几十次后,就将从头开始到目前的数据进行拟合。

    结果是用我的这种拟合的方法,在1000步以内几乎得不到好的参数。也比较依赖初始参数,我给定初始参数为正确的初始值进行拟合的时候,有时会在一百多步到几百步预测到正确的下一个值。但是,看得到的最优参数,x0,y0跟真实的有一定偏差,heading0,turning,speed跟初值差不多,sigma很大。。与真实值相去甚远。我的拟合参数相关的函数实现中,跟网上一些函数拟合用的方式有点不一样,我直接加入了高斯误差的计算。


11. Closing Words

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值