Lesson 1 Localization

蒙特卡洛机器人定位模型

sense 贝叶斯模型

move 全概率公式

localization练习

 # The function localize takes the following arguments:
 #
 # colors:
 #        2D list, each entry either 'R' (for red cell) or 'G' (for green cell)
 #
 # measurements:
 #        list of measurements taken by the robot, each entry either 'R' or 'G'
 #
 # motions:
 #        list of actions taken by the robot, each entry of the form [dy,dx],
 #        where dx refers to the change in the x-direction (positive meaning
 #        movement to the right) and dy refers to the change in the y-direction
 #        (positive meaning movement downward)
 #        NOTE: the *first* coordinate is change in y; the *second* coordinate is
 #              change in x
 #
 # sensor_right:
 #        float between 0 and 1, giving the probability that any given
 #        measurement is correct; the probability that the measurement is
 #        incorrect is 1-sensor_right
 #
 # p_move:
 #        float between 0 and 1, giving the probability that any given movement
 #        command takes place; the probability that the movement command fails
 #        (and the robot remains still) is 1-p_move; the robot will NOT overshoot
 #        its destination in this exercise
 #
 # The function should RETURN (not just show or print) a 2D list (of the same
 # dimensions as colors) that gives the probabilities that the robot occupies
 # each cell in the world.
 #
 # Compute the probabilities by assuming the robot initially has a uniform
 # probability of being in any cell.
 #
 # Also assume that at each step, the robot:
 # 1) first makes a movement,
 # 2) then takes a measurement.
 #
 # Motion:
 #  [0,0] - stay
 #  [0,1] - right
 #  [0,-1] - left
 #  [1,0] - down
 #  [-1,0] - up
 def sense(p,colors,measurement,sensor_right):
     q=[]
     for row in range(len(colors)):
         temp=[]
         for col in range(len(colors[0])):
             hit = (measurement == colors[row][col])
             temp.append(p[row][col] * (hit * sensor_right + (1-hit) * (1-sensor_right)))
         q.append(temp)
     s=0
     for row in range(len(q)):
         for col in range(len(q[0])):
             s += q[row][col]
     for row in range(len(p)):
         for col in range(len(q[0])):
             q[row][col] = q[row][col]/s
     return q

 def move(p, motion, p_move):
     q = []
     for row in range(len(colors)):
         temp=[]
         for col in range(len(colors[0])):
             s = p_move * p[(row - motion[0]) % len(colors)][(col - motion[1]) % len(colors[0])]
             s += (1-p_move) * p[row][col]
             temp.append(s)
         q.append(temp)
     return q

 def localize(colors,measurements,motions,sensor_right,p_move):
     # initializes p to a uniform distribution over a grid of the same dimensions as colors
     pinit = 1.0 / float(len(colors)) / float(len(colors[0]))
     p = [[pinit for row in range(len(colors[0]))] for col in range(len(colors))]

     # >>> Insert your code here <<<

     for k in range(len(motions)):
         p = move(p, motions[k],p_move)
         p = sense(p,colors,measurements[k],sensor_right)

     return p

 def show(p):
     rows = ['[' + ','.join(map(lambda x: '{0:.5f}'.format(x),r)) + ']' for r in p]
     print '[' + ',\n '.join(rows) + ']'

 #############################################################
 # For the following test case, your output should be
 # [[0.01105, 0.02464, 0.06799, 0.04472, 0.02465],
 #  [0.00715, 0.01017, 0.08696, 0.07988, 0.00935],
 #  [0.00739, 0.00894, 0.11272, 0.35350, 0.04065],
 #  [0.00910, 0.00715, 0.01434, 0.04313, 0.03642]]
 # (within a tolerance of +/- 0.001 for each entry)

 colors = [['R','G','G','R','R'],
           ['R','R','G','R','R'],
           ['R','R','G','G','R'],
           ['R','R','R','R','R']]
 measurements = ['G','G','G','G','G']
 motions = [[0,0],[0,1],[1,0],[1,0],[0,1]]
 p = localize(colors,measurements,motions,sensor_right = 0.7, p_move = 0.8)
 show(p) # displays your answer

simultaneous adj.同时的

