mirror of
https://github.com/sunnypilot/sunnypilot.git
synced 2026-02-19 11:13:53 +08:00
* 3.12
* pprofile is broken
* use modified metadrivepy3-12
* 0.3.0 metadrive
* add metadrive/commaai git dependency
* metadrive git set
* pin sounddevice 0.4.6
* datetime.utcnow() deprecation
* poetry lock
* make datetime not aware
* poetry lock
* pin pytools
* google_crc32c wheel
* unpin sounddevice
* clean metadrive
* use python crc
* mypy
* 3.12.4
* allow python3.11
* test
* no pip
* poetry
* better
* better
* merge
* remove
* try
* test
* try this
* snok
* python
* simpler
* setuptools
* lower
* try
* try
* work?
* ubuntu deps
* ubuntu
* try
* remove
* move
* remove this
* names
* Update .github/workflows/tools_tests.yaml
Co-authored-by: Adeeb Shihadeh <adeebshihadeh@gmail.com>
* python<4
* <3.13
---------
Co-authored-by: Adeeb Shihadeh <adeebshihadeh@gmail.com>
Co-authored-by: Maxime Desroches <desroches.maxime@gmail.com>
old-commit-hash: 148eaf8fa6
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)