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.
 
 
 
 
 
 
Vehicle Researcher 78c45a3a4d openpilot v0.9.9 release 24 hours ago
..
tests openpilot v0.9.8 release 1 month ago
README.md openpilot v0.9.7 release 11 months ago
__init__.py openpilot v0.9.4 release 2 years ago
api.py openpilot v0.9.8 release 1 month ago
auth.py openpilot v0.9.7 release 11 months ago
auth_config.py openpilot v0.9.6 release 1 year ago
azure_container.py openpilot v0.9.8 release 1 month ago
bootlog.py openpilot v0.9.7 release 11 months ago
cache.py openpilot v0.9.6 release 1 year ago
comma_car_segments.py openpilot v0.9.8 release 1 month ago
exceptions.py openpilot v0.9.4 release 2 years ago
filereader.py openpilot v0.9.8 release 1 month ago
framereader.py openpilot v0.9.8 release 1 month ago
github_utils.py openpilot v0.9.8 release 1 month ago
helpers.py openpilot v0.9.8 release 1 month ago
kbhit.py openpilot v0.9.8 release 1 month ago
live_logreader.py openpilot v0.9.8 release 1 month ago
log_time_series.py openpilot v0.9.8 release 1 month ago
logreader.py openpilot v0.9.9 release 24 hours ago
openpilotci.py openpilot v0.9.6 release 1 year ago
openpilotcontainers.py openpilot v0.9.6 release 1 year ago
route.py openpilot v0.9.8 release 1 month ago
sanitizer.py openpilot v0.9.6 release 1 year ago
url_file.py openpilot v0.9.9 release 24 hours ago
vidindex.py openpilot v0.9.7 release 11 months 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)