|
|
@ -25,6 +25,7 @@ class CarState(CarStateBase): |
|
|
|
|
|
|
|
|
|
|
|
self.low_speed_lockout = False |
|
|
|
self.low_speed_lockout = False |
|
|
|
self.acc_type = 1 |
|
|
|
self.acc_type = 1 |
|
|
|
|
|
|
|
self.torque_sensor_angle_deg = 0 |
|
|
|
|
|
|
|
|
|
|
|
def update(self, cp, cp_cam): |
|
|
|
def update(self, cp, cp_cam): |
|
|
|
ret = car.CarState.new_message() |
|
|
|
ret = car.CarState.new_message() |
|
|
@ -56,20 +57,20 @@ class CarState(CarStateBase): |
|
|
|
ret.standstill = ret.vEgoRaw < 0.001 |
|
|
|
ret.standstill = ret.vEgoRaw < 0.001 |
|
|
|
|
|
|
|
|
|
|
|
ret.steeringAngleDeg = cp.vl["STEER_ANGLE_SENSOR"]["STEER_ANGLE"] + cp.vl["STEER_ANGLE_SENSOR"]["STEER_FRACTION"] |
|
|
|
ret.steeringAngleDeg = cp.vl["STEER_ANGLE_SENSOR"]["STEER_ANGLE"] + cp.vl["STEER_ANGLE_SENSOR"]["STEER_FRACTION"] |
|
|
|
torque_sensor_angle_deg = cp.vl["STEER_TORQUE_SENSOR"]["STEER_ANGLE"] |
|
|
|
self.torque_sensor_angle_deg = cp.vl["STEER_TORQUE_SENSOR"]["STEER_ANGLE"] |
|
|
|
|
|
|
|
|
|
|
|
# Some newer models have a more accurate angle measurement in the TORQUE_SENSOR message. Use if non-zero |
|
|
|
# Some newer models have a more accurate angle measurement in the TORQUE_SENSOR message. Use if non-zero |
|
|
|
if abs(torque_sensor_angle_deg) > 1e-3: |
|
|
|
if abs(self.torque_sensor_angle_deg) > 1e-3: |
|
|
|
self.accurate_steer_angle_seen = True |
|
|
|
self.accurate_steer_angle_seen = True |
|
|
|
|
|
|
|
|
|
|
|
if self.accurate_steer_angle_seen: |
|
|
|
if self.accurate_steer_angle_seen: |
|
|
|
# Offset seems to be invalid for large steering angles |
|
|
|
# Offset seems to be invalid for large steering angles |
|
|
|
if abs(ret.steeringAngleDeg) < 90 and cp.can_valid: |
|
|
|
if abs(ret.steeringAngleDeg) < 90 and cp.can_valid: |
|
|
|
self.angle_offset.update(torque_sensor_angle_deg - ret.steeringAngleDeg) |
|
|
|
self.angle_offset.update(self.torque_sensor_angle_deg - ret.steeringAngleDeg) |
|
|
|
|
|
|
|
|
|
|
|
if self.angle_offset.initialized: |
|
|
|
if self.angle_offset.initialized: |
|
|
|
ret.steeringAngleOffsetDeg = self.angle_offset.x |
|
|
|
ret.steeringAngleOffsetDeg = self.angle_offset.x |
|
|
|
ret.steeringAngleDeg = torque_sensor_angle_deg - self.angle_offset.x |
|
|
|
ret.steeringAngleDeg = self.torque_sensor_angle_deg - self.angle_offset.x |
|
|
|
|
|
|
|
|
|
|
|
ret.steeringRateDeg = cp.vl["STEER_ANGLE_SENSOR"]["STEER_RATE"] |
|
|
|
ret.steeringRateDeg = cp.vl["STEER_ANGLE_SENSOR"]["STEER_RATE"] |
|
|
|
|
|
|
|
|
|
|
|