openpilot is an open source driver assistance system. openpilot performs the functions of Automated Lane Centering and Adaptive Cruise Control for over 200 supported car makes and models.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

81 lines
2.3 KiB

import math
import matplotlib.pyplot as plt
2 weeks ago
from openpilot.common.filter_simple import JerkEstimator1, JerkEstimator2, JerkEstimator3, JerkEstimator4, JerkEstimator5
from tools.lib.logreader import LogReader
from openpilot.selfdrive.locationd.helpers import PoseCalibrator, Pose
from opendbc.car import ACCELERATION_DUE_TO_GRAVITY
plt.ion()
lr = LogReader("https://connect.comma.ai/8011d605be1cbb77/000001c6--130f915e07/130/138")
calibrator = PoseCalibrator()
sm = {}
j1 = JerkEstimator1(0.01)
j2 = JerkEstimator2(0.01)
j3 = JerkEstimator3(0.01)
2 weeks ago
j4 = JerkEstimator4(0.01)
j5 = JerkEstimator5(0.01)
accels = []
2 weeks ago
kf_accels = []
jerks1, jerks2, jerks3, jerks4, jerks5 = [], [], [], [], []
lp_updated = False
for msg in lr:
if msg.which() == 'livePose':
sm['livePose'] = msg.livePose
2 weeks ago
lp_updated = True
elif msg.which() == 'liveParameters':
sm['liveParameters'] = msg.liveParameters
elif msg.which() == 'carState':
if len(sm) < 2:
continue
CS = msg.carState
device_pose = Pose.from_live_pose(sm['livePose'])
calibrated_pose = calibrator.build_calibrated_pose(device_pose)
yaw_rate = calibrated_pose.angular_velocity.yaw
roll = sm['liveParameters'].roll
roll_compensated_lateral_accel = (CS.vEgo * yaw_rate) - (math.sin(roll) * ACCELERATION_DUE_TO_GRAVITY)
2 weeks ago
_j3 = j3.update(roll_compensated_lateral_accel)
if lp_updated:
_j1 = j1.update(roll_compensated_lateral_accel)
_j2 = j2.update(roll_compensated_lateral_accel)
_j4 = j4.update(roll_compensated_lateral_accel)
_j5 = j5.update(roll_compensated_lateral_accel)
lp_updated = False
else:
_j1 = j1.x
_j2 = j2.x
_j4 = j4.x
_j5 = j5.x
jerks1.append(_j1)
jerks2.append(_j2)
jerks3.append(_j3)
jerks4.append(_j4)
jerks5.append(_j5)
accels.append(roll_compensated_lateral_accel)
print(roll_compensated_lateral_accel)
fig, axs = plt.subplots(2, sharex=True)
axs[0].plot(accels, label='Lateral Accel')
axs[0].set_ylabel('Lateral Acceleration (m/s²)')
axs[0].legend()
axs[1].plot(jerks1, label='Jerk Estimator 1')
axs[1].plot(jerks2, label='Jerk Estimator 2')
axs[1].plot(jerks3, label='Jerk Estimator 3')
2 weeks ago
axs[1].plot(jerks4, label='Jerk Estimator 4')
axs[1].plot(jerks5, label='Jerk Estimator 5')
axs[1].set_ylabel('Lateral Jerk (m/s³)')
axs[1].legend()