Controls - Driving Personalities - Customize Personalities
Customize the driving personality profiles to your driving style.
This commit is contained in:
parent
805373657e
commit
386f32ef6e
25
selfdrive/controls/lib/longitudinal_mpc_lib/long_mpc.py
Executable file → Normal file
25
selfdrive/controls/lib/longitudinal_mpc_lib/long_mpc.py
Executable file → Normal file
@ -58,7 +58,18 @@ T_DIFFS = np.diff(T_IDXS, prepend=[0.])
|
|||||||
COMFORT_BRAKE = 2.5
|
COMFORT_BRAKE = 2.5
|
||||||
STOP_DISTANCE = 6.0
|
STOP_DISTANCE = 6.0
|
||||||
|
|
||||||
def get_jerk_factor(personality=log.LongitudinalPersonality.standard):
|
def get_jerk_factor(custom_personalities=False, aggressive_jerk_acceleration=0.5, aggressive_jerk_speed=0.5, standard_jerk_acceleration=1.0, standard_jerk_speed=1.0,
|
||||||
|
relaxed_jerk_acceleration=1.0, relaxed_jerk_speed=1.0, personality=log.LongitudinalPersonality.standard):
|
||||||
|
if custom_personalities:
|
||||||
|
if personality==log.LongitudinalPersonality.relaxed:
|
||||||
|
return relaxed_jerk_acceleration, relaxed_jerk_speed
|
||||||
|
elif personality==log.LongitudinalPersonality.standard:
|
||||||
|
return standard_jerk_acceleration, standard_jerk_speed
|
||||||
|
elif personality==log.LongitudinalPersonality.aggressive:
|
||||||
|
return aggressive_jerk_acceleration, aggressive_jerk_speed
|
||||||
|
else:
|
||||||
|
raise NotImplementedError("Longitudinal personality not supported")
|
||||||
|
else:
|
||||||
if personality==log.LongitudinalPersonality.relaxed:
|
if personality==log.LongitudinalPersonality.relaxed:
|
||||||
return 1.0, 1.0
|
return 1.0, 1.0
|
||||||
elif personality==log.LongitudinalPersonality.standard:
|
elif personality==log.LongitudinalPersonality.standard:
|
||||||
@ -69,7 +80,17 @@ def get_jerk_factor(personality=log.LongitudinalPersonality.standard):
|
|||||||
raise NotImplementedError("Longitudinal personality not supported")
|
raise NotImplementedError("Longitudinal personality not supported")
|
||||||
|
|
||||||
|
|
||||||
def get_T_FOLLOW(personality=log.LongitudinalPersonality.standard):
|
def get_T_FOLLOW(custom_personalities=False, aggressive_follow=1.25, standard_follow=1.45, relaxed_follow=1.75, personality=log.LongitudinalPersonality.standard):
|
||||||
|
if custom_personalities:
|
||||||
|
if personality==log.LongitudinalPersonality.relaxed:
|
||||||
|
return relaxed_follow
|
||||||
|
elif personality==log.LongitudinalPersonality.standard:
|
||||||
|
return standard_follow
|
||||||
|
elif personality==log.LongitudinalPersonality.aggressive:
|
||||||
|
return aggressive_follow
|
||||||
|
else:
|
||||||
|
raise NotImplementedError("Longitudinal personality not supported")
|
||||||
|
else:
|
||||||
if personality==log.LongitudinalPersonality.relaxed:
|
if personality==log.LongitudinalPersonality.relaxed:
|
||||||
return 1.75
|
return 1.75
|
||||||
elif personality==log.LongitudinalPersonality.standard:
|
elif personality==log.LongitudinalPersonality.standard:
|
||||||
|
@ -44,8 +44,13 @@ class FrogPilotPlanner:
|
|||||||
|
|
||||||
lead_distance = self.lead_one.dRel
|
lead_distance = self.lead_one.dRel
|
||||||
|
|
||||||
self.base_acceleration_jerk, self.base_speed_jerk = get_jerk_factor(controlsState.personality)
|
self.base_acceleration_jerk, self.base_speed_jerk = get_jerk_factor(frogpilot_toggles.custom_personalities,
|
||||||
self.t_follow = get_T_FOLLOW(controlsState.personality)
|
frogpilot_toggles.aggressive_jerk_acceleration, frogpilot_toggles.aggressive_jerk_speed,
|
||||||
|
frogpilot_toggles.standard_jerk_acceleration, frogpilot_toggles.standard_jerk_speed,
|
||||||
|
frogpilot_toggles.relaxed_jerk_acceleration, frogpilot_toggles.relaxed_jerk_speed,
|
||||||
|
controlsState.personality)
|
||||||
|
self.t_follow = get_T_FOLLOW(frogpilot_toggles.custom_personalities, frogpilot_toggles.aggressive_follow,
|
||||||
|
frogpilot_toggles.standard_follow, frogpilot_toggles.relaxed_follow, controlsState.personality)
|
||||||
|
|
||||||
if self.lead_one.status:
|
if self.lead_one.status:
|
||||||
self.update_follow_values(lead_distance, stopping_distance, v_ego, v_lead, frogpilot_toggles)
|
self.update_follow_values(lead_distance, stopping_distance, v_ego, v_lead, frogpilot_toggles)
|
||||||
|
5
selfdrive/frogpilot/ui/qt/offroad/personalities_info.txt
Normal file
5
selfdrive/frogpilot/ui/qt/offroad/personalities_info.txt
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
Following Distance - Represents openpilot's desired distance from the lead in seconds. Not an exact value in real world terms, but more of a representative value.
|
||||||
|
|
||||||
|
Acceleration/Deceleration Response - Increases/decreases the "cost" to accelerate. Increasing the value makes it more "costly" to accelerate/decelerate, so openpilot is more conservative when accelerating/decelerating.
|
||||||
|
|
||||||
|
Speed Control Response - Increases/decreases the "cost" to increase/decrease your speed. Increasing the value makes it more "costly" to change speed, so openpilot is more conservative when using the gas/brake pedal.
|
Loading…
x
Reference in New Issue
Block a user