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.
fromtools.lib.routeimportRoutefromtools.lib.logreaderimportLogReaderr=Route("4cf7a6ad03080c90|2021-09-29--13-46-36")# get a list of paths for the route's rlog filesprint(r.log_paths())# and road camera (fcamera.hevc) filesprint(r.camera_paths())# setup a LogReader to read the route's first rloglr=LogReader(r.log_paths()[0])# print out all the messages in the logimportcodecscodecs.register_error("strict",codecs.backslashreplace_errors)formsginlr:print(msg)# setup a LogReader for the route's second qloglr=LogReader(r.log_paths()[1])# print all the steering angles values from the logformsginlr:ifmsg.which()=="carState":print(msg.carState.steeringAngleDeg)
MultiLogIterator
MultiLogIterator is similar to LogReader, but reads multiple logs.
fromtools.lib.routeimportRoutefromtools.lib.logreaderimportMultiLogIterator# setup a MultiLogIterator to read all the logs in the router=Route("4cf7a6ad03080c90|2021-09-29--13-46-36")lr=MultiLogIterator(r.log_paths())# print all the steering angles values from all the logs in the routeformsginlr:ifmsg.which()=="carState":print(msg.carState.steeringAngleDeg)