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.
 
 
 
 
 
 
Shane Smiskol 72f235b137 debug 2 weeks ago
..
tests LogReader clean ups (#33446) 8 months ago
README.md segment range docs update (#31560) 1 year ago
__init__.py merge in tools 5 years ago
api.py CommaApi: use context manager for response handling (#34118) 5 months ago
auth.py use pyupgrade to update to new typing syntax (#31580) 1 year ago
auth_config.py replace common.file_helpers.mkdirs_exists_ok with python os.makedirs funtion (#30618) 1 year ago
azure_container.py azure_container: pass the filename explicitely when using get_url (#33407) 8 months ago
bootlog.py use pyupgrade to update to new typing syntax (#31580) 1 year ago
cache.py replace common.file_helpers.mkdirs_exists_ok with python os.makedirs funtion (#30618) 1 year ago
comma_car_segments.py move selfdrive/car to opendbc (#32630) 8 months ago
exceptions.py merge in tools 5 years ago
filereader.py logreader: support filesystem DATA_ENDPOINT (#34340) 4 months ago
framereader.py debug 2 weeks ago
github_utils.py ci: keep old comment on model replay report (#33759) 7 months ago
helpers.py tools: keep re pattern file small (#33084) 9 months ago
kbhit.py Reapply "joystickd is a real process (#33490)" (#33514) 8 months ago
live_logreader.py Fix msgq context overrides (#33014) 9 months ago
log_time_series.py test_onroad: cleanup with time series LogReader (#34613) 2 months ago
logreader.py Revert "logreader.py: concurrent file existence checks" (#34942) 1 month ago
openpilotci.py cleanup azure handling (#31034) 1 year ago
openpilotcontainers.py cleanup azure handling (#31034) 1 year ago
route.py LogReader: support multiple log extensions in route (#33066) 9 months ago
sanitizer.py sanitizer: sanitize vin number (#31090) 1 year ago
url_file.py url_file.py: remove the unnecessary str() wrapping around the hexdigest() (#34891) 1 month ago
vidindex.py use pyupgrade to update to new typing syntax (#31580) 1 year ago

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)