def METHOD_NAME(self):
    # return immediately if home has already been initialised
    if self.home_initialised:
        return True
    # check for home no more than once every two seconds
    if (time.time() - self.last_home_check > 2):
        # update that we have performed a status check
        self.last_home_check = time.time()
        # check if we have a vehicle
        if self.vehicle is None:
            self.vehicle = self.api.get_vehicles()[0]
            return
        # ensure the vehicle's position is known
        if self.vehicle.location is None:
            return False
        if self.vehicle.location.lat is None or self.vehicle.location.lon is None or self.vehicle.location.alt is None:
            return False
        # download the vehicle waypoints if we don't have them already
        if self.mission_cmds is None:
            self.fetch_mission()
            return False
        # get the home lat and lon
        home_lat = self.mission_cmds[0].x
        home_lon = self.mission_cmds[0].y
        home_alt = self.mission_cmds[0].z
        # sanity check the home position
        if home_lat is None or home_lon is None or home_alt is None:
            return False
        # sanity check again and set home position
        if (home_lat != 0 and home_lon != 0):
            self.home_location = Location(home_lat,home_lon,home_alt)
            self.home_initialised = True
        else:
            self.mission_cmds = None
        # To-Do: if we wish to have the same home position as the flight controller
        # we must download the home waypoint again whenever the vehicle is armed
    # return whether home has been initialised or not
    return self.home_initialised