예제 #1
0
    def Step(self, settings):
        if not self.doorOpened:
            #print(self.arm.get_points(self.arm.get_angles()))
            settings.positionIterations = 50
            settings.velocityIterations = 250
            if self.door.joint.angle < -math.pi / 3:
                self.doorOpened = True
                print("Door Successfully Opened")
            Framework.Step(self, settings)
            self.update_keyboard_angles()
            self.arm.update_arm_IK(self.arm_speeds[0], self.arm_speeds[1],
                                   self.arm_speeds[2], self.arm_speeds[3])
            if self.recording:
                print("recording")
                self.dataGen.produceAnnotation(self.arm, self.door,
                                               self.arm_speeds)

        if self.reset:
            print("reset")
            if self.recording:
                self.dataGen.closeFile()
                print("closed file")
            self.dataGen.newFile()
            self.__reset()
            self.reset = False
예제 #2
0
    def Step(self, settings):

        settings.positionIterations = 50
        settings.velocityIterations = 250
        if self.door.joint.angle < -math.pi / 3:
            self.doorOpened = True
            print("Door Successfully Opened")
        Framework.Step(self, settings)
        self.update_keyboard_angles()
        self.arm.update_arm(target_pose_mode=True)
        renderer = self.renderer
예제 #3
0
    def Step(self, settings):
        Framework.Step(self, settings)

        self.count -= 1
        if self.count == 0:
            return

        self.world.CreateDynamicBody(
            position=(0, 10),
            allowSleep=False,
            fixtures=b2FixtureDef(
                density=1.0, shape=b2PolygonShape(box=(0.125, 0.125))),
        )
    def Step(self, settings):
        Framework.Step(self, settings)

        if self.go and settings.hz > 0.0:
            self.time += 1.0 / settings.hz

        linear_offset = (6 * sin(2.0 * self.time), 8.0 +
                         4.0 * sin(1.0 * self.time))
        angular_offset = 4.0 * self.time

        self.joint.linearOffset = linear_offset
        self.joint.angularOffset = angular_offset

        renderer = self.renderer
        renderer.DrawPoint(renderer.to_screen(
            linear_offset), 4, b2Color(0.9, 0.9, 0.9))
예제 #5
0
    def Step(self, settings):
        Framework.Step(self, settings)

        # Apply external force

        # Apply spring force to building 1
        x0 = 0 - self.floor[0].position.x
        x1 = self.floor[1].position.x - self.floor[0].position.x
        self.floor[0].ApplyForce((spring_k * (x0 + x1), 0), (0, 0), True)

        xf = self.floor[-2].position.x - self.floor[-1].position.x
        self.floor[-1].ApplyForce((spring_k * xf, 0), (0, 0), True)

        for i in range(1, num_of_floors - 1):
            x_bot = self.floor[i - 1].position.x - self.floor[i].position.x
            x_top = self.floor[i + 1].position.x - self.floor[i].position.x
            self.floor[i].ApplyForce((spring_k * (x_bot + x_top), 0), (0, 0),
                                     True)

        # Apply pendulum damping
        rel_vel = self.pendulum.linearVelocity.x - self.floor[
            -1].linearVelocity.x
        self.pendulum.ApplyForce((-pendulum_damping * rel_vel, 0), (0, 0),
                                 True)

        # Apply spring force to building 2
        x0 = self.base2.position.x - self.floor2[0].position.x
        x1 = self.floor2[1].position.x - self.floor2[0].position.x
        self.floor2[0].ApplyForce((spring_k * (x0 + x1), 0), (0, 0), True)

        xf = self.floor2[-2].position.x - self.floor2[-1].position.x
        self.floor2[-1].ApplyForce((spring_k * xf, 0), (0, 0), True)

        for i in range(1, num_of_floors - 1):
            x_bot = self.floor2[i - 1].position.x - self.floor2[i].position.x
            x_top = self.floor2[i + 1].position.x - self.floor2[i].position.x
            self.floor2[i].ApplyForce((spring_k * (x_bot + x_top), 0), (0, 0),
                                      True)

        # Logging
        print(str(self.time) + " " + str(self.floor[-1].position.x),
              file=open("last_data_point.dat", "w"),
              flush=True)
        self.time += 1 / 60
예제 #6
0
    def Step(self, settings):
        Framework.Step(self, settings)

        renderer = self.renderer

        try:
            poly = b2PolygonShape(vertices=self.verts)
        except AssertionError as ex:
            self.Print('b2PolygonShape failed: %s' % ex)
        else:
            self.Print('Valid: %s' % poly.valid)

        renderer.DrawPolygon([renderer.to_screen(v)
                              for v in self.verts], b2Color(0.9, 0.9, 0.9))
        for i, v in enumerate(self.verts):
            renderer.DrawPoint(renderer.to_screen(v), 2.0,
                               b2Color(0.9, 0.5, 0.5))

            x, y = renderer.to_screen(v)
            self.DrawStringAt(x + 0.05, y + 0.05, '%d' % i)

        if self.auto:
            self.generate()
예제 #7
0
    def Step(self, settings):
        Framework.Step(self, settings)

        blob_step(self.world, self.bodies, self.blob_radius, self.jump,
                  self.move)
        self.jump = 100
    def Step(self, settings):
        Framework.Step(self, settings)

        laser_display(self.renderer,
                      self.laser_body,
                      laser_half_width=LASER_HALF_WIDTH)