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.
 
 
 
 
 
 
Justin Newberry 6010a39bf8
LogReader: skip file_exists check for comma_api (#31251)
2 years ago
..
tests LogReader: add ```.filter``` (#31222) 2 years ago
README.md rename segmentrangereader to logreader (#30981) 2 years ago
__init__.py
api.py
auth.py
auth_config.py
azure_container.py prevent typing issue in azure_container (#31044) 2 years ago
bootlog.py bootlog: remove timestamp from filename (#31187) 2 years ago
cache.py
comma_car_segments.py commaCarSegments cleanup (#31182) 2 years ago
exceptions.py
filereader.py filereader should use connection pool for file_exists (#31158) 2 years ago
framereader.py
helpers.py CommaCarSegments: BIG Database! (#31169) 2 years ago
kbhit.py
logreader.py LogReader: skip file_exists check for comma_api (#31251) 2 years ago
openpilotci.py cleanup azure handling (#31034) 2 years ago
openpilotcontainers.py cleanup azure handling (#31034) 2 years ago
route.py LogReader: don't use route for max_segment (#31129) 2 years ago
sanitizer.py sanitizer: sanitize vin number (#31090) 2 years ago
url_file.py LogReader: remove redirect message for internal data (#31088) 2 years ago
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", where 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)