|
|
|
@ -1,5 +1,3 @@ |
|
|
|
|
# flake8: noqa |
|
|
|
|
|
|
|
|
|
from cereal import car |
|
|
|
|
from selfdrive.car import dbc_dict |
|
|
|
|
|
|
|
|
@ -10,25 +8,25 @@ class CarControllerParams(): |
|
|
|
|
ACCEL_MAX = 1.6 |
|
|
|
|
|
|
|
|
|
def __init__(self, CP): |
|
|
|
|
self.BRAKE_MAX = 1024//4 |
|
|
|
|
self.STEER_MAX = CP.lateralParams.torqueBP[-1] |
|
|
|
|
# mirror of list (assuming first item is zero) for interp of signed request values |
|
|
|
|
assert(CP.lateralParams.torqueBP[0] == 0) |
|
|
|
|
assert(CP.lateralParams.torqueBP[0] == 0) |
|
|
|
|
self.STEER_LOOKUP_BP = [v * -1 for v in CP.lateralParams.torqueBP][1:][::-1] + list(CP.lateralParams.torqueBP) |
|
|
|
|
self.STEER_LOOKUP_V = [v * -1 for v in CP.lateralParams.torqueV][1:][::-1] + list(CP.lateralParams.torqueV) |
|
|
|
|
self.BRAKE_MAX = 1024//4 |
|
|
|
|
self.STEER_MAX = CP.lateralParams.torqueBP[-1] |
|
|
|
|
# mirror of list (assuming first item is zero) for interp of signed request values |
|
|
|
|
assert(CP.lateralParams.torqueBP[0] == 0) |
|
|
|
|
assert(CP.lateralParams.torqueBP[0] == 0) |
|
|
|
|
self.STEER_LOOKUP_BP = [v * -1 for v in CP.lateralParams.torqueBP][1:][::-1] + list(CP.lateralParams.torqueBP) |
|
|
|
|
self.STEER_LOOKUP_V = [v * -1 for v in CP.lateralParams.torqueV][1:][::-1] + list(CP.lateralParams.torqueV) |
|
|
|
|
|
|
|
|
|
self.NIDEC_ACCEL_LOOKUP_BP = [-1., 0., .6] |
|
|
|
|
self.NIDEC_ACCEL_LOOKUP_V = [-4.8, 0., 2.0] |
|
|
|
|
self.NIDEC_ACCEL_LOOKUP_BP = [-1., 0., .6] |
|
|
|
|
self.NIDEC_ACCEL_LOOKUP_V = [-4.8, 0., 2.0] |
|
|
|
|
|
|
|
|
|
self.NIDEC_MAX_ACCEL_V = [0.5, 2.4, 1.4, 0.6] |
|
|
|
|
self.NIDEC_MAX_ACCEL_BP = [0.0, 4.0, 10., 20.] |
|
|
|
|
self.NIDEC_MAX_ACCEL_V = [0.5, 2.4, 1.4, 0.6] |
|
|
|
|
self.NIDEC_MAX_ACCEL_BP = [0.0, 4.0, 10., 20.] |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
self.BOSCH_ACCEL_LOOKUP_BP = [-1., 0., 0.6] |
|
|
|
|
self.BOSCH_ACCEL_LOOKUP_V = [-3.5, 0., 2.] |
|
|
|
|
self.BOSCH_GAS_LOOKUP_BP = [0., 0.6] |
|
|
|
|
self.BOSCH_GAS_LOOKUP_V = [0, 2000] |
|
|
|
|
self.BOSCH_ACCEL_LOOKUP_BP = [-1., 0., 0.6] |
|
|
|
|
self.BOSCH_ACCEL_LOOKUP_V = [-3.5, 0., 2.] |
|
|
|
|
self.BOSCH_GAS_LOOKUP_BP = [0., 0.6] |
|
|
|
|
self.BOSCH_GAS_LOOKUP_V = [0, 2000] |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Car button codes |
|
|
|
@ -38,7 +36,7 @@ class CruiseButtons: |
|
|
|
|
CANCEL = 2 |
|
|
|
|
MAIN = 1 |
|
|
|
|
|
|
|
|
|
# See dbc files for info on values" |
|
|
|
|
# See dbc files for info on values |
|
|
|
|
VISUAL_HUD = { |
|
|
|
|
VisualAlert.none: 0, |
|
|
|
|
VisualAlert.fcw: 1, |
|
|
|
@ -47,7 +45,8 @@ VISUAL_HUD = { |
|
|
|
|
VisualAlert.brakePressed: 10, |
|
|
|
|
VisualAlert.wrongGear: 6, |
|
|
|
|
VisualAlert.seatbeltUnbuckled: 5, |
|
|
|
|
VisualAlert.speedTooHigh: 8} |
|
|
|
|
VisualAlert.speedTooHigh: 8 |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
class CAR: |
|
|
|
|
ACCORD = "HONDA ACCORD 2018" |
|
|
|
@ -78,7 +77,6 @@ FINGERPRINTS = { |
|
|
|
|
CAR.ACCORDH: [{ |
|
|
|
|
148: 8, 228: 5, 304: 8, 330: 8, 344: 8, 380: 8, 387: 8, 388: 8, 399: 7, 419: 8, 420: 8, 427: 3, 432: 7, 441: 5, 450: 8, 464: 8, 477: 8, 479: 8, 495: 8, 525: 8, 545: 6, 662: 4, 773: 7, 777: 8, 780: 8, 804: 8, 806: 8, 808: 8, 829: 5, 862: 8, 884: 8, 891: 8, 927: 8, 929: 8, 1302: 8, 1600: 5, 1601: 8, 1652: 8 |
|
|
|
|
}], |
|
|
|
|
# Acura RDX w/ Added Comma Pedal Support (512L & 513L) |
|
|
|
|
CAR.ACURA_RDX: [{ |
|
|
|
|
57: 3, 145: 8, 229: 4, 308: 5, 316: 8, 342: 6, 344: 8, 380: 8, 392: 6, 398: 3, 399: 6, 404: 4, 420: 8, 422: 8, 426: 8, 432: 7, 464: 8, 474: 5, 476: 4, 487: 4, 490: 8, 506: 8, 512: 6, 513: 6, 542: 7, 545: 4, 597: 8, 660: 8, 773: 7, 777: 8, 780: 8, 800: 8, 804: 8, 808: 8, 819: 7, 821: 5, 829: 5, 882: 2, 884: 7, 887: 8, 888: 8, 892: 8, 923: 2, 929: 4, 963: 8, 965: 8, 966: 8, 967: 8, 983: 8, 985: 3, 1024: 5, 1027: 5, 1029: 8, 1033: 5, 1034: 5, 1036: 8, 1039: 8, 1057: 5, 1064: 7, 1108: 8, 1365: 5, 1424: 5, 1729: 1 |
|
|
|
|
}], |
|
|
|
@ -86,32 +84,26 @@ FINGERPRINTS = { |
|
|
|
|
57: 3, 148: 8, 228: 5, 304: 8, 330: 8, 344: 8, 380: 8, 399: 7, 401: 8, 420: 8, 427: 3, 428: 8, 432: 7, 450: 8, 464: 8, 470: 2, 476: 7, 487: 4, 490: 8, 493: 5, 506: 8, 512: 6, 513: 6, 545: 6, 597: 8, 662: 4, 773: 7, 777: 8, 780: 8, 795: 8, 800: 8, 804: 8, 806: 8, 808: 8, 829: 5, 862: 8, 884: 8, 891: 8, 892: 8, 927: 8, 929: 8, 985: 3, 1024: 5, 1027: 5, 1029: 8, 1036: 8, 1039: 8, 1108: 8, 1302: 8, 1322: 5, 1361: 5, 1365: 5, 1424: 5, 1633: 8, |
|
|
|
|
}], |
|
|
|
|
CAR.CIVIC_BOSCH: [{ |
|
|
|
|
# 2017 Civic Hatchback EX, 2019 Civic Sedan Touring Canadian, and 2018 Civic Hatchback Executive Premium 1.0L CVT European |
|
|
|
|
57: 3, 148: 8, 228: 5, 304: 8, 330: 8, 344: 8, 380: 8, 399: 7, 401: 8, 420: 8, 427: 3, 428: 8, 432: 7, 441: 5, 450: 8, 460: 3, 464: 8, 470: 2, 476: 7, 477: 8, 479: 8, 490: 8, 493: 5, 495: 8, 506: 8, 545: 6, 597: 8, 662: 4, 773: 7, 777: 8, 780: 8, 795: 8, 800: 8, 804: 8, 806: 8, 808: 8, 829: 5, 862: 8, 884: 8, 891: 8, 892: 8, 927: 8, 929: 8, 985: 3, 1024: 5, 1027: 5, 1029: 8, 1036: 8, 1039: 8, 1108: 8, 1302: 8, 1322: 5, 1361: 5, 1365: 5, 1424: 5, 1600: 5, 1601: 8, 1625: 5, 1629: 5, 1633: 8, |
|
|
|
|
}, |
|
|
|
|
# 2017 Civic Hatchback LX |
|
|
|
|
{ |
|
|
|
|
57: 3, 148: 8, 228: 5, 304: 8, 330: 8, 344: 8, 380: 8, 399: 7, 401: 8, 420: 8, 423: 2, 427: 3, 428: 8, 432: 7, 441: 5, 450: 8, 464: 8, 470: 2, 476: 7, 477: 8, 479: 8, 490: 8, 493: 5, 495: 8, 506: 8, 545: 6, 597: 8, 662: 4, 773: 7, 777: 8, 780: 8, 795: 8, 800: 8, 804: 8, 806: 8, 808: 8, 815: 8, 825: 4, 829: 5, 846: 8, 862: 8, 881: 8, 882: 4, 884: 8, 888: 8, 891: 8, 892: 8, 918: 7, 927: 8, 929: 8, 983: 8, 985: 3, 1024: 5, 1027: 5, 1029: 8, 1036: 8, 1039: 8, 1064: 7, 1092: 1, 1108: 8, 1125: 8, 1127: 2, 1296: 8, 1302: 8, 1322: 5, 1361: 5, 1365: 5, 1424: 5, 1600: 5, 1601: 8, 1633: 8 |
|
|
|
|
}], |
|
|
|
|
CAR.CRV_5G: [{ |
|
|
|
|
57: 3, 148: 8, 199: 4, 228: 5, 231: 5, 232: 7, 304: 8, 330: 8, 340: 8, 344: 8, 380: 8, 399: 7, 401: 8, 420: 8, 423: 2, 427: 3, 428: 8, 432: 7, 441: 5, 446: 3, 450: 8, 464: 8, 467: 2, 469: 3, 470: 2, 474: 8, 476: 7, 477: 8, 479: 8, 490: 8, 493: 5, 495: 8, 507: 1, 545: 6, 597: 8, 661: 4, 662: 4, 773: 7, 777: 8, 780: 8, 795: 8, 800: 8, 804: 8, 806: 8, 808: 8, 814: 4, 815: 8, 817: 4, 825: 4, 829: 5, 862: 8, 881: 8, 882: 4, 884: 8, 888: 8, 891: 8, 927: 8, 918: 7, 929: 8, 983: 8, 985: 3, 1024: 5, 1027: 5, 1029: 8, 1036: 8, 1039: 8, 1064: 7, 1108: 8, 1092: 1, 1115: 2, 1125: 8, 1127: 2, 1296: 8, 1302: 8, 1322: 5, 1361: 5, 1365: 5, 1424: 5, 1600: 5, 1601: 8, 1618: 5, 1633: 8, 1670: 5 |
|
|
|
|
}], |
|
|
|
|
# 2018 Odyssey w/ Added Comma Pedal Support (512L & 513L) |
|
|
|
|
CAR.ODYSSEY: [{ |
|
|
|
|
57: 3, 148: 8, 228: 5, 229: 4, 316: 8, 342: 6, 344: 8, 380: 8, 399: 7, 411: 5, 419: 8, 420: 8, 427: 3, 432: 7, 450: 8, 463: 8, 464: 8, 476: 4, 490: 8, 506: 8, 512: 6, 513: 6, 542: 7, 545: 6, 597: 8, 662: 4, 773: 7, 777: 8, 780: 8, 795: 8, 800: 8, 804: 8, 806: 8, 808: 8, 817: 4, 819: 7, 821: 5, 825: 4, 829: 5, 837: 5, 856: 7, 862: 8, 871: 8, 881: 8, 882: 4, 884: 8, 891: 8, 892: 8, 905: 8, 923: 2, 927: 8, 929: 8, 963: 8, 965: 8, 966: 8, 967: 8, 983: 8, 985: 3, 1029: 8, 1036: 8, 1052: 8, 1064: 7, 1088: 8, 1089: 8, 1092: 1, 1108: 8, 1110: 8, 1125: 8, 1296: 8, 1302: 8, 1600: 5, 1601: 8, 1612: 5, 1613: 5, 1614: 5, 1615: 8, 1616: 5, 1619: 5, 1623: 5, 1668: 5 |
|
|
|
|
}, |
|
|
|
|
# 2018 Odyssey Elite w/ Added Comma Pedal Support (512L & 513L) |
|
|
|
|
{ |
|
|
|
|
57: 3, 148: 8, 228: 5, 229: 4, 304: 8, 342: 6, 344: 8, 380: 8, 399: 7, 411: 5, 419: 8, 420: 8, 427: 3, 432: 7, 440: 8, 450: 8, 463: 8, 464: 8, 476: 4, 490: 8, 506: 8, 507: 1, 542: 7, 545: 6, 597: 8, 662: 4, 773: 7, 777: 8, 780: 8, 795: 8, 800: 8, 804: 8, 806: 8, 808: 8, 817: 4, 819: 7, 821: 5, 825: 4, 829: 5, 837: 5, 856: 7, 862: 8, 871: 8, 881: 8, 882: 4, 884: 8, 891: 8, 892: 8, 905: 8, 923: 2, 927: 8, 929: 8, 963: 8, 965: 8, 966: 8, 967: 8, 983: 8, 985: 3, 1029: 8, 1036: 8, 1052: 8, 1064: 7, 1088: 8, 1089: 8, 1092: 1, 1108: 8, 1110: 8, 1125: 8, 1296: 8, 1302: 8, 1600: 5, 1601: 8, 1612: 5, 1613: 5, 1614: 5, 1616: 5, 1619: 5, 1623: 5, 1668: 5 |
|
|
|
|
}], |
|
|
|
|
CAR.ODYSSEY_CHN: [{ |
|
|
|
|
57: 3, 145: 8, 316: 8, 342: 6, 344: 8, 380: 8, 398: 3, 399: 7, 401: 8, 404: 4, 411: 5, 420: 8, 422: 8, 423: 2, 426: 8, 432: 7, 450: 8, 464: 8, 490: 8, 506: 8, 507: 1, 512: 6, 513: 6, 597: 8, 610: 8, 611: 8, 612: 8, 617: 8, 660: 8, 661: 4, 773: 7, 780: 8, 804: 8, 808: 8, 829: 5, 862: 8, 884: 7, 892: 8, 923: 2, 929: 8, 1030: 5, 1137: 8, 1302: 8, 1348: 5, 1361: 5, 1365: 5, 1600: 5, 1601: 8, 1639: 8 |
|
|
|
|
}], |
|
|
|
|
# this fingerprint also includes the Passport 2019 |
|
|
|
|
CAR.PILOT_2019: [{ |
|
|
|
|
57: 3, 145: 8, 228: 5, 308: 5, 316: 8, 334: 8, 342: 6, 344: 8, 379: 8, 380: 8, 399: 7, 411: 5, 419: 8, 420: 8, 422: 8, 425: 8, 426: 8, 427: 3, 432: 7, 463: 8, 464: 8, 476: 4, 490: 8, 506: 8, 512: 6, 513: 6, 538: 3, 542: 7, 545: 5, 546: 3, 597: 8, 660: 8, 773: 7, 777: 8, 780: 8, 795: 8, 800: 8, 804: 8, 808: 8, 817: 4, 819: 7, 821: 5, 825: 4, 829: 5, 837: 5, 856: 7, 871: 8, 881: 8, 882: 2, 884: 7, 891: 8, 892: 8, 923: 2, 927: 8, 929: 8, 983: 8, 985: 3, 1029: 8, 1052: 8, 1064: 7, 1088: 8, 1089: 8, 1092: 1, 1108: 8, 1110: 8, 1125: 8, 1296: 8, 1424: 5, 1445: 8, 1600: 5, 1601: 8, 1612: 5, 1613: 5, 1614: 5, 1615: 8, 1616: 5, 1617: 8, 1618: 5, 1623: 5, 1668: 5 |
|
|
|
|
}, |
|
|
|
|
# 2019 Pilot EX-L |
|
|
|
|
{ |
|
|
|
|
57: 3, 145: 8, 228: 5, 229: 4, 308: 5, 316: 8, 339: 7, 342: 6, 344: 8, 380: 8, 392: 6, 399: 7, 411: 5, 419: 8, 420: 8, 422: 8, 425: 8, 426: 8, 427: 3, 432: 7, 464: 8, 476: 4, 490: 8, 506: 8, 512: 6, 513: 6, 542: 7, 545: 5, 546: 3, 597: 8, 660: 8, 773: 7, 777: 8, 780: 8, 795: 8, 800: 8, 804: 8, 808: 8, 817: 4, 819: 7, 821: 5, 829: 5, 871: 8, 881: 8, 882: 2, 884: 7, 891: 8, 892: 8, 923: 2, 927: 8, 929: 8, 963: 8, 965: 8, 966: 8, 967: 8, 983: 8, 985: 3, 1027: 5, 1029: 8, 1039: 8, 1064: 7, 1088: 8, 1089: 8, 1092: 1, 1108: 8, 1125: 8, 1296: 8, 1424: 5, 1445: 8, 1600: 5, 1601: 8, 1612: 5, 1613: 5, 1616: 5, 1617: 8, 1618: 5, 1623: 5, 1668: 5 |
|
|
|
|
}], |
|
|
|
@ -1259,49 +1251,19 @@ DBC = { |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
STEER_THRESHOLD = { |
|
|
|
|
CAR.ACCORD: 1200, |
|
|
|
|
CAR.ACCORDH: 1200, |
|
|
|
|
CAR.ACURA_ILX: 1200, |
|
|
|
|
# default is 1200, overrides go here |
|
|
|
|
CAR.ACURA_RDX: 400, |
|
|
|
|
CAR.ACURA_RDX_3G: 1200, |
|
|
|
|
CAR.CIVIC: 1200, |
|
|
|
|
CAR.CIVIC_BOSCH: 1200, |
|
|
|
|
CAR.CIVIC_BOSCH_DIESEL: 1200, |
|
|
|
|
CAR.CRV: 1200, |
|
|
|
|
CAR.CRV_5G: 1200, |
|
|
|
|
CAR.CRV_EU: 400, |
|
|
|
|
CAR.CRV_HYBRID: 1200, |
|
|
|
|
CAR.FIT: 1200, |
|
|
|
|
CAR.HRV: 1200, |
|
|
|
|
CAR.ODYSSEY: 1200, |
|
|
|
|
CAR.ODYSSEY_CHN: 1200, |
|
|
|
|
CAR.PILOT: 1200, |
|
|
|
|
CAR.PILOT_2019: 1200, |
|
|
|
|
CAR.RIDGELINE: 1200, |
|
|
|
|
CAR.INSIGHT: 1200, |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
# TODO: is this real? |
|
|
|
|
SPEED_FACTOR = { |
|
|
|
|
CAR.ACCORD: 1., |
|
|
|
|
CAR.ACCORDH: 1., |
|
|
|
|
CAR.ACURA_ILX: 1., |
|
|
|
|
CAR.ACURA_RDX: 1., |
|
|
|
|
CAR.ACURA_RDX_3G: 1., |
|
|
|
|
CAR.CIVIC: 1., |
|
|
|
|
CAR.CIVIC_BOSCH: 1., |
|
|
|
|
CAR.CIVIC_BOSCH_DIESEL: 1., |
|
|
|
|
# default is 1, overrides go here |
|
|
|
|
CAR.CRV: 1.025, |
|
|
|
|
CAR.CRV_5G: 1.025, |
|
|
|
|
CAR.CRV_EU: 1.025, |
|
|
|
|
CAR.CRV_HYBRID: 1.025, |
|
|
|
|
CAR.FIT: 1., |
|
|
|
|
CAR.HRV: 1.025, |
|
|
|
|
CAR.ODYSSEY: 1., |
|
|
|
|
CAR.ODYSSEY_CHN: 1., |
|
|
|
|
CAR.PILOT: 1., |
|
|
|
|
CAR.PILOT_2019: 1., |
|
|
|
|
CAR.RIDGELINE: 1., |
|
|
|
|
CAR.INSIGHT: 1., |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
OLD_NIDEC_LONG_CONTROL = set([CAR.ODYSSEY, CAR.ACURA_RDX, CAR.CRV, CAR.HRV]) |
|
|
|
|