mirror of
https://github.com/dragonpilot/dragonpilot.git
synced 2026-10-01 03:43:42 +08:00
committed by
Comma Device
parent
0094c9ac06
commit
cbd22eca29
@@ -4,35 +4,6 @@ from openpilot.selfdrive.car.chrysler.values import CAR
|
||||
Ecu = car.CarParams.Ecu
|
||||
|
||||
FW_VERSIONS = {
|
||||
CAR.CHRYSLER_PACIFICA_2017_HYBRID: {
|
||||
(Ecu.combinationMeter, 0x742, None): [
|
||||
b'68239262AH',
|
||||
b'68239262AI',
|
||||
b'68239262AJ',
|
||||
b'68239263AH',
|
||||
b'68239263AJ',
|
||||
],
|
||||
(Ecu.srs, 0x744, None): [
|
||||
b'68238840AH',
|
||||
],
|
||||
(Ecu.fwdRadar, 0x753, None): [
|
||||
b'68226356AI',
|
||||
],
|
||||
(Ecu.eps, 0x75a, None): [
|
||||
b'68288309AC',
|
||||
b'68288309AD',
|
||||
],
|
||||
(Ecu.engine, 0x7e0, None): [
|
||||
b'68277480AV ',
|
||||
b'68277480AX ',
|
||||
b'68277480AZ ',
|
||||
],
|
||||
(Ecu.hybrid, 0x7e2, None): [
|
||||
b'05190175BF',
|
||||
b'05190175BH',
|
||||
b'05190226AK',
|
||||
],
|
||||
},
|
||||
CAR.CHRYSLER_PACIFICA_2018: {
|
||||
(Ecu.combinationMeter, 0x742, None): [
|
||||
b'68227902AF',
|
||||
@@ -181,26 +152,39 @@ FW_VERSIONS = {
|
||||
},
|
||||
CAR.CHRYSLER_PACIFICA_2018_HYBRID: {
|
||||
(Ecu.combinationMeter, 0x742, None): [
|
||||
b'68239262AH',
|
||||
b'68239262AI',
|
||||
b'68239262AJ',
|
||||
b'68239263AH',
|
||||
b'68239263AJ',
|
||||
b'68358439AE',
|
||||
b'68358439AG',
|
||||
],
|
||||
(Ecu.srs, 0x744, None): [
|
||||
b'68238840AH',
|
||||
b'68358990AC',
|
||||
b'68405939AA',
|
||||
],
|
||||
(Ecu.fwdRadar, 0x753, None): [
|
||||
b'04672758AA',
|
||||
b'68226356AI',
|
||||
],
|
||||
(Ecu.eps, 0x75a, None): [
|
||||
b'68288309AC',
|
||||
b'68288309AD',
|
||||
b'68525339AA',
|
||||
],
|
||||
(Ecu.engine, 0x7e0, None): [
|
||||
b'68277480AV ',
|
||||
b'68277480AX ',
|
||||
b'68277480AZ ',
|
||||
b'68366580AI ',
|
||||
b'68366580AK ',
|
||||
b'68366580AM ',
|
||||
],
|
||||
(Ecu.hybrid, 0x7e2, None): [
|
||||
b'05190175BF',
|
||||
b'05190175BH',
|
||||
b'05190226AI',
|
||||
b'05190226AK',
|
||||
b'05190226AM',
|
||||
@@ -245,6 +229,7 @@ FW_VERSIONS = {
|
||||
b'68416680AE ',
|
||||
b'68416680AF ',
|
||||
b'68416680AG ',
|
||||
b'68444228AC ',
|
||||
b'68444228AD ',
|
||||
b'68444228AE ',
|
||||
b'68444228AF ',
|
||||
|
||||
@@ -35,8 +35,8 @@ class CarInterface(CarInterfaceBase):
|
||||
ret.flags |= ChryslerFlags.HIGHER_MIN_STEERING_SPEED.value
|
||||
|
||||
# Chrysler
|
||||
if candidate in (CAR.CHRYSLER_PACIFICA_2017_HYBRID, CAR.CHRYSLER_PACIFICA_2018, CAR.CHRYSLER_PACIFICA_2018_HYBRID, \
|
||||
CAR.CHRYSLER_PACIFICA_2019_HYBRID, CAR.CHRYSLER_PACIFICA_2020, CAR.DODGE_DURANGO):
|
||||
if candidate in (CAR.CHRYSLER_PACIFICA_2018, CAR.CHRYSLER_PACIFICA_2018_HYBRID, CAR.CHRYSLER_PACIFICA_2019_HYBRID,
|
||||
CAR.CHRYSLER_PACIFICA_2020, CAR.DODGE_DURANGO):
|
||||
ret.lateralTuning.init('pid')
|
||||
ret.lateralTuning.pid.kpBP, ret.lateralTuning.pid.kiBP = [[9., 20.], [9., 20.]]
|
||||
ret.lateralTuning.pid.kpV, ret.lateralTuning.pid.kiV = [[0.15, 0.30], [0.03, 0.05]]
|
||||
|
||||
@@ -32,34 +32,30 @@ class ChryslerCarSpecs(CarSpecs):
|
||||
|
||||
class CAR(Platforms):
|
||||
# Chrysler
|
||||
CHRYSLER_PACIFICA_2017_HYBRID = ChryslerPlatformConfig(
|
||||
[ChryslerCarDocs("Chrysler Pacifica Hybrid 2017")],
|
||||
ChryslerCarSpecs(mass=2242., wheelbase=3.089, steerRatio=16.2),
|
||||
)
|
||||
CHRYSLER_PACIFICA_2018_HYBRID = ChryslerPlatformConfig(
|
||||
[ChryslerCarDocs("Chrysler Pacifica Hybrid 2018")],
|
||||
CHRYSLER_PACIFICA_2017_HYBRID.specs,
|
||||
[ChryslerCarDocs("Chrysler Pacifica Hybrid 2017-18")],
|
||||
ChryslerCarSpecs(mass=2242., wheelbase=3.089, steerRatio=16.2),
|
||||
)
|
||||
CHRYSLER_PACIFICA_2019_HYBRID = ChryslerPlatformConfig(
|
||||
[ChryslerCarDocs("Chrysler Pacifica Hybrid 2019-24")],
|
||||
CHRYSLER_PACIFICA_2017_HYBRID.specs,
|
||||
CHRYSLER_PACIFICA_2018_HYBRID.specs,
|
||||
)
|
||||
CHRYSLER_PACIFICA_2018 = ChryslerPlatformConfig(
|
||||
[ChryslerCarDocs("Chrysler Pacifica 2017-18")],
|
||||
CHRYSLER_PACIFICA_2017_HYBRID.specs,
|
||||
CHRYSLER_PACIFICA_2018_HYBRID.specs,
|
||||
)
|
||||
CHRYSLER_PACIFICA_2020 = ChryslerPlatformConfig(
|
||||
[
|
||||
ChryslerCarDocs("Chrysler Pacifica 2019-20"),
|
||||
ChryslerCarDocs("Chrysler Pacifica 2021-23", package="All"),
|
||||
],
|
||||
CHRYSLER_PACIFICA_2017_HYBRID.specs,
|
||||
CHRYSLER_PACIFICA_2018_HYBRID.specs,
|
||||
)
|
||||
|
||||
# Dodge
|
||||
DODGE_DURANGO = ChryslerPlatformConfig(
|
||||
[ChryslerCarDocs("Dodge Durango 2020-21")],
|
||||
CHRYSLER_PACIFICA_2017_HYBRID.specs,
|
||||
CHRYSLER_PACIFICA_2018_HYBRID.specs,
|
||||
)
|
||||
|
||||
# Jeep
|
||||
|
||||
@@ -130,7 +130,8 @@ MIGRATION = {
|
||||
|
||||
# Removal of platform_str, see https://github.com/commaai/openpilot/pull/31868/
|
||||
"COMMA BODY": BODY.COMMA_BODY,
|
||||
"CHRYSLER PACIFICA HYBRID 2017": CHRYSLER.CHRYSLER_PACIFICA_2017_HYBRID,
|
||||
"CHRYSLER PACIFICA HYBRID 2017": CHRYSLER.CHRYSLER_PACIFICA_2018_HYBRID,
|
||||
"CHRYSLER_PACIFICA_2017_HYBRID": CHRYSLER.CHRYSLER_PACIFICA_2018_HYBRID,
|
||||
"CHRYSLER PACIFICA HYBRID 2018": CHRYSLER.CHRYSLER_PACIFICA_2018_HYBRID,
|
||||
"CHRYSLER PACIFICA HYBRID 2019": CHRYSLER.CHRYSLER_PACIFICA_2019_HYBRID,
|
||||
"CHRYSLER PACIFICA 2018": CHRYSLER.CHRYSLER_PACIFICA_2018,
|
||||
|
||||
@@ -15,7 +15,7 @@ class CarState(CarStateBase):
|
||||
super().__init__(CP)
|
||||
can_define = CANDefine(DBC[CP.carFingerprint]["pt"])
|
||||
if CP.transmissionType == TransmissionType.automatic:
|
||||
self.shifter_values = can_define.dv["Gear_Shift_by_Wire_FD1"]["TrnRng_D_RqGsm"]
|
||||
self.shifter_values = can_define.dv["PowertrainData_10"]["TrnRng_D_Rq"]
|
||||
|
||||
self.vehicle_sensors_valid = False
|
||||
|
||||
@@ -69,7 +69,7 @@ class CarState(CarStateBase):
|
||||
|
||||
# gear
|
||||
if self.CP.transmissionType == TransmissionType.automatic:
|
||||
gear = self.shifter_values.get(cp.vl["Gear_Shift_by_Wire_FD1"]["TrnRng_D_RqGsm"])
|
||||
gear = self.shifter_values.get(cp.vl["PowertrainData_10"]["TrnRng_D_Rq"])
|
||||
ret.gearShifter = self.parse_gear_shifter(gear)
|
||||
elif self.CP.transmissionType == TransmissionType.manual:
|
||||
ret.clutchPressed = cp.vl["Engine_Clutch_Data"]["CluPdlPos_Pc_Meas"] > 0
|
||||
@@ -139,7 +139,7 @@ class CarState(CarStateBase):
|
||||
|
||||
if CP.transmissionType == TransmissionType.automatic:
|
||||
messages += [
|
||||
("Gear_Shift_by_Wire_FD1", 10),
|
||||
("PowertrainData_10", 10),
|
||||
]
|
||||
elif CP.transmissionType == TransmissionType.manual:
|
||||
messages += [
|
||||
|
||||
@@ -529,6 +529,7 @@ FW_VERSIONS = {
|
||||
b'28102-5MX-A900\x00\x00',
|
||||
b'28102-5MX-A910\x00\x00',
|
||||
b'28102-5MX-C001\x00\x00',
|
||||
b'28102-5MX-C610\x00\x00',
|
||||
b'28102-5MX-C910\x00\x00',
|
||||
b'28102-5MX-D001\x00\x00',
|
||||
b'28102-5MX-D710\x00\x00',
|
||||
|
||||
@@ -585,6 +585,7 @@ FW_VERSIONS = {
|
||||
b'\xf1\x00DL3 MDPS C 1.00 1.02 56310-L7220 4DLHC102',
|
||||
],
|
||||
(Ecu.fwdCamera, 0x7c4, None): [
|
||||
b'\xf1\x00DL3HMFC AT KOR LHD 1.00 1.01 99210-L2000 191022',
|
||||
b'\xf1\x00DL3HMFC AT KOR LHD 1.00 1.02 99210-L2000 200309',
|
||||
b'\xf1\x00DL3HMFC AT KOR LHD 1.00 1.04 99210-L2000 210527',
|
||||
],
|
||||
@@ -595,6 +596,7 @@ FW_VERSIONS = {
|
||||
b'\xf1\x00OS IEB \x02 210 \x02\x14 58520-K4000',
|
||||
b'\xf1\x00OS IEB \x02 212 \x11\x13 58520-K4000',
|
||||
b'\xf1\x00OS IEB \x03 210 \x02\x14 58520-K4000',
|
||||
b'\xf1\x00OS IEB \x03 211 \x04\x02 58520-K4000',
|
||||
b'\xf1\x00OS IEB \x03 212 \x11\x13 58520-K4000',
|
||||
b'\xf1\x00OS IEB \r 105\x18\t\x18 58520-K4000',
|
||||
],
|
||||
|
||||
@@ -39,7 +39,7 @@ routes = [
|
||||
|
||||
CarTestRoute("0c94aa1e1296d7c6|2021-05-05--19-48-37", CHRYSLER.JEEP_GRAND_CHEROKEE),
|
||||
CarTestRoute("91dfedae61d7bd75|2021-05-22--20-07-52", CHRYSLER.JEEP_GRAND_CHEROKEE_2019),
|
||||
CarTestRoute("420a8e183f1aed48|2020-03-05--07-15-29", CHRYSLER.CHRYSLER_PACIFICA_2017_HYBRID),
|
||||
CarTestRoute("420a8e183f1aed48|2020-03-05--07-15-29", CHRYSLER.CHRYSLER_PACIFICA_2018_HYBRID), # 2017
|
||||
CarTestRoute("43a685a66291579b|2021-05-27--19-47-29", CHRYSLER.CHRYSLER_PACIFICA_2018),
|
||||
CarTestRoute("378472f830ee7395|2021-05-28--07-38-43", CHRYSLER.CHRYSLER_PACIFICA_2018_HYBRID),
|
||||
CarTestRoute("8190c7275a24557b|2020-01-29--08-33-58", CHRYSLER.CHRYSLER_PACIFICA_2019_HYBRID),
|
||||
|
||||
@@ -62,6 +62,7 @@ class TestCarInterfaces:
|
||||
|
||||
car_params = CarInterface.get_params(car_name, args['fingerprints'], args['car_fw'],
|
||||
experimental_long=args['experimental_long'], docs=False)
|
||||
car_params = car_params.as_reader()
|
||||
car_interface = CarInterface(car_params, CarController, CarState)
|
||||
assert car_params
|
||||
assert car_interface
|
||||
|
||||
@@ -7,7 +7,6 @@ legend = ["LAT_ACCEL_FACTOR", "MAX_LAT_ACCEL_MEASURED", "FRICTION"]
|
||||
"CHEVROLET_VOLT" = [1.5961527626411784, 1.8422651988094612, 0.1572393918005158]
|
||||
"CHRYSLER_PACIFICA_2018" = [2.07140, 1.3366521181047952, 0.13776367250652022]
|
||||
"CHRYSLER_PACIFICA_2020" = [1.86206, 1.509076559398423, 0.14328246159386085]
|
||||
"CHRYSLER_PACIFICA_2017_HYBRID" = [1.79422, 1.06831764583744, 0.116237]
|
||||
"CHRYSLER_PACIFICA_2018_HYBRID" = [2.08887, 1.2943025830995154, 0.114818]
|
||||
"CHRYSLER_PACIFICA_2019_HYBRID" = [1.90120, 1.1958788168371808, 0.131520]
|
||||
"GENESIS_G70" = [3.8520195946707947, 2.354697063349854, 0.06830285485626221]
|
||||
|
||||
@@ -441,6 +441,7 @@ FW_VERSIONS = {
|
||||
b'\x01896630ZU8000\x00\x00\x00\x00',
|
||||
b'\x01896630ZU9000\x00\x00\x00\x00',
|
||||
b'\x01896630ZX4000\x00\x00\x00\x00',
|
||||
b'\x01896630ZX7100\x00\x00\x00\x00',
|
||||
b'\x018966312L8000\x00\x00\x00\x00',
|
||||
b'\x018966312M0000\x00\x00\x00\x00',
|
||||
b'\x018966312M9000\x00\x00\x00\x00',
|
||||
@@ -516,6 +517,7 @@ FW_VERSIONS = {
|
||||
b'\x018965B1254000\x00\x00\x00\x00',
|
||||
b'\x018965B1255000\x00\x00\x00\x00',
|
||||
b'\x018965B1256000\x00\x00\x00\x00',
|
||||
b'\x018965B1270000\x00\x00\x00\x00',
|
||||
b'8965B12361\x00\x00\x00\x00\x00\x00',
|
||||
b'8965B12451\x00\x00\x00\x00\x00\x00',
|
||||
b'8965B16011\x00\x00\x00\x00\x00\x00',
|
||||
|
||||
@@ -72,9 +72,7 @@ class Controls:
|
||||
|
||||
if CI is None:
|
||||
cloudlog.info("controlsd is waiting for CarParams")
|
||||
with car.CarParams.from_bytes(self.params.get("CarParams", block=True)) as msg:
|
||||
# TODO: this shouldn't need to be a builder
|
||||
self.CP = msg.as_builder()
|
||||
self.CP = messaging.log_from_bytes(self.params.get("CarParams", block=True), car.CarParams)
|
||||
cloudlog.info("controlsd got CarParams")
|
||||
|
||||
# Uses car interface helper functions, altering state won't be considered by card for actuation
|
||||
|
||||
@@ -25,7 +25,7 @@ LOW_SPEED_Y = [15, 13, 10, 5]
|
||||
class LatControlTorque(LatControl):
|
||||
def __init__(self, CP, CI):
|
||||
super().__init__(CP, CI)
|
||||
self.torque_params = CP.lateralTuning.torque
|
||||
self.torque_params = CP.lateralTuning.torque.as_builder()
|
||||
self.pid = PIDController(self.torque_params.kp, self.torque_params.ki,
|
||||
k_f=self.torque_params.kf, pos_limit=self.steer_max, neg_limit=-self.steer_max)
|
||||
self.torque_from_lateral_accel = CI.torque_from_lateral_accel()
|
||||
|
||||
@@ -0,0 +1,538 @@
|
||||
{
|
||||
"acados_include_path": "/data/openpilot/third_party/acados/include",
|
||||
"acados_lib_path": "/data/openpilot/third_party/acados/lib",
|
||||
"code_export_directory": "/data/openpilot/selfdrive/controls/lib/lateral_mpc_lib/c_generated_code",
|
||||
"constraints": {
|
||||
"C": [],
|
||||
"C_e": [],
|
||||
"D": [],
|
||||
"constr_type": "BGH",
|
||||
"constr_type_e": "BGH",
|
||||
"idxbu": [],
|
||||
"idxbx": [
|
||||
2,
|
||||
3
|
||||
],
|
||||
"idxbx_0": [
|
||||
0,
|
||||
1,
|
||||
2,
|
||||
3
|
||||
],
|
||||
"idxbx_e": [],
|
||||
"idxbxe_0": [
|
||||
0,
|
||||
1,
|
||||
2,
|
||||
3
|
||||
],
|
||||
"idxsbu": [],
|
||||
"idxsbx": [],
|
||||
"idxsbx_e": [],
|
||||
"idxsg": [],
|
||||
"idxsg_e": [],
|
||||
"idxsh": [],
|
||||
"idxsh_e": [],
|
||||
"idxsphi": [],
|
||||
"idxsphi_e": [],
|
||||
"lbu": [],
|
||||
"lbx": [
|
||||
-1.5707963267948966,
|
||||
-0.8726646259971648
|
||||
],
|
||||
"lbx_0": [
|
||||
0.0,
|
||||
0.0,
|
||||
0.0,
|
||||
0.0
|
||||
],
|
||||
"lbx_e": [],
|
||||
"lg": [],
|
||||
"lg_e": [],
|
||||
"lh": [],
|
||||
"lh_e": [],
|
||||
"lphi": [],
|
||||
"lphi_e": [],
|
||||
"lsbu": [],
|
||||
"lsbx": [],
|
||||
"lsbx_e": [],
|
||||
"lsg": [],
|
||||
"lsg_e": [],
|
||||
"lsh": [],
|
||||
"lsh_e": [],
|
||||
"lsphi": [],
|
||||
"lsphi_e": [],
|
||||
"ubu": [],
|
||||
"ubx": [
|
||||
1.5707963267948966,
|
||||
0.8726646259971648
|
||||
],
|
||||
"ubx_0": [
|
||||
0.0,
|
||||
0.0,
|
||||
0.0,
|
||||
0.0
|
||||
],
|
||||
"ubx_e": [],
|
||||
"ug": [],
|
||||
"ug_e": [],
|
||||
"uh": [],
|
||||
"uh_e": [],
|
||||
"uphi": [],
|
||||
"uphi_e": [],
|
||||
"usbu": [],
|
||||
"usbx": [],
|
||||
"usbx_e": [],
|
||||
"usg": [],
|
||||
"usg_e": [],
|
||||
"ush": [],
|
||||
"ush_e": [],
|
||||
"usphi": [],
|
||||
"usphi_e": []
|
||||
},
|
||||
"cost": {
|
||||
"Vu": [],
|
||||
"Vu_0": [],
|
||||
"Vx": [],
|
||||
"Vx_0": [],
|
||||
"Vx_e": [],
|
||||
"Vz": [],
|
||||
"Vz_0": [],
|
||||
"W": [
|
||||
[
|
||||
0.0,
|
||||
0.0,
|
||||
0.0,
|
||||
0.0,
|
||||
0.0
|
||||
],
|
||||
[
|
||||
0.0,
|
||||
0.0,
|
||||
0.0,
|
||||
0.0,
|
||||
0.0
|
||||
],
|
||||
[
|
||||
0.0,
|
||||
0.0,
|
||||
0.0,
|
||||
0.0,
|
||||
0.0
|
||||
],
|
||||
[
|
||||
0.0,
|
||||
0.0,
|
||||
0.0,
|
||||
0.0,
|
||||
0.0
|
||||
],
|
||||
[
|
||||
0.0,
|
||||
0.0,
|
||||
0.0,
|
||||
0.0,
|
||||
0.0
|
||||
]
|
||||
],
|
||||
"W_0": [
|
||||
[
|
||||
0.0,
|
||||
0.0,
|
||||
0.0,
|
||||
0.0,
|
||||
0.0
|
||||
],
|
||||
[
|
||||
0.0,
|
||||
0.0,
|
||||
0.0,
|
||||
0.0,
|
||||
0.0
|
||||
],
|
||||
[
|
||||
0.0,
|
||||
0.0,
|
||||
0.0,
|
||||
0.0,
|
||||
0.0
|
||||
],
|
||||
[
|
||||
0.0,
|
||||
0.0,
|
||||
0.0,
|
||||
0.0,
|
||||
0.0
|
||||
],
|
||||
[
|
||||
0.0,
|
||||
0.0,
|
||||
0.0,
|
||||
0.0,
|
||||
0.0
|
||||
]
|
||||
],
|
||||
"W_e": [
|
||||
[
|
||||
0.0,
|
||||
0.0,
|
||||
0.0
|
||||
],
|
||||
[
|
||||
0.0,
|
||||
0.0,
|
||||
0.0
|
||||
],
|
||||
[
|
||||
0.0,
|
||||
0.0,
|
||||
0.0
|
||||
]
|
||||
],
|
||||
"Zl": [],
|
||||
"Zl_e": [],
|
||||
"Zu": [],
|
||||
"Zu_e": [],
|
||||
"cost_ext_fun_type": "casadi",
|
||||
"cost_ext_fun_type_0": "casadi",
|
||||
"cost_ext_fun_type_e": "casadi",
|
||||
"cost_type": "NONLINEAR_LS",
|
||||
"cost_type_0": "NONLINEAR_LS",
|
||||
"cost_type_e": "NONLINEAR_LS",
|
||||
"yref": [
|
||||
0.0,
|
||||
0.0,
|
||||
0.0,
|
||||
0.0,
|
||||
0.0
|
||||
],
|
||||
"yref_0": [
|
||||
0.0,
|
||||
0.0,
|
||||
0.0,
|
||||
0.0,
|
||||
0.0
|
||||
],
|
||||
"yref_e": [
|
||||
0.0,
|
||||
0.0,
|
||||
0.0
|
||||
],
|
||||
"zl": [],
|
||||
"zl_e": [],
|
||||
"zu": [],
|
||||
"zu_e": []
|
||||
},
|
||||
"cython_include_dirs": [
|
||||
"/usr/local/pyenv/versions/3.11.4/lib/python3.11/site-packages/numpy/core/include",
|
||||
"/usr/local/pyenv/versions/3.11.4/include/python3.11"
|
||||
],
|
||||
"dims": {
|
||||
"N": 32,
|
||||
"nbu": 0,
|
||||
"nbx": 2,
|
||||
"nbx_0": 4,
|
||||
"nbx_e": 0,
|
||||
"nbxe_0": 4,
|
||||
"ng": 0,
|
||||
"ng_e": 0,
|
||||
"nh": 0,
|
||||
"nh_e": 0,
|
||||
"np": 2,
|
||||
"nphi": 0,
|
||||
"nphi_e": 0,
|
||||
"nr": 0,
|
||||
"nr_e": 0,
|
||||
"ns": 0,
|
||||
"ns_e": 0,
|
||||
"nsbu": 0,
|
||||
"nsbx": 0,
|
||||
"nsbx_e": 0,
|
||||
"nsg": 0,
|
||||
"nsg_e": 0,
|
||||
"nsh": 0,
|
||||
"nsh_e": 0,
|
||||
"nsphi": 0,
|
||||
"nsphi_e": 0,
|
||||
"nu": 1,
|
||||
"nx": 4,
|
||||
"ny": 5,
|
||||
"ny_0": 5,
|
||||
"ny_e": 3,
|
||||
"nz": 0
|
||||
},
|
||||
"json_file": "/data/openpilot/selfdrive/controls/lib/lateral_mpc_lib/acados_ocp_lat.json",
|
||||
"model": {
|
||||
"con_h_expr": null,
|
||||
"con_h_expr_e": null,
|
||||
"con_phi_expr": null,
|
||||
"con_phi_expr_e": null,
|
||||
"con_r_expr": null,
|
||||
"con_r_expr_e": null,
|
||||
"con_r_in_phi": null,
|
||||
"con_r_in_phi_e": null,
|
||||
"cost_conl_custom_outer_hess": null,
|
||||
"cost_conl_custom_outer_hess_0": null,
|
||||
"cost_conl_custom_outer_hess_e": null,
|
||||
"cost_expr_ext_cost": null,
|
||||
"cost_expr_ext_cost_0": null,
|
||||
"cost_expr_ext_cost_custom_hess": null,
|
||||
"cost_expr_ext_cost_custom_hess_0": null,
|
||||
"cost_expr_ext_cost_custom_hess_e": null,
|
||||
"cost_expr_ext_cost_e": null,
|
||||
"cost_psi_expr": null,
|
||||
"cost_psi_expr_0": null,
|
||||
"cost_psi_expr_e": null,
|
||||
"cost_r_in_psi_expr": null,
|
||||
"cost_r_in_psi_expr_0": null,
|
||||
"cost_r_in_psi_expr_e": null,
|
||||
"cost_y_expr": "jhpnnagiieahaaaadaaaaaaaaaaaaaaaaaegjaaaaaaaaaaaaaaafaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaacaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaegpcaaaaaaaaaaaaaafaaaaaaajhpffghgpgegdaaaaaaaaaaaaaaaegbaaaaaaaaaaaaaaaegpcaaaaaaaaaaaaaafaaaaaaaghpffghgpgegmcaaaaaaaaaaaaaajgkaaaaaaaegpcaaaaaaaaaaaaaahaaaaaaaahdhjgpffghgpgegdaaaaaaaaaaaaaaacheaaaaaaaaaaaaaaaegpcaaaaaaaaaaaaaamaaaaaaaahdhjgpfchbgehfgpffghgpgegdaaaaaaaaaaaaaaacheaaaaaaaaaaaaaaaegpcaaaaaaaaaaaaaanaaaaaaaahdhjgpfbgdgdgfgmgpffghgpgegeaaaaaaaaaaaaaaachjaaaaaaaaaaaaaaaegbaaaaaaaaaaaaaaachcaaaaaaaaaaaaaaaegmcaaaaaaaaaaaaaachkjjjjjjjjjjjjlpd",
|
||||
"cost_y_expr_0": "jhpnnagiieahaaaadaaaaaaaaaaaaaaaaaegjaaaaaaaaaaaaaaafaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaacaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaegpcaaaaaaaaaaaaaafaaaaaaajhpffghgpgegdaaaaaaaaaaaaaaaegbaaaaaaaaaaaaaaaegpcaaaaaaaaaaaaaafaaaaaaaghpffghgpgegmcaaaaaaaaaaaaaajgkaaaaaaaegpcaaaaaaaaaaaaaahaaaaaaaahdhjgpffghgpgegdaaaaaaaaaaaaaaacheaaaaaaaaaaaaaaaegpcaaaaaaaaaaaaaamaaaaaaaahdhjgpfchbgehfgpffghgpgegdaaaaaaaaaaaaaaacheaaaaaaaaaaaaaaaegpcaaaaaaaaaaaaaanaaaaaaaahdhjgpfbgdgdgfgmgpffghgpgegeaaaaaaaaaaaaaaachjaaaaaaaaaaaaaaaegbaaaaaaaaaaaaaaachcaaaaaaaaaaaaaaaegmcaaaaaaaaaaaaaachkjjjjjjjjjjjjlpd",
|
||||
"cost_y_expr_e": "jhpnnagiieahaaaadaaaaaaaaaaaaaaaaaeghaaaaaaaaaaaaaaadaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaacaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaegpcaaaaaaaaaaaaaafaaaaaaajhpffghgpgegdaaaaaaaaaaaaaaaegbaaaaaaaaaaaaaaaegpcaaaaaaaaaaaaaafaaaaaaaghpffghgpgegmcaaaaaaaaaaaaaajgkaaaaaaaegpcaaaaaaaaaaaaaahaaaaaaaahdhjgpffghgpgegdaaaaaaaaaaaaaaacheaaaaaaaaaaaaaaaegpcaaaaaaaaaaaaaamaaaaaaaahdhjgpfchbgehfgpffghgpg",
|
||||
"disc_dyn_expr": null,
|
||||
"dyn_disc_fun": null,
|
||||
"dyn_disc_fun_jac": null,
|
||||
"dyn_disc_fun_jac_hess": null,
|
||||
"dyn_ext_fun_type": "casadi",
|
||||
"dyn_generic_source": null,
|
||||
"f_expl_expr": "jhpnnagiieahaaaadaaaaaaaaaaaaaaaaaegiaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaacaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaegcaaaaaaaaaaaaaaaegdaaaaaaaaaaaaaaaegpcaaaaaaaaaaaaaafaaaaaaaghpffghgpgegoaaaaaaaaaaaaaaaegpcaaaaaaaaaaaaaahaaaaaaaahdhjgpffghgpgegdaaaaaaaaaaaaaaaegdaaaaaaaaaaaaaaaegpcaaaaaaaaaaaaaapaaaaaaachpgehbgehjgpgogpfchbgegjgfhdhegnaaaaaaaaaaaaaaachcaaaaaaaaaaaaaaaegpcaaaaaaaaaaaaaamaaaaaaaahdhjgpfchbgehfgpffghgpgegbaaaaaaaaaaaaaaaegdaaaaaaaaaaaaaaachbaaaaaaaaaaaaaaaegnaaaaaaaaaaaaaaachcaaaaaaaaaaaaaaaegdaaaaaaaaaaaaaaaegdaaaaaaaaaaaaaaachfaaaaaaaaaaaaaaaegoaaaaaaaaaaaaaaachcaaaaaaaaaaaaaaachiaaaaaaaaaaaaaaachiaaaaaaaaaaaaaaaegpcaaaaaaaaaaaaaanaaaaaaaahdhjgpfbgdgdgfgmgpffghgpg",
|
||||
"f_impl_expr": "jhpnnagiieahaaaadaaaaaaaaaaaaaaaaaegiaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaacaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaegcaaaaaaaaaaaaaaaegpcaaaaaaaaaaaaaajaaaaaaaihpffghgpgpfegpgehegcaaaaaaaaaaaaaaaegdaaaaaaaaaaaaaaaegpcaaaaaaaaaaaaaafaaaaaaaghpffghgpgegoaaaaaaaaaaaaaaaegpcaaaaaaaaaaaaaahaaaaaaaahdhjgpffghgpgegdaaaaaaaaaaaaaaaegdaaaaaaaaaaaaaaaegpcaaaaaaaaaaaaaapaaaaaaachpgehbgehjgpgogpfchbgegjgfhdhegnaaaaaaaaaaaaaaachdaaaaaaaaaaaaaaaegpcaaaaaaaaaaaaaamaaaaaaaahdhjgpfchbgehfgpffghgpgegcaaaaaaaaaaaaaaaegpcaaaaaaaaaaaaaajaaaaaaajhpffghgpgpfegpgehegbaaaaaaaaaaaaaaaegdaaaaaaaaaaaaaaachcaaaaaaaaaaaaaaaegnaaaaaaaaaaaaaaachdaaaaaaaaaaaaaaaegdaaaaaaaaaaaaaaaegdaaaaaaaaaaaaaaachgaaaaaaaaaaaaaaaegoaaaaaaaaaaaaaaachdaaaaaaaaaaaaaaachjaaaaaaaaaaaaaaaegcaaaaaaaaaaaaaaaegpcaaaaaaaaaaaaaalaaaaaaaahdhjgpffghgpgpfegpgehchjaaaaaaaaaaaaaaaegcaaaaaaaaaaaaaaaegpcaaaaaaaaaaaaaaabaaaaaaahdhjgpfchbgehfgpffghgpgpfegpgehegpcaaaaaaaaaaaaaanaaaaaaaahdhjgpfbgdgdgfgmgpffghgpg",
|
||||
"gnsf": {
|
||||
"nontrivial_f_LO": 1,
|
||||
"purely_linear": 0
|
||||
},
|
||||
"name": "lat",
|
||||
"p": "jhpnnagiieahaaaadaaaaaaaaaaaaaaaaaeggaaaaaaaaaaaaaaacaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaegpcaaaaaaaaaaaaaafaaaaaaaghpffghgpgegpcaaaaaaaaaaaaaapaaaaaaachpgehbgehjgpgogpfchbgegjgfhdh",
|
||||
"u": "jhpnnagiieahaaaadaaaaaaaaaaaaaaaaaegfaaaaaaaaaaaaaaabaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaegpcaaaaaaaaaaaaaanaaaaaaaahdhjgpfbgdgdgfgmgpffghgpg",
|
||||
"x": "jhpnnagiieahaaaadaaaaaaaaaaaaaaaaaegiaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaacaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaegpcaaaaaaaaaaaaaafaaaaaaaihpffghgpgegpcaaaaaaaaaaaaaafaaaaaaajhpffghgpgegpcaaaaaaaaaaaaaahaaaaaaaahdhjgpffghgpgegpcaaaaaaaaaaaaaamaaaaaaaahdhjgpfchbgehfgpffghgpg",
|
||||
"xdot": "jhpnnagiieahaaaadaaaaaaaaaaaaaaaaaegiaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaacaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaegpcaaaaaaaaaaaaaajaaaaaaaihpffghgpgpfegpgehegpcaaaaaaaaaaaaaajaaaaaaajhpffghgpgpfegpgehegpcaaaaaaaaaaaaaalaaaaaaaahdhjgpffghgpgpfegpgehegpcaaaaaaaaaaaaaaabaaaaaaahdhjgpfchbgehfgpffghgpgpfegpgeh",
|
||||
"z": "jhpnnagiieahaaaadaaaaaaaaaaaaaaaaaegdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
|
||||
},
|
||||
"parameter_values": [
|
||||
0.0,
|
||||
0.0
|
||||
],
|
||||
"problem_class": "OCP",
|
||||
"shared_lib_ext": ".so",
|
||||
"solver_options": {
|
||||
"Tsim": 0.009765625,
|
||||
"alpha_min": 0.05,
|
||||
"alpha_reduction": 0.7,
|
||||
"collocation_type": "GAUSS_LEGENDRE",
|
||||
"custom_templates": [],
|
||||
"custom_update_copy": true,
|
||||
"custom_update_filename": "",
|
||||
"custom_update_header_filename": "",
|
||||
"eps_sufficient_descent": 0.0001,
|
||||
"exact_hess_constr": 1,
|
||||
"exact_hess_cost": 1,
|
||||
"exact_hess_dyn": 1,
|
||||
"ext_cost_num_hess": 0,
|
||||
"ext_fun_compile_flags": "-O2",
|
||||
"full_step_dual": 0,
|
||||
"globalization": "FIXED_STEP",
|
||||
"globalization_use_SOC": 0,
|
||||
"hessian_approx": "GAUSS_NEWTON",
|
||||
"hpipm_mode": "BALANCE",
|
||||
"initialize_t_slacks": 0,
|
||||
"integrator_type": "ERK",
|
||||
"levenberg_marquardt": 0.0,
|
||||
"line_search_use_sufficient_descent": 0,
|
||||
"model_external_shared_lib_dir": null,
|
||||
"model_external_shared_lib_name": null,
|
||||
"nlp_solver_ext_qp_res": 0,
|
||||
"nlp_solver_max_iter": 100,
|
||||
"nlp_solver_step_length": 1.0,
|
||||
"nlp_solver_tol_comp": 1e-06,
|
||||
"nlp_solver_tol_eq": 1e-06,
|
||||
"nlp_solver_tol_ineq": 1e-06,
|
||||
"nlp_solver_tol_stat": 1e-06,
|
||||
"nlp_solver_type": "SQP_RTI",
|
||||
"print_level": 0,
|
||||
"qp_solver": "PARTIAL_CONDENSING_HPIPM",
|
||||
"qp_solver_cond_N": 1,
|
||||
"qp_solver_cond_ric_alg": 1,
|
||||
"qp_solver_iter_max": 1,
|
||||
"qp_solver_ric_alg": 1,
|
||||
"qp_solver_tol_comp": null,
|
||||
"qp_solver_tol_eq": null,
|
||||
"qp_solver_tol_ineq": null,
|
||||
"qp_solver_tol_stat": null,
|
||||
"qp_solver_warm_start": 0,
|
||||
"regularize_method": null,
|
||||
"shooting_nodes": [
|
||||
0.0,
|
||||
0.009765625,
|
||||
0.0390625,
|
||||
0.087890625,
|
||||
0.15625,
|
||||
0.244140625,
|
||||
0.3515625,
|
||||
0.478515625,
|
||||
0.625,
|
||||
0.791015625,
|
||||
0.9765625,
|
||||
1.181640625,
|
||||
1.40625,
|
||||
1.650390625,
|
||||
1.9140625,
|
||||
2.197265625,
|
||||
2.5,
|
||||
2.822265625,
|
||||
3.1640625,
|
||||
3.525390625,
|
||||
3.90625,
|
||||
4.306640625,
|
||||
4.7265625,
|
||||
5.166015625,
|
||||
5.625,
|
||||
6.103515625,
|
||||
6.6015625,
|
||||
7.119140625,
|
||||
7.65625,
|
||||
8.212890625,
|
||||
8.7890625,
|
||||
9.384765625,
|
||||
10.0
|
||||
],
|
||||
"sim_method_jac_reuse": [
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"sim_method_newton_iter": 3,
|
||||
"sim_method_newton_tol": 0.0,
|
||||
"sim_method_num_stages": [
|
||||
4,
|
||||
4,
|
||||
4,
|
||||
4,
|
||||
4,
|
||||
4,
|
||||
4,
|
||||
4,
|
||||
4,
|
||||
4,
|
||||
4,
|
||||
4,
|
||||
4,
|
||||
4,
|
||||
4,
|
||||
4,
|
||||
4,
|
||||
4,
|
||||
4,
|
||||
4,
|
||||
4,
|
||||
4,
|
||||
4,
|
||||
4,
|
||||
4,
|
||||
4,
|
||||
4,
|
||||
4,
|
||||
4,
|
||||
4,
|
||||
4,
|
||||
4
|
||||
],
|
||||
"sim_method_num_steps": [
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
1
|
||||
],
|
||||
"tf": 10.0,
|
||||
"time_steps": [
|
||||
0.009765625,
|
||||
0.029296875,
|
||||
0.048828125,
|
||||
0.068359375,
|
||||
0.087890625,
|
||||
0.107421875,
|
||||
0.126953125,
|
||||
0.146484375,
|
||||
0.166015625,
|
||||
0.185546875,
|
||||
0.205078125,
|
||||
0.224609375,
|
||||
0.244140625,
|
||||
0.263671875,
|
||||
0.283203125,
|
||||
0.302734375,
|
||||
0.322265625,
|
||||
0.341796875,
|
||||
0.361328125,
|
||||
0.380859375,
|
||||
0.400390625,
|
||||
0.419921875,
|
||||
0.439453125,
|
||||
0.458984375,
|
||||
0.478515625,
|
||||
0.498046875,
|
||||
0.517578125,
|
||||
0.537109375,
|
||||
0.556640625,
|
||||
0.576171875,
|
||||
0.595703125,
|
||||
0.615234375
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,524 @@
|
||||
{
|
||||
"acados_include_path": "/data/openpilot/third_party/acados/include",
|
||||
"acados_lib_path": "/data/openpilot/third_party/acados/lib",
|
||||
"code_export_directory": "/data/openpilot/selfdrive/controls/lib/longitudinal_mpc_lib/c_generated_code",
|
||||
"constraints": {
|
||||
"C": [],
|
||||
"C_e": [],
|
||||
"D": [],
|
||||
"constr_type": "BGH",
|
||||
"constr_type_e": "BGH",
|
||||
"idxbu": [],
|
||||
"idxbx": [],
|
||||
"idxbx_0": [
|
||||
0,
|
||||
1,
|
||||
2
|
||||
],
|
||||
"idxbx_e": [],
|
||||
"idxbxe_0": [
|
||||
0,
|
||||
1,
|
||||
2
|
||||
],
|
||||
"idxsbu": [],
|
||||
"idxsbx": [],
|
||||
"idxsbx_e": [],
|
||||
"idxsg": [],
|
||||
"idxsg_e": [],
|
||||
"idxsh": [
|
||||
0,
|
||||
1,
|
||||
2,
|
||||
3
|
||||
],
|
||||
"idxsh_e": [],
|
||||
"idxsphi": [],
|
||||
"idxsphi_e": [],
|
||||
"lbu": [],
|
||||
"lbx": [],
|
||||
"lbx_0": [
|
||||
0.0,
|
||||
0.0,
|
||||
0.0
|
||||
],
|
||||
"lbx_e": [],
|
||||
"lg": [],
|
||||
"lg_e": [],
|
||||
"lh": [
|
||||
0.0,
|
||||
0.0,
|
||||
0.0,
|
||||
0.0
|
||||
],
|
||||
"lh_e": [],
|
||||
"lphi": [],
|
||||
"lphi_e": [],
|
||||
"lsbu": [],
|
||||
"lsbx": [],
|
||||
"lsbx_e": [],
|
||||
"lsg": [],
|
||||
"lsg_e": [],
|
||||
"lsh": [
|
||||
0.0,
|
||||
0.0,
|
||||
0.0,
|
||||
0.0
|
||||
],
|
||||
"lsh_e": [],
|
||||
"lsphi": [],
|
||||
"lsphi_e": [],
|
||||
"ubu": [],
|
||||
"ubx": [],
|
||||
"ubx_0": [
|
||||
0.0,
|
||||
0.0,
|
||||
0.0
|
||||
],
|
||||
"ubx_e": [],
|
||||
"ug": [],
|
||||
"ug_e": [],
|
||||
"uh": [
|
||||
10000.0,
|
||||
10000.0,
|
||||
10000.0,
|
||||
10000.0
|
||||
],
|
||||
"uh_e": [],
|
||||
"uphi": [],
|
||||
"uphi_e": [],
|
||||
"usbu": [],
|
||||
"usbx": [],
|
||||
"usbx_e": [],
|
||||
"usg": [],
|
||||
"usg_e": [],
|
||||
"ush": [
|
||||
0.0,
|
||||
0.0,
|
||||
0.0,
|
||||
0.0
|
||||
],
|
||||
"ush_e": [],
|
||||
"usphi": [],
|
||||
"usphi_e": []
|
||||
},
|
||||
"cost": {
|
||||
"Vu": [],
|
||||
"Vu_0": [],
|
||||
"Vx": [],
|
||||
"Vx_0": [],
|
||||
"Vx_e": [],
|
||||
"Vz": [],
|
||||
"Vz_0": [],
|
||||
"W": [
|
||||
[
|
||||
0.0,
|
||||
0.0,
|
||||
0.0,
|
||||
0.0,
|
||||
0.0,
|
||||
0.0
|
||||
],
|
||||
[
|
||||
0.0,
|
||||
0.0,
|
||||
0.0,
|
||||
0.0,
|
||||
0.0,
|
||||
0.0
|
||||
],
|
||||
[
|
||||
0.0,
|
||||
0.0,
|
||||
0.0,
|
||||
0.0,
|
||||
0.0,
|
||||
0.0
|
||||
],
|
||||
[
|
||||
0.0,
|
||||
0.0,
|
||||
0.0,
|
||||
0.0,
|
||||
0.0,
|
||||
0.0
|
||||
],
|
||||
[
|
||||
0.0,
|
||||
0.0,
|
||||
0.0,
|
||||
0.0,
|
||||
0.0,
|
||||
0.0
|
||||
],
|
||||
[
|
||||
0.0,
|
||||
0.0,
|
||||
0.0,
|
||||
0.0,
|
||||
0.0,
|
||||
0.0
|
||||
]
|
||||
],
|
||||
"W_0": [
|
||||
[
|
||||
0.0,
|
||||
0.0,
|
||||
0.0,
|
||||
0.0,
|
||||
0.0,
|
||||
0.0
|
||||
],
|
||||
[
|
||||
0.0,
|
||||
0.0,
|
||||
0.0,
|
||||
0.0,
|
||||
0.0,
|
||||
0.0
|
||||
],
|
||||
[
|
||||
0.0,
|
||||
0.0,
|
||||
0.0,
|
||||
0.0,
|
||||
0.0,
|
||||
0.0
|
||||
],
|
||||
[
|
||||
0.0,
|
||||
0.0,
|
||||
0.0,
|
||||
0.0,
|
||||
0.0,
|
||||
0.0
|
||||
],
|
||||
[
|
||||
0.0,
|
||||
0.0,
|
||||
0.0,
|
||||
0.0,
|
||||
0.0,
|
||||
0.0
|
||||
],
|
||||
[
|
||||
0.0,
|
||||
0.0,
|
||||
0.0,
|
||||
0.0,
|
||||
0.0,
|
||||
0.0
|
||||
]
|
||||
],
|
||||
"W_e": [
|
||||
[
|
||||
0.0,
|
||||
0.0,
|
||||
0.0,
|
||||
0.0,
|
||||
0.0
|
||||
],
|
||||
[
|
||||
0.0,
|
||||
0.0,
|
||||
0.0,
|
||||
0.0,
|
||||
0.0
|
||||
],
|
||||
[
|
||||
0.0,
|
||||
0.0,
|
||||
0.0,
|
||||
0.0,
|
||||
0.0
|
||||
],
|
||||
[
|
||||
0.0,
|
||||
0.0,
|
||||
0.0,
|
||||
0.0,
|
||||
0.0
|
||||
],
|
||||
[
|
||||
0.0,
|
||||
0.0,
|
||||
0.0,
|
||||
0.0,
|
||||
0.0
|
||||
]
|
||||
],
|
||||
"Zl": [
|
||||
0.0,
|
||||
0.0,
|
||||
0.0,
|
||||
0.0
|
||||
],
|
||||
"Zl_e": [],
|
||||
"Zu": [
|
||||
0.0,
|
||||
0.0,
|
||||
0.0,
|
||||
0.0
|
||||
],
|
||||
"Zu_e": [],
|
||||
"cost_ext_fun_type": "casadi",
|
||||
"cost_ext_fun_type_0": "casadi",
|
||||
"cost_ext_fun_type_e": "casadi",
|
||||
"cost_type": "NONLINEAR_LS",
|
||||
"cost_type_0": "NONLINEAR_LS",
|
||||
"cost_type_e": "NONLINEAR_LS",
|
||||
"yref": [
|
||||
0.0,
|
||||
0.0,
|
||||
0.0,
|
||||
0.0,
|
||||
0.0,
|
||||
0.0
|
||||
],
|
||||
"yref_0": [
|
||||
0.0,
|
||||
0.0,
|
||||
0.0,
|
||||
0.0,
|
||||
0.0,
|
||||
0.0
|
||||
],
|
||||
"yref_e": [
|
||||
0.0,
|
||||
0.0,
|
||||
0.0,
|
||||
0.0,
|
||||
0.0
|
||||
],
|
||||
"zl": [
|
||||
0.0,
|
||||
0.0,
|
||||
0.0,
|
||||
0.0
|
||||
],
|
||||
"zl_e": [],
|
||||
"zu": [
|
||||
0.0,
|
||||
0.0,
|
||||
0.0,
|
||||
0.0
|
||||
],
|
||||
"zu_e": []
|
||||
},
|
||||
"cython_include_dirs": [
|
||||
"/usr/local/pyenv/versions/3.11.4/lib/python3.11/site-packages/numpy/core/include",
|
||||
"/usr/local/pyenv/versions/3.11.4/include/python3.11"
|
||||
],
|
||||
"dims": {
|
||||
"N": 12,
|
||||
"nbu": 0,
|
||||
"nbx": 0,
|
||||
"nbx_0": 3,
|
||||
"nbx_e": 0,
|
||||
"nbxe_0": 3,
|
||||
"ng": 0,
|
||||
"ng_e": 0,
|
||||
"nh": 4,
|
||||
"nh_e": 0,
|
||||
"np": 6,
|
||||
"nphi": 0,
|
||||
"nphi_e": 0,
|
||||
"nr": 0,
|
||||
"nr_e": 0,
|
||||
"ns": 4,
|
||||
"ns_e": 0,
|
||||
"nsbu": 0,
|
||||
"nsbx": 0,
|
||||
"nsbx_e": 0,
|
||||
"nsg": 0,
|
||||
"nsg_e": 0,
|
||||
"nsh": 4,
|
||||
"nsh_e": 0,
|
||||
"nsphi": 0,
|
||||
"nsphi_e": 0,
|
||||
"nu": 1,
|
||||
"nx": 3,
|
||||
"ny": 6,
|
||||
"ny_0": 6,
|
||||
"ny_e": 5,
|
||||
"nz": 0
|
||||
},
|
||||
"json_file": "/data/openpilot/selfdrive/controls/lib/longitudinal_mpc_lib/acados_ocp_long.json",
|
||||
"model": {
|
||||
"con_h_expr": "jhpnnagiieahaaaadaaaaaaaaaaaaaaaaaegiaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaacaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaegpcaaaaaaaaaaaaaafaaaaaaaghpffghgpgegcaaaaaaaaaaaaaaaegpcaaaaaaaaaaaaaafaaaaaaabgpffghgpgegpcaaaaaaaaaaaaaafaaaaaaabgpfngjgogegcaaaaaaaaaaaaaaaegpcaaaaaaaaaaaaaafaaaaaaabgpfngbgihchcaaaaaaaaaaaaaaaegeaaaaaaaaaaaaaaaegcaaaaaaaaaaaaaaaegcaaaaaaaaaaaaaaaegpcaaaaaaaaaaaaaakaaaaaaaihpfpgcgdhehbgdgmgfgegpcaaaaaaaaaaaaaafaaaaaaaihpffghgpgegdaaaaaaaaaaaaaaaegpcaaaaaaaaaaaaaacbaaaaaamgfgbgegpfegbgoghgfgchpfggbgdgehpgchegbaaaaaaaaaaaaaaaegbaaaaaaaaaaaaaaaegeaaaaaaaaaaaaaaaeglaaaaaaaaaaaaaaachbaaaaaaaaaaaaaaaegmcaaaaaaaaaaaaaajgfaaaaaaaegdaaaaaaaaaaaaaaaegpcaaaaaaaaaaaaaanaaaaaaamgfgbgegpfehpfggpgmgmgpghhchbaaaaaaaaaaaaaaaegmcaaaaaaaaaaaaaajggaaaaaaaegbaaaaaaaaaaaaaaachbaaaaaaaaaaaaaaaegmcaaaaaaaaaaaaaajgkaaaaaaa",
|
||||
"con_h_expr_e": null,
|
||||
"con_phi_expr": null,
|
||||
"con_phi_expr_e": null,
|
||||
"con_r_expr": null,
|
||||
"con_r_expr_e": null,
|
||||
"con_r_in_phi": null,
|
||||
"con_r_in_phi_e": null,
|
||||
"cost_conl_custom_outer_hess": null,
|
||||
"cost_conl_custom_outer_hess_0": null,
|
||||
"cost_conl_custom_outer_hess_e": null,
|
||||
"cost_expr_ext_cost": null,
|
||||
"cost_expr_ext_cost_0": null,
|
||||
"cost_expr_ext_cost_custom_hess": null,
|
||||
"cost_expr_ext_cost_custom_hess_0": null,
|
||||
"cost_expr_ext_cost_custom_hess_e": null,
|
||||
"cost_expr_ext_cost_e": null,
|
||||
"cost_psi_expr": null,
|
||||
"cost_psi_expr_0": null,
|
||||
"cost_psi_expr_e": null,
|
||||
"cost_r_in_psi_expr": null,
|
||||
"cost_r_in_psi_expr_0": null,
|
||||
"cost_r_in_psi_expr_e": null,
|
||||
"cost_y_expr": "jhpnnagiieahaaaadaaaaaaaaaaaaaaaaaegkaaaaaaaaaaaaaaagaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaacaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaafaaaaaaaaaaaaaaagaaaaaaaaaaaaaaaegeaaaaaaaaaaaaaaaegcaaaaaaaaaaaaaaaegcaaaaaaaaaaaaaaaegpcaaaaaaaaaaaaaakaaaaaaaihpfpgcgdhehbgdgmgfgegpcaaaaaaaaaaaaaafaaaaaaaihpffghgpgegbaaaaaaaaaaaaaaaegbaaaaaaaaaaaaaaaegeaaaaaaaaaaaaaaaeglaaaaaaaaaaaaaaaegpcaaaaaaaaaaaaaafaaaaaaaghpffghgpgegmcaaaaaaaaaaaaaajgfaaaaaaaegdaaaaaaaaaaaaaaaegpcaaaaaaaaaaaaaanaaaaaaamgfgbgegpfehpfggpgmgmgpghhcheaaaaaaaaaaaaaaaegmcaaaaaaaaaaaaaajggaaaaaaaegbaaaaaaaaaaaaaaacheaaaaaaaaaaaaaaaegmcaaaaaaaaaaaaaajgkaaaaaaachcaaaaaaaaaaaaaaacheaaaaaaaaaaaaaaaegpcaaaaaaaaaaaaaafaaaaaaabgpffghgpgegcaaaaaaaaaaaaaaachbbaaaaaaaaaaaaaaegpcaaaaaaaaaaaaaagaaaaaaaahchfgghpfbgegpcaaaaaaaaaaaaaafaaaaaaakgpffghgpg",
|
||||
"cost_y_expr_0": "jhpnnagiieahaaaadaaaaaaaaaaaaaaaaaegkaaaaaaaaaaaaaaagaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaacaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaafaaaaaaaaaaaaaaagaaaaaaaaaaaaaaaegeaaaaaaaaaaaaaaaegcaaaaaaaaaaaaaaaegcaaaaaaaaaaaaaaaegpcaaaaaaaaaaaaaakaaaaaaaihpfpgcgdhehbgdgmgfgegpcaaaaaaaaaaaaaafaaaaaaaihpffghgpgegbaaaaaaaaaaaaaaaegbaaaaaaaaaaaaaaaegeaaaaaaaaaaaaaaaeglaaaaaaaaaaaaaaaegpcaaaaaaaaaaaaaafaaaaaaaghpffghgpgegmcaaaaaaaaaaaaaajgfaaaaaaaegdaaaaaaaaaaaaaaaegpcaaaaaaaaaaaaaanaaaaaaamgfgbgegpfehpfggpgmgmgpghhcheaaaaaaaaaaaaaaaegmcaaaaaaaaaaaaaajggaaaaaaaegbaaaaaaaaaaaaaaacheaaaaaaaaaaaaaaaegmcaaaaaaaaaaaaaajgkaaaaaaachcaaaaaaaaaaaaaaacheaaaaaaaaaaaaaaaegpcaaaaaaaaaaaaaafaaaaaaabgpffghgpgegcaaaaaaaaaaaaaaachbbaaaaaaaaaaaaaaegpcaaaaaaaaaaaaaagaaaaaaaahchfgghpfbgegpcaaaaaaaaaaaaaafaaaaaaakgpffghgpg",
|
||||
"cost_y_expr_e": "jhpnnagiieahaaaadaaaaaaaaaaaaaaaaaegjaaaaaaaaaaaaaaafaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaacaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaegeaaaaaaaaaaaaaaaegcaaaaaaaaaaaaaaaegcaaaaaaaaaaaaaaaegpcaaaaaaaaaaaaaakaaaaaaaihpfpgcgdhehbgdgmgfgegpcaaaaaaaaaaaaaafaaaaaaaihpffghgpgegbaaaaaaaaaaaaaaaegbaaaaaaaaaaaaaaaegeaaaaaaaaaaaaaaaeglaaaaaaaaaaaaaaaegpcaaaaaaaaaaaaaafaaaaaaaghpffghgpgegmcaaaaaaaaaaaaaajgfaaaaaaaegdaaaaaaaaaaaaaaaegpcaaaaaaaaaaaaaanaaaaaaamgfgbgegpfehpfggpgmgmgpghhcheaaaaaaaaaaaaaaaegmcaaaaaaaaaaaaaajggaaaaaaaegbaaaaaaaaaaaaaaacheaaaaaaaaaaaaaaaegmcaaaaaaaaaaaaaajgkaaaaaaachcaaaaaaaaaaaaaaacheaaaaaaaaaaaaaaaegpcaaaaaaaaaaaaaafaaaaaaabgpffghgpgegcaaaaaaaaaaaaaaachbbaaaaaaaaaaaaaaegpcaaaaaaaaaaaaaagaaaaaaaahchfgghpfbg",
|
||||
"disc_dyn_expr": null,
|
||||
"dyn_disc_fun": null,
|
||||
"dyn_disc_fun_jac": null,
|
||||
"dyn_disc_fun_jac_hess": null,
|
||||
"dyn_ext_fun_type": "casadi",
|
||||
"dyn_generic_source": null,
|
||||
"f_expl_expr": "jhpnnagiieahaaaadaaaaaaaaaaaaaaaaaeghaaaaaaaaaaaaaaadaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaacaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaegpcaaaaaaaaaaaaaafaaaaaaaghpffghgpgegpcaaaaaaaaaaaaaafaaaaaaabgpffghgpgegpcaaaaaaaaaaaaaafaaaaaaakgpffghgpg",
|
||||
"f_impl_expr": "jhpnnagiieahaaaadaaaaaaaaaaaaaaaaaeghaaaaaaaaaaaaaaadaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaacaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaegcaaaaaaaaaaaaaaaegpcaaaaaaaaaaaaaajaaaaaaaihpffghgpgpfegpgehegpcaaaaaaaaaaaaaafaaaaaaaghpffghgpgegcaaaaaaaaaaaaaaaegpcaaaaaaaaaaaaaajaaaaaaaghpffghgpgpfegpgehegpcaaaaaaaaaaaaaafaaaaaaabgpffghgpgegcaaaaaaaaaaaaaaaegpcaaaaaaaaaaaaaajaaaaaaabgpffghgpgpfegpgehegpcaaaaaaaaaaaaaafaaaaaaakgpffghgpg",
|
||||
"gnsf": {
|
||||
"nontrivial_f_LO": 1,
|
||||
"purely_linear": 0
|
||||
},
|
||||
"name": "long",
|
||||
"p": "jhpnnagiieahaaaadaaaaaaaaaaaaaaaaaegkaaaaaaaaaaaaaaagaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaacaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaafaaaaaaaaaaaaaaagaaaaaaaaaaaaaaaegpcaaaaaaaaaaaaaafaaaaaaabgpfngjgogegpcaaaaaaaaaaaaaafaaaaaaabgpfngbgihegpcaaaaaaaaaaaaaakaaaaaaaihpfpgcgdhehbgdgmgfgegpcaaaaaaaaaaaaaagaaaaaaaahchfgghpfbgegpcaaaaaaaaaaaaaanaaaaaaamgfgbgegpfehpfggpgmgmgpghhegpcaaaaaaaaaaaaaacbaaaaaamgfgbgegpfegbgoghgfgchpfggbgdgehpgch",
|
||||
"u": "jhpnnagiieahaaaadaaaaaaaaaaaaaaaaaegfaaaaaaaaaaaaaaabaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaegpcaaaaaaaaaaaaaafaaaaaaakgpffghgpg",
|
||||
"x": "jhpnnagiieahaaaadaaaaaaaaaaaaaaaaaeghaaaaaaaaaaaaaaadaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaacaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaegpcaaaaaaaaaaaaaafaaaaaaaihpffghgpgegpcaaaaaaaaaaaaaafaaaaaaaghpffghgpgegpcaaaaaaaaaaaaaafaaaaaaabgpffghgpg",
|
||||
"xdot": "jhpnnagiieahaaaadaaaaaaaaaaaaaaaaaeghaaaaaaaaaaaaaaadaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaacaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaegpcaaaaaaaaaaaaaajaaaaaaaihpffghgpgpfegpgehegpcaaaaaaaaaaaaaajaaaaaaaghpffghgpgpfegpgehegpcaaaaaaaaaaaaaajaaaaaaabgpffghgpgpfegpgeh",
|
||||
"z": "jhpnnagiieahaaaadaaaaaaaaaaaaaaaaaegdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
|
||||
},
|
||||
"parameter_values": [
|
||||
-1.2,
|
||||
1.2,
|
||||
0.0,
|
||||
0.0,
|
||||
1.45,
|
||||
0.75
|
||||
],
|
||||
"problem_class": "OCP",
|
||||
"shared_lib_ext": ".so",
|
||||
"solver_options": {
|
||||
"Tsim": 0.06944444444444445,
|
||||
"alpha_min": 0.05,
|
||||
"alpha_reduction": 0.7,
|
||||
"collocation_type": "GAUSS_LEGENDRE",
|
||||
"custom_templates": [],
|
||||
"custom_update_copy": true,
|
||||
"custom_update_filename": "",
|
||||
"custom_update_header_filename": "",
|
||||
"eps_sufficient_descent": 0.0001,
|
||||
"exact_hess_constr": 1,
|
||||
"exact_hess_cost": 1,
|
||||
"exact_hess_dyn": 1,
|
||||
"ext_cost_num_hess": 0,
|
||||
"ext_fun_compile_flags": "-O2",
|
||||
"full_step_dual": 0,
|
||||
"globalization": "FIXED_STEP",
|
||||
"globalization_use_SOC": 0,
|
||||
"hessian_approx": "GAUSS_NEWTON",
|
||||
"hpipm_mode": "BALANCE",
|
||||
"initialize_t_slacks": 0,
|
||||
"integrator_type": "ERK",
|
||||
"levenberg_marquardt": 0.0,
|
||||
"line_search_use_sufficient_descent": 0,
|
||||
"model_external_shared_lib_dir": null,
|
||||
"model_external_shared_lib_name": null,
|
||||
"nlp_solver_ext_qp_res": 0,
|
||||
"nlp_solver_max_iter": 100,
|
||||
"nlp_solver_step_length": 1.0,
|
||||
"nlp_solver_tol_comp": 1e-06,
|
||||
"nlp_solver_tol_eq": 1e-06,
|
||||
"nlp_solver_tol_ineq": 1e-06,
|
||||
"nlp_solver_tol_stat": 1e-06,
|
||||
"nlp_solver_type": "SQP_RTI",
|
||||
"print_level": 0,
|
||||
"qp_solver": "PARTIAL_CONDENSING_HPIPM",
|
||||
"qp_solver_cond_N": 1,
|
||||
"qp_solver_cond_ric_alg": 1,
|
||||
"qp_solver_iter_max": 10,
|
||||
"qp_solver_ric_alg": 1,
|
||||
"qp_solver_tol_comp": 0.001,
|
||||
"qp_solver_tol_eq": 0.001,
|
||||
"qp_solver_tol_ineq": 0.001,
|
||||
"qp_solver_tol_stat": 0.001,
|
||||
"qp_solver_warm_start": 0,
|
||||
"regularize_method": null,
|
||||
"shooting_nodes": [
|
||||
0.0,
|
||||
0.06944444444444445,
|
||||
0.2777777777777778,
|
||||
0.625,
|
||||
1.1111111111111112,
|
||||
1.7361111111111114,
|
||||
2.5,
|
||||
3.4027777777777786,
|
||||
4.444444444444445,
|
||||
5.625,
|
||||
6.9444444444444455,
|
||||
8.402777777777777,
|
||||
10.0
|
||||
],
|
||||
"sim_method_jac_reuse": [
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"sim_method_newton_iter": 3,
|
||||
"sim_method_newton_tol": 0.0,
|
||||
"sim_method_num_stages": [
|
||||
4,
|
||||
4,
|
||||
4,
|
||||
4,
|
||||
4,
|
||||
4,
|
||||
4,
|
||||
4,
|
||||
4,
|
||||
4,
|
||||
4,
|
||||
4
|
||||
],
|
||||
"sim_method_num_steps": [
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
1
|
||||
],
|
||||
"tf": 10.0,
|
||||
"time_steps": [
|
||||
0.06944444444444445,
|
||||
0.20833333333333334,
|
||||
0.3472222222222222,
|
||||
0.48611111111111116,
|
||||
0.6250000000000002,
|
||||
0.7638888888888886,
|
||||
0.9027777777777786,
|
||||
1.041666666666666,
|
||||
1.1805555555555554,
|
||||
1.3194444444444455,
|
||||
1.4583333333333313,
|
||||
1.5972222222222232
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -21,7 +21,7 @@ class TestLatControl:
|
||||
CI = CarInterface(CP, CarController, CarState)
|
||||
VM = VehicleModel(CP)
|
||||
|
||||
controller = controller(CP, CI)
|
||||
controller = controller(CP.as_reader(), CI)
|
||||
|
||||
CS = car.CarState.new_message()
|
||||
CS.vEgo = 30
|
||||
|
||||
@@ -12,8 +12,7 @@ def plannerd_thread():
|
||||
|
||||
cloudlog.info("plannerd is waiting for CarParams")
|
||||
params = Params()
|
||||
with car.CarParams.from_bytes(params.get("CarParams", block=True)) as msg:
|
||||
CP = msg
|
||||
CP = messaging.log_from_bytes(params.get("CarParams", block=True), car.CarParams)
|
||||
cloudlog.info("plannerd got CarParams: %s", CP.carName)
|
||||
|
||||
longitudinal_planner = LongitudinalPlanner(CP)
|
||||
|
||||
@@ -288,8 +288,7 @@ def main():
|
||||
|
||||
# wait for stats about the car to come in from controls
|
||||
cloudlog.info("radard is waiting for CarParams")
|
||||
with car.CarParams.from_bytes(Params().get("CarParams", block=True)) as msg:
|
||||
CP = msg
|
||||
CP = messaging.log_from_bytes(Params().get("CarParams", block=True), car.CarParams)
|
||||
cloudlog.info("radard got CarParams")
|
||||
|
||||
# import the radar from the fingerprint
|
||||
|
||||
@@ -38,7 +38,7 @@ class PointBuckets:
|
||||
def is_calculable(self) -> bool:
|
||||
return all(len(v) > 0 for v in self.buckets.values())
|
||||
|
||||
def add_point(self, x: float, y: float, bucket_val: float) -> None:
|
||||
def add_point(self, x: float, y: float) -> None:
|
||||
raise NotImplementedError
|
||||
|
||||
def get_points(self, num_points: int = None) -> Any:
|
||||
|
||||
Binary file not shown.
@@ -45,326 +45,326 @@ const static double MAHA_THRESH_31 = 3.8414588206941227;
|
||||
* *
|
||||
* This file is part of 'ekf' *
|
||||
******************************************************************************/
|
||||
void err_fun(double *nom_x, double *delta_x, double *out_4405245383551283102) {
|
||||
out_4405245383551283102[0] = delta_x[0] + nom_x[0];
|
||||
out_4405245383551283102[1] = delta_x[1] + nom_x[1];
|
||||
out_4405245383551283102[2] = delta_x[2] + nom_x[2];
|
||||
out_4405245383551283102[3] = delta_x[3] + nom_x[3];
|
||||
out_4405245383551283102[4] = delta_x[4] + nom_x[4];
|
||||
out_4405245383551283102[5] = delta_x[5] + nom_x[5];
|
||||
out_4405245383551283102[6] = delta_x[6] + nom_x[6];
|
||||
out_4405245383551283102[7] = delta_x[7] + nom_x[7];
|
||||
out_4405245383551283102[8] = delta_x[8] + nom_x[8];
|
||||
void err_fun(double *nom_x, double *delta_x, double *out_7683831691601887608) {
|
||||
out_7683831691601887608[0] = delta_x[0] + nom_x[0];
|
||||
out_7683831691601887608[1] = delta_x[1] + nom_x[1];
|
||||
out_7683831691601887608[2] = delta_x[2] + nom_x[2];
|
||||
out_7683831691601887608[3] = delta_x[3] + nom_x[3];
|
||||
out_7683831691601887608[4] = delta_x[4] + nom_x[4];
|
||||
out_7683831691601887608[5] = delta_x[5] + nom_x[5];
|
||||
out_7683831691601887608[6] = delta_x[6] + nom_x[6];
|
||||
out_7683831691601887608[7] = delta_x[7] + nom_x[7];
|
||||
out_7683831691601887608[8] = delta_x[8] + nom_x[8];
|
||||
}
|
||||
void inv_err_fun(double *nom_x, double *true_x, double *out_6814225357492049644) {
|
||||
out_6814225357492049644[0] = -nom_x[0] + true_x[0];
|
||||
out_6814225357492049644[1] = -nom_x[1] + true_x[1];
|
||||
out_6814225357492049644[2] = -nom_x[2] + true_x[2];
|
||||
out_6814225357492049644[3] = -nom_x[3] + true_x[3];
|
||||
out_6814225357492049644[4] = -nom_x[4] + true_x[4];
|
||||
out_6814225357492049644[5] = -nom_x[5] + true_x[5];
|
||||
out_6814225357492049644[6] = -nom_x[6] + true_x[6];
|
||||
out_6814225357492049644[7] = -nom_x[7] + true_x[7];
|
||||
out_6814225357492049644[8] = -nom_x[8] + true_x[8];
|
||||
void inv_err_fun(double *nom_x, double *true_x, double *out_2772021370076241199) {
|
||||
out_2772021370076241199[0] = -nom_x[0] + true_x[0];
|
||||
out_2772021370076241199[1] = -nom_x[1] + true_x[1];
|
||||
out_2772021370076241199[2] = -nom_x[2] + true_x[2];
|
||||
out_2772021370076241199[3] = -nom_x[3] + true_x[3];
|
||||
out_2772021370076241199[4] = -nom_x[4] + true_x[4];
|
||||
out_2772021370076241199[5] = -nom_x[5] + true_x[5];
|
||||
out_2772021370076241199[6] = -nom_x[6] + true_x[6];
|
||||
out_2772021370076241199[7] = -nom_x[7] + true_x[7];
|
||||
out_2772021370076241199[8] = -nom_x[8] + true_x[8];
|
||||
}
|
||||
void H_mod_fun(double *state, double *out_8873206987470723373) {
|
||||
out_8873206987470723373[0] = 1.0;
|
||||
out_8873206987470723373[1] = 0;
|
||||
out_8873206987470723373[2] = 0;
|
||||
out_8873206987470723373[3] = 0;
|
||||
out_8873206987470723373[4] = 0;
|
||||
out_8873206987470723373[5] = 0;
|
||||
out_8873206987470723373[6] = 0;
|
||||
out_8873206987470723373[7] = 0;
|
||||
out_8873206987470723373[8] = 0;
|
||||
out_8873206987470723373[9] = 0;
|
||||
out_8873206987470723373[10] = 1.0;
|
||||
out_8873206987470723373[11] = 0;
|
||||
out_8873206987470723373[12] = 0;
|
||||
out_8873206987470723373[13] = 0;
|
||||
out_8873206987470723373[14] = 0;
|
||||
out_8873206987470723373[15] = 0;
|
||||
out_8873206987470723373[16] = 0;
|
||||
out_8873206987470723373[17] = 0;
|
||||
out_8873206987470723373[18] = 0;
|
||||
out_8873206987470723373[19] = 0;
|
||||
out_8873206987470723373[20] = 1.0;
|
||||
out_8873206987470723373[21] = 0;
|
||||
out_8873206987470723373[22] = 0;
|
||||
out_8873206987470723373[23] = 0;
|
||||
out_8873206987470723373[24] = 0;
|
||||
out_8873206987470723373[25] = 0;
|
||||
out_8873206987470723373[26] = 0;
|
||||
out_8873206987470723373[27] = 0;
|
||||
out_8873206987470723373[28] = 0;
|
||||
out_8873206987470723373[29] = 0;
|
||||
out_8873206987470723373[30] = 1.0;
|
||||
out_8873206987470723373[31] = 0;
|
||||
out_8873206987470723373[32] = 0;
|
||||
out_8873206987470723373[33] = 0;
|
||||
out_8873206987470723373[34] = 0;
|
||||
out_8873206987470723373[35] = 0;
|
||||
out_8873206987470723373[36] = 0;
|
||||
out_8873206987470723373[37] = 0;
|
||||
out_8873206987470723373[38] = 0;
|
||||
out_8873206987470723373[39] = 0;
|
||||
out_8873206987470723373[40] = 1.0;
|
||||
out_8873206987470723373[41] = 0;
|
||||
out_8873206987470723373[42] = 0;
|
||||
out_8873206987470723373[43] = 0;
|
||||
out_8873206987470723373[44] = 0;
|
||||
out_8873206987470723373[45] = 0;
|
||||
out_8873206987470723373[46] = 0;
|
||||
out_8873206987470723373[47] = 0;
|
||||
out_8873206987470723373[48] = 0;
|
||||
out_8873206987470723373[49] = 0;
|
||||
out_8873206987470723373[50] = 1.0;
|
||||
out_8873206987470723373[51] = 0;
|
||||
out_8873206987470723373[52] = 0;
|
||||
out_8873206987470723373[53] = 0;
|
||||
out_8873206987470723373[54] = 0;
|
||||
out_8873206987470723373[55] = 0;
|
||||
out_8873206987470723373[56] = 0;
|
||||
out_8873206987470723373[57] = 0;
|
||||
out_8873206987470723373[58] = 0;
|
||||
out_8873206987470723373[59] = 0;
|
||||
out_8873206987470723373[60] = 1.0;
|
||||
out_8873206987470723373[61] = 0;
|
||||
out_8873206987470723373[62] = 0;
|
||||
out_8873206987470723373[63] = 0;
|
||||
out_8873206987470723373[64] = 0;
|
||||
out_8873206987470723373[65] = 0;
|
||||
out_8873206987470723373[66] = 0;
|
||||
out_8873206987470723373[67] = 0;
|
||||
out_8873206987470723373[68] = 0;
|
||||
out_8873206987470723373[69] = 0;
|
||||
out_8873206987470723373[70] = 1.0;
|
||||
out_8873206987470723373[71] = 0;
|
||||
out_8873206987470723373[72] = 0;
|
||||
out_8873206987470723373[73] = 0;
|
||||
out_8873206987470723373[74] = 0;
|
||||
out_8873206987470723373[75] = 0;
|
||||
out_8873206987470723373[76] = 0;
|
||||
out_8873206987470723373[77] = 0;
|
||||
out_8873206987470723373[78] = 0;
|
||||
out_8873206987470723373[79] = 0;
|
||||
out_8873206987470723373[80] = 1.0;
|
||||
void H_mod_fun(double *state, double *out_2876076255899625510) {
|
||||
out_2876076255899625510[0] = 1.0;
|
||||
out_2876076255899625510[1] = 0;
|
||||
out_2876076255899625510[2] = 0;
|
||||
out_2876076255899625510[3] = 0;
|
||||
out_2876076255899625510[4] = 0;
|
||||
out_2876076255899625510[5] = 0;
|
||||
out_2876076255899625510[6] = 0;
|
||||
out_2876076255899625510[7] = 0;
|
||||
out_2876076255899625510[8] = 0;
|
||||
out_2876076255899625510[9] = 0;
|
||||
out_2876076255899625510[10] = 1.0;
|
||||
out_2876076255899625510[11] = 0;
|
||||
out_2876076255899625510[12] = 0;
|
||||
out_2876076255899625510[13] = 0;
|
||||
out_2876076255899625510[14] = 0;
|
||||
out_2876076255899625510[15] = 0;
|
||||
out_2876076255899625510[16] = 0;
|
||||
out_2876076255899625510[17] = 0;
|
||||
out_2876076255899625510[18] = 0;
|
||||
out_2876076255899625510[19] = 0;
|
||||
out_2876076255899625510[20] = 1.0;
|
||||
out_2876076255899625510[21] = 0;
|
||||
out_2876076255899625510[22] = 0;
|
||||
out_2876076255899625510[23] = 0;
|
||||
out_2876076255899625510[24] = 0;
|
||||
out_2876076255899625510[25] = 0;
|
||||
out_2876076255899625510[26] = 0;
|
||||
out_2876076255899625510[27] = 0;
|
||||
out_2876076255899625510[28] = 0;
|
||||
out_2876076255899625510[29] = 0;
|
||||
out_2876076255899625510[30] = 1.0;
|
||||
out_2876076255899625510[31] = 0;
|
||||
out_2876076255899625510[32] = 0;
|
||||
out_2876076255899625510[33] = 0;
|
||||
out_2876076255899625510[34] = 0;
|
||||
out_2876076255899625510[35] = 0;
|
||||
out_2876076255899625510[36] = 0;
|
||||
out_2876076255899625510[37] = 0;
|
||||
out_2876076255899625510[38] = 0;
|
||||
out_2876076255899625510[39] = 0;
|
||||
out_2876076255899625510[40] = 1.0;
|
||||
out_2876076255899625510[41] = 0;
|
||||
out_2876076255899625510[42] = 0;
|
||||
out_2876076255899625510[43] = 0;
|
||||
out_2876076255899625510[44] = 0;
|
||||
out_2876076255899625510[45] = 0;
|
||||
out_2876076255899625510[46] = 0;
|
||||
out_2876076255899625510[47] = 0;
|
||||
out_2876076255899625510[48] = 0;
|
||||
out_2876076255899625510[49] = 0;
|
||||
out_2876076255899625510[50] = 1.0;
|
||||
out_2876076255899625510[51] = 0;
|
||||
out_2876076255899625510[52] = 0;
|
||||
out_2876076255899625510[53] = 0;
|
||||
out_2876076255899625510[54] = 0;
|
||||
out_2876076255899625510[55] = 0;
|
||||
out_2876076255899625510[56] = 0;
|
||||
out_2876076255899625510[57] = 0;
|
||||
out_2876076255899625510[58] = 0;
|
||||
out_2876076255899625510[59] = 0;
|
||||
out_2876076255899625510[60] = 1.0;
|
||||
out_2876076255899625510[61] = 0;
|
||||
out_2876076255899625510[62] = 0;
|
||||
out_2876076255899625510[63] = 0;
|
||||
out_2876076255899625510[64] = 0;
|
||||
out_2876076255899625510[65] = 0;
|
||||
out_2876076255899625510[66] = 0;
|
||||
out_2876076255899625510[67] = 0;
|
||||
out_2876076255899625510[68] = 0;
|
||||
out_2876076255899625510[69] = 0;
|
||||
out_2876076255899625510[70] = 1.0;
|
||||
out_2876076255899625510[71] = 0;
|
||||
out_2876076255899625510[72] = 0;
|
||||
out_2876076255899625510[73] = 0;
|
||||
out_2876076255899625510[74] = 0;
|
||||
out_2876076255899625510[75] = 0;
|
||||
out_2876076255899625510[76] = 0;
|
||||
out_2876076255899625510[77] = 0;
|
||||
out_2876076255899625510[78] = 0;
|
||||
out_2876076255899625510[79] = 0;
|
||||
out_2876076255899625510[80] = 1.0;
|
||||
}
|
||||
void f_fun(double *state, double dt, double *out_3688990143768374912) {
|
||||
out_3688990143768374912[0] = state[0];
|
||||
out_3688990143768374912[1] = state[1];
|
||||
out_3688990143768374912[2] = state[2];
|
||||
out_3688990143768374912[3] = state[3];
|
||||
out_3688990143768374912[4] = state[4];
|
||||
out_3688990143768374912[5] = dt*((-state[4] + (-center_to_front*stiffness_front*state[0] + center_to_rear*stiffness_rear*state[0])/(mass*state[4]))*state[6] - 9.8000000000000007*state[8] + stiffness_front*(-state[2] - state[3] + state[7])*state[0]/(mass*state[1]) + (-stiffness_front*state[0] - stiffness_rear*state[0])*state[5]/(mass*state[4])) + state[5];
|
||||
out_3688990143768374912[6] = dt*(center_to_front*stiffness_front*(-state[2] - state[3] + state[7])*state[0]/(rotational_inertia*state[1]) + (-center_to_front*stiffness_front*state[0] + center_to_rear*stiffness_rear*state[0])*state[5]/(rotational_inertia*state[4]) + (-pow(center_to_front, 2)*stiffness_front*state[0] - pow(center_to_rear, 2)*stiffness_rear*state[0])*state[6]/(rotational_inertia*state[4])) + state[6];
|
||||
out_3688990143768374912[7] = state[7];
|
||||
out_3688990143768374912[8] = state[8];
|
||||
void f_fun(double *state, double dt, double *out_711338878401685436) {
|
||||
out_711338878401685436[0] = state[0];
|
||||
out_711338878401685436[1] = state[1];
|
||||
out_711338878401685436[2] = state[2];
|
||||
out_711338878401685436[3] = state[3];
|
||||
out_711338878401685436[4] = state[4];
|
||||
out_711338878401685436[5] = dt*((-state[4] + (-center_to_front*stiffness_front*state[0] + center_to_rear*stiffness_rear*state[0])/(mass*state[4]))*state[6] - 9.8000000000000007*state[8] + stiffness_front*(-state[2] - state[3] + state[7])*state[0]/(mass*state[1]) + (-stiffness_front*state[0] - stiffness_rear*state[0])*state[5]/(mass*state[4])) + state[5];
|
||||
out_711338878401685436[6] = dt*(center_to_front*stiffness_front*(-state[2] - state[3] + state[7])*state[0]/(rotational_inertia*state[1]) + (-center_to_front*stiffness_front*state[0] + center_to_rear*stiffness_rear*state[0])*state[5]/(rotational_inertia*state[4]) + (-pow(center_to_front, 2)*stiffness_front*state[0] - pow(center_to_rear, 2)*stiffness_rear*state[0])*state[6]/(rotational_inertia*state[4])) + state[6];
|
||||
out_711338878401685436[7] = state[7];
|
||||
out_711338878401685436[8] = state[8];
|
||||
}
|
||||
void F_fun(double *state, double dt, double *out_6095431430690537089) {
|
||||
out_6095431430690537089[0] = 1;
|
||||
out_6095431430690537089[1] = 0;
|
||||
out_6095431430690537089[2] = 0;
|
||||
out_6095431430690537089[3] = 0;
|
||||
out_6095431430690537089[4] = 0;
|
||||
out_6095431430690537089[5] = 0;
|
||||
out_6095431430690537089[6] = 0;
|
||||
out_6095431430690537089[7] = 0;
|
||||
out_6095431430690537089[8] = 0;
|
||||
out_6095431430690537089[9] = 0;
|
||||
out_6095431430690537089[10] = 1;
|
||||
out_6095431430690537089[11] = 0;
|
||||
out_6095431430690537089[12] = 0;
|
||||
out_6095431430690537089[13] = 0;
|
||||
out_6095431430690537089[14] = 0;
|
||||
out_6095431430690537089[15] = 0;
|
||||
out_6095431430690537089[16] = 0;
|
||||
out_6095431430690537089[17] = 0;
|
||||
out_6095431430690537089[18] = 0;
|
||||
out_6095431430690537089[19] = 0;
|
||||
out_6095431430690537089[20] = 1;
|
||||
out_6095431430690537089[21] = 0;
|
||||
out_6095431430690537089[22] = 0;
|
||||
out_6095431430690537089[23] = 0;
|
||||
out_6095431430690537089[24] = 0;
|
||||
out_6095431430690537089[25] = 0;
|
||||
out_6095431430690537089[26] = 0;
|
||||
out_6095431430690537089[27] = 0;
|
||||
out_6095431430690537089[28] = 0;
|
||||
out_6095431430690537089[29] = 0;
|
||||
out_6095431430690537089[30] = 1;
|
||||
out_6095431430690537089[31] = 0;
|
||||
out_6095431430690537089[32] = 0;
|
||||
out_6095431430690537089[33] = 0;
|
||||
out_6095431430690537089[34] = 0;
|
||||
out_6095431430690537089[35] = 0;
|
||||
out_6095431430690537089[36] = 0;
|
||||
out_6095431430690537089[37] = 0;
|
||||
out_6095431430690537089[38] = 0;
|
||||
out_6095431430690537089[39] = 0;
|
||||
out_6095431430690537089[40] = 1;
|
||||
out_6095431430690537089[41] = 0;
|
||||
out_6095431430690537089[42] = 0;
|
||||
out_6095431430690537089[43] = 0;
|
||||
out_6095431430690537089[44] = 0;
|
||||
out_6095431430690537089[45] = dt*(stiffness_front*(-state[2] - state[3] + state[7])/(mass*state[1]) + (-stiffness_front - stiffness_rear)*state[5]/(mass*state[4]) + (-center_to_front*stiffness_front + center_to_rear*stiffness_rear)*state[6]/(mass*state[4]));
|
||||
out_6095431430690537089[46] = -dt*stiffness_front*(-state[2] - state[3] + state[7])*state[0]/(mass*pow(state[1], 2));
|
||||
out_6095431430690537089[47] = -dt*stiffness_front*state[0]/(mass*state[1]);
|
||||
out_6095431430690537089[48] = -dt*stiffness_front*state[0]/(mass*state[1]);
|
||||
out_6095431430690537089[49] = dt*((-1 - (-center_to_front*stiffness_front*state[0] + center_to_rear*stiffness_rear*state[0])/(mass*pow(state[4], 2)))*state[6] - (-stiffness_front*state[0] - stiffness_rear*state[0])*state[5]/(mass*pow(state[4], 2)));
|
||||
out_6095431430690537089[50] = dt*(-stiffness_front*state[0] - stiffness_rear*state[0])/(mass*state[4]) + 1;
|
||||
out_6095431430690537089[51] = dt*(-state[4] + (-center_to_front*stiffness_front*state[0] + center_to_rear*stiffness_rear*state[0])/(mass*state[4]));
|
||||
out_6095431430690537089[52] = dt*stiffness_front*state[0]/(mass*state[1]);
|
||||
out_6095431430690537089[53] = -9.8000000000000007*dt;
|
||||
out_6095431430690537089[54] = dt*(center_to_front*stiffness_front*(-state[2] - state[3] + state[7])/(rotational_inertia*state[1]) + (-center_to_front*stiffness_front + center_to_rear*stiffness_rear)*state[5]/(rotational_inertia*state[4]) + (-pow(center_to_front, 2)*stiffness_front - pow(center_to_rear, 2)*stiffness_rear)*state[6]/(rotational_inertia*state[4]));
|
||||
out_6095431430690537089[55] = -center_to_front*dt*stiffness_front*(-state[2] - state[3] + state[7])*state[0]/(rotational_inertia*pow(state[1], 2));
|
||||
out_6095431430690537089[56] = -center_to_front*dt*stiffness_front*state[0]/(rotational_inertia*state[1]);
|
||||
out_6095431430690537089[57] = -center_to_front*dt*stiffness_front*state[0]/(rotational_inertia*state[1]);
|
||||
out_6095431430690537089[58] = dt*(-(-center_to_front*stiffness_front*state[0] + center_to_rear*stiffness_rear*state[0])*state[5]/(rotational_inertia*pow(state[4], 2)) - (-pow(center_to_front, 2)*stiffness_front*state[0] - pow(center_to_rear, 2)*stiffness_rear*state[0])*state[6]/(rotational_inertia*pow(state[4], 2)));
|
||||
out_6095431430690537089[59] = dt*(-center_to_front*stiffness_front*state[0] + center_to_rear*stiffness_rear*state[0])/(rotational_inertia*state[4]);
|
||||
out_6095431430690537089[60] = dt*(-pow(center_to_front, 2)*stiffness_front*state[0] - pow(center_to_rear, 2)*stiffness_rear*state[0])/(rotational_inertia*state[4]) + 1;
|
||||
out_6095431430690537089[61] = center_to_front*dt*stiffness_front*state[0]/(rotational_inertia*state[1]);
|
||||
out_6095431430690537089[62] = 0;
|
||||
out_6095431430690537089[63] = 0;
|
||||
out_6095431430690537089[64] = 0;
|
||||
out_6095431430690537089[65] = 0;
|
||||
out_6095431430690537089[66] = 0;
|
||||
out_6095431430690537089[67] = 0;
|
||||
out_6095431430690537089[68] = 0;
|
||||
out_6095431430690537089[69] = 0;
|
||||
out_6095431430690537089[70] = 1;
|
||||
out_6095431430690537089[71] = 0;
|
||||
out_6095431430690537089[72] = 0;
|
||||
out_6095431430690537089[73] = 0;
|
||||
out_6095431430690537089[74] = 0;
|
||||
out_6095431430690537089[75] = 0;
|
||||
out_6095431430690537089[76] = 0;
|
||||
out_6095431430690537089[77] = 0;
|
||||
out_6095431430690537089[78] = 0;
|
||||
out_6095431430690537089[79] = 0;
|
||||
out_6095431430690537089[80] = 1;
|
||||
void F_fun(double *state, double dt, double *out_782397592704791785) {
|
||||
out_782397592704791785[0] = 1;
|
||||
out_782397592704791785[1] = 0;
|
||||
out_782397592704791785[2] = 0;
|
||||
out_782397592704791785[3] = 0;
|
||||
out_782397592704791785[4] = 0;
|
||||
out_782397592704791785[5] = 0;
|
||||
out_782397592704791785[6] = 0;
|
||||
out_782397592704791785[7] = 0;
|
||||
out_782397592704791785[8] = 0;
|
||||
out_782397592704791785[9] = 0;
|
||||
out_782397592704791785[10] = 1;
|
||||
out_782397592704791785[11] = 0;
|
||||
out_782397592704791785[12] = 0;
|
||||
out_782397592704791785[13] = 0;
|
||||
out_782397592704791785[14] = 0;
|
||||
out_782397592704791785[15] = 0;
|
||||
out_782397592704791785[16] = 0;
|
||||
out_782397592704791785[17] = 0;
|
||||
out_782397592704791785[18] = 0;
|
||||
out_782397592704791785[19] = 0;
|
||||
out_782397592704791785[20] = 1;
|
||||
out_782397592704791785[21] = 0;
|
||||
out_782397592704791785[22] = 0;
|
||||
out_782397592704791785[23] = 0;
|
||||
out_782397592704791785[24] = 0;
|
||||
out_782397592704791785[25] = 0;
|
||||
out_782397592704791785[26] = 0;
|
||||
out_782397592704791785[27] = 0;
|
||||
out_782397592704791785[28] = 0;
|
||||
out_782397592704791785[29] = 0;
|
||||
out_782397592704791785[30] = 1;
|
||||
out_782397592704791785[31] = 0;
|
||||
out_782397592704791785[32] = 0;
|
||||
out_782397592704791785[33] = 0;
|
||||
out_782397592704791785[34] = 0;
|
||||
out_782397592704791785[35] = 0;
|
||||
out_782397592704791785[36] = 0;
|
||||
out_782397592704791785[37] = 0;
|
||||
out_782397592704791785[38] = 0;
|
||||
out_782397592704791785[39] = 0;
|
||||
out_782397592704791785[40] = 1;
|
||||
out_782397592704791785[41] = 0;
|
||||
out_782397592704791785[42] = 0;
|
||||
out_782397592704791785[43] = 0;
|
||||
out_782397592704791785[44] = 0;
|
||||
out_782397592704791785[45] = dt*(stiffness_front*(-state[2] - state[3] + state[7])/(mass*state[1]) + (-stiffness_front - stiffness_rear)*state[5]/(mass*state[4]) + (-center_to_front*stiffness_front + center_to_rear*stiffness_rear)*state[6]/(mass*state[4]));
|
||||
out_782397592704791785[46] = -dt*stiffness_front*(-state[2] - state[3] + state[7])*state[0]/(mass*pow(state[1], 2));
|
||||
out_782397592704791785[47] = -dt*stiffness_front*state[0]/(mass*state[1]);
|
||||
out_782397592704791785[48] = -dt*stiffness_front*state[0]/(mass*state[1]);
|
||||
out_782397592704791785[49] = dt*((-1 - (-center_to_front*stiffness_front*state[0] + center_to_rear*stiffness_rear*state[0])/(mass*pow(state[4], 2)))*state[6] - (-stiffness_front*state[0] - stiffness_rear*state[0])*state[5]/(mass*pow(state[4], 2)));
|
||||
out_782397592704791785[50] = dt*(-stiffness_front*state[0] - stiffness_rear*state[0])/(mass*state[4]) + 1;
|
||||
out_782397592704791785[51] = dt*(-state[4] + (-center_to_front*stiffness_front*state[0] + center_to_rear*stiffness_rear*state[0])/(mass*state[4]));
|
||||
out_782397592704791785[52] = dt*stiffness_front*state[0]/(mass*state[1]);
|
||||
out_782397592704791785[53] = -9.8000000000000007*dt;
|
||||
out_782397592704791785[54] = dt*(center_to_front*stiffness_front*(-state[2] - state[3] + state[7])/(rotational_inertia*state[1]) + (-center_to_front*stiffness_front + center_to_rear*stiffness_rear)*state[5]/(rotational_inertia*state[4]) + (-pow(center_to_front, 2)*stiffness_front - pow(center_to_rear, 2)*stiffness_rear)*state[6]/(rotational_inertia*state[4]));
|
||||
out_782397592704791785[55] = -center_to_front*dt*stiffness_front*(-state[2] - state[3] + state[7])*state[0]/(rotational_inertia*pow(state[1], 2));
|
||||
out_782397592704791785[56] = -center_to_front*dt*stiffness_front*state[0]/(rotational_inertia*state[1]);
|
||||
out_782397592704791785[57] = -center_to_front*dt*stiffness_front*state[0]/(rotational_inertia*state[1]);
|
||||
out_782397592704791785[58] = dt*(-(-center_to_front*stiffness_front*state[0] + center_to_rear*stiffness_rear*state[0])*state[5]/(rotational_inertia*pow(state[4], 2)) - (-pow(center_to_front, 2)*stiffness_front*state[0] - pow(center_to_rear, 2)*stiffness_rear*state[0])*state[6]/(rotational_inertia*pow(state[4], 2)));
|
||||
out_782397592704791785[59] = dt*(-center_to_front*stiffness_front*state[0] + center_to_rear*stiffness_rear*state[0])/(rotational_inertia*state[4]);
|
||||
out_782397592704791785[60] = dt*(-pow(center_to_front, 2)*stiffness_front*state[0] - pow(center_to_rear, 2)*stiffness_rear*state[0])/(rotational_inertia*state[4]) + 1;
|
||||
out_782397592704791785[61] = center_to_front*dt*stiffness_front*state[0]/(rotational_inertia*state[1]);
|
||||
out_782397592704791785[62] = 0;
|
||||
out_782397592704791785[63] = 0;
|
||||
out_782397592704791785[64] = 0;
|
||||
out_782397592704791785[65] = 0;
|
||||
out_782397592704791785[66] = 0;
|
||||
out_782397592704791785[67] = 0;
|
||||
out_782397592704791785[68] = 0;
|
||||
out_782397592704791785[69] = 0;
|
||||
out_782397592704791785[70] = 1;
|
||||
out_782397592704791785[71] = 0;
|
||||
out_782397592704791785[72] = 0;
|
||||
out_782397592704791785[73] = 0;
|
||||
out_782397592704791785[74] = 0;
|
||||
out_782397592704791785[75] = 0;
|
||||
out_782397592704791785[76] = 0;
|
||||
out_782397592704791785[77] = 0;
|
||||
out_782397592704791785[78] = 0;
|
||||
out_782397592704791785[79] = 0;
|
||||
out_782397592704791785[80] = 1;
|
||||
}
|
||||
void h_25(double *state, double *unused, double *out_2085281169667296275) {
|
||||
out_2085281169667296275[0] = state[6];
|
||||
void h_25(double *state, double *unused, double *out_2211854499255104178) {
|
||||
out_2211854499255104178[0] = state[6];
|
||||
}
|
||||
void H_25(double *state, double *unused, double *out_1623550404401847017) {
|
||||
out_1623550404401847017[0] = 0;
|
||||
out_1623550404401847017[1] = 0;
|
||||
out_1623550404401847017[2] = 0;
|
||||
out_1623550404401847017[3] = 0;
|
||||
out_1623550404401847017[4] = 0;
|
||||
out_1623550404401847017[5] = 0;
|
||||
out_1623550404401847017[6] = 1;
|
||||
out_1623550404401847017[7] = 0;
|
||||
out_1623550404401847017[8] = 0;
|
||||
void H_25(double *state, double *unused, double *out_2676605904450648455) {
|
||||
out_2676605904450648455[0] = 0;
|
||||
out_2676605904450648455[1] = 0;
|
||||
out_2676605904450648455[2] = 0;
|
||||
out_2676605904450648455[3] = 0;
|
||||
out_2676605904450648455[4] = 0;
|
||||
out_2676605904450648455[5] = 0;
|
||||
out_2676605904450648455[6] = 1;
|
||||
out_2676605904450648455[7] = 0;
|
||||
out_2676605904450648455[8] = 0;
|
||||
}
|
||||
void h_24(double *state, double *unused, double *out_953773106991605179) {
|
||||
out_953773106991605179[0] = state[4];
|
||||
out_953773106991605179[1] = state[5];
|
||||
void h_24(double *state, double *unused, double *out_3020119525027846586) {
|
||||
out_3020119525027846586[0] = state[4];
|
||||
out_3020119525027846586[1] = state[5];
|
||||
}
|
||||
void H_24(double *state, double *unused, double *out_4462623414451625302) {
|
||||
out_4462623414451625302[0] = 0;
|
||||
out_4462623414451625302[1] = 0;
|
||||
out_4462623414451625302[2] = 0;
|
||||
out_4462623414451625302[3] = 0;
|
||||
out_4462623414451625302[4] = 1;
|
||||
out_4462623414451625302[5] = 0;
|
||||
out_4462623414451625302[6] = 0;
|
||||
out_4462623414451625302[7] = 0;
|
||||
out_4462623414451625302[8] = 0;
|
||||
out_4462623414451625302[9] = 0;
|
||||
out_4462623414451625302[10] = 0;
|
||||
out_4462623414451625302[11] = 0;
|
||||
out_4462623414451625302[12] = 0;
|
||||
out_4462623414451625302[13] = 0;
|
||||
out_4462623414451625302[14] = 1;
|
||||
out_4462623414451625302[15] = 0;
|
||||
out_4462623414451625302[16] = 0;
|
||||
out_4462623414451625302[17] = 0;
|
||||
void H_24(double *state, double *unused, double *out_3521602513234343854) {
|
||||
out_3521602513234343854[0] = 0;
|
||||
out_3521602513234343854[1] = 0;
|
||||
out_3521602513234343854[2] = 0;
|
||||
out_3521602513234343854[3] = 0;
|
||||
out_3521602513234343854[4] = 1;
|
||||
out_3521602513234343854[5] = 0;
|
||||
out_3521602513234343854[6] = 0;
|
||||
out_3521602513234343854[7] = 0;
|
||||
out_3521602513234343854[8] = 0;
|
||||
out_3521602513234343854[9] = 0;
|
||||
out_3521602513234343854[10] = 0;
|
||||
out_3521602513234343854[11] = 0;
|
||||
out_3521602513234343854[12] = 0;
|
||||
out_3521602513234343854[13] = 0;
|
||||
out_3521602513234343854[14] = 1;
|
||||
out_3521602513234343854[15] = 0;
|
||||
out_3521602513234343854[16] = 0;
|
||||
out_3521602513234343854[17] = 0;
|
||||
}
|
||||
void h_30(double *state, double *unused, double *out_4081832870303838028) {
|
||||
out_4081832870303838028[0] = state[4];
|
||||
void h_30(double *state, double *unused, double *out_1936660436970598289) {
|
||||
out_1936660436970598289[0] = state[4];
|
||||
}
|
||||
void H_30(double *state, double *unused, double *out_5293139937089769738) {
|
||||
out_5293139937089769738[0] = 0;
|
||||
out_5293139937089769738[1] = 0;
|
||||
out_5293139937089769738[2] = 0;
|
||||
out_5293139937089769738[3] = 0;
|
||||
out_5293139937089769738[4] = 1;
|
||||
out_5293139937089769738[5] = 0;
|
||||
out_5293139937089769738[6] = 0;
|
||||
out_5293139937089769738[7] = 0;
|
||||
out_5293139937089769738[8] = 0;
|
||||
void H_30(double *state, double *unused, double *out_5194938862957897082) {
|
||||
out_5194938862957897082[0] = 0;
|
||||
out_5194938862957897082[1] = 0;
|
||||
out_5194938862957897082[2] = 0;
|
||||
out_5194938862957897082[3] = 0;
|
||||
out_5194938862957897082[4] = 1;
|
||||
out_5194938862957897082[5] = 0;
|
||||
out_5194938862957897082[6] = 0;
|
||||
out_5194938862957897082[7] = 0;
|
||||
out_5194938862957897082[8] = 0;
|
||||
}
|
||||
void h_26(double *state, double *unused, double *out_4050923066687483124) {
|
||||
out_4050923066687483124[0] = state[7];
|
||||
void h_26(double *state, double *unused, double *out_667744883838099362) {
|
||||
out_667744883838099362[0] = state[7];
|
||||
}
|
||||
void H_26(double *state, double *unused, double *out_966696340291535113) {
|
||||
out_966696340291535113[0] = 0;
|
||||
out_966696340291535113[1] = 0;
|
||||
out_966696340291535113[2] = 0;
|
||||
out_966696340291535113[3] = 0;
|
||||
out_966696340291535113[4] = 0;
|
||||
out_966696340291535113[5] = 0;
|
||||
out_966696340291535113[6] = 0;
|
||||
out_966696340291535113[7] = 1;
|
||||
out_966696340291535113[8] = 0;
|
||||
void H_26(double *state, double *unused, double *out_1064897414423407769) {
|
||||
out_1064897414423407769[0] = 0;
|
||||
out_1064897414423407769[1] = 0;
|
||||
out_1064897414423407769[2] = 0;
|
||||
out_1064897414423407769[3] = 0;
|
||||
out_1064897414423407769[4] = 0;
|
||||
out_1064897414423407769[5] = 0;
|
||||
out_1064897414423407769[6] = 0;
|
||||
out_1064897414423407769[7] = 1;
|
||||
out_1064897414423407769[8] = 0;
|
||||
}
|
||||
void h_27(double *state, double *unused, double *out_7086954437328141920) {
|
||||
out_7086954437328141920[0] = state[3];
|
||||
void h_27(double *state, double *unused, double *out_7553721735141134741) {
|
||||
out_7553721735141134741[0] = state[3];
|
||||
}
|
||||
void H_27(double *state, double *unused, double *out_3927652663345511998) {
|
||||
out_3927652663345511998[0] = 0;
|
||||
out_3927652663345511998[1] = 0;
|
||||
out_3927652663345511998[2] = 0;
|
||||
out_3927652663345511998[3] = 1;
|
||||
out_3927652663345511998[4] = 0;
|
||||
out_3927652663345511998[5] = 0;
|
||||
out_3927652663345511998[6] = 0;
|
||||
out_3927652663345511998[7] = 0;
|
||||
out_3927652663345511998[8] = 0;
|
||||
void H_27(double *state, double *unused, double *out_7418532934141840299) {
|
||||
out_7418532934141840299[0] = 0;
|
||||
out_7418532934141840299[1] = 0;
|
||||
out_7418532934141840299[2] = 0;
|
||||
out_7418532934141840299[3] = 1;
|
||||
out_7418532934141840299[4] = 0;
|
||||
out_7418532934141840299[5] = 0;
|
||||
out_7418532934141840299[6] = 0;
|
||||
out_7418532934141840299[7] = 0;
|
||||
out_7418532934141840299[8] = 0;
|
||||
}
|
||||
void h_29(double *state, double *unused, double *out_6929767768977012775) {
|
||||
out_6929767768977012775[0] = state[1];
|
||||
void h_29(double *state, double *unused, double *out_9074940202310252514) {
|
||||
out_9074940202310252514[0] = state[1];
|
||||
}
|
||||
void H_29(double *state, double *unused, double *out_1242658007230694903) {
|
||||
out_1242658007230694903[0] = 0;
|
||||
out_1242658007230694903[1] = 1;
|
||||
out_1242658007230694903[2] = 0;
|
||||
out_1242658007230694903[3] = 0;
|
||||
out_1242658007230694903[4] = 0;
|
||||
out_1242658007230694903[5] = 0;
|
||||
out_1242658007230694903[6] = 0;
|
||||
out_1242658007230694903[7] = 0;
|
||||
out_1242658007230694903[8] = 0;
|
||||
void H_29(double *state, double *unused, double *out_5705170207272289266) {
|
||||
out_5705170207272289266[0] = 0;
|
||||
out_5705170207272289266[1] = 1;
|
||||
out_5705170207272289266[2] = 0;
|
||||
out_5705170207272289266[3] = 0;
|
||||
out_5705170207272289266[4] = 0;
|
||||
out_5705170207272289266[5] = 0;
|
||||
out_5705170207272289266[6] = 0;
|
||||
out_5705170207272289266[7] = 0;
|
||||
out_5705170207272289266[8] = 0;
|
||||
}
|
||||
void h_28(double *state, double *unused, double *out_6358116368720564051) {
|
||||
out_6358116368720564051[0] = state[0];
|
||||
void h_28(double *state, double *unused, double *out_2552048467480289096) {
|
||||
out_2552048467480289096[0] = state[0];
|
||||
}
|
||||
void H_28(double *state, double *unused, double *out_720972264334631348) {
|
||||
out_720972264334631348[0] = 1;
|
||||
out_720972264334631348[1] = 0;
|
||||
out_720972264334631348[2] = 0;
|
||||
out_720972264334631348[3] = 0;
|
||||
out_720972264334631348[4] = 0;
|
||||
out_720972264334631348[5] = 0;
|
||||
out_720972264334631348[6] = 0;
|
||||
out_720972264334631348[7] = 0;
|
||||
out_720972264334631348[8] = 0;
|
||||
void H_28(double *state, double *unused, double *out_622771190202758692) {
|
||||
out_622771190202758692[0] = 1;
|
||||
out_622771190202758692[1] = 0;
|
||||
out_622771190202758692[2] = 0;
|
||||
out_622771190202758692[3] = 0;
|
||||
out_622771190202758692[4] = 0;
|
||||
out_622771190202758692[5] = 0;
|
||||
out_622771190202758692[6] = 0;
|
||||
out_622771190202758692[7] = 0;
|
||||
out_622771190202758692[8] = 0;
|
||||
}
|
||||
void h_31(double *state, double *unused, double *out_1552168358586726075) {
|
||||
out_1552168358586726075[0] = state[8];
|
||||
void h_31(double *state, double *unused, double *out_5159580489610589139) {
|
||||
out_5159580489610589139[0] = state[8];
|
||||
}
|
||||
void H_31(double *state, double *unused, double *out_1592904442524886589) {
|
||||
out_1592904442524886589[0] = 0;
|
||||
out_1592904442524886589[1] = 0;
|
||||
out_1592904442524886589[2] = 0;
|
||||
out_1592904442524886589[3] = 0;
|
||||
out_1592904442524886589[4] = 0;
|
||||
out_1592904442524886589[5] = 0;
|
||||
out_1592904442524886589[6] = 0;
|
||||
out_1592904442524886589[7] = 0;
|
||||
out_1592904442524886589[8] = 1;
|
||||
void H_31(double *state, double *unused, double *out_2707251866327608883) {
|
||||
out_2707251866327608883[0] = 0;
|
||||
out_2707251866327608883[1] = 0;
|
||||
out_2707251866327608883[2] = 0;
|
||||
out_2707251866327608883[3] = 0;
|
||||
out_2707251866327608883[4] = 0;
|
||||
out_2707251866327608883[5] = 0;
|
||||
out_2707251866327608883[6] = 0;
|
||||
out_2707251866327608883[7] = 0;
|
||||
out_2707251866327608883[8] = 1;
|
||||
}
|
||||
#include <eigen3/Eigen/Dense>
|
||||
#include <iostream>
|
||||
@@ -518,68 +518,68 @@ void car_update_28(double *in_x, double *in_P, double *in_z, double *in_R, doubl
|
||||
void car_update_31(double *in_x, double *in_P, double *in_z, double *in_R, double *in_ea) {
|
||||
update<1, 3, 0>(in_x, in_P, h_31, H_31, NULL, in_z, in_R, in_ea, MAHA_THRESH_31);
|
||||
}
|
||||
void car_err_fun(double *nom_x, double *delta_x, double *out_4405245383551283102) {
|
||||
err_fun(nom_x, delta_x, out_4405245383551283102);
|
||||
void car_err_fun(double *nom_x, double *delta_x, double *out_7683831691601887608) {
|
||||
err_fun(nom_x, delta_x, out_7683831691601887608);
|
||||
}
|
||||
void car_inv_err_fun(double *nom_x, double *true_x, double *out_6814225357492049644) {
|
||||
inv_err_fun(nom_x, true_x, out_6814225357492049644);
|
||||
void car_inv_err_fun(double *nom_x, double *true_x, double *out_2772021370076241199) {
|
||||
inv_err_fun(nom_x, true_x, out_2772021370076241199);
|
||||
}
|
||||
void car_H_mod_fun(double *state, double *out_8873206987470723373) {
|
||||
H_mod_fun(state, out_8873206987470723373);
|
||||
void car_H_mod_fun(double *state, double *out_2876076255899625510) {
|
||||
H_mod_fun(state, out_2876076255899625510);
|
||||
}
|
||||
void car_f_fun(double *state, double dt, double *out_3688990143768374912) {
|
||||
f_fun(state, dt, out_3688990143768374912);
|
||||
void car_f_fun(double *state, double dt, double *out_711338878401685436) {
|
||||
f_fun(state, dt, out_711338878401685436);
|
||||
}
|
||||
void car_F_fun(double *state, double dt, double *out_6095431430690537089) {
|
||||
F_fun(state, dt, out_6095431430690537089);
|
||||
void car_F_fun(double *state, double dt, double *out_782397592704791785) {
|
||||
F_fun(state, dt, out_782397592704791785);
|
||||
}
|
||||
void car_h_25(double *state, double *unused, double *out_2085281169667296275) {
|
||||
h_25(state, unused, out_2085281169667296275);
|
||||
void car_h_25(double *state, double *unused, double *out_2211854499255104178) {
|
||||
h_25(state, unused, out_2211854499255104178);
|
||||
}
|
||||
void car_H_25(double *state, double *unused, double *out_1623550404401847017) {
|
||||
H_25(state, unused, out_1623550404401847017);
|
||||
void car_H_25(double *state, double *unused, double *out_2676605904450648455) {
|
||||
H_25(state, unused, out_2676605904450648455);
|
||||
}
|
||||
void car_h_24(double *state, double *unused, double *out_953773106991605179) {
|
||||
h_24(state, unused, out_953773106991605179);
|
||||
void car_h_24(double *state, double *unused, double *out_3020119525027846586) {
|
||||
h_24(state, unused, out_3020119525027846586);
|
||||
}
|
||||
void car_H_24(double *state, double *unused, double *out_4462623414451625302) {
|
||||
H_24(state, unused, out_4462623414451625302);
|
||||
void car_H_24(double *state, double *unused, double *out_3521602513234343854) {
|
||||
H_24(state, unused, out_3521602513234343854);
|
||||
}
|
||||
void car_h_30(double *state, double *unused, double *out_4081832870303838028) {
|
||||
h_30(state, unused, out_4081832870303838028);
|
||||
void car_h_30(double *state, double *unused, double *out_1936660436970598289) {
|
||||
h_30(state, unused, out_1936660436970598289);
|
||||
}
|
||||
void car_H_30(double *state, double *unused, double *out_5293139937089769738) {
|
||||
H_30(state, unused, out_5293139937089769738);
|
||||
void car_H_30(double *state, double *unused, double *out_5194938862957897082) {
|
||||
H_30(state, unused, out_5194938862957897082);
|
||||
}
|
||||
void car_h_26(double *state, double *unused, double *out_4050923066687483124) {
|
||||
h_26(state, unused, out_4050923066687483124);
|
||||
void car_h_26(double *state, double *unused, double *out_667744883838099362) {
|
||||
h_26(state, unused, out_667744883838099362);
|
||||
}
|
||||
void car_H_26(double *state, double *unused, double *out_966696340291535113) {
|
||||
H_26(state, unused, out_966696340291535113);
|
||||
void car_H_26(double *state, double *unused, double *out_1064897414423407769) {
|
||||
H_26(state, unused, out_1064897414423407769);
|
||||
}
|
||||
void car_h_27(double *state, double *unused, double *out_7086954437328141920) {
|
||||
h_27(state, unused, out_7086954437328141920);
|
||||
void car_h_27(double *state, double *unused, double *out_7553721735141134741) {
|
||||
h_27(state, unused, out_7553721735141134741);
|
||||
}
|
||||
void car_H_27(double *state, double *unused, double *out_3927652663345511998) {
|
||||
H_27(state, unused, out_3927652663345511998);
|
||||
void car_H_27(double *state, double *unused, double *out_7418532934141840299) {
|
||||
H_27(state, unused, out_7418532934141840299);
|
||||
}
|
||||
void car_h_29(double *state, double *unused, double *out_6929767768977012775) {
|
||||
h_29(state, unused, out_6929767768977012775);
|
||||
void car_h_29(double *state, double *unused, double *out_9074940202310252514) {
|
||||
h_29(state, unused, out_9074940202310252514);
|
||||
}
|
||||
void car_H_29(double *state, double *unused, double *out_1242658007230694903) {
|
||||
H_29(state, unused, out_1242658007230694903);
|
||||
void car_H_29(double *state, double *unused, double *out_5705170207272289266) {
|
||||
H_29(state, unused, out_5705170207272289266);
|
||||
}
|
||||
void car_h_28(double *state, double *unused, double *out_6358116368720564051) {
|
||||
h_28(state, unused, out_6358116368720564051);
|
||||
void car_h_28(double *state, double *unused, double *out_2552048467480289096) {
|
||||
h_28(state, unused, out_2552048467480289096);
|
||||
}
|
||||
void car_H_28(double *state, double *unused, double *out_720972264334631348) {
|
||||
H_28(state, unused, out_720972264334631348);
|
||||
void car_H_28(double *state, double *unused, double *out_622771190202758692) {
|
||||
H_28(state, unused, out_622771190202758692);
|
||||
}
|
||||
void car_h_31(double *state, double *unused, double *out_1552168358586726075) {
|
||||
h_31(state, unused, out_1552168358586726075);
|
||||
void car_h_31(double *state, double *unused, double *out_5159580489610589139) {
|
||||
h_31(state, unused, out_5159580489610589139);
|
||||
}
|
||||
void car_H_31(double *state, double *unused, double *out_1592904442524886589) {
|
||||
H_31(state, unused, out_1592904442524886589);
|
||||
void car_H_31(double *state, double *unused, double *out_2707251866327608883) {
|
||||
H_31(state, unused, out_2707251866327608883);
|
||||
}
|
||||
void car_predict(double *in_x, double *in_P, double *in_Q, double dt) {
|
||||
predict(in_x, in_P, in_Q, dt);
|
||||
|
||||
@@ -9,27 +9,27 @@ void car_update_27(double *in_x, double *in_P, double *in_z, double *in_R, doubl
|
||||
void car_update_29(double *in_x, double *in_P, double *in_z, double *in_R, double *in_ea);
|
||||
void car_update_28(double *in_x, double *in_P, double *in_z, double *in_R, double *in_ea);
|
||||
void car_update_31(double *in_x, double *in_P, double *in_z, double *in_R, double *in_ea);
|
||||
void car_err_fun(double *nom_x, double *delta_x, double *out_4405245383551283102);
|
||||
void car_inv_err_fun(double *nom_x, double *true_x, double *out_6814225357492049644);
|
||||
void car_H_mod_fun(double *state, double *out_8873206987470723373);
|
||||
void car_f_fun(double *state, double dt, double *out_3688990143768374912);
|
||||
void car_F_fun(double *state, double dt, double *out_6095431430690537089);
|
||||
void car_h_25(double *state, double *unused, double *out_2085281169667296275);
|
||||
void car_H_25(double *state, double *unused, double *out_1623550404401847017);
|
||||
void car_h_24(double *state, double *unused, double *out_953773106991605179);
|
||||
void car_H_24(double *state, double *unused, double *out_4462623414451625302);
|
||||
void car_h_30(double *state, double *unused, double *out_4081832870303838028);
|
||||
void car_H_30(double *state, double *unused, double *out_5293139937089769738);
|
||||
void car_h_26(double *state, double *unused, double *out_4050923066687483124);
|
||||
void car_H_26(double *state, double *unused, double *out_966696340291535113);
|
||||
void car_h_27(double *state, double *unused, double *out_7086954437328141920);
|
||||
void car_H_27(double *state, double *unused, double *out_3927652663345511998);
|
||||
void car_h_29(double *state, double *unused, double *out_6929767768977012775);
|
||||
void car_H_29(double *state, double *unused, double *out_1242658007230694903);
|
||||
void car_h_28(double *state, double *unused, double *out_6358116368720564051);
|
||||
void car_H_28(double *state, double *unused, double *out_720972264334631348);
|
||||
void car_h_31(double *state, double *unused, double *out_1552168358586726075);
|
||||
void car_H_31(double *state, double *unused, double *out_1592904442524886589);
|
||||
void car_err_fun(double *nom_x, double *delta_x, double *out_7683831691601887608);
|
||||
void car_inv_err_fun(double *nom_x, double *true_x, double *out_2772021370076241199);
|
||||
void car_H_mod_fun(double *state, double *out_2876076255899625510);
|
||||
void car_f_fun(double *state, double dt, double *out_711338878401685436);
|
||||
void car_F_fun(double *state, double dt, double *out_782397592704791785);
|
||||
void car_h_25(double *state, double *unused, double *out_2211854499255104178);
|
||||
void car_H_25(double *state, double *unused, double *out_2676605904450648455);
|
||||
void car_h_24(double *state, double *unused, double *out_3020119525027846586);
|
||||
void car_H_24(double *state, double *unused, double *out_3521602513234343854);
|
||||
void car_h_30(double *state, double *unused, double *out_1936660436970598289);
|
||||
void car_H_30(double *state, double *unused, double *out_5194938862957897082);
|
||||
void car_h_26(double *state, double *unused, double *out_667744883838099362);
|
||||
void car_H_26(double *state, double *unused, double *out_1064897414423407769);
|
||||
void car_h_27(double *state, double *unused, double *out_7553721735141134741);
|
||||
void car_H_27(double *state, double *unused, double *out_7418532934141840299);
|
||||
void car_h_29(double *state, double *unused, double *out_9074940202310252514);
|
||||
void car_H_29(double *state, double *unused, double *out_5705170207272289266);
|
||||
void car_h_28(double *state, double *unused, double *out_2552048467480289096);
|
||||
void car_H_28(double *state, double *unused, double *out_622771190202758692);
|
||||
void car_h_31(double *state, double *unused, double *out_5159580489610589139);
|
||||
void car_H_31(double *state, double *unused, double *out_2707251866327608883);
|
||||
void car_predict(double *in_x, double *in_P, double *in_Q, double dt);
|
||||
void car_set_mass(double x);
|
||||
void car_set_rotational_inertia(double x);
|
||||
|
||||
Binary file not shown.
Binary file not shown.
File diff suppressed because it is too large
Load Diff
@@ -10,29 +10,29 @@ void live_update_32(double *in_x, double *in_P, double *in_z, double *in_R, doub
|
||||
void live_update_13(double *in_x, double *in_P, double *in_z, double *in_R, double *in_ea);
|
||||
void live_update_14(double *in_x, double *in_P, double *in_z, double *in_R, double *in_ea);
|
||||
void live_update_33(double *in_x, double *in_P, double *in_z, double *in_R, double *in_ea);
|
||||
void live_H(double *in_vec, double *out_8605358087906380768);
|
||||
void live_err_fun(double *nom_x, double *delta_x, double *out_7536170868467214378);
|
||||
void live_inv_err_fun(double *nom_x, double *true_x, double *out_2595613781234485125);
|
||||
void live_H_mod_fun(double *state, double *out_8460251824602801486);
|
||||
void live_f_fun(double *state, double dt, double *out_6356829281411656445);
|
||||
void live_F_fun(double *state, double dt, double *out_8639720302372924628);
|
||||
void live_h_4(double *state, double *unused, double *out_5024870629752735468);
|
||||
void live_H_4(double *state, double *unused, double *out_1752310950812596014);
|
||||
void live_h_9(double *state, double *unused, double *out_2675503251996688187);
|
||||
void live_H_9(double *state, double *unused, double *out_1511121304183005369);
|
||||
void live_h_10(double *state, double *unused, double *out_7370746392053236487);
|
||||
void live_H_10(double *state, double *unused, double *out_7385579306469280005);
|
||||
void live_h_12(double *state, double *unused, double *out_3987271481309322321);
|
||||
void live_H_12(double *state, double *unused, double *out_1131211925765002347);
|
||||
void live_h_35(double *state, double *unused, double *out_387267383515705374);
|
||||
void live_H_35(double *state, double *unused, double *out_1614351106560011362);
|
||||
void live_h_32(double *state, double *unused, double *out_8661748451588242164);
|
||||
void live_H_32(double *state, double *unused, double *out_7415655478767623920);
|
||||
void live_h_13(double *state, double *unused, double *out_4888723774468744577);
|
||||
void live_H_13(double *state, double *unused, double *out_1203933476290211087);
|
||||
void live_h_14(double *state, double *unused, double *out_2675503251996688187);
|
||||
void live_H_14(double *state, double *unused, double *out_1511121304183005369);
|
||||
void live_h_33(double *state, double *unused, double *out_8061952833475180318);
|
||||
void live_H_33(double *state, double *unused, double *out_4764908111198868966);
|
||||
void live_H(double *in_vec, double *out_3996265270042170641);
|
||||
void live_err_fun(double *nom_x, double *delta_x, double *out_3461674683723829337);
|
||||
void live_inv_err_fun(double *nom_x, double *true_x, double *out_7385553611252329077);
|
||||
void live_H_mod_fun(double *state, double *out_8192941733470122092);
|
||||
void live_f_fun(double *state, double dt, double *out_3557410023905793232);
|
||||
void live_F_fun(double *state, double dt, double *out_8557837785947457076);
|
||||
void live_h_4(double *state, double *unused, double *out_1179371322125232753);
|
||||
void live_H_4(double *state, double *unused, double *out_7315580968579262055);
|
||||
void live_h_9(double *state, double *unused, double *out_7267185231670305086);
|
||||
void live_H_9(double *state, double *unused, double *out_7556770615208852700);
|
||||
void live_h_10(double *state, double *unused, double *out_5095924145481726408);
|
||||
void live_H_10(double *state, double *unused, double *out_5645866099687886483);
|
||||
void live_h_12(double *state, double *unused, double *out_2512392799571043135);
|
||||
void live_H_12(double *state, double *unused, double *out_6111706697098327766);
|
||||
void live_h_35(double *state, double *unused, double *out_7549588061413473025);
|
||||
void live_H_35(double *state, double *unused, double *out_3366143664773314057);
|
||||
void live_h_32(double *state, double *unused, double *out_1075397825167574537);
|
||||
void live_H_32(double *state, double *unused, double *out_5548874522593978030);
|
||||
void live_h_13(double *state, double *unused, double *out_5119914902696682383);
|
||||
void live_H_13(double *state, double *unused, double *out_8634591391102879904);
|
||||
void live_h_14(double *state, double *unused, double *out_7267185231670305086);
|
||||
void live_H_14(double *state, double *unused, double *out_7556770615208852700);
|
||||
void live_h_33(double *state, double *unused, double *out_834113502876921908);
|
||||
void live_H_33(double *state, double *unused, double *out_215586660134456453);
|
||||
void live_predict(double *in_x, double *in_P, double *in_Q, double dt);
|
||||
}
|
||||
@@ -5,8 +5,7 @@ import json
|
||||
import numpy as np
|
||||
|
||||
import cereal.messaging as messaging
|
||||
from cereal import car
|
||||
from cereal import log
|
||||
from cereal import car, log
|
||||
from openpilot.common.params import Params
|
||||
from openpilot.common.realtime import config_realtime_process, DT_MDL
|
||||
from openpilot.common.numpy_fast import clip
|
||||
@@ -129,8 +128,7 @@ def main():
|
||||
params_reader = Params()
|
||||
# wait for stats about the car to come in from controls
|
||||
cloudlog.info("paramsd is waiting for CarParams")
|
||||
with car.CarParams.from_bytes(params_reader.get("CarParams", block=True)) as msg:
|
||||
CP = msg
|
||||
CP = messaging.log_from_bytes(params_reader.get("CarParams", block=True), car.CarParams)
|
||||
cloudlog.info("paramsd got CarParams")
|
||||
|
||||
min_sr, max_sr = 0.5 * CP.steerRatio, 2.0 * CP.steerRatio
|
||||
|
||||
@@ -36,8 +36,8 @@ ALLOWED_CARS = ['toyota', 'hyundai']
|
||||
|
||||
|
||||
def slope2rot(slope):
|
||||
sin = np.sqrt(slope**2 / (slope**2 + 1))
|
||||
cos = np.sqrt(1 / (slope**2 + 1))
|
||||
sin = np.sqrt(slope ** 2 / (slope ** 2 + 1))
|
||||
cos = np.sqrt(1 / (slope ** 2 + 1))
|
||||
return np.array([[cos, -sin], [sin, cos]])
|
||||
|
||||
|
||||
@@ -50,9 +50,10 @@ class TorqueBuckets(PointBuckets):
|
||||
|
||||
|
||||
class TorqueEstimator(ParameterEstimator):
|
||||
def __init__(self, CP, decimated=False):
|
||||
def __init__(self, CP, decimated=False, track_all_points=False):
|
||||
self.hist_len = int(HISTORY / DT_MDL)
|
||||
self.lag = CP.steerActuatorDelay + .2 # from controlsd
|
||||
self.lag = CP.steerActuatorDelay + .2 # from controlsd
|
||||
self.track_all_points = track_all_points # for offline analysis, without max lateral accel or max steer torque filters
|
||||
if decimated:
|
||||
self.min_bucket_points = MIN_BUCKET_POINTS / 10
|
||||
self.min_points_total = MIN_POINTS_TOTAL_QLOG
|
||||
@@ -119,7 +120,8 @@ class TorqueEstimator(ParameterEstimator):
|
||||
for param in initial_params:
|
||||
self.filtered_params[param] = FirstOrderFilter(initial_params[param], self.decay, DT_MDL)
|
||||
|
||||
def get_restore_key(self, CP, version):
|
||||
@staticmethod
|
||||
def get_restore_key(CP, version):
|
||||
a, b = None, None
|
||||
if CP.lateralTuning.which() == 'torque':
|
||||
a = CP.lateralTuning.torque.friction
|
||||
@@ -135,6 +137,7 @@ class TorqueEstimator(ParameterEstimator):
|
||||
min_points_total=self.min_points_total,
|
||||
points_per_bucket=POINTS_PER_BUCKET,
|
||||
rowsize=3)
|
||||
self.all_torque_points = []
|
||||
|
||||
def estimate_params(self):
|
||||
points = self.filtered_points.get_points(self.fit_points)
|
||||
@@ -159,25 +162,32 @@ class TorqueEstimator(ParameterEstimator):
|
||||
def handle_log(self, t, which, msg):
|
||||
if which == "carControl":
|
||||
self.raw_points["carControl_t"].append(t + self.lag)
|
||||
self.raw_points["active"].append(msg.latActive)
|
||||
self.raw_points["lat_active"].append(msg.latActive)
|
||||
elif which == "carOutput":
|
||||
self.raw_points["carOutput_t"].append(t + self.lag)
|
||||
self.raw_points["steer_torque"].append(-msg.actuatorsOutput.steer)
|
||||
elif which == "carState":
|
||||
self.raw_points["carState_t"].append(t + self.lag)
|
||||
# TODO: check if high aEgo affects resulting lateral accel
|
||||
self.raw_points["vego"].append(msg.vEgo)
|
||||
self.raw_points["steer_override"].append(msg.steeringPressed)
|
||||
|
||||
# calculate lateral accel from past steering torque
|
||||
elif which == "liveLocationKalman":
|
||||
if len(self.raw_points['steer_torque']) == self.hist_len:
|
||||
yaw_rate = msg.angularVelocityCalibrated.value[2]
|
||||
roll = msg.orientationNED.value[0]
|
||||
active = np.interp(np.arange(t - MIN_ENGAGE_BUFFER, t, DT_MDL), self.raw_points['carControl_t'], self.raw_points['active']).astype(bool)
|
||||
lat_active = np.interp(np.arange(t - MIN_ENGAGE_BUFFER, t, DT_MDL), self.raw_points['carControl_t'], self.raw_points['lat_active']).astype(bool)
|
||||
steer_override = np.interp(np.arange(t - MIN_ENGAGE_BUFFER, t, DT_MDL), self.raw_points['carState_t'], self.raw_points['steer_override']).astype(bool)
|
||||
vego = np.interp(t, self.raw_points['carState_t'], self.raw_points['vego'])
|
||||
steer = np.interp(t, self.raw_points['carOutput_t'], self.raw_points['steer_torque'])
|
||||
lateral_acc = (vego * yaw_rate) - (np.sin(roll) * ACCELERATION_DUE_TO_GRAVITY)
|
||||
if all(active) and (not any(steer_override)) and (vego > MIN_VEL) and (abs(steer) > STEER_MIN_THRESHOLD) and (abs(lateral_acc) <= LAT_ACC_THRESHOLD):
|
||||
self.filtered_points.add_point(float(steer), float(lateral_acc))
|
||||
steer = np.interp(t, self.raw_points['carOutput_t'], self.raw_points['steer_torque']).item()
|
||||
lateral_acc = (vego * yaw_rate) - (np.sin(roll) * ACCELERATION_DUE_TO_GRAVITY).item()
|
||||
if all(lat_active) and not any(steer_override) and (vego > MIN_VEL) and (abs(steer) > STEER_MIN_THRESHOLD):
|
||||
if abs(lateral_acc) <= LAT_ACC_THRESHOLD:
|
||||
self.filtered_points.add_point(steer, lateral_acc)
|
||||
|
||||
if self.track_all_points:
|
||||
self.all_torque_points.append([steer, lateral_acc])
|
||||
|
||||
def get_msg(self, valid=True, with_points=False):
|
||||
msg = messaging.new_message('liveTorqueParameters')
|
||||
@@ -223,8 +233,7 @@ def main(demo=False):
|
||||
sm = messaging.SubMaster(['carControl', 'carOutput', 'carState', 'liveLocationKalman'], poll='liveLocationKalman')
|
||||
|
||||
params = Params()
|
||||
with car.CarParams.from_bytes(params.get("CarParams", block=True)) as CP:
|
||||
estimator = TorqueEstimator(CP)
|
||||
estimator = TorqueEstimator(messaging.log_from_bytes(params.get("CarParams", block=True), car.CarParams))
|
||||
|
||||
while True:
|
||||
sm.update()
|
||||
@@ -243,8 +252,10 @@ def main(demo=False):
|
||||
msg = estimator.get_msg(valid=sm.all_checks(), with_points=True)
|
||||
params.put_nonblocking("LiveTorqueParameters", msg.to_bytes())
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
import argparse
|
||||
|
||||
parser = argparse.ArgumentParser(description='Process the --demo argument.')
|
||||
parser.add_argument('--demo', action='store_true', help='A boolean for demo mode.')
|
||||
args = parser.parse_args()
|
||||
|
||||
@@ -172,8 +172,8 @@ def main(demo=False):
|
||||
if demo:
|
||||
CP = get_demo_car_params()
|
||||
else:
|
||||
with car.CarParams.from_bytes(params.get("CarParams", block=True)) as msg:
|
||||
CP = msg
|
||||
CP = messaging.log_from_bytes(params.get("CarParams", block=True), car.CarParams)
|
||||
|
||||
cloudlog.info("modeld got CarParams: %s", CP.carName)
|
||||
|
||||
# TODO this needs more thought, use .2s extra for now to estimate other delays
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
Binary file not shown.
@@ -1 +1 @@
|
||||
8737e368e17f859291164286feb4246e00c0b4a5
|
||||
f6ff3601bd0496e78d8bc3b019d58bb7739f096b
|
||||
Binary file not shown.
Binary file not shown.
BIN
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Executable
BIN
Binary file not shown.
@@ -44,7 +44,8 @@ private:
|
||||
PersonalityButton *personality_btn;
|
||||
KnightScanner *knight_scanner;
|
||||
RainbowPath *rainbow_path;
|
||||
ChevronExt * chevron_ext;
|
||||
ChevronExt *chevron_ext;
|
||||
TeTooIndicator *tt_indicator;
|
||||
#endif
|
||||
|
||||
protected:
|
||||
|
||||
Executable
BIN
Binary file not shown.
Executable
BIN
Binary file not shown.
Executable
BIN
Binary file not shown.
+13
-1
@@ -12,6 +12,7 @@ from openpilot.common.retry import retry
|
||||
from openpilot.common.swaglog import cloudlog
|
||||
|
||||
from openpilot.system import micd
|
||||
from openpilot.common.params import Params
|
||||
|
||||
SAMPLE_RATE = 48000
|
||||
SAMPLE_BUFFER = 4096 # (approx 100ms)
|
||||
@@ -62,6 +63,10 @@ class Soundd:
|
||||
|
||||
self.spl_filter_weighted = FirstOrderFilter(0, 2.5, FILTER_DT, initialized=False)
|
||||
|
||||
params = Params()
|
||||
self._dp_device_audible_alert_mode = int(params.get("dp_device_audible_alert_mode"))
|
||||
|
||||
|
||||
def load_sounds(self):
|
||||
self.loaded_sounds: dict[int, np.ndarray] = {}
|
||||
|
||||
@@ -82,6 +87,13 @@ class Soundd:
|
||||
|
||||
ret = np.zeros(frames, dtype=np.float32)
|
||||
|
||||
# dp - set vol to 0 instead
|
||||
mute = False
|
||||
if self._dp_device_audible_alert_mode == 2:
|
||||
mute = True
|
||||
elif self._dp_device_audible_alert_mode == 1 and self.current_alert in [AudibleAlert.engage, AudibleAlert.disengage]:
|
||||
mute = True
|
||||
|
||||
if self.current_alert != AudibleAlert.none:
|
||||
num_loops = sound_list[self.current_alert][1]
|
||||
sound_data = self.loaded_sounds[self.current_alert]
|
||||
@@ -97,7 +109,7 @@ class Soundd:
|
||||
written_frames += frames_to_write
|
||||
self.current_sound_frame += frames_to_write
|
||||
|
||||
return ret * self.current_volume
|
||||
return ret * (self.current_volume if not mute else 0)
|
||||
|
||||
def callback(self, data_out: np.ndarray, frames: int, time, status) -> None:
|
||||
if status:
|
||||
|
||||
Executable
BIN
Binary file not shown.
@@ -116,7 +116,7 @@ CASES = {
|
||||
|
||||
TEST_DIR = pathlib.Path(__file__).parent
|
||||
|
||||
TEST_OUTPUT_DIR = TEST_DIR / "report"
|
||||
TEST_OUTPUT_DIR = TEST_DIR / "report_1"
|
||||
SCREENSHOTS_DIR = TEST_OUTPUT_DIR / "screenshots"
|
||||
|
||||
|
||||
|
||||
Executable
BIN
Binary file not shown.
@@ -215,6 +215,14 @@ Reboot required.</source>
|
||||
<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>
|
||||
@@ -371,6 +379,34 @@ This does not work in China.
|
||||
Internet required.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Tē-Tôo (Map)</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Display Road Name</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Display Speed Camera Warning (Taiwan)</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>When enabled, openpilot will display speed camera warning using offline database.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Speed Camera Warning Threshold</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Only show the warning when the speed camera limit is within threshold (+/-) % of the vehicle speed or cruise speed or road limit speed.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source> %</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Toyota / Lexus</source>
|
||||
<translation type="unfinished"></translation>
|
||||
@@ -486,6 +522,50 @@ Reboot required.</source>
|
||||
This will also reboot your device.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Enable Auto Shutdown</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>When enabled, openpilot will shutdown the device automatically.
|
||||
Reboot required.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Auto Shutdown In</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Adjust your shutdown waiting period.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source> mins</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>When enabled, openpilot will display live road name using OpenStreetMap data.
|
||||
DO NOT USE IT WITH COMMA PRIME SUBSCRIPTION.
|
||||
Internet required.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Warning</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Off</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Audible Alert Mode</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Warning - Only emits sound when there is a warning.
|
||||
Off - Does not emit any sound at all.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>DeclinePage</name>
|
||||
|
||||
@@ -215,6 +215,14 @@ Reboot required.</source>
|
||||
<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>
|
||||
@@ -371,6 +379,34 @@ This does not work in China.
|
||||
Internet required.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Tē-Tôo (Map)</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Display Road Name</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Display Speed Camera Warning (Taiwan)</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>When enabled, openpilot will display speed camera warning using offline database.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Speed Camera Warning Threshold</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Only show the warning when the speed camera limit is within threshold (+/-) % of the vehicle speed or cruise speed or road limit speed.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source> %</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Toyota / Lexus</source>
|
||||
<translation type="unfinished"></translation>
|
||||
@@ -486,6 +522,50 @@ Reboot required.</source>
|
||||
This will also reboot your device.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Enable Auto Shutdown</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>When enabled, openpilot will shutdown the device automatically.
|
||||
Reboot required.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Auto Shutdown In</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Adjust your shutdown waiting period.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source> mins</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>When enabled, openpilot will display live road name using OpenStreetMap data.
|
||||
DO NOT USE IT WITH COMMA PRIME SUBSCRIPTION.
|
||||
Internet required.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Warning</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Off</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Audible Alert Mode</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Warning - Only emits sound when there is a warning.
|
||||
Off - Does not emit any sound at all.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>DeclinePage</name>
|
||||
|
||||
@@ -215,6 +215,14 @@ Reboot required.</source>
|
||||
<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>
|
||||
@@ -371,6 +379,34 @@ This does not work in China.
|
||||
Internet required.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Tē-Tôo (Map)</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Display Road Name</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Display Speed Camera Warning (Taiwan)</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>When enabled, openpilot will display speed camera warning using offline database.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Speed Camera Warning Threshold</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Only show the warning when the speed camera limit is within threshold (+/-) % of the vehicle speed or cruise speed or road limit speed.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source> %</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Toyota / Lexus</source>
|
||||
<translation type="unfinished"></translation>
|
||||
@@ -486,6 +522,50 @@ Reboot required.</source>
|
||||
This will also reboot your device.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Enable Auto Shutdown</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>When enabled, openpilot will shutdown the device automatically.
|
||||
Reboot required.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Auto Shutdown In</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Adjust your shutdown waiting period.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source> mins</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>When enabled, openpilot will display live road name using OpenStreetMap data.
|
||||
DO NOT USE IT WITH COMMA PRIME SUBSCRIPTION.
|
||||
Internet required.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Warning</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Off</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Audible Alert Mode</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Warning - Only emits sound when there is a warning.
|
||||
Off - Does not emit any sound at all.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>DeclinePage</name>
|
||||
|
||||
@@ -215,6 +215,14 @@ Reboot required.</source>
|
||||
<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>
|
||||
@@ -371,6 +379,34 @@ This does not work in China.
|
||||
Internet required.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Tē-Tôo (Map)</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Display Road Name</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Display Speed Camera Warning (Taiwan)</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>When enabled, openpilot will display speed camera warning using offline database.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Speed Camera Warning Threshold</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Only show the warning when the speed camera limit is within threshold (+/-) % of the vehicle speed or cruise speed or road limit speed.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source> %</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Toyota / Lexus</source>
|
||||
<translation type="unfinished"></translation>
|
||||
@@ -486,6 +522,50 @@ Reboot required.</source>
|
||||
This will also reboot your device.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Enable Auto Shutdown</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>When enabled, openpilot will shutdown the device automatically.
|
||||
Reboot required.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Auto Shutdown In</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Adjust your shutdown waiting period.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source> mins</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>When enabled, openpilot will display live road name using OpenStreetMap data.
|
||||
DO NOT USE IT WITH COMMA PRIME SUBSCRIPTION.
|
||||
Internet required.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Warning</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Off</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Audible Alert Mode</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Warning - Only emits sound when there is a warning.
|
||||
Off - Does not emit any sound at all.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>DeclinePage</name>
|
||||
|
||||
@@ -215,6 +215,14 @@ Reboot required.</source>
|
||||
<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>
|
||||
@@ -371,6 +379,34 @@ This does not work in China.
|
||||
Internet required.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Tē-Tôo (Map)</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Display Road Name</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Display Speed Camera Warning (Taiwan)</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>When enabled, openpilot will display speed camera warning using offline database.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Speed Camera Warning Threshold</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Only show the warning when the speed camera limit is within threshold (+/-) % of the vehicle speed or cruise speed or road limit speed.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source> %</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Toyota / Lexus</source>
|
||||
<translation type="unfinished"></translation>
|
||||
@@ -486,6 +522,50 @@ Reboot required.</source>
|
||||
This will also reboot your device.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Enable Auto Shutdown</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>When enabled, openpilot will shutdown the device automatically.
|
||||
Reboot required.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Auto Shutdown In</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Adjust your shutdown waiting period.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source> mins</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>When enabled, openpilot will display live road name using OpenStreetMap data.
|
||||
DO NOT USE IT WITH COMMA PRIME SUBSCRIPTION.
|
||||
Internet required.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Warning</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Off</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Audible Alert Mode</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Warning - Only emits sound when there is a warning.
|
||||
Off - Does not emit any sound at all.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>DeclinePage</name>
|
||||
|
||||
@@ -215,6 +215,14 @@ Reboot required.</source>
|
||||
<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>
|
||||
@@ -371,6 +379,34 @@ This does not work in China.
|
||||
Internet required.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Tē-Tôo (Map)</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Display Road Name</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Display Speed Camera Warning (Taiwan)</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>When enabled, openpilot will display speed camera warning using offline database.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Speed Camera Warning Threshold</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Only show the warning when the speed camera limit is within threshold (+/-) % of the vehicle speed or cruise speed or road limit speed.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source> %</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Toyota / Lexus</source>
|
||||
<translation type="unfinished"></translation>
|
||||
@@ -486,6 +522,50 @@ Reboot required.</source>
|
||||
This will also reboot your device.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Enable Auto Shutdown</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>When enabled, openpilot will shutdown the device automatically.
|
||||
Reboot required.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Auto Shutdown In</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Adjust your shutdown waiting period.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source> mins</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>When enabled, openpilot will display live road name using OpenStreetMap data.
|
||||
DO NOT USE IT WITH COMMA PRIME SUBSCRIPTION.
|
||||
Internet required.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Warning</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Off</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Audible Alert Mode</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Warning - Only emits sound when there is a warning.
|
||||
Off - Does not emit any sound at all.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>DeclinePage</name>
|
||||
|
||||
@@ -215,6 +215,14 @@ Reboot required.</source>
|
||||
<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>
|
||||
@@ -371,6 +379,34 @@ This does not work in China.
|
||||
Internet required.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Tē-Tôo (Map)</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Display Road Name</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Display Speed Camera Warning (Taiwan)</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>When enabled, openpilot will display speed camera warning using offline database.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Speed Camera Warning Threshold</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Only show the warning when the speed camera limit is within threshold (+/-) % of the vehicle speed or cruise speed or road limit speed.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source> %</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Toyota / Lexus</source>
|
||||
<translation type="unfinished"></translation>
|
||||
@@ -486,6 +522,50 @@ Reboot required.</source>
|
||||
This will also reboot your device.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Enable Auto Shutdown</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>When enabled, openpilot will shutdown the device automatically.
|
||||
Reboot required.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Auto Shutdown In</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Adjust your shutdown waiting period.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source> mins</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>When enabled, openpilot will display live road name using OpenStreetMap data.
|
||||
DO NOT USE IT WITH COMMA PRIME SUBSCRIPTION.
|
||||
Internet required.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Warning</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Off</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Audible Alert Mode</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Warning - Only emits sound when there is a warning.
|
||||
Off - Does not emit any sound at all.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>DeclinePage</name>
|
||||
|
||||
@@ -215,6 +215,14 @@ Reboot required.</source>
|
||||
<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>
|
||||
@@ -371,6 +379,34 @@ This does not work in China.
|
||||
Internet required.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Tē-Tôo (Map)</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Display Road Name</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Display Speed Camera Warning (Taiwan)</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>When enabled, openpilot will display speed camera warning using offline database.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Speed Camera Warning Threshold</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Only show the warning when the speed camera limit is within threshold (+/-) % of the vehicle speed or cruise speed or road limit speed.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source> %</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Toyota / Lexus</source>
|
||||
<translation type="unfinished"></translation>
|
||||
@@ -486,6 +522,50 @@ Reboot required.</source>
|
||||
This will also reboot your device.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Enable Auto Shutdown</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>When enabled, openpilot will shutdown the device automatically.
|
||||
Reboot required.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Auto Shutdown In</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Adjust your shutdown waiting period.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source> mins</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>When enabled, openpilot will display live road name using OpenStreetMap data.
|
||||
DO NOT USE IT WITH COMMA PRIME SUBSCRIPTION.
|
||||
Internet required.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Warning</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Off</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Audible Alert Mode</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Warning - Only emits sound when there is a warning.
|
||||
Off - Does not emit any sound at all.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>DeclinePage</name>
|
||||
|
||||
@@ -215,6 +215,14 @@ Reboot required.</source>
|
||||
<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>
|
||||
@@ -371,6 +379,34 @@ This does not work in China.
|
||||
Internet required.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Tē-Tôo (Map)</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Display Road Name</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Display Speed Camera Warning (Taiwan)</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>When enabled, openpilot will display speed camera warning using offline database.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Speed Camera Warning Threshold</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Only show the warning when the speed camera limit is within threshold (+/-) % of the vehicle speed or cruise speed or road limit speed.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source> %</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Toyota / Lexus</source>
|
||||
<translation type="unfinished"></translation>
|
||||
@@ -486,6 +522,50 @@ Reboot required.</source>
|
||||
This will also reboot your device.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Enable Auto Shutdown</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>When enabled, openpilot will shutdown the device automatically.
|
||||
Reboot required.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Auto Shutdown In</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Adjust your shutdown waiting period.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source> mins</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>When enabled, openpilot will display live road name using OpenStreetMap data.
|
||||
DO NOT USE IT WITH COMMA PRIME SUBSCRIPTION.
|
||||
Internet required.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Warning</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Off</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Audible Alert Mode</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Warning - Only emits sound when there is a warning.
|
||||
Off - Does not emit any sound at all.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>DeclinePage</name>
|
||||
|
||||
@@ -215,6 +215,14 @@ Reboot required.</source>
|
||||
<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>
|
||||
@@ -371,6 +379,34 @@ This does not work in China.
|
||||
Internet required.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Tē-Tôo (Map)</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Display Road Name</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Display Speed Camera Warning (Taiwan)</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>When enabled, openpilot will display speed camera warning using offline database.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Speed Camera Warning Threshold</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Only show the warning when the speed camera limit is within threshold (+/-) % of the vehicle speed or cruise speed or road limit speed.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source> %</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Toyota / Lexus</source>
|
||||
<translation type="unfinished"></translation>
|
||||
@@ -486,6 +522,50 @@ Reboot required.</source>
|
||||
This will also reboot your device.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Enable Auto Shutdown</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>When enabled, openpilot will shutdown the device automatically.
|
||||
Reboot required.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Auto Shutdown In</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Adjust your shutdown waiting period.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source> mins</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>When enabled, openpilot will display live road name using OpenStreetMap data.
|
||||
DO NOT USE IT WITH COMMA PRIME SUBSCRIPTION.
|
||||
Internet required.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Warning</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Off</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Audible Alert Mode</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Warning - Only emits sound when there is a warning.
|
||||
Off - Does not emit any sound at all.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>DeclinePage</name>
|
||||
|
||||
Binary file not shown.
@@ -224,7 +224,7 @@ Your vehicle must support openpilot longitudinal control.</source>
|
||||
Once activate, the lead vehicle indicator will display an "A"</source>
|
||||
<translation>當速度低於設定值時,openpilot將會切換到指定的「駕駛風格」。
|
||||
1 km/h = 0.62 mph。
|
||||
一旦啟用,前車指示將顯示一個「A」。</translation>
|
||||
一旦啟用,前車指示將顯示一個「A」</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>OFF</source>
|
||||
@@ -527,12 +527,100 @@ Reboot Required.</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>Enable Stop and Go (SnG) Hack</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>啟用 Stop and Go (SnG) 修正</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>When enabled, openpilot will stop sending standstill signal when the car is fully stopped.
|
||||
ONLY WORK ON SOME VEHICLES.
|
||||
Reboot Required.</source>
|
||||
<translation>啟用後,openpilot 在車輛完全停止時將不再發送停止信號。
|
||||
僅適用於部分車輛。
|
||||
需要重新啟動。</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Display Road Name</source>
|
||||
<translation>顯示道路名稱</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>When enabled, openpilot will display live road name using OpenStreetMap data.
|
||||
Internet required.</source>
|
||||
<translation type="vanished">啟用後,openpilot 將使用 OpenStreetMap 資料顯示即時道路名稱。
|
||||
需要網路連線。</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Display Speed Camera Warning (Taiwan)</source>
|
||||
<translation>顯示測速照相警告(台灣)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Tē-Tôo (Map)</source>
|
||||
<translation>地圖</translation>
|
||||
</message>
|
||||
<message>
|
||||
<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>Speed Camera Warning Threshold</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Only show the warning when the speed camera limit is within threshold (+/-) % of the vehicle speed or cruise speed or road limit speed.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source> %</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Enable Auto Shutdown</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>When enabled, openpilot will shutdown the device automatically.
|
||||
Reboot required.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Auto Shutdown In</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Adjust your shutdown waiting period.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source> mins</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>When enabled, openpilot will display live road name using OpenStreetMap data.
|
||||
DO NOT USE IT WITH COMMA PRIME SUBSCRIPTION.
|
||||
Internet required.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Warning</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Off</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Audible Alert Mode</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Warning - Only emits sound when there is a warning.
|
||||
Off - Does not emit any sound at all.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
@@ -1334,23 +1422,23 @@ This may take up to a minute.</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>Onroad/Offroad Mode</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>上線/離線 模式</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Go Offroad</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>切換到離線</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Are you sure you want to switch driving mode?</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>您確定要切換模式嗎?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>CONFIRM</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>確認</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Go Onroad</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>切換到上線</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
|
||||
Binary file not shown.
Executable
BIN
Binary file not shown.
Reference in New Issue
Block a user