dragonpilot beta3

date: 2024-07-17T20:01:09
commit: f8a68a45eb
This commit is contained in:
dragonpilot
2024-07-17 19:59:47 +08:00
committed by Comma Device
parent 65561d9eae
commit 9d48733d53
58 changed files with 68 additions and 363 deletions
+3 -3
View File
@@ -1,10 +1,10 @@
dragonpilot 0.9.8
dragonpilot beta3 0.9.8
=======================
* Up to comma.ai openpilot master branch commit cbee4421da690fa7b260f62c4a2c72ccacc6c902 (2024-07-14)
* DP HIGHLIGHT:
* Fixed Lexus IS/GS crashed issue.
dragonpilot [2024.07.13]
dragonpilot beta3 [2024.07.13]
=======================
* Up to comma.ai openpilot master branch commit 01c2174d5968266b87f1d1fecefce5affaeaa624 (2024-07-02)
* DP HIGHLIGHT:
@@ -16,7 +16,7 @@ dragonpilot [2024.07.13]
* Device Auto Shutdown Toggle.
* Device Audible Alert Mode Toggle.
dragonpilot [2024.07.01]
dragonpilot beta3 [2024.07.01]
=======================
* Up to comma.ai openpilot master branch commit 442e9f4ae492901a5698b3188741c97c053026c4 (2024-06-21)
* DP HIGHLIGHT:
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+1 -1
View File
@@ -1 +1 @@
const uint8_t gitversion[8] = "93068c73";
const uint8_t gitversion[8] = "93031df2";
@@ -6,8 +6,13 @@ from openpilot.common.params import Params
class AlternativeDrivingPersonalityController:
def __init__(self):
params = Params()
# try except to avoid issue in longitudinal testing
try:
self._speed = int(params.get("dp_long_alt_driving_personality_speed")) * CV.KPH_TO_MS
except:
self._speed = 0
self._mode = params.get_bool("dp_long_alt_driving_personality_mode")
self._speed = int(params.get("dp_long_alt_driving_personality_speed")) * CV.KPH_TO_MS
self._active = False
def update(self, v_ego):
@@ -15,6 +15,8 @@ class CurveSpeedLimiter:
pass
def update(self, v_ego, z, v):
if not self._enabled:
return
max_lat_accel = interp(v_ego, [5, 10, 20], [1.5, 2.0, 3.0])
curvatures = np.interp(T_IDXS_MPC, ModelConstants.T_IDXS, z) / np.clip(v, 0.3, 100.0)
max_v = np.sqrt(max_lat_accel / (np.abs(curvatures) + 1e-3)) - 2.0
@@ -1,64 +1,60 @@
import numpy as np
from collections import deque, defaultdict
import json
import bisect
from collections import deque
from openpilot.common.params import Params
class PersonalizedAccelController:
def __init__(self, learning_rate=0.01, memory_size=10000, samples_per_range=100):
def __init__(self, learning_rate=0.01):
self.enabled = False
self._params = Params()
# A high smoothing factor with a low learning rate will result in very stable, slow-changing behavior.
# A low smoothing factor with a high learning rate will be very responsive to new data, potentially unstable.
self.learning_rate = learning_rate
self.smoothing_factor = 0.9 # New parameter for smoothing
self.memory_size = memory_size
self.memory = deque(maxlen=memory_size)
self.smoothing_factor = 0.9
self.update_counter = 0
self.samples_per_range = samples_per_range
# Fixed BP size from 0 to 39 in steps of 3
self.profile_size = 14 # (39 - 0) / 3 + 1
self.A_MAX_BP = list(np.arange(0, 40, 3))
self.samples_per_range = self._initialize_variable_samples()
self.max_samples_per_range = 50
# Default values (ensure non-negative)
self.MAX_VALS = np.maximum(0, np.interp(self.A_MAX_BP, [0., 10.0, 25., 40.], [1.6, 1.2, 0.8, 0.6])).tolist()
self.A_MAX_BP = [0, 0.5, 1, 1.5, 2, 3, 4, 5, 6, 8, 10, 12, 15, 20, 25, 30, 32.5, 35, 37.5, 40]
self.profile_size = len(self.A_MAX_BP)
# Initialize profiles
original_bp = [0., 10.0, 25., 40.]
original_vals = [1.6, 1.2, 0.8, 0.6]
self.MAX_VALS = np.maximum(0, np.interp(self.A_MAX_BP, original_bp, original_vals)).tolist()
self.A_CRUISE_MAX_VALS = self.MAX_VALS.copy()
# Initialize sample collectors
self.cruise_samples = defaultdict(list)
self.speed_range_samples = {i: deque(maxlen=self.max_samples_per_range) for i in range(self.profile_size)}
self.speed_range_samples = {i: [] for i in range(len(self.A_MAX_BP))}
# Load saved model or use defaults
self.load_model()
def _initialize_variable_samples(self):
return [5, 5, 8, 8, 10, 10, 12, 12, 15, 15, 20, 20, 25, 30, 35, 35, 40, 40, 40]
def update(self, car_state, lead_present):
blinker_off = not car_state.leftBlinker and not car_state.rightBlinker
straight_road = abs(car_state.steeringAngleDeg) < 30
if (not lead_present and
not car_state.leftBlinker and
not car_state.rightBlinker and
car_state.gasPressed and
abs(car_state.steeringAngleDeg) < 30):
if not lead_present and blinker_off and car_state.gasPressed and straight_road:
speed = car_state.vEgo
acceleration = car_state.aEgo
speed_index = self._get_speed_index(car_state.vEgo)
self.speed_range_samples[speed_index].append(car_state.aEgo)
# Get the current speed range
speed_index = self._get_speed_index(speed)
if speed_index < len(self.samples_per_range):
if len(self.speed_range_samples[speed_index]) >= self.samples_per_range[speed_index]:
self._update_cruise_profile_for_index(speed_index)
# Update only the relevant speed range
self.speed_range_samples[speed_index].append(acceleration)
# Update this speed range if we have enough samples
if len(self.speed_range_samples[speed_index]) >= self.samples_per_range:
self._update_cruise_profile_for_index(speed_index)
# Increment update counter and save model periodically
self.update_counter += 1
if self.update_counter % 1000 == 0:
self.save_model()
def _get_speed_index(self, speed):
index = bisect.bisect_right(self.A_MAX_BP, speed) - 1
return max(0, min(index, len(self.A_MAX_BP) - 1))
def _update_cruise_profile_for_index(self, index):
samples = self.speed_range_samples[index]
samples = list(self.speed_range_samples[index])
if samples:
new_sample_val = max(0, float(np.percentile(samples, 95)))
@@ -67,43 +63,6 @@ class PersonalizedAccelController:
self.A_CRUISE_MAX_VALS[index] = previous_val * (1 - self.learning_rate) + smoothed_val * self.learning_rate
self.speed_range_samples[index] = [] # Clear the samples after updating
def _check_and_update_all_ranges(self):
for i in range(len(self.A_MAX_BP)):
if len(self.cruise_samples[i]) >= self.samples_per_range:
self._update_cruise_profile_for_index(i)
def _update_acceleration_profiles(self):
for state, accel in self.memory:
speed, lead_present = state
speed_index = self._get_speed_index(speed)
if not lead_present:
self.cruise_samples[speed_index].append((speed, accel))
# Update profiles if we have enough samples
self._update_cruise_profile()
def _get_speed_index(self, speed):
return min(int(speed / 3), len(self.A_MAX_BP) - 1)
def _update_cruise_profile(self):
for i, bp in enumerate(self.A_MAX_BP):
samples = self.cruise_samples[i]
if len(samples) >= self.samples_per_range:
speeds, accels = zip(*samples)
new_sample_val = max(0, float(np.percentile(accels, 95)))
# Consider the previous value
previous_val = self.A_CRUISE_MAX_VALS[i]
smoothed_val = self.smoothing_factor * previous_val + (1 - self.smoothing_factor) * new_sample_val
# Apply learning rate
self.A_CRUISE_MAX_VALS[i] = previous_val * (1 - self.learning_rate) + smoothed_val * self.learning_rate
self.cruise_samples[i] = [] # Clear the samples after updating
def get_max_accel(self, v_ego, STOCK_BP, STOCK_VALS):
if self.enabled:
return np.interp(v_ego, self.A_MAX_BP, self.A_CRUISE_MAX_VALS)
@@ -112,21 +71,24 @@ class PersonalizedAccelController:
def set_profile_size(self, new_size):
self.profile_size = new_size
# Reinitialize all acceleration profiles
self.A_CRUISE_MAX_VALS = list(np.linspace(1.6, 0.6, num=new_size))
self._update_acceleration_profiles()
self.speed_range_samples = {i: deque(maxlen=self.max_samples_per_range) for i in range(self.profile_size)}
def set_enabled(self, enabled):
self.enabled = enabled
def save_model(self):
self._params.put("dp_long_pac_vals", json.dumps(self._numpy_to_list(self.A_CRUISE_MAX_VALS)))
data = {
'bp': self.A_MAX_BP,
'vals': self._numpy_to_list(self.A_CRUISE_MAX_VALS)
}
self._params.put("dp_long_pac_vals", json.dumps(data))
def load_model(self):
params_val = self._params.get("dp_long_pac_vals")
if params_val is not None:
self.A_CRUISE_MAX_VALS = json.loads(params_val)
print(self.A_CRUISE_MAX_VALS)
data = json.loads(params_val)
self.A_CRUISE_MAX_VALS = np.maximum(0, np.interp(self.A_MAX_BP, data.get('bp'), data.get('vals'))).tolist()
def _numpy_to_list(self, obj):
if isinstance(obj, np.ndarray):
@@ -150,13 +112,12 @@ class PersonalizedAccelController:
while True:
sm.update()
if sm.updated['carState']:
self.update(sm['carState'], sm['radarState'].leadOne.status and sm['carState'].vEgo > 0. and sm['radarState'].leadOne.dRel / sm['carState'].vEgo < 1.)
print(self.A_CRUISE_MAX_VALS)
self.update(sm['carState'], sm['radarState'].leadOne.status and sm['carState'].vEgo > 0. and sm['radarState'].leadOne.dRel / sm['carState'].vEgo < 2.5)
# print(self.A_CRUISE_MAX_VALS)
def main():
pac = PersonalizedAccelController(learning_rate=0.01, memory_size=10000)
pac = PersonalizedAccelController()
pac.pac_thread()
if __name__ == "__main__":
main()
main()
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+1 -1
View File
@@ -1 +1 @@
const uint8_t gitversion[] = "DEV-93068c73-DEBUG";
const uint8_t gitversion[] = "DEV-93031df2-DEBUG";
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+1 -1
View File
@@ -1 +1 @@
DEV-93068c73-DEBUG
DEV-93031df2-DEBUG
@@ -142,7 +142,7 @@ class LongitudinalPlanner:
prev_accel_constraint = not (reset_state or sm['carState'].standstill)
if self.mpc.mode == 'acc':
self._pac.update(sm['carState'], sm['radarState'].leadOne.status and v_ego > 0. and sm['radarState'].leadOne.dRel / v_ego < 1.)
self._pac.update(sm['carState'], sm['radarState'].leadOne.status and v_ego > 0. and sm['radarState'].leadOne.dRel / v_ego < 2.5)
# accel_limits = [A_CRUISE_MIN, get_max_accel(v_ego)]
accel_limits = [A_CRUISE_MIN, self._pac.get_max_accel(v_ego, A_CRUISE_MAX_BP, A_CRUISE_MAX_VALS)]
accel_limits_turns = limit_accel_in_turns(v_ego, sm['carState'].steeringAngleDeg, accel_limits, self.CP)
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
-26
View File
@@ -197,32 +197,6 @@ Reboot required.</source>
<source>Ctrl - Longitudinal</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Enable Slow Down on Curve</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>When enabled, openpilot will reduce vehicle speed on curve road using algorithm found in taco2 branch.
See https://github.com/commaai/openpilot/commit/7b97ddb3aacb222bfaf0b978c49cb5b756903ef7 for more information.
Reboot required.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Enable Dynamic End-to-End Longitudinal Control</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>When enabled, openpilot will dynamically change between End-to-End or ACC mode.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Enable Road Condition Detection</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>When enabled, Dynamic End-to-End will check road condition such as traffic signals, large curve, stop sign.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>On-Screen Personality Button</source>
<translation type="unfinished"></translation>
-26
View File
@@ -197,32 +197,6 @@ Reboot required.</source>
<source>Ctrl - Longitudinal</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Enable Slow Down on Curve</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>When enabled, openpilot will reduce vehicle speed on curve road using algorithm found in taco2 branch.
See https://github.com/commaai/openpilot/commit/7b97ddb3aacb222bfaf0b978c49cb5b756903ef7 for more information.
Reboot required.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Enable Dynamic End-to-End Longitudinal Control</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>When enabled, openpilot will dynamically change between End-to-End or ACC mode.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Enable Road Condition Detection</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>When enabled, Dynamic End-to-End will check road condition such as traffic signals, large curve, stop sign.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>On-Screen Personality Button</source>
<translation type="unfinished"></translation>
-26
View File
@@ -197,32 +197,6 @@ Reboot required.</source>
<source>Ctrl - Longitudinal</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Enable Slow Down on Curve</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>When enabled, openpilot will reduce vehicle speed on curve road using algorithm found in taco2 branch.
See https://github.com/commaai/openpilot/commit/7b97ddb3aacb222bfaf0b978c49cb5b756903ef7 for more information.
Reboot required.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Enable Dynamic End-to-End Longitudinal Control</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>When enabled, openpilot will dynamically change between End-to-End or ACC mode.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Enable Road Condition Detection</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>When enabled, Dynamic End-to-End will check road condition such as traffic signals, large curve, stop sign.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>On-Screen Personality Button</source>
<translation type="unfinished"></translation>
-26
View File
@@ -197,32 +197,6 @@ Reboot required.</source>
<source>Ctrl - Longitudinal</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Enable Slow Down on Curve</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>When enabled, openpilot will reduce vehicle speed on curve road using algorithm found in taco2 branch.
See https://github.com/commaai/openpilot/commit/7b97ddb3aacb222bfaf0b978c49cb5b756903ef7 for more information.
Reboot required.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Enable Dynamic End-to-End Longitudinal Control</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>When enabled, openpilot will dynamically change between End-to-End or ACC mode.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Enable Road Condition Detection</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>When enabled, Dynamic End-to-End will check road condition such as traffic signals, large curve, stop sign.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>On-Screen Personality Button</source>
<translation type="unfinished"></translation>
-26
View File
@@ -197,32 +197,6 @@ Reboot required.</source>
<source>Ctrl - Longitudinal</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Enable Slow Down on Curve</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>When enabled, openpilot will reduce vehicle speed on curve road using algorithm found in taco2 branch.
See https://github.com/commaai/openpilot/commit/7b97ddb3aacb222bfaf0b978c49cb5b756903ef7 for more information.
Reboot required.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Enable Dynamic End-to-End Longitudinal Control</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>When enabled, openpilot will dynamically change between End-to-End or ACC mode.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Enable Road Condition Detection</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>When enabled, Dynamic End-to-End will check road condition such as traffic signals, large curve, stop sign.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>On-Screen Personality Button</source>
<translation type="unfinished"></translation>
-26
View File
@@ -197,32 +197,6 @@ Reboot required.</source>
<source>Ctrl - Longitudinal</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Enable Slow Down on Curve</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>When enabled, openpilot will reduce vehicle speed on curve road using algorithm found in taco2 branch.
See https://github.com/commaai/openpilot/commit/7b97ddb3aacb222bfaf0b978c49cb5b756903ef7 for more information.
Reboot required.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Enable Dynamic End-to-End Longitudinal Control</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>When enabled, openpilot will dynamically change between End-to-End or ACC mode.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Enable Road Condition Detection</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>When enabled, Dynamic End-to-End will check road condition such as traffic signals, large curve, stop sign.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>On-Screen Personality Button</source>
<translation type="unfinished"></translation>
-26
View File
@@ -197,32 +197,6 @@ Reboot required.</source>
<source>Ctrl - Longitudinal</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Enable Slow Down on Curve</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>When enabled, openpilot will reduce vehicle speed on curve road using algorithm found in taco2 branch.
See https://github.com/commaai/openpilot/commit/7b97ddb3aacb222bfaf0b978c49cb5b756903ef7 for more information.
Reboot required.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Enable Dynamic End-to-End Longitudinal Control</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>When enabled, openpilot will dynamically change between End-to-End or ACC mode.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Enable Road Condition Detection</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>When enabled, Dynamic End-to-End will check road condition such as traffic signals, large curve, stop sign.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>On-Screen Personality Button</source>
<translation type="unfinished"></translation>
-26
View File
@@ -197,32 +197,6 @@ Reboot required.</source>
<source>Ctrl - Longitudinal</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Enable Slow Down on Curve</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>When enabled, openpilot will reduce vehicle speed on curve road using algorithm found in taco2 branch.
See https://github.com/commaai/openpilot/commit/7b97ddb3aacb222bfaf0b978c49cb5b756903ef7 for more information.
Reboot required.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Enable Dynamic End-to-End Longitudinal Control</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>When enabled, openpilot will dynamically change between End-to-End or ACC mode.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Enable Road Condition Detection</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>When enabled, Dynamic End-to-End will check road condition such as traffic signals, large curve, stop sign.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>On-Screen Personality Button</source>
<translation type="unfinished"></translation>
-26
View File
@@ -197,32 +197,6 @@ Reboot required.</source>
<source>Ctrl - Longitudinal</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Enable Slow Down on Curve</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>When enabled, openpilot will reduce vehicle speed on curve road using algorithm found in taco2 branch.
See https://github.com/commaai/openpilot/commit/7b97ddb3aacb222bfaf0b978c49cb5b756903ef7 for more information.
Reboot required.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Enable Dynamic End-to-End Longitudinal Control</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>When enabled, openpilot will dynamically change between End-to-End or ACC mode.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Enable Road Condition Detection</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>When enabled, Dynamic End-to-End will check road condition such as traffic signals, large curve, stop sign.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>On-Screen Personality Button</source>
<translation type="unfinished"></translation>
-26
View File
@@ -197,32 +197,6 @@ Reboot required.</source>
<source>Ctrl - Longitudinal</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Enable Slow Down on Curve</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>When enabled, openpilot will reduce vehicle speed on curve road using algorithm found in taco2 branch.
See https://github.com/commaai/openpilot/commit/7b97ddb3aacb222bfaf0b978c49cb5b756903ef7 for more information.
Reboot required.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Enable Dynamic End-to-End Longitudinal Control</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>When enabled, openpilot will dynamically change between End-to-End or ACC mode.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Enable Road Condition Detection</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>When enabled, Dynamic End-to-End will check road condition such as traffic signals, large curve, stop sign.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>On-Screen Personality Button</source>
<translation type="unfinished"></translation>
Binary file not shown.
+4 -12
View File
@@ -187,19 +187,19 @@ Reboot required.</source>
</message>
<message>
<source>Enable Slow Down on Curve</source>
<translation>啟用彎道減速</translation>
<translation type="vanished">啟用彎道減速</translation>
</message>
<message>
<source>When enabled, openpilot will reduce vehicle speed on curve road using algorithm found in taco2 branch.
See https://github.com/commaai/openpilot/commit/7b97ddb3aacb222bfaf0b978c49cb5b756903ef7 for more information.
Reboot required.</source>
<translation>啟用後,Openpilot將使用在 taco2 分支中找到的算法,在彎道上減少車輛速度。
<translation type="vanished">啟用後,Openpilot將使用在 taco2 分支中找到的算法,在彎道上減少車輛速度。
詳細信息請查看https://github.com/commaai/openpilot/commit/7b97ddb3aacb222bfaf0b978c49cb5b756903ef7。
需要重新啟動。</translation>
</message>
<message>
<source>Enable Dynamic End-to-End Longitudinal Control</source>
<translation>啟用動態端到端縱向控制</translation>
<translation type="vanished">啟用動態端到端縱向控制</translation>
</message>
<message>
<source>When enabled, openpilot will dynamically change between End-to-End or ACC mode.
@@ -510,7 +510,7 @@ Auto - Change lane automatically.</source>
</message>
<message>
<source>When enabled, openpilot will dynamically change between End-to-End or ACC mode.</source>
<translation>啟用後,openpilot 將動態切換端到端或 ACC 模式。</translation>
<translation type="vanished">啟用後,openpilot 將動態切換端到端或 ACC 模式。</translation>
</message>
<message>
<source>Enable Automatic Brake Hold</source>
@@ -559,14 +559,6 @@ Internet required.</source>
<source>When enabled, openpilot will display speed camera warning using offline database.</source>
<translation>啟用後,openpilot 將使用離線資料庫顯示測速照相警告。</translation>
</message>
<message>
<source>Enable Road Condition Detection</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>When enabled, Dynamic End-to-End will check road condition such as traffic signals, large curve, stop sign.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Enable Auto Shutdown</source>
<translation type="unfinished"></translation>
BIN
View File
Binary file not shown.
Binary file not shown.
Binary file not shown.
+6 -1
View File
@@ -271,13 +271,18 @@ class Updater:
def get_commit_hash(self, path: str = OVERLAY_MERGED) -> str:
return run(["git", "rev-parse", "HEAD"], path).rstrip()
def filter_branches(self, branches, prefixes):
return [branch for branch in branches if any(branch.startswith(prefix) for prefix in prefixes)]
def set_params(self, update_success: bool, failed_count: int, exception: str | None) -> None:
self.params.put("UpdateFailedCount", str(failed_count))
self.params.put("UpdaterTargetBranch", self.target_branch)
self.params.put_bool("UpdaterFetchAvailable", self.update_available)
if len(self.branches):
self.params.put("UpdaterAvailableBranches", ','.join(self.branches.keys()))
allowed_prefixes = ['beta3', 'release3']
filtered_branches = self.filter_branches(self.branches.keys(), allowed_prefixes)
self.params.put("UpdaterAvailableBranches", ','.join(filtered_branches))
last_update = datetime.datetime.now(datetime.UTC).replace(tzinfo=None)
if update_success: