Skip to content
Snippets Groups Projects
Commit a8584743 authored by ROUE Simon, Claude, Yves's avatar ROUE Simon, Claude, Yves
Browse files

Modifs pour rendre adjust un thread (incomplet)

parent f4f7e460
Branches
Tags
No related merge requests found
...@@ -197,10 +197,10 @@ class PIDController(Controller): ...@@ -197,10 +197,10 @@ class PIDController(Controller):
rsensor: ContinuousSensor, rsensor: ContinuousSensor,
speed=0.7, speed=0.7,
target=20., target=20.,
KP=0.05, KP=0.001,
KD=0.005, KD=0., #0.005
KI=0., KI=0., # 0.05
pid_sample_time=0.01): pid_sample_time=0.5):
Controller.__init__(self, Controller.__init__(self,
motors, motors,
lsensor, lsensor,
...@@ -212,12 +212,13 @@ class PIDController(Controller): ...@@ -212,12 +212,13 @@ class PIDController(Controller):
self.target = target self.target = target
# https://en.wikipedia.org/wiki/PID_controller # https://en.wikipedia.org/wiki/PID_controller
self.pid_sample_time = pid_sample_time self.pid_sample_time = pid_sample_time
self.last_sample = 0.0 #self.last_sample = 0.0
self.KP = KP self.KP = KP
self.KD = KD self.KD = KD
self.KI = KI self.KI = KI
self.prev_error = 0.0 #self.prev_error = 0.0
self.sum_error = 0.0 #self.sum_error = 0.0
self.error_log = []
def adjust(self): def adjust(self):
""" """
...@@ -225,13 +226,23 @@ class PIDController(Controller): ...@@ -225,13 +226,23 @@ class PIDController(Controller):
(namely a distance on left or right wall) (namely a distance on left or right wall)
""" """
#TODO Implement #TODO Implement
while this.error_log == []:
distance_left = self._get_robust_distance(self.left_sensor) distance_left = self._get_robust_distance(self.left_sensor)
distance_right = self._get_robust_distance(self.right_sensor) distance_right = self._get_robust_distance(self.right_sensor)
if distance_left < inf and distance_right < inf: if distance_left < inf and distance_right < inf:
e = distance_right - distance_left e = distance_right - distance_left
self.m1_speed = 0.5 + self.KP*e # + self.KI*... + self.KD*... self.error_log.append(e)
self.m2_speed = 0.5 - self.KP*e # - self.KI*... - self.KD*... while True:
pass distance_left = self._get_robust_distance(self.left_sensor)
distance_right = self._get_robust_distance(self.right_sensor)
if distance_left < inf and distance_right < inf:
e = distance_right - distance_left
self.m1_speed = min(0.7, max(0.3, 0.5 + self.KP*e))
# + self.KI*sum(self.error_log)/len(self.error_log) + self.KD*(e-self.error_log[-1])/pid_sample_time
self.m2_speed = min(0.7, max(0.3, 0.5 - self.KP*e))
# - self.KI*sum(self.error_log)/len(self.error_log) - self.KD*(e-self.error_log[-1])/pid_sample_time
self.error_log.append(e)
sleep(pid_sample_time)
def go_to_the_next_intersection(self): def go_to_the_next_intersection(self):
""" """
......
...@@ -250,10 +250,10 @@ class Droid3Sensors(Droid): ...@@ -250,10 +250,10 @@ class Droid3Sensors(Droid):
return get_intersection_type(e[0], e[1], e[2]) return get_intersection_type(e[0], e[1], e[2])
#thread = threading.Thread( #thread = threading.Thread(
# target=print_distance_and_state(self), args=(self, ))
#thread.start() #thread.start()
sleep(0.5) sleep(0.5)
# target=print_distance_and_state(self), args=(self, ))
print("Exploring...") print("Exploring...")
intersection = really_get_intersection_type(self) intersection = really_get_intersection_type(self)
print("Intersection type :", intersection) print("Intersection type :", intersection)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment