openpilot0/tools/lib
Greg Hogan bb3402b54d plotjuggler: support segment names (#23263)
* plotjuggler: support segment names

* update docs

* generic parser

* convert segment number to int when parsing

* add SegmentName

Co-authored-by: Willem Melching <willem.melching@gmail.com>
old-commit-hash: 71132edf17
2022-01-04 15:55:46 +01:00
..
tests Fix test relying on SAFETY.md being in the root 2021-09-14 16:02:36 -07:00
vidindex
README.md Sphinx docs generation (#22697) 2021-10-28 15:14:37 +02:00
__init__.py
api.py tools: make auth optional for public routes (#22386) 2021-09-30 20:13:46 +02:00
auth.py Pyupgrade 3.6: Update syntax with Python 3.6+ features (#23305) 2021-12-24 11:18:39 -08:00
auth_config.py tools: make auth optional for public routes (#22386) 2021-09-30 20:13:46 +02:00
cache.py Less open file permissions (#21922) 2021-08-28 18:25:05 -07:00
exceptions.py
filereader.py FrameIterator that uses 1+ GB less RAM (#21687) 2021-07-22 12:08:56 -07:00
framereader.py Pyupgrade 3.6: Update syntax with Python 3.6+ features (#23305) 2021-12-24 11:18:39 -08:00
kbhit.py Add type hints, small cleanups (#21080) 2021-06-03 12:21:04 +02:00
logreader.py MultiLogIterator: fix after adding sort_by_time 2022-01-02 20:08:57 -08:00
robust_logreader.py LogReader: add arg to sort by time (#23346) 2022-01-02 11:56:53 -08:00
route.py plotjuggler: support segment names (#23263) 2022-01-04 15:55:46 +01:00
url_file.py Pyupgrade 3.6: Update syntax with Python 3.6+ features (#23305) 2021-12-24 11:18:39 -08:00

README.md

LogReader

Route is a class for conviently 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 tools.lib.route import Route
from tools.lib.logreader import LogReader

r = Route("4cf7a6ad03080c90|2021-09-29--13-46-36")

# 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)