Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

066 updates #473

Closed
wants to merge 59 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
59 commits
Select commit Hold shift + click to select a range
1e10658
Fixes for various merge and refactoring fallout, typo fixes. (#878)
jyoung8607 Nov 13, 2019
4266dd1
reduce LQR ki factor
arne182 Nov 13, 2019
7fe8d4c
If within 1m from the stop sign apply brake
arne182 Nov 13, 2019
2d585f4
Remove force cancel from honda
arne182 Nov 14, 2019
aeec1b1
Increas ki Factor
arne182 Nov 14, 2019
f664d73
Fix warning
arne182 Nov 14, 2019
812f93a
Update driving model (#880)
pd0wm Nov 14, 2019
ec75f6b
fix
arne182 Nov 15, 2019
ef447c3
Merge pull request #472 from commaai/devel
arne182 Nov 16, 2019
cdc3415
help open pilot not to FCW
arne182 Nov 17, 2019
3550861
mod TR also for braking cars
arne182 Nov 17, 2019
c3845ef
Try correct tunnel speed with tssp
arne182 Nov 17, 2019
5ac48e0
No crash at 3m/s/s lead decel
arne182 Nov 18, 2019
8ac6b0b
Send fcw to LoC
arne182 Nov 18, 2019
9cfe3a4
Use FCW to make brakes lock up for 1s
arne182 Nov 18, 2019
efd1121
Get sign right and limit to 100ms braking
arne182 Nov 18, 2019
624837e
2 seconds of full brake after fcw
arne182 Nov 18, 2019
c4c54ee
Go for 100% brake at FCW
arne182 Nov 18, 2019
401d119
if FCW is tripped brake at 8m/s/s for 2 seconds
arne182 Nov 18, 2019
f3485fc
Brake can now go up to 8m/s² to avoid crash
arne182 Nov 18, 2019
2a96508
Brake can now go up to 8m/s² to avoid crash
arne182 Nov 18, 2019
2de5df9
refactor
arne182 Nov 18, 2019
cb7d7dc
refactor code
arne182 Nov 18, 2019
492334c
Fix offset at low speeds
arne182 Nov 19, 2019
9f578d1
This should fix stop signs with speed offset
arne182 Nov 19, 2019
f91121b
update messaging_arne to use new c++ in 066
sshane Nov 11, 2019
036df7c
revert to stock
sshane Nov 11, 2019
f27477c
update to messaging_arne
sshane Nov 11, 2019
2091bb6
make sure this is the erroring code
sshane Nov 11, 2019
88e1778
remove ldlibs for test
sshane Nov 11, 2019
3eae2e3
add back
sshane Nov 11, 2019
4d3cb6e
is this needed?
sshane Nov 11, 2019
303759f
nope!
sshane Nov 11, 2019
bc637b3
testing
sshane Nov 11, 2019
d35790e
ahh, this solves it!
sshane Nov 11, 2019
1fd3de9
revert back
sshane Nov 11, 2019
8214945
remove unused service_list imports, update all messaging_arne calls t…
sshane Nov 11, 2019
ef76185
fix for panda version mismatch error
sshane Nov 11, 2019
471a2b9
compile messaging_arne on first start
sshane Nov 15, 2019
17323fe
fix for poller not having registerSocket
sshane Nov 18, 2019
38cacac
add poller back
sshane Nov 18, 2019
15dbf50
make values negative
sshane Nov 18, 2019
7a377d5
updates to long_mpc
sshane Nov 18, 2019
029a853
update to messagine_arne.submaster in controlsd, updates for longcontrol
sshane Nov 18, 2019
87fe279
update pathplanner to use messaging_arne and pubmaster!
sshane Nov 18, 2019
263d91d
- allow pubmaster and submaster to be initialized with 1 service as …
sshane Nov 18, 2019
5d51810
update planner to use submaster
sshane Nov 18, 2019
6d341ce
some clean up
sshane Nov 18, 2019
57a4bb8
testing submaster
sshane Nov 18, 2019
e620ffc
whoops
sshane Nov 18, 2019
dca495f
testing conflate
sshane Nov 18, 2019
b5cf33c
updates to phantom
sshane Nov 18, 2019
57e7d98
more submaster like :)
sshane Nov 18, 2019
37bb1f7
updates to phantom
sshane Nov 18, 2019
a17bf6a
updates to phantom
sshane Nov 18, 2019
b64a0eb
final commit, ready to merge after testing
sshane Nov 18, 2019
c1c9fce
Missed this
sshane Nov 19, 2019
f46242e
fix auto updating and rebooting, fix segfaults caused by invalid synt…
sshane Nov 19, 2019
2541e94
- update mapd to use submaster and pubmaster. can revert if the logic…
sshane Nov 19, 2019
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion cereal/arne182.capnp
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,6 @@ struct PhantomData {
status @0 :Bool;
speed @1 :Float32;
angle @2 :Float32;
time @3 :Float32;
}

struct ManagerData {
Expand Down
Binary file modified models/driving_model.dlc
Binary file not shown.
2 changes: 1 addition & 1 deletion panda/VERSION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
v1.6.9
v1.5.9
12 changes: 0 additions & 12 deletions panda/board/obj/cert.h

This file was deleted.

Binary file removed panda/board/obj/code.bin
Binary file not shown.
1 change: 0 additions & 1 deletion panda/board/obj/gitversion.h

This file was deleted.

Binary file removed panda/board/obj/main.panda.o
Binary file not shown.
Binary file removed panda/board/obj/panda.bin
Binary file not shown.
Binary file removed panda/board/obj/panda.elf
Binary file not shown.
Binary file removed panda/board/obj/startup_stm32f413xx.o
Binary file not shown.
6 changes: 3 additions & 3 deletions panda/board/safety/safety_honda.h
Original file line number Diff line number Diff line change
Expand Up @@ -114,9 +114,9 @@ static int honda_tx_hook(CAN_FIFOMailBox_TypeDef *to_send) {

// disallow actuator commands if gas or brake (with vehicle moving) are pressed
// and the the latching controls_allowed flag is True
int pedal_pressed = honda_gas_prev || (gas_interceptor_prev > HONDA_GAS_INTERCEPTOR_THRESHOLD) ||
(honda_brake_pressed_prev && honda_moving);
bool current_controls_allowed = controls_allowed && !(pedal_pressed);
//int pedal_pressed = honda_gas_prev || (gas_interceptor_prev > HONDA_GAS_INTERCEPTOR_THRESHOLD) ||
//(honda_brake_pressed_prev && honda_moving);
bool current_controls_allowed = controls_allowed;

// BRAKE: safety check
if ((addr == 0x1FA) && (bus == 0)) {
Expand Down
2 changes: 1 addition & 1 deletion panda/board/safety/safety_toyota.h
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ const uint32_t TOYOTA_RT_INTERVAL = 250000; // 250ms between real time checks

// longitudinal limits
const int TOYOTA_MAX_ACCEL = 4000; // 4.0 m/s2
const int TOYOTA_MIN_ACCEL = -4000; // 4.0 m/s2
const int TOYOTA_MIN_ACCEL = -8000; // 8.0 m/s2

const int TOYOTA_GAS_INTERCEPTOR_THRESHOLD = 475; // ratio between offset and gain from dbc file

Expand Down
2 changes: 1 addition & 1 deletion panda/tests/safety/test_toyota.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
MAX_TORQUE = 1500

MAX_ACCEL = 4000
MIN_ACCEL = -4000
MIN_ACCEL = -8000

MAX_RT_DELTA = 375
RT_INTERVAL = 250000
Expand Down
4 changes: 3 additions & 1 deletion selfdrive/can/common.pxd
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,9 @@ cdef extern from "common.h":
HONDA_COUNTER,
TOYOTA_CHECKSUM,
PEDAL_CHECKSUM,
PEDAL_COUNTER
PEDAL_COUNTER,
VOLKSWAGEN_CHECKSUM,
VOLKSWAGEN_COUNTER

cdef struct Signal:
const char* name
Expand Down
2 changes: 1 addition & 1 deletion selfdrive/can/dbc_template.cc
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ const Signal sigs_{{address}}[] = {
.type = SignalType::HONDA_COUNTER,
{% elif checksum_type == "toyota" and sig.name == "CHECKSUM" %}
.type = SignalType::TOYOTA_CHECKSUM,
{% elif checksum_type == "volkswagen" and sig.name == "CHECKSUM" %}
{% elif checksum_type == "volkswagen" and sig.name == "CHECKSUM" %}
.type = SignalType::VOLKSWAGEN_CHECKSUM,
{% elif checksum_type == "volkswagen" and sig.name == "COUNTER" %}
.type = SignalType::VOLKSWAGEN_COUNTER,
Expand Down
7 changes: 3 additions & 4 deletions selfdrive/can/parser.cc
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,6 @@ bool MessageState::parse(uint64_t sec, uint16_t ts_, uint8_t * dat) {
}
} else if (sig.type == SignalType::VOLKSWAGEN_COUNTER) {
if (!update_counter_generic(tmp, sig.b2)) {
INFO("0x%X CHECKSUM FAIL\n", address);
return false;
}
} else if (sig.type == SignalType::PEDAL_CHECKSUM) {
Expand Down Expand Up @@ -84,7 +83,7 @@ bool MessageState::update_counter_generic(int64_t v, int cnt_size) {
if (((old_counter+1) & ((1 << cnt_size) -1)) != v) {
counter_fail += 1;
if (counter_fail > 1) {
INFO("%X COUNTER FAIL %d -- %d vs %d\n", address, counter_fail, old_counter, (int)v);
INFO("0x%X COUNTER FAIL %d -- %d vs %d\n", address, counter_fail, old_counter, (int)v);
}
if (counter_fail >= MAX_BAD_COUNTER) {
return false;
Expand Down Expand Up @@ -125,7 +124,7 @@ CANParser::CANParser(int abus, const std::string& dbc_name,
}
}
if (!msg) {
fprintf(stderr, "CANParser: could not find message 0x%X in dnc %s\n", op.address, dbc_name.c_str());
fprintf(stderr, "CANParser: could not find message 0x%X in DBC %s\n", op.address, dbc_name.c_str());
assert(false);
}

Expand Down Expand Up @@ -193,7 +192,7 @@ void CANParser::UpdateValid(uint64_t sec) {
const auto& state = kv.second;
if (state.check_threshold > 0 && (sec - state.seen) > state.check_threshold) {
if (state.seen > 0) {
DEBUG("%X TIMEOUT\n", state.address);
DEBUG("0x%X TIMEOUT\n", state.address);
}
can_valid = false;
}
Expand Down
2 changes: 1 addition & 1 deletion selfdrive/car/car_helpers.py
Original file line number Diff line number Diff line change
Expand Up @@ -134,7 +134,7 @@ def fingerprint(logcan, sendcan, has_relay):

frame += 1

cloudlog.warning("fingerprinted %s", car_fingerprint)
cloudlog.warning("fingerprinted {}".format({car_fingerprint: finger[0]}))
params.put("CachedFingerprint", json.dumps([car_fingerprint, {int(key): value for key, value in finger[0].items()}]))
return car_fingerprint, finger, vin

Expand Down
36 changes: 22 additions & 14 deletions selfdrive/car/toyota/carcontroller.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
create_acc_cancel_command, create_fcw_command
from selfdrive.car.toyota.values import CAR, ECU, STATIC_MSGS, TSS2_CAR, SteerLimitParams
from selfdrive.can.packer import CANPacker
from selfdrive.phantom import Phantom
from selfdrive.phantom.phantom import Phantom

VisualAlert = car.CarControl.HUDControl.VisualAlert

Expand Down Expand Up @@ -98,7 +98,7 @@ def __init__(self, dbc_name, car_fingerprint, enable_camera, enable_dsu, enable_
self.standstill_req = False
self.angle_control = False
self.phantom = Phantom()

self.fcw_countdown = 0
self.steer_angle_enabled = False
self.ipas_reset_counter = 0
self.last_fault_frame = -200
Expand Down Expand Up @@ -237,7 +237,26 @@ def update(self, enabled, CS, frame, actuators, pcm_cancel_cmd, hud_alert,
ECU.APGS in self.fake_ecus))
elif ECU.APGS in self.fake_ecus:
can_sends.append(create_ipas_steer_command(self.packer, 0, 0, True))


# ui mesg is at 100Hz but we send asap if:
# - there is something to display
# - there is something to stop displaying
alert_out = process_hud_alert(hud_alert)
steer, fcw = alert_out

if fcw:
self.fcw_countdown = 200
if self.fcw_countdown > 0:
apply_accel = -8.0
self.fcw_countdown = self.fcw_countdown - 1

if (any(alert_out) and not self.alert_active) or \
(not any(alert_out) and self.alert_active):
send_ui = True
self.alert_active = not self.alert_active
else:
send_ui = False

# accel cmd comes from DSU, but we can spam can to cancel the system even if we are using lat only control
if (frame % 3 == 0 and ECU.DSU in self.fake_ecus) or (pcm_cancel_cmd and ECU.CAM in self.fake_ecus):
lead = lead or CS.v_ego < 12. # at low speed we always assume the lead is present do ACC can be engaged
Expand All @@ -255,18 +274,7 @@ def update(self, enabled, CS, frame, actuators, pcm_cancel_cmd, hud_alert,
# This prevents unexpected pedal range rescaling
can_sends.append(create_gas_command(self.packer, apply_gas, frame//2))

# ui mesg is at 100Hz but we send asap if:
# - there is something to display
# - there is something to stop displaying
alert_out = process_hud_alert(hud_alert)
steer, fcw = alert_out

if (any(alert_out) and not self.alert_active) or \
(not any(alert_out) and self.alert_active):
send_ui = True
self.alert_active = not self.alert_active
else:
send_ui = False

# disengage msg causes a bad fault sound so play a good sound instead
if pcm_cancel_cmd:
Expand Down
36 changes: 18 additions & 18 deletions selfdrive/car/toyota/carstate.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
import numpy as np
import math
from selfdrive.services import service_list
from cereal import arne182
import selfdrive.messaging as messaging
import selfdrive.messaging_arne as messaging_arne
from common.numpy_fast import interp
from cereal import car
from common.numpy_fast import mean
Expand Down Expand Up @@ -141,8 +140,7 @@ def __init__(self, CP):
self.Angle = [0, 5, 10, 15,20,25,30,35,60,100,180,270,500]
self.Angle_Speed = [255,160,100,80,70,60,55,50,40,33,27,17,12]
if not travis:
self.traffic_data_sock = messaging.pub_sock('liveTrafficData')
self.arne182Status_sock = messaging.pub_sock('arne182Status')
self.arne_pm = messaging_arne.PubMaster(['liveTrafficData', 'arne182Status'])
# initialize can parser
self.car_fingerprint = CP.carFingerprint

Expand Down Expand Up @@ -218,11 +216,12 @@ def update(self, cp, cp_cam):
self.gasbuttonstatus = 2
if self.sport_on == 0 and self.econ_on == 0:
self.gasbuttonstatus = 0
msg = arne182.Arne182Status.new_message()
msg.gasbuttonstatus = self.gasbuttonstatus
msg.readdistancelines = cp.vl["PCM_CRUISE_SM"]['DISTANCE_LINES']
msg = messaging_arne.new_message()
msg.init('arne182Status')
msg.arne182Status.gasbuttonstatus = self.gasbuttonstatus
msg.arne182Status.readdistancelines = cp.vl["PCM_CRUISE_SM"]['DISTANCE_LINES']
if not travis:
self.arne182Status_sock.send(msg.to_bytes())
self.arne_pm.send('arne182Status', msg)
if self.CP.carFingerprint == CAR.LEXUS_IS:
self.main_on = cp.vl["DSU_CRUISE"]['MAIN_ON']
else:
Expand Down Expand Up @@ -313,21 +312,22 @@ def update(self, cp, cp_cam):
self.splsgn4 = cp_cam.vl["RSA2"]['SPLSGN4']
self.noovertake = self.tsgn1 == 65 or self.tsgn2 == 65 or self.tsgn3 == 65 or self.tsgn4 == 65 or self.tsgn1 == 66 or self.tsgn2 == 66 or self.tsgn3 == 66 or self.tsgn4 == 66
if self.spdval1 > 0 or self.spdval2 > 0:
dat = arne182.LiveTrafficData.new_message()
dat = messaging_arne.new_message()
dat.init('liveTrafficData')
if self.spdval1 > 0:
dat.speedLimitValid = True
dat.liveTrafficData.speedLimitValid = True
if self.tsgn1 == 36:
dat.speedLimit = self.spdval1 * 1.60934
dat.liveTrafficData.speedLimit = self.spdval1 * 1.60934
elif self.tsgn1 == 1:
dat.speedLimit = self.spdval1
dat.liveTrafficData.speedLimit = self.spdval1
else:
dat.speedLimit = 0
dat.liveTrafficData.speedLimit = 0
else:
dat.speedLimitValid = False
dat.liveTrafficData.speedLimitValid = False
if self.spdval2 > 0:
dat.speedAdvisoryValid = True
dat.speedAdvisory = self.spdval2
dat.liveTrafficData.speedAdvisoryValid = True
dat.liveTrafficData.speedAdvisory = self.spdval2
else:
dat.speedAdvisoryValid = False
dat.liveTrafficData.speedAdvisoryValid = False
if not travis:
self.traffic_data_sock.send(dat.to_bytes())
self.arne_pm.send('liveTrafficData', dat)
2 changes: 1 addition & 1 deletion selfdrive/car/toyota/interface.py
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,7 @@ def get_params(candidate, fingerprint=gen_empty_fingerprint(), vin="", has_relay
ret.lateralTuning.init('lqr')

ret.lateralTuning.lqr.scale = 1500.0
ret.lateralTuning.lqr.ki = 0.05
ret.lateralTuning.lqr.ki = 0.06

ret.lateralTuning.lqr.a = [0., 1., -0.22619643, 1.21822268]
ret.lateralTuning.lqr.b = [-1.92006585e-04, 3.95603032e-05]
Expand Down
2 changes: 1 addition & 1 deletion selfdrive/car/volkswagen/carcontroller.py
Original file line number Diff line number Diff line change
Expand Up @@ -181,7 +181,7 @@ def update(self, enabled, CS, frame, actuators, visual_alert, audible_alert, lef
idx = (CS.graMsgBusCounter + 1) % 16
can_sends.append(volkswagencan.create_mqb_acc_buttons_control(self.packer_gw, canbus.extended, self.graButtonStatesToSend, CS, idx))
self.graMsgSentCount += 1
if self.graMsgSentCount >= 16:
if self.graMsgSentCount >= P.GRA_VBP_COUNT:
self.graButtonStatesToSend = None
self.graMsgSentCount = 0

Expand Down
7 changes: 0 additions & 7 deletions selfdrive/car/volkswagen/values.py
Original file line number Diff line number Diff line change
Expand Up @@ -51,13 +51,6 @@ class CAR:
}],
}

class ECU:
CAM = 0

ECU_FINGERPRINT = {
ECU.CAM: [294, 919], # HCA_01 Heading Control Assist, LDW_02 Lane Departure Warning
}

DBC = {
CAR.GOLF: dbc_dict('vw_mqb_2010', None),
}
38 changes: 13 additions & 25 deletions selfdrive/controls/controlsd.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,7 @@
import capnp
import zmq
import selfdrive.messaging_arne as messaging_arne
from selfdrive.services import service_list
from cereal import car, log, arne182
from cereal import car, log
from common.numpy_fast import clip
from common.realtime import sec_since_boot, set_realtime_priority, Ratekeeper, DT_CTRL
from common.profiler import Profiler
Expand Down Expand Up @@ -220,7 +219,7 @@ def state_transition(frame, CS, CP, state, events, soft_disable_timer, v_cruise_


def state_control(frame, rcv_frame, plan, path_plan, CS, CP, state, events, v_cruise_kph, v_cruise_kph_last,
AM, rk, driver_status, LaC, LoC, read_only, is_metric, cal_perc, sm, poller, arne182Status):
AM, rk, driver_status, LaC, LoC, read_only, is_metric, cal_perc, radar_state, arne_sm):
"""Given the state, this function returns an actuators packet"""

actuators = car.CarControl.Actuators.new_message()
Expand Down Expand Up @@ -263,27 +262,16 @@ def state_control(frame, rcv_frame, plan, path_plan, CS, CP, state, events, v_cr
a_acc_sol = plan.aStart + (dt / LON_MPC_STEP) * (plan.aTarget - plan.aStart)
v_acc_sol = plan.vStart + dt * (a_acc_sol + plan.aStart) / 2.0

try:
gasinterceptor = CP.enableGasInterceptor
except AttributeError:
gasinterceptor = False


# Gas/Brake PID loop
try:
leadOne = sm['radarState'].leadOne
except KeyError:
leadOne = None
gasstatus = None
for socket, _ in poller.poll(0):
if socket is arne182Status:
gasstatus = arne182.Arne182Status.from_bytes(socket.recv())
if gasstatus is None:
gasbuttonstatus = 0
else:
gasbuttonstatus = gasstatus.gasbuttonstatus
actuators.gas, actuators.brake = LoC.update(active, CS.vEgo, CS.brakePressed, CS.standstill, CS.cruiseState.standstill,
v_cruise_kph, v_acc_sol, plan.vTargetFuture, a_acc_sol, CP, gasinterceptor, gasbuttonstatus, plan.decelForTurn, plan.longitudinalPlanSource,
leadOne, CS.gasPressed)
arne_sm.update(0)
gas_button_status = arne_sm['arne182Status'].gasbuttonstatus
actuators.gas, actuators.brake = LoC.update(active, CS.vEgo, CS.brakePressed, CS.standstill,
CS.cruiseState.standstill,
v_cruise_kph, v_acc_sol, plan.vTargetFuture, a_acc_sol, CP,
gas_button_status, plan.decelForTurn, plan.longitudinalPlanSource,
radar_state.leadOne, CS.gasPressed, plan.fcw)
# Steering PID loop and lateral MPC
actuators.steer, actuators.steerAngle, lac_log = LaC.update(active, CS.vEgo, CS.steeringAngle, CS.steeringRate, CS.steeringTorqueEps, CS.steeringPressed, CP, path_plan)

Expand Down Expand Up @@ -460,8 +448,8 @@ def controlsd_thread(sm=None, pm=None, can_sock=None):
sm = messaging.SubMaster(['thermal', 'health', 'liveCalibration', 'driverMonitoring', 'plan', 'pathPlan', \
'gpsLocation', 'radarState'], ignore_alive=['gpsLocation'])

poller = zmq.Poller()
arne182Status = messaging_arne.sub_sock(service_list['arne182Status'].port, poller, conflate=True) # todo: can we use messaging_arne here?
arne_sm = messaging_arne.SubMaster('arne182Status')

if can_sock is None:
can_timeout = None if os.environ.get('NO_CAN_TIMEOUT', False) else 100
can_sock = messaging.sub_sock('can', timeout=can_timeout)
Expand Down Expand Up @@ -576,7 +564,7 @@ def controlsd_thread(sm=None, pm=None, can_sock=None):
# Compute actuators (runs PID loops and lateral MPC)
actuators, v_cruise_kph, driver_status, v_acc, a_acc, lac_log = \
state_control(sm.frame, sm.rcv_frame, sm['plan'], sm['pathPlan'], CS, CP, state, events, v_cruise_kph, v_cruise_kph_last, AM, rk,
driver_status, LaC, LoC, read_only, is_metric, cal_perc, sm, poller, arne182Status)
driver_status, LaC, LoC, read_only, is_metric, cal_perc, sm['radarState'], arne_sm)

prof.checkpoint("State Control")

Expand Down
2 changes: 1 addition & 1 deletion selfdrive/controls/lib/drive_helpers.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ class MPC_COST_LAT:


class MPC_COST_LONG:
TTC = 10.0
TTC = 17.0
DISTANCE = 1.0
ACCELERATION = 10.0
JERK = 20.0
Expand Down
Loading