def show_frame(v, p, robot):
    """Show the current probability and the current robot"""
    f = Frame.Frame()
    for l in landmarks:
        f.add_circle(pos=(l[1], l[0]), color=Color.Color("blue"), radius=3)
    for r in p:
        poly = Shapes.arrow_head_polygon((r.x, r.y), r.orientation, scale=0.5)
        f.add_polygons([poly], color=Color.Color("red"), alpha=0.2)
    poly = Shapes.arrow_head_polygon((robot.x, robot.y),
                                     robot.orientation,
                                     scale=0.5)
    f.add_polygons([poly], color=Color.Color("black"), alpha=0.9)
    v.add_frame(f)
Beispiel #2
0
def draw_world(cart, ball, rod, goal, info=''):
    """Draw a snapshot of the world"""
    f = Frame.Frame()
    x, y, z = cart.getPosition()
    cart_shape = Shapes.rotated_rectangle((x, y), 0, cart_width, cart_height)
    f.add_polygons([cart_shape], color="green", alpha=0.5)

    x, y, z = rod.getPosition()
    angle = get_rotation_around_z(rod)
    rod_shape = Shapes.rotated_rectangle((x, y), angle, 0.03, 1)
    f.add_polygons([rod_shape], color="gray50")

    x, y, z = ball.getPosition()
    f.add_circle((x, y), color='red3', alpha=0.8, radius=0.1)

    f.add_text(pos=(-2, 2),
               face='Serif 36',
               scale=0.003,
               markup=text_info,
               color=Color.Color("darkgreen"))

    # Draw start and goal
    f.add_circle((goal, 0), color='blue', alpha=0.5, radius=0.05)

    viewer.add_frame(f)
    time.sleep(0.01)
Beispiel #3
0
    def draw_robot(self, draw_path=True):
        """Create a new frame and draw a representation of the robot in it"""
        if self.viewer:
            f = Frame.Frame()
            if draw_path:
                f.add_lines(color=Color.Color("black"),
                            lines=[self.path[:]],
                            linewidth=0.01)

            # Draw start and goal
            for p, color in ((self.init, "green"), (self.goal, "blue")):
                if p:
                    f.add_circle(p, color=color, alpha=0.5, radius=0.05)

            # Our robot representation is built of an arrow head
            # with two wheels.
            poly = Shapes.arrow_head_polygon((self.x, self.y),
                                             self.phi,
                                             scale=0.02)
            f.add_polygons([poly], color=Color.Color("red"), alpha=0.5)
            wheels = Shapes.rectangle_pair((self.x, self.y),
                                           5.,
                                           2.,
                                           7.,
                                           angle=self.phi,
                                           scale=0.02)
            f.add_polygons(wheels, color=Color.Color("black"), alpha=0.5)

            # Add some anotation
            f.add_text(pos=(-0.5, -0.5),
                       size=0.1,
                       text="Time=%.2fs" % (self.time),
                       color=Color.Color("darkgreen"))

            self.viewer.add_frame(f)
            time.sleep(0.01)
Beispiel #4
0
  def draw_robot(self, draw_path=True, text_info=''):
    """Create a new frame and draw a representation of the robot in it"""
    x,y,phi = self.state.get_pose()
    phi_d = self.get_dir_to_goal()
    if self.viewer:
      f = Frame.Frame()
      if draw_path:
        f.add_lines(color=Color.Color("black"),
                    lines=[self.path[:]],
                    linewidth=0.01)
      
      # Draw start and goal
      for p,color in ( (self.init, "green"),
                       (self.goal, "blue") ):
        if p:
          f.add_circle(p,
                       color=color,
                       alpha=0.5,
                       radius=0.05)

      # Our robot representation is built of an arrow head
      # with two wheels.
      poly = Shapes.arrow_head_polygon((x, y),
                                       phi,
                                       scale=0.02)
      f.add_polygons([poly],
                     color="red",
                     alpha=0.5)
      wheels = Shapes.rectangle_pair((x,y),
                                     5.,2.,7.,
                                     angle=phi,
                                     scale=0.02)
      f.add_polygons(wheels,
                     color="black",
                     alpha=0.5)

      # Add some anotation
      f.add_text(pos=(-0.5,-0.5), size=0.1, text="Time=%.2fs"%self.time,color="darkgreen")
      dy = -0.6
      for i,s in enumerate(text_info.split('\n')):
        f.add_text(pos=(-0.5,dy-0.1*i), size=0.07,
                   text=s,color="darkgreen")

      self.viewer.add_frame(f)
      time.sleep(0.01)
    # Here is the control feedback
    world_joint.addTorque(torque)

    # Show text, the rod, and the ball
    f = Frame.Frame()
    f.add_text(pos=(-0.9, 0.5),
               face='Serif 18',
               scale=0.003,
               markup=(u"Time=%.2fs\n"
                       u"φ=%.2f\n"
                       u"ω=%.2f\n"
                       u"τ=%.2f\n"
                       u"K<sub>p</sub>=%.2f\n"
                       u"K<sub>d</sub>=%.2f\n") %
               (total_time, angle, angle_rate_of_change, torque, Kp, Kd),
               color=Color.Color("darkgreen"))

    x, y, z = rod.getPosition()
    rod_shape = Shapes.rotated_rectangle((x, y), angle, 0.03, 1)
    f.add_polygons([rod_shape], color="gray50")

    x, y, z = ball.getPosition()
    f.add_circle((x, y), color='red3', alpha=0.8, radius=0.1)

    viewer.add_frame(f)
    time.sleep(0.01)

    # Step the world
    world.step(dt)
    total_time += dt
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)],
                               ])
    arw = Shapes.arrow_head_polygon((x,-25),
                                    scale=10)
    rect = Shapes.rotated_rectangle((x,-150),
                                    width=50,