Udacity-Artificial Intelligence for Robotics 课程笔记的更多相关文章

  1. (转)A curated list of Artificial Intelligence (AI) courses, books, video lectures and papers

    A curated list of Artificial Intelligence (AI) courses, books, video lectures and papers. Updated 20 ...

  2. 学习笔记之人工智能(Artificial Intelligence)

    人工智能 - 维基百科,自由的百科全书 https://zh.wikipedia.org/wiki/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD 人工智能(英语:Artif ...

  3. (转) Artificial intelligence, revealed

    Artificial intelligence, revealed Yann LeCunJoaquin Quiñonero Candela It's 8:00 am on a Tuesday morn ...

  4. Andrew 机器学习课程笔记

    Andrew 机器学习课程笔记 完成 Andrew 的课程结束至今已有一段时间,课程介绍深入浅出,很好的解释了模型的基本原理以及应用.在我看来这是个很好的入门视频,他老人家现在又出了一门 deep l ...

  5. EECS 649 Introduction to Artificial Intelligence

    EECS 649 Introduction to Artificial IntelligenceExamElectronic Blackboard Submission Due: April 24, ...

  6. CS231n课程笔记翻译6:神经网络笔记 part1

    译者注:本文智能单元首发,译自斯坦福CS231n课程笔记Neural Nets notes 1,课程教师Andrej Karpathy授权翻译.本篇教程由杜客翻译完成,巩子嘉和堃堃进行校对修改.译文含 ...

  7. 【读书笔记与思考】Andrew 机器学习课程笔记

    Andrew 机器学习课程笔记 完成 Andrew 的课程结束至今已有一段时间,课程介绍深入浅出,很好的解释了模型的基本原理以及应用.在我看来这是个很好的入门视频,他老人家现在又出了一门 deep l ...

  8. Artificial Intelligence in Finance

    https://sigmoidal.io/real-applications-of-ai-in-finance/ Artificial Intelligence is taking the finan ...

  9. Artificial intelligence(AI)

    ORM: https://github.com/sunkaixuan/SqlSugar 微软DEMO: https://github.com/Microsoft/BotBuilder 注册KEY:ht ...

随机推荐

  1. java学习:AWT组件和事件处理的笔记(1)--文本框

    java.awt包中的TextField类是专门用来建立文本框的,即TextField类创建的一个对象便是一个文本框. 1.TextField类的主要方法    (1)TextField()      ...

  2. static_cast与dynamic_cast转换 最简单的理解

    3.1 static_cast用法:static_cast < type-id > ( exdivssion ) 该运算符把exdivssion转换为type-id类型,但没有运行时类型检 ...

  3. 红外遥控系统原理及单片机软件解码程序,我的编写经历(C版本)

    应该说现在每一块开发板都带有红外模块,并且大都配置了相应的程序.但其实自己动手写解码程序,更能锻炼自己所学,且不谈程序写的如何,这个过程中肯定是受益良多的.现在我就把我花一下午写出的解码程序与大家分享 ...

  4. 把DEDE的在线文本编辑器换成Kindeditor不显示问题

    在织梦论坛下载了[Kindeditor编辑器For DedeCMS],按照操作说明安装后,后台文章编辑的区域却显示空白,有人说不兼容V57版本,有人说不兼容gbk版本,我也纠结了很久,在网上找了很多版 ...

  5. ubuntu下google 拼音输入法的安装

    google拼音输入法安装 (1).获代替码:(没有git的先安装git:sudoapt-get install git-core) $>gitclone git://github.com/tc ...

  6. iOS7 UIKit动力学-碰撞特性UICollisionBehavior 下

    上文讲到了为window加一个边界.实现碰撞的效果,接下来我们将提到一个托付方法: - (void)collisionBehavior:(UICollisionBehavior *)behavior ...

  7. CSSREM插件

    CSSREM 一个CSS的px值转rem值的Sublime Text 3自动完成插件. 插件效果如下: 安装 下载本项目,比如:git clone https://github.com/flashli ...

  8. css属性pointer-events

    绝对定位元素盖住链接或添加某事件handle的元素后,那么该链接的默认行为(页面跳转)或元素事件将不会被触发.现在Firefox3.6+/Safari4+/Chrome支持一个称为pointer-ev ...

  9. Hexo 官方主题 landscape-plus 优化

    博主喜欢简洁大方的Hexo主题,看了不下100个主题之后,最终选择了 landscape-plus 主题(针对中国大陆地区,对Hexo官方主题landscape进行优化后的版本).更多Hexo主题资源 ...

  10. js 多媒体audio video

    本文主要简单的介绍一下audio 和 video两个标签的用法 <audio src="music.mp3"></audio> <video src= ...