Lesson 3: Particle Filter - RobotWorld
Lesson 3: Particle Filter - RobotWorld
Classes, Instance, and Inheritance (WebChurch)
;------------------------------------------------------------------------------------------------------
; - WebChurch code by PCM 2016/03/27 -
;
; Landmarks and World Size of Particle World
; (Thrun, AI for Robotics)
; www.udacity.com/course/viewer#!/c-cs373/l-48704330/m-48683730
; ....................
;------------------------------------------------------------------------------------------------------
The world for localization by particle filtering is a simple 2-D square with edge length 100. It contains four landmarks to support the position finding process. From the programming language perspective the main problem is that Thrun used an object-oriented approach in Python. This implies mutation of local states of instance objects. Because WebChurch is purely functional we cannot use mutations. So we have to look for an object-based style with a functional state. So we take the old state as an input-argument and the new state as a functional output so that the methods remain pure functions.
![World01](/f/2/_processed_/9/7/csm_World01_7a09e6d567.png)
![AI Robotics ParticleFilter011 Class Instance](/f/2/_processed_/9/1/csm_AI_Robotics_ParticleFilter011_Class_Instance_1c96dfa839.png)
![AI Robotics ParticleFilter012 Class Instance](/f/2/_processed_/e/8/csm_AI_Robotics_ParticleFilter012_Class_Instance_ca993cf37b.png)
![AI Robotics ParticleFilter013 Class Instance](/f/2/_processed_/d/6/csm_AI_Robotics_ParticleFilter013_Class_Instance_25279db866.png)
![AI Robotics ParticleFilter014 Class Instance](/f/2/_processed_/5/4/csm_AI_Robotics_ParticleFilter014_Class_Instance_e6a1e4bba8.png)
![AI Robotics ParticleFilter015 Class Instance](/f/2/_processed_/a/5/csm_AI_Robotics_ParticleFilter015_Class_Instance_bf8d272966.png)
Class Functions (e.g. Move) with Nested Defines and Command Sequences as Function Compositions (WebChurch)
![World02](/f/2/_processed_/d/3/csm_World02_24f8403d18.png)
![AI Robotics ParticleFilter021 Move NestedDefines](/f/2/_processed_/c/6/csm_AI_Robotics_ParticleFilter021_Move_NestedDefines_9de281972a.png)
![AI Robotics ParticleFilter022 Move NestedDefines](/f/2/_processed_/a/8/csm_AI_Robotics_ParticleFilter022_Move_NestedDefines_23ed5c0261.png)
![AI Robotics ParticleFilter023 Move NestedDefines](/f/2/_processed_/2/4/csm_AI_Robotics_ParticleFilter023_Move_NestedDefines_a3a84f58bb.png)
![World03](/f/2/_processed_/1/b/csm_World03_1d12f81915.png)
![AI Robotics ParticleFilter024 Move NestedDefines](/f/2/_processed_/b/1/csm_AI_Robotics_ParticleFilter024_Move_NestedDefines_5d4d236fdf.png)
![World04](/f/2/_processed_/a/b/csm_World04_0ff808255d.png)
![AI Robotics ParticleFilter025 Move NestedDefines](/f/2/_processed_/a/a/csm_AI_Robotics_ParticleFilter025_Move_NestedDefines_e8b307dc77.png)
Move and Sense with Nested Defines (WebChurch)
![AI Robotics ParticleFilter031 Move Sense](/f/2/_processed_/0/3/csm_AI_Robotics_ParticleFilter031_Move_Sense_11909bbaf0.png)
![AI Robotics ParticleFilter032 Move Sense](/f/2/_processed_/e/d/csm_AI_Robotics_ParticleFilter032_Move_Sense_633b1bd991.png)
![AI Robotics ParticleFilter033 Move Sense](/f/2/_processed_/4/4/csm_AI_Robotics_ParticleFilter033_Move_Sense_60daf8a217.png)
![AI Robotics ParticleFilter034 Move Sense](/f/2/_processed_/8/7/csm_AI_Robotics_ParticleFilter034_Move_Sense_5fb0507749.png)
![World05](/f/2/_processed_/5/b/csm_World05_b1daef4cfe.png)
![World06](/f/2/_processed_/2/7/csm_World06_e7967f1a4c.png)
![AI Robotics ParticleFilter035 Move Sense](/f/2/_processed_/a/1/csm_AI_Robotics_ParticleFilter035_Move_Sense_7e18a7d10a.png)
Move and Sense with Nested Lambdas (WebChurch)
;------------------------------------------------------------------------------------------------------
; - WebChurch code by PCM 2016/04/08 -
; instruction is taken from S.Thrun's lecture "AI for Robotics"
; "Make a robot called myrobot that starts at coordinates 30, 50 heading north (pi/2).
; Have your robot turn clockwise by pi/2, move 15 m, and sense.
; Then have it turn clockwise by pi/2 again, move 10 m, and sense again.
; Your program should print out the result of your two sense measurements."
; (S.Thrun, AI for Robotics)
; www.udacity.com/course/viewer#!/c-cs373/l-48704330/e-48480592/m-48699551
;------------------------------------------------------------------------------------------------------
![AI Robotics ParticleFilter041 Move Sense Lambdas](/f/2/_processed_/2/1/csm_AI_Robotics_ParticleFilter041_Move_Sense_Lambdas_405e342494.png)
![AI Robotics ParticleFilter042 Move Sense Lambdas](/f/2/_processed_/2/5/csm_AI_Robotics_ParticleFilter042_Move_Sense_Lambdas_8766694057.png)
![AI Robotics ParticleFilter043 Move Sense Lambdas](/f/2/_processed_/f/4/csm_AI_Robotics_ParticleFilter043_Move_Sense_Lambdas_d891cf1df2.png)
![AI Robotics ParticleFilter044 Move Sense Lambdas](/f/2/_processed_/1/d/csm_AI_Robotics_ParticleFilter044_Move_Sense_Lambdas_2f54d96fbb.png)
![World06](/f/2/_processed_/2/7/csm_World06_e7967f1a4c.png)
![AI Robotics ParticleFilter045 Move Sense Lambdas](/f/2/_processed_/c/0/csm_AI_Robotics_ParticleFilter045_Move_Sense_Lambdas_e524ba3f0d.png)
A Markov Model for Actions, States, and Observations (WebChurch)
![Markov Model](/f/2/_processed_/8/1/csm_MarkovModel_c88f53773a.png)
![AI Robotics ParticleFilter051 NoiseAdded](/f/2/_processed_/9/1/csm_AI_Robotics_ParticleFilter051_NoiseAdded_4bc2e41ceb.png)
![AI Robotics ParticleFilter052 NoiseAdded](/f/2/_processed_/f/c/csm_AI_Robotics_ParticleFilter052_NoiseAdded_28a0f7bced.png)
![AI Robotics ParticleFilter053 NoiseAdded](/f/2/_processed_/1/c/csm_AI_Robotics_ParticleFilter053_NoiseAdded_b3eecea640.png)
![AI Robotics ParticleFilter054 NoiseAdded](/f/2/_processed_/1/1/csm_AI_Robotics_ParticleFilter054_NoiseAdded_60f416f154.png)
![AI Robotics ParticleFilter055 NoiseAdded](/f/2/_processed_/e/b/csm_AI_Robotics_ParticleFilter055_NoiseAdded_9358415936.png)
![AI Robotics ParticleFilter056 NoiseAdded](/f/2/_processed_/c/f/csm_AI_Robotics_ParticleFilter056_NoiseAdded_d118f99f00.png)
![AI Robotics ParticleFilter057 NoiseAdded](/f/2/_processed_/e/9/csm_AI_Robotics_ParticleFilter057_NoiseAdded_d9c6a5b2bc.png)
![AI Robotics ParticleFilter058 NoiseAdded](/f/2/_processed_/9/f/csm_AI_Robotics_ParticleFilter058_NoiseAdded_b1ff899332.png)
![AI Robotics ParticleFilter059 NoiseAdded](/f/2/_processed_/e/2/csm_AI_Robotics_ParticleFilter059_NoiseAdded_8435c4f4e7.png)
A Markov Model for Actions, States, and Observations in a Cyclic World (WebChurch)
![World07](/f/2/_processed_/4/4/csm_World07_ffa316669d.png)
![AI Robotics ParticleFilter061 CyclicWorld](/f/2/_processed_/7/1/csm_AI_Robotics_ParticleFilter061_CyclicWorld_ea48dba5da.png)
![AI Robotics ParticleFilter062 CyclicWorld](/f/2/_processed_/b/1/csm_AI_Robotics_ParticleFilter062_CyclicWorld_ad7c1439f2.png)
![AI Robotics ParticleFilter063 CyclicWorld](/f/2/_processed_/c/d/csm_AI_Robotics_ParticleFilter063_CyclicWorld_116be220f0.png)
![AI Robotics ParticleFilter064 CyclicWorld](/f/2/_processed_/2/a/csm_AI_Robotics_ParticleFilter064_CyclicWorld_2e4f9cc8b3.png)
![AI Robotics ParticleFilter065 CyclicWorld](/f/2/_processed_/b/5/csm_AI_Robotics_ParticleFilter065_CyclicWorld_4dac7720c1.png)
![AI Robotics ParticleFilter066 CyclicWorld](/f/2/_processed_/7/b/csm_AI_Robotics_ParticleFilter066_CyclicWorld_7d00a1074c.png)
![AI Robotics ParticleFilter067 CyclicWorld](/f/2/_processed_/3/0/csm_AI_Robotics_ParticleFilter067_CyclicWorld_1c59071806.png)
![AI Robotics ParticleFilter068 CyclicWorld](/f/2/_processed_/a/a/csm_AI_Robotics_ParticleFilter068_CyclicWorld_382b3417b4.png)
![AI Robotics ParticleFilter069 CyclicWorld](/f/2/_processed_/2/f/csm_AI_Robotics_ParticleFilter069_CyclicWorld_38163afdef.png)