def particle_filter(motions, measurements, final_robot, N=500): # I know it's tempting, but don't change N! # -------- # # Make particles # v = Euv.Viewer( size=(600, 600), view_port_center=(50, 50), view_port_width=300, ) p = [] for i in range(N): r = robot() r.set_noise(bearing_noise, steering_noise, distance_noise) p.append(r) # -------- # # Update particles # for t in range(len(motions)): show_frame(v, p, final_robot[t]) # motion update (prediction) p2 = [] for i in range(N): p2.append(p[i].move(motions[t])) p = p2 # measurement update w = [] for i in range(N): w.append(p[i].measurement_prob(measurements[t])) # resampling p3 = [] index = int(random.random() * N) beta = 0.0 mw = max(w) for i in range(N): beta += random.random() * 2.0 * mw while beta > w[index]: beta -= w[index] index = (index + 1) % N p3.append(p[index]) p = p3 show_frame(v, p, final_robot[t]) # Wait for GUI to finish v.wait() return get_position(p)
rod.setPosition((0, 0.5, 0)) # Connect the rod with the world through a Hinge joint. world_joint = ode.HingeJoint(world) world_joint.attach(rod, ode.environment) world_joint.setAnchor((0, 0, 0)) world_joint.setAxis((0, 0, 1)) # Connect rod with ball with a fixed joint rod_ball_joint = ode.FixedJoint(world) rod_ball_joint.attach(rod, ball) rod_ball_joint.setFixed() # Create the viewer window viewer = Euv.Viewer(size=(600, 600), view_port_center=(0, 0), view_port_width=2.5, flip_y=True) # Do the simulation total_time = 0.0 dt = 0.02 Kf = 0.5 # Friction force while total_time < 30: # push the ball after half a second! if total_time >= 0.5 and total_time < 0.5 + dt: ball.addRelForce((-20, 0, 0)) elif total_time >= 0.5 + dt and total_time < 0.5 * 2 * dt: ball.addRelForce((20, 0, 0))
#!/usr/bin/python import Euv.Frame as Frame import Euv.EuvGtk as Euv import Euv.Color as Color import time v = Euv.Viewer(size=(800, 600), view_port_center=(0, 0), view_port_width=800) N = 1000 for i in range(N): f = Frame.Frame() x = 600. * (i - N / 2) / N f.add_circle(pos=(x, x), color="red", alpha=0.5, radius=15) f.add_circle(pos=(-x, x), color="blue", alpha=0.5, radius=15) f.add_text(pos=(250, 200), face="Sans", size=20, text="Frame %d" % i, color=Color.Color("darkgreen")) if v.user_break(): break v.add_frame(f) v.wait()
import Euv.Frame as Frame import Euv.EuvGtk as Euv import Euv.Color as Color import Euv.Shapes as Shapes import time import math N=200 v = Euv.Viewer(size=(800,600), view_port_center = (0,0), view_port_width = 800, max_num_frames=N, recording=True, flip_y = True) for i in range(N): f = Frame.Frame() x = 400 * 1.0*(i-N/2)/N n = 40 for j in range(n): f.add_circle(pos=(x+j*5,20*math.sin(2*math.pi*(i+j)/n)), color=Color.Color("red"), radius=3) f.add_lines(color=Color.Color("midnightblue"), lines=[[(x+5,105),(x+35,105)]]) f.add_polygons(color=Color.Color("magenta3"), polygons = [[(x,100), (x+10,100), (x+5,110)], [(x+30,100), (x+40,100), (x+35,110)],