FrogPilot setup

This commit is contained in:
FrogAi
2024-01-12 22:39:30 -07:00
parent 9d97e0ecc1
commit 7308c1b35c
60 changed files with 1660 additions and 49 deletions

View File

@@ -5,7 +5,7 @@ from typing import Callable, Dict, List, Optional, Tuple
from cereal import car
from openpilot.common.params import Params
from openpilot.common.basedir import BASEDIR
from openpilot.system.version import is_comma_remote, is_tested_branch
from openpilot.system.version import get_branch, is_comma_remote, is_tested_branch
from openpilot.selfdrive.car.interfaces import get_interface_attr
from openpilot.selfdrive.car.fingerprints import eliminate_incompatible_cars, all_legacy_fingerprint_cars
from openpilot.selfdrive.car.vin import get_vin, is_valid_vin, VIN_UNKNOWN
@@ -193,12 +193,18 @@ def fingerprint(logcan, sendcan, num_pandas):
def get_car(logcan, sendcan, experimental_long_allowed, num_pandas=1):
params = Params()
dongle_id = params.get("DongleId", block=True, encoding='utf-8')
candidate, fingerprints, vin, car_fw, source, exact_match = fingerprint(logcan, sendcan, num_pandas)
if candidate is None:
cloudlog.event("car doesn't match any fingerprints", fingerprints=fingerprints, error=True)
candidate = "mock"
if get_branch() == "origin/FrogPilot-Development" and dongle_id[:3] != "be6":
candidate = "mock"
CarInterface, CarController, CarState = interfaces[candidate]
CP = CarInterface.get_params(candidate, fingerprints, car_fw, experimental_long_allowed, docs=False)
CP.carVin = vin

View File

@@ -38,6 +38,10 @@ class CarController:
self.packer_obj = CANPacker(DBC[self.CP.carFingerprint]['radar'])
self.packer_ch = CANPacker(DBC[self.CP.carFingerprint]['chassis'])
# FrogPilot variables
def update_frogpilot_variables(self, params):
def update(self, CC, CS, now_nanos):
actuators = CC.actuators
hud_control = CC.hudControl

View File

@@ -1,9 +1,10 @@
#!/usr/bin/env python3
from cereal import car
from cereal import car, custom
from math import fabs, exp
from panda import Panda
from openpilot.common.conversions import Conversions as CV
from openpilot.common.params import Params
from openpilot.selfdrive.car import create_button_events, get_safety_config
from openpilot.selfdrive.car.gm.radar_interface import RADAR_HEADER_MSG
from openpilot.selfdrive.car.gm.values import CAR, CruiseButtons, CarControllerParams, EV_CAR, CAMERA_ACC_CAR, CanBus
@@ -12,6 +13,7 @@ from openpilot.selfdrive.controls.lib.drive_helpers import get_friction
ButtonType = car.CarState.ButtonEvent.Type
EventName = car.CarEvent.EventName
FrogPilotEventName = custom.FrogPilotEvents
GearShifter = car.CarState.GearShifter
TransmissionType = car.CarParams.TransmissionType
NetworkLocation = car.CarParams.NetworkLocation
@@ -69,6 +71,9 @@ class CarInterface(CarInterfaceBase):
@staticmethod
def _get_params(ret, candidate, fingerprint, car_fw, experimental_long, docs):
# FrogPilot variables
params = params()
ret.carName = "gm"
ret.safetyConfigs = [get_safety_config(car.CarParams.SafetyModel.gm)]
ret.autoResumeSng = False

View File

@@ -11,6 +11,7 @@ from openpilot.common.basedir import BASEDIR
from openpilot.common.conversions import Conversions as CV
from openpilot.common.simple_kalman import KF1D, get_kalman_gain
from openpilot.common.numpy_fast import clip
from openpilot.common.params import Params
from openpilot.common.realtime import DT_CTRL
from openpilot.selfdrive.car import apply_hysteresis, gen_empty_fingerprint, scale_rot_inertia, scale_tire_stiffness, STD_CARGO_KG
from openpilot.selfdrive.controls.lib.drive_helpers import V_CRUISE_MAX, get_friction
@@ -86,6 +87,9 @@ class CarInterfaceBase(ABC):
if CarController is not None:
self.CC = CarController(self.cp.dbc_name, CP, self.VM)
# FrogPilot variables
params = Params()
@staticmethod
def get_pid_accel_limits(CP, current_speed, cruise_speed):
return ACCEL_MIN, ACCEL_MAX
@@ -306,6 +310,9 @@ class CarInterfaceBase(ABC):
return events
def update_frogpilot_params(self, params):
if hasattr(self.CC, 'update_frogpilot_variables'):
self.CC.update_frogpilot_variables(params)
class RadarInterfaceBase(ABC):
def __init__(self, CP):
@@ -345,6 +352,10 @@ class CarStateBase(ABC):
K = get_kalman_gain(DT_CTRL, np.array(A), np.array(C), np.array(Q), R)
self.v_ego_kf = KF1D(x0=x0, A=A, C=C[0], K=K)
# FrogPilot variables
self.param = Params()
self.param_memory = Params("/dev/shm/params")
def update_speed_kf(self, v_ego_raw):
if abs(v_ego_raw - self.v_ego_kf.x[0][0]) > 2.0: # Prevent large accelerations when car starts at non zero speed
self.v_ego_kf.set_x([[v_ego_raw], [0.0]])
@@ -433,6 +444,7 @@ class CarStateBase(ABC):
def get_loopback_can_parser(CP):
return None
def update_frogpilot_params(self, params):
INTERFACE_ATTR_FILE = {
"FINGERPRINTS": "fingerprints",

View File

@@ -41,6 +41,10 @@ class CarController:
self.gas = 0
self.accel = 0
# FrogPilot variables
def update_frogpilot_variables(self, params):
def update(self, CC, CS, now_nanos):
actuators = CC.actuators
hud_control = CC.hudControl

View File

@@ -44,6 +44,8 @@ class CarState(CarStateBase):
self.acc_type = 1
self.lkas_hud = {}
# FrogPilot variables
def update(self, cp, cp_cam):
ret = car.CarState.new_message()

View File

@@ -1,5 +1,6 @@
from cereal import car
from openpilot.common.conversions import Conversions as CV
from openpilot.common.params import Params
from panda import Panda
from panda.python import uds
from openpilot.selfdrive.car.toyota.values import Ecu, CAR, DBC, ToyotaFlags, CarControllerParams, TSS2_CAR, RADAR_ACC_CAR, NO_DSU_CAR, \