This commit is contained in:
Max 2021-09-21 15:51:40 +01:00
parent 749c8ed73d
commit 09f564086b
4 changed files with 28 additions and 5 deletions

View File

@ -44,6 +44,7 @@ class DroneKitComms:
self.nudge_fork_horiz_endpoint = '/nudge_fork_horiz' self.nudge_fork_horiz_endpoint = '/nudge_fork_horiz'
self.nudge_drive_endpoint = '/nudge_drive' self.nudge_drive_endpoint = '/nudge_drive'
self.approach_pallet_endpoint = '/approach_pallet' self.approach_pallet_endpoint = '/approach_pallet'
self.reverse_from_pallet_endpoint = '/reverse_from_pallet'
self.gps_target_radius_km = 0.0025 self.gps_target_radius_km = 0.0025
rsp = self.make_request(self.heartbeat_endpoint) rsp = self.make_request(self.heartbeat_endpoint)
if rsp.get('Success', False): if rsp.get('Success', False):
@ -164,10 +165,11 @@ class DroneKitComms:
self.nudge_fork_horiz(go_left=False, amount=0.5) self.nudge_fork_horiz(go_left=False, amount=0.5)
self.nudge_fork_horiz(go_left=False, amount=0.65) self.nudge_fork_horiz(go_left=False, amount=0.65)
def approach_pallet(self): def approach_pallet(self):
_ = self.make_request(self.approach_pallet_endpoint) _ = self.make_request(self.approach_pallet_endpoint)
# print(rsp)
def reverse_from_pallet(self):
_ = self.make_request(self.reverse_from_pallet_endpoint)
# def close_vehicle(self): # def close_vehicle(self):

View File

@ -107,7 +107,7 @@ def __pick_up_cargo(vehicle_ctrl):
def __put_down_cargo(vehicle_ctrl): def __put_down_cargo(vehicle_ctrl):
vehicle_ctrl.zero_fork_vert_pickup() vehicle_ctrl.zero_fork_vert_pickup()
time.sleep(1) time.sleep(1)
vehicle_ctrl.nudge_drive(False, 9.9) vehicle_ctrl.reverse_from_pallet()
return True return True

View File

@ -62,6 +62,7 @@ class DroneInterface:
self.log.info("Connected to ardurover") self.log.info("Connected to ardurover")
self.pallet_proximity_sensor = PalletProximity() self.pallet_proximity_sensor = PalletProximity()
self.pallet_min_distance = 22 # TODO: calibrate this self.pallet_min_distance = 22 # TODO: calibrate this
self.pallet_max_distance = 55 # TODO: calibrate this
self.log.info("Connected to pallet proximity sensor") self.log.info("Connected to pallet proximity sensor")
self.print_status() self.print_status()
@ -404,10 +405,10 @@ class DroneInterface:
def approach_pallet(self): def approach_pallet(self):
pallet_approached = False pallet_approached = False
while not pallet_approached: while not pallet_approached:
time.sleep(0.2) time.sleep(0.1)
distance_to_pallet = self.pallet_proximity_sensor.get_prox_reading() distance_to_pallet = self.pallet_proximity_sensor.get_prox_reading()
if distance_to_pallet < self.pallet_min_distance: if distance_to_pallet < self.pallet_min_distance:
self.log.info(f"We are close enough to pallet ({distance_to_pallet} m)") self.log.info(f"We are close enough to pallet ({distance_to_pallet} cm)")
pallet_approached = True pallet_approached = True
self.override_stop() self.override_stop()
self.clear_override_channels() self.clear_override_channels()
@ -415,3 +416,18 @@ class DroneInterface:
self.log.info(f"Distance to pallet ({distance_to_pallet} cm), moving forward...") self.log.info(f"Distance to pallet ({distance_to_pallet} cm), moving forward...")
target_speed_pwm = 1930 target_speed_pwm = 1930
self.set_vehicle_speed(target_speed_pwm) self.set_vehicle_speed(target_speed_pwm)
def reverse_from_pallet(self):
pallet_reversed = False
while not pallet_reversed:
time.sleep(0.1)
distance_to_pallet = self.pallet_proximity_sensor.get_prox_reading()
if distance_to_pallet > self.pallet_max_distance:
self.log.info(f"We are far enough from pallet ({distance_to_pallet} cm)")
pallet_reversed = True
self.override_stop()
self.clear_override_channels()
else:
self.log.info(f"Distance to pallet ({distance_to_pallet} cm), moving back...")
target_speed_pwm = 1070
self.set_vehicle_speed(target_speed_pwm)

View File

@ -314,6 +314,11 @@ def approach_pallet():
FORKLIFT.approach_pallet() FORKLIFT.approach_pallet()
return jsonify({'Success': True}) return jsonify({'Success': True})
@app.route('/reverse_from_pallet', methods=['POST'])
def reverse_from_pallet():
FORKLIFT.reverse_from_pallet()
return jsonify({'Success': True})
# @app.route('/close', methods=['POST']) # @app.route('/close', methods=['POST'])
# def close_forklift(): # def close_forklift():
# logger.info(f"Closing forklift") # logger.info(f"Closing forklift")