Example #1
0
 def state_disconnect(self):
     sw3.nav.do(
         sw3.SequentialRoutine(
             sw3.Forward(-0.5, 3),
             sw3.NullRoutine(),
         ))
     self.wait_stop_mark = 1
     self.next_state()
Example #2
0
 def state_setup_pulldown(self):
     # start: buoy has dissappeard b/c we're so close to it
     # ###
     sw3.nav.do(
         sw3.SequentialRoutine(sw3.Forward(-0.7, 1), sw3.Forward(0, 0.1),
                               sw3.RelativeDepth(-2),
                               sw3.Forward(0.7, 1 * 1.5),
                               sw3.Forward(0, 0.1)))
     self.wait_stop_mark = 4
     self.next_state()
Example #3
0
    def state_findpath(self):
        # TODO: check if the second buoy was center, if so, dont do another approach
        riseup_routine = sw3.RelativeDepth(OVER_DEPTH)
        runover_routine = sw3.Forward(FORWARD_SPEED)
        stop_routine = sw3.Forward(0)
        depth_goto = sw3.SetDepth(self.depth_seen)
        print "findpath"
        sw3.nav.do(
            sw3.SequentialRoutine(depth_goto, riseup_routine, runover_routine))

        self.finish_mission()
Example #4
0
    def state_findpath(self):
        sw3.nav.do(sw3.Forward(0))

        # TODO: check if the second buoy was center, if so, dont do another approach
        riseup_routine = sw3.RelativeDepth(REL_OVER_DEPTH)
        runover_routine = sw3.Forward(FORWARD_SPEED)
        stop_routine = sw3.Forward(0)
        depth_goto = sw3.SetDepth(self.depth_seen)
        print "findpath"
        sw3.nav.do(
            sw3.SequentialRoutine(sw3.Forward(-0.6, 0.1), riseup_routine,
                                  sw3.SetYaw(self.reference_angle),
                                  runover_routine))
        self.wait_stop_mark = 3

        self.next_state()
Example #5
0
    def step(self, vision_data):
        self.mission_timeout -= 1
        if not vision_data:
            return
        hedge_data = vision_data['hedge']
        if not hedge_data:
            return

        print hedge_data

        if hedge_data:
            hedge_center = None
            if hedge_data.right_pole and hedge_data.left_pole:
                hedge_center = DEGREE_PER_PIXEL * (
                    hedge_data.left_pole +
                    hedge_data.right_pole) / 2  # degrees

            elif hedge_data.center_pole is not None:
                hedge_center = hedge_data.center_pole

            self.hedge_seen += 1
            self.hedge_lost = 0

            if hedge_center is not None:
                if abs(gate_center) < STRAIGHT_TOLERANCE:
                    sw3.nav.do(
                        sw3.CompoundRoutine(
                            [sw3.Forward(FORWARD_SPEED),
                             sw3.HoldYaw()]))
                else:
                    print "Correcting Yaw", hedge_center
                    sw3.nav.do(
                        sw3.CompoundRoutine([
                            sw3.RelativeYaw(hedge_center + 2),
                            sw3.Forward(FORWARD_SPEED),
                        ]))
        elif self.hedge_seen >= 5:
            self.hedge_lost += 1

        if self.hedge_lost > 1 or self.mission_timeout <= 0:
            sw3.nav.do(
                sw3.SequentialRoutine(sw3.RelativeYaw(180),
                                      sw3.Forward(-1 * FORWARD_SPEED, 5)))
            time.sleep(self.mission_timeout)
            self.finish_mission()
Example #6
0
 def bump_timeout(self, approach_angle):
     sw3.nav.do(sw3.SequentialRoutine(
         sw3.Forward(BACKWARD_SPEED, 10),
         self.sweep_routine(approach_angle)
         ))
     self.next_state()
Example #7
0
 def sweep_routine2(self):
     sw3.SequentialRoutine(
         sw3.Forward(BACKWARD_SPEED, BACKUP_TIME),
         sw3.Forward(0, 2),
         sw3.SetYaw(self.reference_angle))
Example #8
0
 def state_pulldown(self):
     sw3.nav.do(
         sw3.SequentialRoutine(sw3.Forward(0.7, 0.2), sw3.DepthRate(1, 1),
                               sw3.RelativeDepth(2), sw3.Forward(0, 0.01)))
     self.wait_stop_mark = 3
     self.next_state()