openpilot0/tools/lib
Justin Newberry 661132be5a Pytest: more post-test path cleanup (#30556)
* test cleanup

* missed this one

* remove that

* static class
old-commit-hash: 4086795c29
2023-11-30 09:55:48 -08:00
..
tests URLFile: don't cache non-existent file's lengths (#30071) 2023-10-04 12:57:56 -07:00
README.md add openpilot prefix to imports (#29498) 2023-08-20 20:49:55 -07:00
__init__.py
api.py
auth.py Linter: remove pylint (#29611) 2023-08-24 16:30:54 -07:00
auth_config.py Pytest: more post-test path cleanup (#30556) 2023-11-30 09:55:48 -08:00
bootlog.py add openpilot prefix to imports (#29498) 2023-08-20 20:49:55 -07:00
cache.py framereader: add cache_dir argument (#29904) 2023-09-14 14:36:32 -07:00
exceptions.py
filereader.py filereader cleanup (#30191) 2023-10-05 19:45:46 -07:00
framereader.py framereader: eliminate tempfile usage (#30289) 2023-10-18 19:48:26 -07:00
helpers.py process_replay: helpers (#28367) 2023-06-06 10:31:13 -07:00
kbhit.py
logreader.py Proc Replay: cleanup iterable log typing (#30261) 2023-10-17 12:58:28 -07:00
route.py add openpilot prefix to imports (#29498) 2023-08-20 20:49:55 -07:00
url_file.py URLFile: exception type for failed requests (#30330) 2023-10-25 16:20:12 -07:00
vidindex.py vidindex improvements (#30196) 2023-10-05 22:48:50 -07:00

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)

MultiLogIterator

MultiLogIterator is similar to LogReader, but reads multiple logs.

from openpilot.tools.lib.route import Route
from openpilot.tools.lib.logreader import MultiLogIterator

# setup a MultiLogIterator to read all the logs in the route
r = Route("a2a0ccea32023010|2023-07-27--13-01-19")
lr = MultiLogIterator(r.log_paths())

# print all the steering angles values from all the logs in the route
for msg in lr:
  if msg.which() == "carState":
    print(msg.carState.steeringAngleDeg)