def start(self): # First with Offboard mode, put the drone in a certain alttitude. When the drone is in that position or lower, lands it. 

        for i in range(10): # Waits 5 seconds for initialization
            if self.current_heading is not None:
                break
            else:
                print("Waiting for initialization.")
                time.sleep(0.5)

        for i in range(4)
            self.landing_activity_pub.publish("LANDING")
            time.sleep(0.1)

        Basic_movement().moving_to_z(self.land_height) # Probably not necesary here

        while (self.land_height - self.threshold) > self.local_pose.pose.position.z > (self.land_height + self.threshold) and (self.land_height - self.threshold) > self.down_sensor_distance > (self.land_height + self.threshold):
            Basic_movement().moving_to_z(self.land_height)
            time.sleep(0.2)

        while self.local_pose.pose.position.z > self.final_land_threshold and self.down_sensor_distance > self.final_land_threshold:
            Basic_movement().moving_down(self.landing_step_distance)
            time.sleep(1)
     
        for i in range (4):
            Basic_movement().moving_down(self.landing_step_distance)
            time.sleep(1)    
    def start(self):
        for i in range(10): # Waits 5 seconds for initialization
            if self.current_heading is not None:
                break
            else:
                print("Waiting for initialization.")
                time.sleep(0.5)

        Basic_movement().moving_to_z(self.takeoff_height)

        while (self.takeoff_height - self.threshold) <= self.local_pose.pose.position.z <= (self.takeoff_height + self.threshold) and (self.takeoff_height - self.threshold) <= self.down_sensor_distance <= (self.takeoff_height + self.threshold):
            Basic_movement().moving_to_z(self.takeoff_height)
            time.sleep(0.2)

        self.flying_status = "Drone_lifted
        self.hover()
Example #3
0
 def cb_forward_sensor(self, sense):
     if (self.state == "HOVER"):
         if sense.range < self.min_distance_to_evit:
             print("no obstacle close to drone")
         else:
             #move opposite direction with the difference distance
             diference = self.min_distance_to_evit - sense.range
             Basic_movement().moving_back(diference)
             rospy.logwarn("Avoiding Front Obstacle")
 def hover(self):
     if (self.flying_status == "Drone_lifted"):
         while (rospy.is_shutdown() is False) and (self.flying_status != "LANDING"):
             self.custom_activity_pub.publish("HOVER")
             if (self.hover_hight - 0.03 <= self.local_pose.pose.position.z <= self.hover_hight + 0.03):
                 print("AdvanDiptera is hovering")
             else:
                 print("correcting hover altitude")
                 Basic_movement().move_in_z(self.hover_hight - self.local_pose.pose.position.z)
                 time.sleep(0.1)
    def start(self):
        for i in range(10): # Waits 5 seconds for initialization
            if self.current_heading is not None:
                break
            else:
                print("Waiting for initialization.")
                time.sleep(0.5)

        self.takeoff_state = self.modechnge_takeoff()

        while (self.takeoff_height - self.threshold) < self.local_pose.pose.position.z < (self.takeoff_height + self.threshold) and (self.takeoff_height - self.threshold) < self.down_sensor_distance < (self.takeoff_height + self.threshold):
            self.autotakeoff()
            time.sleep(0.2)


        self.offboard_state = self.modechnge()
        time.sleep(0.1)
        Basic_movement().move_to_z(self.takeoff_height)
        time.sleep(0.2)
        
        self.hover()       
    def create_random_move(self):

        print("RANDOM MOVE!")
            
        print('IS DIRECTION BLOCKED?')
        print('Blocking Right: ' + str(self.blockingMovementRight))
        print('Blocking Left: ' + str(self.blockingMovementLeft))
        print('Blocking Back: ' + str(self.blockingMovementBack))
        print('Blocking Forward: ' + str(self.blockingMovementForward))
        print('DIRECTION CHOSEN:')


        if self.previousMovement == -1:
            exitloop = False

        elif self.previousMovement == 0:
            if self.blockingMovementRight == False: 
                Basic_movement().move_right(self.moving_random_distance)
                print("Random Movement ---> Still Right")
                rospy.loginfo("Random Movement: Still Right!")
                exitloop = True

        elif self.previousMovement == 1:
            if self.blockingMovementLeft == False: 
                Basic_movement().move_left(self.moving_random_distance) 
                print("Random Movement ---> Still Left")
                rospy.loginfo("Random Movement: Still Left!")
                exitloop = True

        elif self.previousMovement == 2:
            if self.blockingMovementBack == False: 
                Basic_movement().move_back(self.moving_random_distance)
                print("Random Movement ---> Still Back")
                rospy.loginfo("Random Movement: Still Back!")
                exitloop = True

        elif self.previousMovement == 3:
            if self.blockingMovementForward == False: 
                Basic_movement().move_forward(self.moving_random_distance)
                print("Random Movement ---> Still Forward")
                rospy.loginfo("Random Movement: Still Forward!")
                exitloop = True


        # If it is blocked or first random movement, generate random movement
        while exitloop == False: 

            # generate random integer values
            value = randint(0, 3) # Random int value between 0 and 3

            if value == 0:
                if self.blockingMovementRight == False:
                    exitloop = True
                    Basic_movement().move_right(self.moving_random_distance)
                    print("Random Movement ---> Right")
                    rospy.loginfo("Random Movement: Right!")
                    self.previousMovement = 0

            elif value == 1:
                if self.blockingMovementLeft == False:
                    exitloop = True
                    Basic_movement().move_left(self.moving_random_distance)
                    print("Random Movement ---> Left")
                    rospy.loginfo("Random Movement: Left!")
                    self.previousMovement = 1

            elif value == 2:
                if self.blockingMovementBack == False:
                    exitloop = True
                    Basic_movement().move_back(self.moving_random_distance)
                    print("Random Movement ---> Back")
                    rospy.loginfo("Random Movement: Back!")
                    self.previousMovement = 2

            elif value == 3:
                if self.blockingMovementForward == False:
                    exitloop = True
                    Basic_movement().move_forward(self.moving_random_distance)
                    print("Random Movement ---> Forward")
                    rospy.loginfo("Random Movement: Forward!")
                    self.previousMovement = 3