a97cdb588a
* sync with alan-polk/dev-c3-app * updated readme.md * udpates to readme * new image * removed dead links * fix typo in utilize * no lane change smoothing in a curve * updated logo * add back support sunnypilot to readme.md * updated lane change logic * updated tuning on lane change modifiers * 0.5 on right lane changes * right is positive in comma world * updated lane change tuning * self.right_lc_modifier = 0.80 * self.right_lc_modifier = 0.70 * apply curvature limits after all calculations instead of before. * use absolute value of apply_curvature when detecting lane change. * if steeringPressed and abs(steeringAngleDeg) > 45: * Merged in sunnypilot v2024.05.24-1822 * Fixed 23-24 Escape carname in sunnypilot_carname.json * fixed missing torque data override for FORD_ESCAPE_MK4_23REFRESH * additional LMC2 variables. * bp readme.md * Fixed issues with explorer mk6 after recent merge * Merged in latest sp-dev changes into experimental * create desired_curvature as a calculated value * Only apply curvature limits once (#6) * Only apply curvature limits once * create immediate_curvature. * safety limits before lane changes * Merged SP Dev 2024.06.05-1964 --------- Co-authored-by: alan-polk <56047663+alan-polk@users.noreply.github.com> |
||
---|---|---|
.. | ||
tests | ||
README.md | ||
__init__.py | ||
api.py | ||
auth.py | ||
auth_config.py | ||
azure_container.py | ||
bootlog.py | ||
cache.py | ||
comma_car_segments.py | ||
exceptions.py | ||
filereader.py | ||
framereader.py | ||
helpers.py | ||
kbhit.py | ||
live_logreader.py | ||
logreader.py | ||
openpilotci.py | ||
openpilotcontainers.py | ||
route.py | ||
sanitizer.py | ||
url_file.py | ||
vidindex.py |
README.md
LogReader
Route is a class for conveniently accessing all the logs from your routes. The LogReader class reads the non-video logs, i.e. rlog.bz2 and qlog.bz2. There's also a matching FrameReader class for reading the videos.
from openpilot.tools.lib.route import Route
from openpilot.tools.lib.logreader import LogReader
r = Route("a2a0ccea32023010|2023-07-27--13-01-19")
# get a list of paths for the route's rlog files
print(r.log_paths())
# and road camera (fcamera.hevc) files
print(r.camera_paths())
# setup a LogReader to read the route's first rlog
lr = LogReader(r.log_paths()[0])
# print out all the messages in the log
import codecs
codecs.register_error("strict", codecs.backslashreplace_errors)
for msg in lr:
print(msg)
# setup a LogReader for the route's second qlog
lr = LogReader(r.log_paths()[1])
# print all the steering angles values from the log
for msg in lr:
if msg.which() == "carState":
print(msg.carState.steeringAngleDeg)
Segment Ranges
We also support a new format called a "segment range":
344c5c15b34f2d8a / 2024-01-03--09-37-12 / 2:6 / q
[ dongle id ] [ timestamp ] [ selector ] [ query type]
you can specify which segments from a route to load
lr = LogReader("a2a0ccea32023010|2023-07-27--13-01-19/4") # 4th segment
lr = LogReader("a2a0ccea32023010|2023-07-27--13-01-19/4:6") # 4th and 5th segment
lr = LogReader("a2a0ccea32023010|2023-07-27--13-01-19/-1") # last segment
lr = LogReader("a2a0ccea32023010|2023-07-27--13-01-19/:5") # first 5 segments
lr = LogReader("a2a0ccea32023010|2023-07-27--13-01-19/1:") # all except first segment
and can select which type of logs to grab
lr = LogReader("a2a0ccea32023010|2023-07-27--13-01-19/4/q") # get qlogs
lr = LogReader("a2a0ccea32023010|2023-07-27--13-01-19/4/r") # get rlogs (default)