openpilot v0.11.1 release

date: 2026-06-04T09:49:56
master commit: c0ab3550eca2e9daf197c46b7e4b24aa9637cf2e
This commit is contained in:
Vehicle Researcher
2026-06-04 09:50:05 -07:00
commit 6adb63b915
3381 changed files with 1044370 additions and 0 deletions
@@ -0,0 +1,86 @@
<?xml version='1.0' encoding='UTF-8'?>
<root>
<tabbed_widget name="Main Window" parent="main_window">
<Tab containers="1" tab_name="tab1">
<Container>
<DockSplitter sizes="0.33362;0.33276;0.33362" count="3" orientation="-">
<DockArea name="CAN RX">
<plot style="Lines" flip_y="false" mode="TimeSeries" flip_x="false">
<range top="1101.875000" left="0.000000" bottom="-26.875000" right="60.526742"/>
<limitY/>
<curve name="/pandaStates/0/canState0/totalRxCnt" color="#f14cc1">
<transform alias="/pandaStates/0/canState0/totalRxCnt[Derivative]" name="Derivative">
<options radioChecked="radioCustom" lineEdit="1.0"/>
</transform>
</curve>
<curve name="/pandaStates/0/canState1/totalRxCnt" color="#9467bd">
<transform alias="/pandaStates/0/canState1/totalRxCnt[Derivative]" name="Derivative">
<options radioChecked="radioCustom" lineEdit="1.0"/>
</transform>
</curve>
<curve name="/pandaStates/0/canState2/totalRxCnt" color="#ff7f0e">
<transform alias="/pandaStates/0/canState2/totalRxCnt[Derivative]" name="Derivative">
<options radioChecked="radioCustom" lineEdit="1.0"/>
</transform>
</curve>
</plot>
</DockArea>
<DockArea name="CAN TX">
<plot style="Lines" flip_y="false" mode="TimeSeries" flip_x="false">
<range top="455.100000" left="0.000000" bottom="-11.100000" right="60.526742"/>
<limitY/>
<curve name="/pandaStates/0/canState0/totalTxCnt" color="#17becf">
<transform alias="/pandaStates/0/canState0/totalTxCnt[Derivative]" name="Derivative">
<options radioChecked="radioCustom" lineEdit="1.0"/>
</transform>
</curve>
<curve name="/pandaStates/0/canState1/totalTxCnt" color="#bcbd22">
<transform alias="/pandaStates/0/canState1/totalTxCnt[Derivative]" name="Derivative">
<options radioChecked="radioCustom" lineEdit="1.0"/>
</transform>
</curve>
<curve name="/pandaStates/0/canState2/totalTxCnt" color="#1f77b4">
<transform alias="/pandaStates/0/canState2/totalTxCnt[Derivative]" name="Derivative">
<options radioChecked="radioCustom" lineEdit="1.0"/>
</transform>
</curve>
</plot>
</DockArea>
<DockArea name="CAN errors">
<plot style="Lines" flip_y="false" mode="TimeSeries" flip_x="false">
<range top="2515.350000" left="0.000000" bottom="-61.350000" right="60.526742"/>
<limitY/>
<curve name="/pandaStates/0/canState0/totalErrorCnt" color="#1f77b4">
<transform alias="/pandaStates/0/canState0/totalErrorCnt[Derivative]" name="Derivative">
<options radioChecked="radioCustom" lineEdit="1.0"/>
</transform>
</curve>
<curve name="/pandaStates/0/canState1/totalErrorCnt" color="#d62728">
<transform alias="/pandaStates/0/canState1/totalErrorCnt[Derivative]" name="Derivative">
<options radioChecked="radioCustom" lineEdit="1.0"/>
</transform>
</curve>
<curve name="/pandaStates/0/canState2/totalErrorCnt" color="#1ac938">
<transform alias="/pandaStates/0/canState2/totalErrorCnt[Derivative]" name="Derivative">
<options radioChecked="radioCustom" lineEdit="1.0"/>
</transform>
</curve>
</plot>
</DockArea>
</DockSplitter>
</Container>
</Tab>
<currentTabIndex index="0"/>
</tabbed_widget>
<use_relative_time_offset enabled="1"/>
<!-- - - - - - - - - - - - - - - -->
<!-- - - - - - - - - - - - - - - -->
<Plugins>
<plugin ID="DataLoad Rlog"/>
<plugin ID="Cereal Subscriber"/>
</Plugins>
<customMathEquations/>
<snippets/>
<!-- - - - - - - - - - - - - - - -->
</root>
@@ -0,0 +1,148 @@
<?xml version='1.0' encoding='UTF-8'?>
<root>
<tabbed_widget name="Main Window" parent="main_window">
<Tab tab_name="SOF / EOF (encodeIdx)" containers="1">
<Container>
<DockSplitter orientation="-" sizes="0.500885;0.499115" count="2">
<DockArea name="...">
<plot flip_x="false" mode="TimeSeries" flip_y="false" style="Lines">
<range bottom="35000000.000000" left="0.000000" top="65000000.000000" right="630.006367"/>
<limitY max="6.5e+07" min="3.5e+07"/>
<curve color="#1f77b4" name="/driverEncodeIdx/timestampSof">
<transform name="Derivative" alias="/driverEncodeIdx/timestampSof[Derivative]">
<options lineEdit="1.0" radioChecked="radioCustom"/>
</transform>
</curve>
<curve color="#d62728" name="/roadEncodeIdx/timestampSof">
<transform name="Derivative" alias="/roadEncodeIdx/timestampSof[Derivative]">
<options lineEdit="1.0" radioChecked="radioCustom"/>
</transform>
</curve>
<curve color="#1ac938" name="/wideRoadEncodeIdx/timestampSof">
<transform name="Derivative" alias="/wideRoadEncodeIdx/timestampSof[Derivative]">
<options lineEdit="1.0" radioChecked="radioCustom"/>
</transform>
</curve>
</plot>
</DockArea>
<DockArea name="...">
<plot flip_x="false" mode="TimeSeries" flip_y="false" style="Lines">
<range bottom="35000000.000000" left="0.000000" top="65000000.000000" right="630.006367"/>
<limitY max="6.5e+07" min="3.5e+07"/>
<curve color="#f14cc1" name="/driverEncodeIdx/timestampEof">
<transform name="Derivative" alias="/driverEncodeIdx/timestampEof[Derivative]">
<options lineEdit="1.0" radioChecked="radioCustom"/>
</transform>
</curve>
<curve color="#9467bd" name="/roadEncodeIdx/timestampEof">
<transform name="Derivative" alias="/roadEncodeIdx/timestampEof[Derivative]">
<options lineEdit="1.0" radioChecked="radioCustom"/>
</transform>
</curve>
<curve color="#17becf" name="/wideRoadEncodeIdx/timestampEof">
<transform name="Derivative" alias="/wideRoadEncodeIdx/timestampEof[Derivative]">
<options lineEdit="1.0" radioChecked="radioCustom"/>
</transform>
</curve>
</plot>
</DockArea>
</DockSplitter>
</Container>
</Tab>
<Tab tab_name="model timings" containers="1">
<Container>
<DockSplitter orientation="-" sizes="0.5;0.5" count="2">
<DockArea name="...">
<plot flip_x="false" mode="TimeSeries" flip_y="false" style="Lines">
<range bottom="0.015143" left="0.000000" top="0.016865" right="630.006367"/>
<limitY/>
<curve color="#ff7f0e" name="/modelV2/modelExecutionTime"/>
</plot>
</DockArea>
<DockArea name="...">
<plot flip_x="false" mode="TimeSeries" flip_y="false" style="Lines">
<range bottom="-0.100000" left="0.000000" top="0.100000" right="630.006367"/>
<limitY/>
<curve color="#f14cc1" name="/modelV2/frameDropPerc"/>
</plot>
</DockArea>
</DockSplitter>
</Container>
</Tab>
<Tab tab_name="sensor info" containers="1">
<Container>
<DockSplitter orientation="-" sizes="1" count="1">
<DockArea name="...">
<plot flip_x="false" mode="TimeSeries" flip_y="false" style="Lines">
<range bottom="-0.100000" left="0.000000" top="0.100000" right="630.006367"/>
<limitY/>
<curve color="#bcbd22" name="/driverCameraState/sensor"/>
<curve color="#1f77b4" name="/roadCameraState/sensor"/>
<curve color="#d62728" name="/wideRoadCameraState/sensor"/>
</plot>
</DockArea>
</DockSplitter>
</Container>
</Tab>
<Tab tab_name="SOF / EOF (cameraState)" containers="1">
<Container>
<DockSplitter orientation="-" sizes="0.500885;0.499115" count="2">
<DockArea name="...">
<plot flip_x="false" mode="TimeSeries" flip_y="false" style="Lines">
<range bottom="35000000.000000" left="0.000000" top="65000000.000000" right="630.006367"/>
<limitY max="6.5e+07" min="3.5e+07"/>
<curve color="#1f77b4" name="/driverCameraState/timestampSof">
<transform name="Derivative" alias="/driverCameraState/timestampSof[Derivative]">
<options lineEdit="1.0" radioChecked="radioCustom"/>
</transform>
</curve>
<curve color="#d62728" name="/roadCameraState/timestampSof">
<transform name="Derivative" alias="/roadCameraState/timestampSof[Derivative]">
<options lineEdit="1.0" radioChecked="radioCustom"/>
</transform>
</curve>
<curve color="#1ac938" name="/wideRoadCameraState/timestampSof">
<transform name="Derivative" alias="/wideRoadCameraState/timestampSof[Derivative]">
<options lineEdit="1.0" radioChecked="radioCustom"/>
</transform>
</curve>
</plot>
</DockArea>
<DockArea name="...">
<plot flip_x="false" mode="TimeSeries" flip_y="false" style="Lines">
<range bottom="35000000.000000" left="0.000000" top="65000000.000000" right="630.006367"/>
<limitY max="6.5e+07" min="3.5e+07"/>
<curve color="#ff7f0e" name="/driverCameraState/timestampEof">
<transform name="Derivative" alias="/driverCameraState/timestampEof[Derivative]">
<options lineEdit="1.0" radioChecked="radioCustom"/>
</transform>
</curve>
<curve color="#f14cc1" name="/roadCameraState/timestampEof">
<transform name="Derivative" alias="/roadCameraState/timestampEof[Derivative]">
<options lineEdit="1.0" radioChecked="radioCustom"/>
</transform>
</curve>
<curve color="#9467bd" name="/wideRoadCameraState/timestampEof">
<transform name="Derivative" alias="/wideRoadCameraState/timestampEof[Derivative]">
<options lineEdit="1.0" radioChecked="radioCustom"/>
</transform>
</curve>
</plot>
</DockArea>
</DockSplitter>
</Container>
</Tab>
<currentTabIndex index="0"/>
</tabbed_widget>
<use_relative_time_offset enabled="1"/>
<!-- - - - - - - - - - - - - - - -->
<!-- - - - - - - - - - - - - - - -->
<Plugins>
<plugin ID="DataLoad Rlog"/>
<plugin ID="Cereal Subscriber"/>
</Plugins>
<customMathEquations/>
<snippets/>
<!-- - - - - - - - - - - - - - - -->
</root>
+72
View File
@@ -0,0 +1,72 @@
<?xml version='1.0' encoding='UTF-8'?>
<root>
<tabbed_widget parent="main_window" name="Main Window">
<Tab containers="1" tab_name="tab1">
<Container>
<DockSplitter count="2" sizes="0.500381;0.499619" orientation="-">
<DockSplitter count="2" sizes="0.5;0.5" orientation="|">
<DockArea name="...">
<plot style="Lines" mode="TimeSeries" flip_y="false" flip_x="false">
<range right="632.799721" bottom="-17755.925000" top="771630.925000" left="0.000000"/>
<limitY/>
<curve color="#1f77b4" name="/pandaStates/0/canState0/totalRxCnt"/>
<curve color="#d62728" name="/pandaStates/0/canState1/totalRxCnt"/>
<curve color="#1ac938" name="/pandaStates/0/canState2/totalRxCnt"/>
</plot>
</DockArea>
<DockArea name="...">
<plot style="Lines" mode="TimeSeries" flip_y="false" flip_x="false">
<range right="632.799721" bottom="-18545.500000" top="760365.500000" left="0.000000"/>
<limitY/>
<curve color="#ff7f0e" name="/pandaStates/0/canState0/totalTxCnt"/>
<curve color="#f14cc1" name="/pandaStates/0/canState1/totalTxCnt"/>
<curve color="#9467bd" name="/pandaStates/0/canState2/totalTxCnt"/>
</plot>
</DockArea>
</DockSplitter>
<DockSplitter count="3" sizes="0.333333;0.333333;0.333333" orientation="|">
<DockArea name="...">
<plot style="Lines" mode="TimeSeries" flip_y="false" flip_x="false">
<range right="632.799721" bottom="-1.350000" top="55.350000" left="0.000000"/>
<limitY/>
<curve color="#ff7f0e" name="/pandaStates/0/canState0/totalRxLostCnt"/>
<curve color="#f14cc1" name="/pandaStates/0/canState1/totalRxLostCnt"/>
<curve color="#9467bd" name="/pandaStates/0/canState2/totalRxLostCnt"/>
</plot>
</DockArea>
<DockArea name="...">
<plot style="Lines" mode="TimeSeries" flip_y="false" flip_x="false">
<range right="632.799721" bottom="-0.050000" top="2.050000" left="0.000000"/>
<limitY/>
<curve color="#17becf" name="/pandaStates/0/canState0/totalTxLostCnt"/>
<curve color="#bcbd22" name="/pandaStates/0/canState1/totalTxLostCnt"/>
<curve color="#1f77b4" name="/pandaStates/0/canState2/totalTxLostCnt"/>
</plot>
</DockArea>
<DockArea name="...">
<plot style="Lines" mode="TimeSeries" flip_y="false" flip_x="false">
<range right="632.799721" bottom="-0.100000" top="0.100000" left="0.000000"/>
<limitY/>
<curve color="#17becf" name="/pandaStates/0/canState0/busOffCnt"/>
<curve color="#1ac938" name="/pandaStates/0/canState1/busOffCnt"/>
<curve color="#bcbd22" name="/pandaStates/0/canState2/busOffCnt"/>
</plot>
</DockArea>
</DockSplitter>
</DockSplitter>
</Container>
</Tab>
<currentTabIndex index="0"/>
</tabbed_widget>
<use_relative_time_offset enabled="1"/>
<!-- - - - - - - - - - - - - - - -->
<!-- - - - - - - - - - - - - - - -->
<Plugins>
<plugin ID="DataLoad Rlog"/>
<plugin ID="Cereal Subscriber"/>
</Plugins>
<!-- - - - - - - - - - - - - - - -->
<!-- - - - - - - - - - - - - - - -->
<!-- - - - - - - - - - - - - - - -->
</root>
@@ -0,0 +1,60 @@
<?xml version='1.0' encoding='UTF-8'?>
<root>
<tabbed_widget parent="main_window" name="Main Window">
<Tab tab_name="tab1" containers="1">
<Container>
<DockSplitter orientation="-" count="5" sizes="0.2;0.2;0.2;0.2;0.2">
<DockArea name="...">
<plot style="Lines" flip_x="false" mode="TimeSeries" flip_y="false">
<range top="1.025000" bottom="-0.025000" left="0.018309" right="59.674401"/>
<limitY/>
<curve color="#1f77b4" name="/carControl/enabled"/>
<curve color="#d62728" name="/pandaStates/0/controlsAllowed"/>
</plot>
</DockArea>
<DockArea name="...">
<plot style="Lines" flip_x="false" mode="TimeSeries" flip_y="false">
<range top="27.087398" bottom="-0.905168" left="0.018309" right="59.674401"/>
<limitY/>
<curve color="#9467bd" name="/carState/cumLagMs"/>
</plot>
</DockArea>
<DockArea name="...">
<plot style="Lines" flip_x="false" mode="TimeSeries" flip_y="false">
<range top="1.025000" bottom="-0.025000" left="0.018309" right="59.674401"/>
<limitY/>
<curve color="#1f77b4" name="/pandaStates/0/safetyRxInvalid"/>
<curve color="#e801ce" name="/pandaStates/0/safetyRxChecksInvalid"/>
</plot>
</DockArea>
<DockArea name="...">
<plot style="Lines" flip_x="false" mode="TimeSeries" flip_y="false">
<range top="158.850000" bottom="-2.850000" left="0.018309" right="59.674401"/>
<limitY/>
<curve color="#d62728" name="/pandaStates/0/safetyTxBlocked"/>
</plot>
</DockArea>
<DockArea name="...">
<plot style="Lines" flip_x="false" mode="TimeSeries" flip_y="false">
<range top="1.025000" bottom="-0.025000" left="0.018309" right="59.674401"/>
<limitY/>
<curve color="#1ac938" name="/carState/gasPressed"/>
<curve color="#ff7f0e" name="/carState/brakePressed"/>
</plot>
</DockArea>
</DockSplitter>
</Container>
</Tab>
<currentTabIndex index="0"/>
</tabbed_widget>
<use_relative_time_offset enabled="1"/>
<!-- - - - - - - - - - - - - - - -->
<!-- - - - - - - - - - - - - - - -->
<Plugins>
<plugin ID="DataLoad Rlog"/>
<plugin ID="Cereal Subscriber"/>
</Plugins>
<customMathEquations/>
<snippets/>
<!-- - - - - - - - - - - - - - - -->
</root>
+62
View File
@@ -0,0 +1,62 @@
<?xml version='1.0' encoding='UTF-8'?>
<root>
<tabbed_widget parent="main_window" name="Main Window">
<Tab tab_name="tab1" containers="1">
<Container>
<DockSplitter orientation="-" sizes="0.24977;0.250689;0.24977;0.24977" count="4">
<DockArea name="...">
<plot flip_y="false" flip_x="false" style="Lines" mode="TimeSeries">
<range left="0.000000" right="1678.753571" bottom="-0.025000" top="1.025000"/>
<limitY/>
<curve name="/gpsLocationExternal/hasFix" color="#1f77b4"/>
</plot>
</DockArea>
<DockArea name="...">
<plot flip_y="false" flip_x="false" style="Lines" mode="TimeSeries">
<range left="0.000000" right="1678.753571" bottom="-0.425000" top="17.425000"/>
<limitY/>
<curve name="/gpsLocationExternal/satelliteCount" color="#d62728"/>
</plot>
</DockArea>
<DockArea name="...">
<plot flip_y="false" flip_x="false" style="Lines" mode="TimeSeries">
<range left="0.000000" right="1678.753571" bottom="0.000000" top="3.000000"/>
<limitY max="3" min="0"/>
<curve name="/gpsLocationExternal/horizontalAccuracy" color="#1ac938"/>
</plot>
</DockArea>
<DockArea name="...">
<plot flip_y="false" flip_x="false" style="Lines" mode="TimeSeries">
<range left="0.000000" right="1678.753571" bottom="-17.262000" top="766.374004"/>
<limitY/>
<curve name="/gpsLocationExternal/horizontalAccuracy" color="#1ac938"/>
</plot>
</DockArea>
</DockSplitter>
</Container>
</Tab>
<currentTabIndex index="0"/>
</tabbed_widget>
<use_relative_time_offset enabled="1"/>
<!-- - - - - - - - - - - - - - - -->
<!-- - - - - - - - - - - - - - - -->
<Plugins>
<plugin ID="DataLoad CSV">
<default time_axis="" delimiter="0"/>
</plugin>
<plugin ID="DataLoad Rlog"/>
<plugin ID="DataLoad ULog"/>
<plugin ID="Cereal Subscriber"/>
<plugin ID="UDP Server"/>
<plugin ID="WebSocket Server"/>
<plugin ID="ZMQ Subscriber"/>
<plugin ID="Fast Fourier Transform"/>
<plugin ID="Quaternion to RPY"/>
<plugin ID="CSV Exporter"/>
</Plugins>
<!-- - - - - - - - - - - - - - - -->
<customMathEquations/>
<snippets/>
<!-- - - - - - - - - - - - - - - -->
</root>
+82
View File
@@ -0,0 +1,82 @@
<?xml version='1.0' encoding='UTF-8'?>
<root>
<tabbed_widget name="Main Window" parent="main_window">
<Tab tab_name="tab1" containers="1">
<Container>
<DockSplitter count="3" sizes="0.333805;0.33239;0.333805" orientation="-">
<DockArea name="...">
<plot mode="TimeSeries" style="Lines" flip_y="false" flip_x="false">
<range bottom="0.368228" right="196.811937" left="76.646983" top="32.070386"/>
<limitY/>
<curve name="haversine distance [m]" color="#1f77b4"/>
</plot>
</DockArea>
<DockArea name="...">
<plot mode="TimeSeries" style="Lines" flip_y="false" flip_x="false">
<range bottom="-0.259115" right="196.811937" left="76.646983" top="12.637299"/>
<limitY/>
<curve name="/carState/vEgo" color="#17becf"/>
<curve name="/gpsLocationExternal/speed" color="#bcbd22"/>
</plot>
</DockArea>
<DockSplitter count="2" sizes="0.500516;0.499484" orientation="|">
<DockArea name="...">
<plot mode="TimeSeries" style="Lines" flip_y="false" flip_x="false">
<range bottom="-0.100000" right="196.811937" left="76.646983" top="0.100000"/>
<limitY/>
<curve name="/liveLocationKalmanDEPRECATED/positionGeodetic/std/0" color="#d62728"/>
<curve name="/liveLocationKalmanDEPRECATED/positionGeodetic/std/1" color="#1ac938"/>
</plot>
</DockArea>
<DockArea name="...">
<plot mode="TimeSeries" style="Lines" flip_y="false" flip_x="false">
<range bottom="-0.449385" right="196.811937" left="76.646983" top="7.160833"/>
<limitY/>
<curve name="/gpsLocationExternal/horizontalAccuracy" color="#ff7f0e"/>
<curve name="/gpsLocationExternal/verticalAccuracy" color="#f14cc1"/>
<curve name="/gpsLocationExternal/speedAccuracy" color="#9467bd"/>
</plot>
</DockArea>
</DockSplitter>
</DockSplitter>
</Container>
</Tab>
<currentTabIndex index="0"/>
</tabbed_widget>
<use_relative_time_offset enabled="1"/>
<!-- - - - - - - - - - - - - - - -->
<!-- - - - - - - - - - - - - - - -->
<Plugins>
<plugin ID="DataLoad Rlog"/>
<plugin ID="Cereal Subscriber"/>
</Plugins>
<!-- - - - - - - - - - - - - - - -->
<!-- - - - - - - - - - - - - - - -->
<customMathEquations>
<snippet name="haversine distance [m]">
<global>R = 6378.137 -- Radius of earth in KM</global>
<function>-- Compute the Haversine distance between
-- two points defined by latitude and longitude.
-- Return the distance in meters
lat1, lon1 = value, v1
lat2, lon2 = v2, v3
dLat = (lat2 - lat1) * math.pi / 180
dLon = (lon2 - lon1) * math.pi / 180
a = math.sin(dLat/2) * math.sin(dLat/2) +
math.cos(lat1 * math.pi / 180) * math.cos(lat2 * math.pi / 180) *
math.sin(dLon/2) * math.sin(dLon/2)
c = 2 * math.atan(math.sqrt(a), math.sqrt(1-a))
d = R * c
distance = d * 1000 -- meters
return distance</function>
<linked_source>/gpsLocationExternal/latitude</linked_source>
<additional_sources>
<v1>/gpsLocationExternal/longitude</v1>
<v2>/liveLocationKalmanDEPRECATED/positionGeodetic/value/0</v2>
<v3>/liveLocationKalmanDEPRECATED/positionGeodetic/value/1</v3>
</additional_sources>
</snippet>
</customMathEquations>
<snippets/>
<!-- - - - - - - - - - - - - - - -->
</root>
@@ -0,0 +1,100 @@
<?xml version='1.0' encoding='UTF-8'?>
<root>
<tabbed_widget name="Main Window" parent="main_window">
<Tab tab_name="tab1" containers="1">
<Container>
<DockSplitter sizes="0.166588;0.167062;0.166113;0.166588;0.167062;0.166588" orientation="-" count="6">
<DockArea name="...">
<plot flip_x="false" flip_y="false" style="Lines" mode="TimeSeries">
<range right="2280.128382" left="0.000000" top="1.025000" bottom="-0.025000"/>
<limitY/>
<curve color="#ff7f0e" name="/livePose/inputsOK"/>
</plot>
</DockArea>
<DockArea name="...">
<plot flip_x="false" flip_y="false" style="Lines" mode="TimeSeries">
<range right="2280.128382" left="0.000000" top="14.542814" bottom="-5.586039"/>
<limitY/>
<curve color="#f14cc1" name="/accelerometer/acceleration/v/0"/>
<curve color="#9467bd" name="/accelerometer/acceleration/v/1"/>
<curve color="#17becf" name="/accelerometer/acceleration/v/2"/>
</plot>
</DockArea>
<DockArea name="...">
<plot flip_x="false" flip_y="false" style="Lines" mode="TimeSeries">
<range right="2280.128382" left="0.000000" top="0.988911" bottom="-0.745939"/>
<limitY/>
<curve color="#d62728" name="/gyroscope/gyroUncalibrated/v/0"/>
<curve color="#1ac938" name="/gyroscope/gyroUncalibrated/v/1"/>
<curve color="#ff7f0e" name="/gyroscope/gyroUncalibrated/v/2"/>
</plot>
</DockArea>
<DockArea name="...">
<plot flip_x="false" flip_y="false" style="Lines" mode="TimeSeries">
<range right="2280.128382" left="0.000000" top="1.025000" bottom="-0.025000"/>
<limitY/>
<curve color="#17becf" name="/accelerometer/__valid"/>
<curve color="#bcbd22" name="/gyroscope/__valid"/>
<curve color="#f14cc1" name="/carState/__valid"/>
<curve color="#1ac938" name="/liveCalibration/__valid"/>
<curve color="#9467bd" name="/cameraOdometry/__valid"/>
</plot>
</DockArea>
<DockArea name="...">
<plot flip_x="false" flip_y="false" style="Lines" mode="TimeSeries">
<range right="2280.128382" left="0.000000" top="1000000000.292252" bottom="999999999.735447"/>
<limitY/>
<curve color="#1f77b4" name="/gyroscope/__logMonoTime">
<transform alias="/gyroscope/__logMonoTime[Derivative]" name="Derivative">
<options lineEdit="1.0" radioChecked="radioActual"/>
</transform>
</curve>
<curve color="#d62728" name="/accelerometer/__logMonoTime">
<transform alias="/accelerometer/__logMonoTime[Derivative]" name="Derivative">
<options lineEdit="1.0" radioChecked="radioActual"/>
</transform>
</curve>
</plot>
</DockArea>
<DockArea name="...">
<plot flip_x="false" flip_y="false" style="Lines" mode="TimeSeries">
<range right="2280.128382" left="0.000000" top="20790107743.932232" bottom="-529653831.495853"/>
<limitY/>
<curve color="#bcbd22" name="/accelerometer/timestamp">
<transform alias="/accelerometer/timestamp[Derivative]" name="Derivative">
<options lineEdit="1.0" radioChecked="radioActual"/>
</transform>
</curve>
<curve color="#1f77b4" name="/gyroscope/timestamp">
<transform alias="/gyroscope/timestamp[Derivative]" name="Derivative">
<options lineEdit="1.0" radioChecked="radioActual"/>
</transform>
</curve>
</plot>
</DockArea>
</DockSplitter>
</Container>
</Tab>
<currentTabIndex index="0"/>
</tabbed_widget>
<use_relative_time_offset enabled="1"/>
<!-- - - - - - - - - - - - - - - -->
<!-- - - - - - - - - - - - - - - -->
<Plugins>
<plugin ID="DataLoad CSV">
<default delimiter="0" time_axis=""/>
</plugin>
<plugin ID="DataLoad Rlog"/>
<plugin ID="DataLoad ULog"/>
<plugin ID="Cereal Subscriber"/>
<plugin ID="UDP Server"/>
<plugin ID="ZMQ Subscriber"/>
<plugin ID="Fast Fourier Transform"/>
<plugin ID="Quaternion to RPY"/>
<plugin ID="CSV Exporter"/>
</Plugins>
<!-- - - - - - - - - - - - - - - -->
<!-- - - - - - - - - - - - - - - -->
<!-- - - - - - - - - - - - - - - -->
</root>
@@ -0,0 +1,60 @@
<?xml version='1.0' encoding='UTF-8'?>
<root>
<tabbed_widget name="Main Window" parent="main_window">
<Tab tab_name="tab1" containers="1">
<Container>
<DockSplitter orientation="-" sizes="0.250401;0.249599;0.250401;0.249599" count="4">
<DockArea name="...">
<plot flip_y="false" flip_x="false" mode="TimeSeries" style="Lines">
<range right="126.285782" top="1.391623" left="104.907277" bottom="-2.563614"/>
<limitY/>
<curve name="/carState/aEgo" color="#f14cc1"/>
<curve name="/longitudinalPlan/accels/0" color="#9467bd"/>
<curve name="/carControl/actuators/accel" color="#17becf"/>
<curve name="/carOutput/actuatorsOutput/accel" color="#d62728"/>
</plot>
</DockArea>
<DockArea name="...">
<plot flip_y="false" flip_x="false" mode="TimeSeries" style="Lines">
<range right="126.285782" top="1.184960" left="104.907277" bottom="-1.811222" />
<limitY/>
<curve name="/controlsState/upAccelCmd" color="#1f77b4"/>
<curve name="/controlsState/uiAccelCmd" color="#d62728"/>
<curve name="/controlsState/ufAccelCmd" color="#1ac938"/>
</plot>
</DockArea>
<DockArea name="...">
<plot flip_y="false" flip_x="false" mode="TimeSeries" style="Lines">
<range right="126.285782" top="15.862889" left="104.907277" bottom="-0.568809" />
<limitY/>
<curve name="/carState/vEgo" color="#1ac938"/>
<curve name="/longitudinalPlan/speeds/0" color="#ff7f0e"/>
</plot>
</DockArea>
<DockArea name="...">
<plot flip_y="false" flip_x="false" mode="TimeSeries" style="Lines">
<range right="126.285782" top="1.025000" left="104.907277" bottom="-0.025000" />
<limitY/>
<curve name="/carControl/longActive" color="#1f77b4"/>
<curve name="/carState/gasPressed" color="#d62728"/>
</plot>
</DockArea>
</DockSplitter>
</Container>
</Tab>
<currentTabIndex index="0"/>
</tabbed_widget>
<use_relative_time_offset enabled="1"/>
<!-- - - - - - - - - - - - - - - -->
<!-- - - - - - - - - - - - - - - -->
<Plugins>
<plugin ID="DataLoad Rlog"/>
<plugin ID="Cereal Subscriber"/>
</Plugins>
<!-- - - - - - - - - - - - - - - -->
<!-- - - - - - - - - - - - - - - -->
<customMathEquations/>
<snippets/>
<!-- - - - - - - - - - - - - - - -->
</root>
@@ -0,0 +1,92 @@
<?xml version='1.0' encoding='UTF-8'?>
<root>
<tabbed_widget name="Main Window" parent="main_window">
<Tab containers="1" tab_name="tab1">
<Container>
<DockSplitter orientation="-" count="4" sizes="0.249724;0.250829;0.249724;0.249724">
<DockArea name="...">
<plot flip_y="false" style="Lines" flip_x="false" mode="TimeSeries">
<range left="0.000450" top="6.050533" right="2483.624998" bottom="-7.599037"/>
<limitY/>
<curve color="#1ac938" name="Actual lateral accel (roll compensated)"/>
<curve color="#ff7f0e" name="Desired lateral accel (roll compensated)"/>
</plot>
</DockArea>
<DockArea name="...">
<plot flip_y="false" style="Lines" flip_x="false" mode="TimeSeries">
<range left="0.000450" top="5.384416" right="2483.624998" bottom="-7.503945"/>
<limitY/>
<curve color="#1ac938" name="roll compensated lateral acceleration"/>
</plot>
</DockArea>
<DockArea name="...">
<plot flip_y="false" style="Lines" flip_x="false" mode="TimeSeries">
<range left="0.000450" top="1.050000" right="2483.624998" bottom="-1.050000"/>
<limitY/>
<curve color="#0097ff" name="/carState/steeringPressed"/>
<curve color="#d62728" name="/carOutput/actuatorsOutput/torque"/>
</plot>
</DockArea>
<DockArea name="...">
<plot flip_y="false" style="Lines" flip_x="false" mode="TimeSeries">
<range left="0.000450" top="80.762969" right="2483.624998" bottom="-2.181837"/>
<limitY/>
<curve color="#f14cc1" name="/carState/vEgo">
<transform alias="/carState/vEgo[Scale/Offset]" name="Scale/Offset">
<options value_offset="0" time_offset="0" value_scale="2.23694"/>
</transform>
</curve>
</plot>
</DockArea>
</DockSplitter>
</Container>
</Tab>
<currentTabIndex index="0"/>
</tabbed_widget>
<use_relative_time_offset enabled="1"/>
<!-- - - - - - - - - - - - - - - -->
<!-- - - - - - - - - - - - - - - -->
<Plugins>
<plugin ID="DataLoad Rlog"/>
<plugin ID="Cereal Subscriber"/>
</Plugins>
<!-- - - - - - - - - - - - - - - -->
<!-- - - - - - - - - - - - - - - -->
<customMathEquations>
<snippet name="roll compensated lateral acceleration">
<global></global>
<function>if (v3 == 0 and v4 == 1) then
return (value * v1 ^ 2) - (v2 * 9.81)
end
return 0</function>
<linked_source>/controlsState/curvature</linked_source>
<additional_sources>
<v1>/carState/vEgo</v1>
<v2>/liveParameters/roll</v2>
<v3>/carState/steeringPressed</v3>
<v4>/carControl/latActive</v4>
</additional_sources>
</snippet>
<snippet name="Desired lateral accel (roll compensated)">
<global></global>
<function>return (value * v1 ^ 2) - (v2 * 9.81)</function>
<linked_source>/controlsState/desiredCurvature</linked_source>
<additional_sources>
<v1>/carState/vEgo</v1>
<v2>/liveParameters/roll</v2>
</additional_sources>
</snippet>
<snippet name="Actual lateral accel (roll compensated)">
<global></global>
<function>return (value * v1 ^ 2) - (v2 * 9.81)</function>
<linked_source>/controlsState/curvature</linked_source>
<additional_sources>
<v1>/carState/vEgo</v1>
<v2>/liveParameters/roll</v2>
</additional_sources>
</snippet>
</customMathEquations>
<snippets/>
<!-- - - - - - - - - - - - - - - -->
</root>
@@ -0,0 +1,66 @@
<?xml version='1.0' encoding='UTF-8'?>
<root>
<tabbed_widget name="Main Window" parent="main_window">
<Tab tab_name="tab1" containers="1">
<Container>
<DockSplitter orientation="-" count="4" sizes="0.249729;0.250814;0.249729;0.249729">
<DockArea name="...">
<plot mode="TimeSeries" flip_x="false" flip_y="false" style="Lines">
<range top="102.500000" right="59.992103" left="0.000000" bottom="-2.500000"/>
<limitY/>
<curve name="/deviceState/cpuUsagePercent/0" color="#1f77b4"/>
<curve name="/deviceState/cpuUsagePercent/1" color="#d62728"/>
<curve name="/deviceState/cpuUsagePercent/2" color="#1ac938"/>
<curve name="/deviceState/cpuUsagePercent/3" color="#ff7f0e"/>
<curve name="/deviceState/cpuUsagePercent/4" color="#f14cc1"/>
<curve name="/deviceState/cpuUsagePercent/5" color="#9467bd"/>
<curve name="/deviceState/cpuUsagePercent/6" color="#17becf"/>
<curve name="/deviceState/cpuUsagePercent/7" color="#bcbd22"/>
</plot>
</DockArea>
<DockArea name="...">
<plot mode="TimeSeries" flip_x="false" flip_y="false" style="Lines">
<range top="64.005001" right="59.992103" left="0.000000" bottom="51.195000"/>
<limitY/>
<curve name="/deviceState/cpuTempC/0" color="#d62728"/>
<curve name="/deviceState/cpuTempC/1" color="#1ac938"/>
<curve name="/deviceState/cpuTempC/2" color="#ff7f0e"/>
<curve name="/deviceState/cpuTempC/3" color="#f14cc1"/>
<curve name="/deviceState/cpuTempC/4" color="#9467bd"/>
<curve name="/deviceState/cpuTempC/5" color="#17becf"/>
<curve name="/deviceState/cpuTempC/6" color="#bcbd22"/>
<curve name="/deviceState/cpuTempC/7" color="#1f77b4"/>
<curve name="/deviceState/gpuTempC/0" color="#d62728"/>
<curve name="/deviceState/gpuTempC/1" color="#1ac938"/>
</plot>
</DockArea>
<DockArea name="...">
<plot mode="TimeSeries" flip_x="false" flip_y="false" style="Lines">
<range top="37.371108" right="59.992103" left="0.000000" bottom="-0.911490"/>
<limitY/>
<curve name="/modelV2/frameDropPerc" color="#f14cc1"/>
</plot>
</DockArea>
<DockArea name="...">
<plot mode="TimeSeries" flip_x="false" flip_y="false" style="Lines">
<range top="-3.593455" right="59.992103" left="0.000000" bottom="-12.190956"/>
<limitY/>
<curve name="/carState/cumLagMs" color="#9467bd"/>
</plot>
</DockArea>
</DockSplitter>
</Container>
</Tab>
<currentTabIndex index="0"/>
</tabbed_widget>
<use_relative_time_offset enabled="1"/>
<!-- - - - - - - - - - - - - - - -->
<!-- - - - - - - - - - - - - - - -->
<Plugins>
<plugin ID="DataLoad Rlog"/>
<plugin ID="Cereal Subscriber"/>
</Plugins>
<!-- - - - - - - - - - - - - - - -->
<!-- - - - - - - - - - - - - - - -->
<!-- - - - - - - - - - - - - - - -->
</root>
+107
View File
@@ -0,0 +1,107 @@
<?xml version='1.0' encoding='UTF-8'?>
<root>
<tabbed_widget name="Main Window" parent="main_window">
<Tab containers="1" tab_name="tab1">
<Container>
<DockSplitter count="6" orientation="-" sizes="0.166785;0.166785;0.166075;0.166785;0.166785;0.166785">
<DockArea name="...">
<plot flip_y="false" style="Lines" mode="TimeSeries" flip_x="false">
<range left="0.006955" top="87.987497" bottom="75.912497" right="301.842654"/>
<limitY/>
<curve name="/deviceState/cpuTempC/0" color="#1f77b4"/>
<curve name="/deviceState/cpuTempC/1" color="#d62728"/>
<curve name="/deviceState/cpuTempC/2" color="#1ac938"/>
<curve name="/deviceState/cpuTempC/3" color="#ff7f0e"/>
<curve name="/deviceState/cpuTempC/4" color="#f14cc1"/>
<curve name="/deviceState/cpuTempC/5" color="#9467bd"/>
<curve name="/deviceState/cpuTempC/6" color="#17becf"/>
<curve name="/deviceState/cpuTempC/7" color="#bcbd22"/>
</plot>
</DockArea>
<DockArea name="...">
<plot flip_y="false" style="Lines" mode="TimeSeries" flip_x="false">
<range left="0.006955" top="85.861052" bottom="66.496950" right="301.842654"/>
<limitY/>
<curve name="/deviceState/pmicTempC/0" color="#1f77b4"/>
<curve name="/deviceState/gpuTempC/0" color="#d62728"/>
<curve name="/deviceState/gpuTempC/1" color="#1ac938"/>
<curve name="/deviceState/memoryTempC" color="#f14cc1"/>
</plot>
</DockArea>
<DockArea name="...">
<plot flip_y="false" style="Lines" mode="TimeSeries" flip_x="false">
<range left="0.006955" top="86.207876" bottom="70.665918" right="301.842654"/>
<limitY/>
<curve name="/deviceState/maxTempC" color="#1f77b4"/>
</plot>
</DockArea>
<DockArea name="...">
<plot flip_y="false" style="Lines" mode="TimeSeries" flip_x="false">
<range left="0.006955" top="1.025000" bottom="-0.025000" right="301.842654"/>
<limitY/>
<curve name="/deviceState/thermalStatus" color="#1f77b4"/>
</plot>
</DockArea>
<DockSplitter count="3" orientation="|" sizes="0.333124;0.333752;0.333124">
<DockArea name="...">
<plot flip_y="false" style="Lines" mode="TimeSeries" flip_x="false">
<range left="0.006955" top="12.057358" bottom="4.843517" right="301.842654"/>
<limitY/>
<curve name="/deviceState/powerDrawW" color="#ff7f0e"/>
</plot>
</DockArea>
<DockArea name="...">
<plot flip_y="false" style="Lines" mode="TimeSeries" flip_x="false">
<range left="0.006955" top="100.000000" bottom="0.000000" right="301.842654"/>
<limitY min="0" max="100"/>
<curve name="/deviceState/fanSpeedPercentDesired" color="#9467bd"/>
<curve name="/pandaStates/0/fanPower" color="#1f77b4"/>
</plot>
</DockArea>
<DockArea name="...">
<plot flip_y="false" style="Lines" mode="TimeSeries" flip_x="false">
<range left="0.006955" top="5018.400000" bottom="255.600000" right="301.842654"/>
<limitY/>
<curve name="/peripheralState/fanSpeedRpm" color="#1f77b4"/>
</plot>
</DockArea>
</DockSplitter>
<DockSplitter count="2" orientation="|" sizes="0.502513;0.497487">
<DockArea name="...">
<plot flip_y="false" style="Lines" mode="TimeSeries" flip_x="false">
<range left="0.006955" top="100.025000" bottom="14.975000" right="301.842654"/>
<limitY/>
<curve name="/deviceState/cpuUsagePercent/0" color="#1f77b4"/>
<curve name="/deviceState/cpuUsagePercent/1" color="#d62728"/>
<curve name="/deviceState/cpuUsagePercent/2" color="#1ac938"/>
<curve name="/deviceState/cpuUsagePercent/3" color="#ff7f0e"/>
</plot>
</DockArea>
<DockArea name="...">
<plot flip_y="false" style="Lines" mode="TimeSeries" flip_x="false">
<range left="0.006955" top="102.500000" bottom="-2.500000" right="301.842654"/>
<limitY/>
<curve name="/deviceState/cpuUsagePercent/4" color="#f14cc1"/>
<curve name="/deviceState/cpuUsagePercent/5" color="#9467bd"/>
<curve name="/deviceState/cpuUsagePercent/6" color="#17becf"/>
<curve name="/deviceState/cpuUsagePercent/7" color="#bcbd22"/>
</plot>
</DockArea>
</DockSplitter>
</DockSplitter>
</Container>
</Tab>
<currentTabIndex index="0"/>
</tabbed_widget>
<use_relative_time_offset enabled="1"/>
<!-- - - - - - - - - - - - - - - -->
<!-- - - - - - - - - - - - - - - -->
<Plugins>
<plugin ID="DataLoad Rlog"/>
<plugin ID="Cereal Subscriber"/>
</Plugins>
<customMathEquations/>
<snippets/>
<!-- - - - - - - - - - - - - - - -->
</root>
@@ -0,0 +1,250 @@
<?xml version='1.0' encoding='UTF-8'?>
<root>
<tabbed_widget name="Main Window" parent="main_window">
<Tab containers="1" tab_name="Lateral Plan Conformance">
<Container>
<DockSplitter orientation="-" count="4" sizes="0.250949;0.249051;0.250949;0.249051">
<DockArea name="desired vs actual lateral acceleration (closer means better conformance to plan)">
<plot flip_y="false" style="Lines" mode="TimeSeries" flip_x="false">
<range top="1.858161" bottom="-1.823407" right="1138.891674" left="0.000194"/>
<limitY/>
<curve name="/controlsState/lateralControlState/torqueState/actualLateralAccel" color="#1f77b4"/>
<curve name="/controlsState/lateralControlState/torqueState/desiredLateralAccel" color="#d62728"/>
</plot>
</DockArea>
<DockArea name="desired vs actual lateral acceleration, road-roll factored out (closer means better conformance to plan)">
<plot flip_y="false" style="Lines" mode="TimeSeries" flip_x="false">
<range top="2.749816" bottom="-3.723091" right="1138.891674" left="0.000194"/>
<limitY/>
<curve name="Actual lateral accel (roll compensated)" color="#1ac938"/>
<curve name="Desired lateral accel (roll compensated)" color="#ff7f0e"/>
</plot>
</DockArea>
<DockArea name="controller feed-forward vs actuator output (closer means controller prediction is more accurate)">
<plot flip_y="false" style="Lines" mode="TimeSeries" flip_x="false">
<range top="1.978032" bottom="-1.570956" right="1138.891674" left="0.000194"/>
<limitY/>
<curve name="/carOutput/actuatorsOutput/torque" color="#9467bd">
<transform alias="/carOutput/actuatorsOutput/torque[Scale/Offset]" name="Scale/Offset">
<options value_offset="0" value_scale="-1" time_offset="0"/>
</transform>
</curve>
<curve name="/controlsState/lateralControlState/torqueState/f" color="#1f77b4"/>
<curve name="/carState/steeringPressed" color="#ff000f"/>
</plot>
</DockArea>
<DockArea name="vehicle speed">
<plot flip_y="false" style="Lines" mode="TimeSeries" flip_x="false">
<range top="105.981304" bottom="-2.709314" right="1138.891674" left="0.000194"/>
<limitY/>
<curve name="carState.vEgo mph" color="#d62728"/>
<curve name="carState.vEgo kmh" color="#1ac938"/>
<curve name="/carState/vEgo" color="#ff7f0e"/>
</plot>
</DockArea>
</DockSplitter>
</Container>
</Tab>
<Tab containers="1" tab_name="Vehicle Dynamics">
<Container>
<DockSplitter orientation="-" count="3" sizes="0.334282;0.331437;0.334282">
<DockArea name="configured-initial vs online-learned steerRatio, set configured value to match learned">
<plot flip_y="false" style="Lines" mode="TimeSeries" flip_x="false">
<range top="19.665784" bottom="19.359553" right="1138.816328" left="0.000000"/>
<limitY/>
<curve name="/carParams/steerRatio" color="#1f77b4"/>
<curve name="/liveParameters/steerRatio" color="#1ac938"/>
</plot>
</DockArea>
<DockArea name="configured-initial vs online-learned tireStiffnessRatio, set configured value to match learned">
<plot flip_y="false" style="Lines" mode="TimeSeries" flip_x="false">
<range top="1.112210" bottom="0.995631" right="1138.816328" left="0.000000"/>
<limitY/>
<curve name="/carParams/tireStiffnessFactor" color="#d62728"/>
<curve name="/liveParameters/stiffnessFactor" color="#ff7f0e"/>
</plot>
</DockArea>
<DockArea name="live steering angle offsets for straight-ahead driving, large values here may indicate alignment problems">
<plot flip_y="false" style="Lines" mode="TimeSeries" flip_x="false">
<range top="-1.081041" bottom="-4.494133" right="1138.816328" left="0.000000"/>
<limitY/>
<curve name="/liveParameters/angleOffsetAverageDeg" color="#f14cc1"/>
<curve name="/liveParameters/angleOffsetDeg" color="#9467bd"/>
</plot>
</DockArea>
</DockSplitter>
</Container>
</Tab>
<Tab containers="1" tab_name="Actuator Performance">
<Container>
<DockSplitter orientation="-" count="3" sizes="0.333333;0.333333;0.333333">
<DockArea name="offline-calculated vs online-learned lateral accel scaling factor, accel obtained from 100% actuator output">
<plot flip_y="false" style="Lines" mode="TimeSeries" flip_x="false">
<range top="1.216110" bottom="0.539474" right="1138.920072" left="0.000000"/>
<limitY/>
<curve name="/liveTorqueParameters/latAccelFactorFiltered" color="#1f77b4"/>
<curve name="/liveTorqueParameters/latAccelFactorRaw" color="#d62728"/>
<curve name="/carParams/lateralTuning/torque/latAccelFactor" color="#1c9222"/>
</plot>
</DockArea>
<DockArea name="learned lateral accel offset, vehicle-specific compensation to obtain true zero lateral accel">
<plot flip_y="false" style="Lines" mode="TimeSeries" flip_x="false">
<range top="-0.304367" bottom="-0.418688" right="1138.920072" left="0.000000"/>
<limitY/>
<curve name="/liveTorqueParameters/latAccelOffsetFiltered" color="#1ac938"/>
<curve name="/liveTorqueParameters/latAccelOffsetRaw" color="#ff7f0e"/>
</plot>
</DockArea>
<DockArea name="offline-calculated vs online-learned EPS friction factor, necessary to start moving the steering wheel">
<plot flip_y="false" style="Lines" mode="TimeSeries" flip_x="false">
<range top="0.226389" bottom="0.158050" right="1138.920072" left="0.000000"/>
<limitY/>
<curve name="/liveTorqueParameters/frictionCoefficientFiltered" color="#f14cc1"/>
<curve name="/liveTorqueParameters/frictionCoefficientRaw" color="#9467bd"/>
<curve name="/carParams/lateralTuning/torque/friction" color="#1c9222"/>
</plot>
</DockArea>
</DockSplitter>
</Container>
</Tab>
<Tab containers="1" tab_name="Actuator Delay">
<Container>
<DockSplitter orientation="-" count="3" sizes="0.30441;0.358464;0.337127">
<DockArea name="actuator lag learning state, 0 = learning, 1 = learned/applying, 2 = invalid">
<plot flip_y="false" style="Lines" mode="TimeSeries" flip_x="false">
<range top="1.025000" bottom="-0.025000" right="1138.749979" left="0.000000"/>
<limitY/>
<curve name="/liveDelay/status" color="#ff7f0e"/>
</plot>
</DockArea>
<DockArea name="offline default vs online estimated steering actuator lag">
<plot flip_y="false" style="Lines" mode="TimeSeries" flip_x="false">
<range top="0.419648" bottom="0.318362" right="1138.749979" left="0.000000"/>
<limitY/>
<curve name="/liveDelay/lateralDelay" color="#1f77b4"/>
<curve name="/liveDelay/lateralDelayEstimate" color="#d62728"/>
<curve name="opendbc default steering lag" color="#1ac938"/>
</plot>
</DockArea>
<DockArea name="online estimated steering actuator lag, standard deviation">
<plot flip_y="false" style="Lines" mode="TimeSeries" flip_x="false">
<range top="0.067320" bottom="-0.001642" right="1138.749979" left="0.000000"/>
<limitY/>
<curve name="/liveDelay/lateralDelayEstimateStd" color="#f14cc1"/>
</plot>
</DockArea>
</DockSplitter>
</Container>
</Tab>
<Tab containers="1" tab_name="Controls Performance">
<Container>
<DockSplitter orientation="-" count="4" sizes="0.265655;0.251898;0.245731;0.236717">
<DockArea name="rate-of-change limits on steering actuator (blue = original, green = rate-limited before CAN output)">
<plot flip_y="false" style="Lines" mode="TimeSeries" flip_x="false">
<range top="1.050000" bottom="-1.050000" right="1138.891921" left="0.000194"/>
<limitY/>
<curve name="/carControl/actuators/torque" color="#0c00f2"/>
<curve name="/carOutput/actuatorsOutput/torque" color="#2cd63a"/>
</plot>
</DockArea>
<DockArea name="controller feed-forward vs actuator output (closer means controller prediction is more accurate)">
<plot flip_y="false" style="Lines" mode="TimeSeries" flip_x="false">
<range top="1.978032" bottom="-1.570956" right="1138.891921" left="0.000194"/>
<limitY/>
<curve name="/carOutput/actuatorsOutput/torque" color="#9467bd">
<transform alias="/carOutput/actuatorsOutput/torque[Scale/Offset]" name="Scale/Offset">
<options value_offset="0" value_scale="-1.0" time_offset="0"/>
</transform>
</curve>
<curve name="/controlsState/lateralControlState/torqueState/f" color="#1f77b4"/>
<curve name="/carState/steeringPressed" color="#ff000f"/>
</plot>
</DockArea>
<DockArea name="proportional, integral, and feed-forward terms (actuator output = sum of PIF terms)">
<plot flip_y="false" style="Lines" mode="TimeSeries" flip_x="false">
<range top="2.099784" bottom="-4.027542" right="1138.891921" left="0.000194"/>
<limitY/>
<curve name="/controlsState/lateralControlState/torqueState/f" color="#0ab027"/>
<curve name="/controlsState/lateralControlState/torqueState/p" color="#d62728"/>
<curve name="/controlsState/lateralControlState/torqueState/i" color="#ffaf00"/>
<curve name="Zero" color="#756a6a"/>
</plot>
</DockArea>
<DockArea name="road roll angle, from openpilot localizer">
<plot flip_y="false" style="Lines" mode="TimeSeries" flip_x="false">
<range top="0.109446" bottom="-0.045525" right="1138.891921" left="0.000194"/>
<limitY/>
<curve name="/liveParameters/roll" color="#f14cc1"/>
</plot>
</DockArea>
</DockSplitter>
</Container>
</Tab>
<currentTabIndex index="0"/>
</tabbed_widget>
<use_relative_time_offset enabled="1"/>
<!-- - - - - - - - - - - - - - - -->
<!-- - - - - - - - - - - - - - - -->
<Plugins>
<plugin ID="DataLoad CSV">
<default delimiter="0" time_axis=""/>
</plugin>
<plugin ID="DataLoad Rlog"/>
<plugin ID="DataLoad ULog"/>
<plugin ID="Cereal Subscriber"/>
<plugin ID="UDP Server"/>
<plugin ID="ZMQ Subscriber"/>
<plugin ID="Fast Fourier Transform"/>
<plugin ID="Quaternion to RPY"/>
<plugin ID="Reactive Script Editor">
<library code="--[[ Helper function to create a series from arrays&#xa;&#xa; new_series: a series previously created with ScatterXY.new(name)&#xa; prefix: prefix of the timeseries, before the index of the array&#xa; suffix_X: suffix to complete the name of the series containing the X value. If [nil], use the index of the array.&#xa; suffix_Y: suffix to complete the name of the series containing the Y value&#xa; timestamp: usually the tracker_time variable&#xa; &#xa; Example:&#xa; &#xa; Assuming we have multiple series in the form:&#xa; &#xa; /trajectory/node.{X}/position/x&#xa; /trajectory/node.{X}/position/y&#xa; &#xa; where {N} is the index of the array (integer). We can create a reactive series from the array with:&#xa; &#xa; new_series = ScatterXY.new(&quot;my_trajectory&quot;) &#xa; CreateSeriesFromArray( new_series, &quot;/trajectory/node&quot;, &quot;position/x&quot;, &quot;position/y&quot;, tracker_time );&#xa;--]]&#xa;&#xa;function CreateSeriesFromArray( new_series, prefix, suffix_X, suffix_Y, timestamp )&#xa; &#xa; --- clear previous values&#xa; new_series:clear()&#xa; &#xa; --- Append points to new_series&#xa; index = 0&#xa; while(true) do&#xa;&#xa; x = index;&#xa; -- if not nil, get the X coordinate from a series&#xa; if suffix_X ~= nil then &#xa; series_x = TimeseriesView.find( string.format( &quot;%s.%d/%s&quot;, prefix, index, suffix_X) )&#xa; if series_x == nil then break end&#xa; x = series_x:atTime(timestamp)&#x9; &#xa; end&#xa; &#xa; series_y = TimeseriesView.find( string.format( &quot;%s.%d/%s&quot;, prefix, index, suffix_Y) )&#xa; if series_y == nil then break end &#xa; y = series_y:atTime(timestamp)&#xa; &#xa; new_series:push_back(x,y)&#xa; index = index+1&#xa; end&#xa;end&#xa;&#xa;--[[ Similar to the built-in function GetSeriesNames(), but select only the names with a give prefix. --]]&#xa;&#xa;function GetSeriesNamesByPrefix(prefix)&#xa; -- GetSeriesNames(9 is a built-in function&#xa; all_names = GetSeriesNames()&#xa; filtered_names = {}&#xa; for i, name in ipairs(all_names) do&#xa; -- check the prefix&#xa; if name:find(prefix, 1, #prefix) then&#xa; table.insert(filtered_names, name);&#xa; end&#xa; end&#xa; return filtered_names&#xa;end&#xa;&#xa;--[[ Modify an existing series, applying offsets to all their X and Y values&#xa;&#xa; series: an existing timeseries, obtained with TimeseriesView.find(name)&#xa; delta_x: offset to apply to each x value&#xa; delta_y: offset to apply to each y value &#xa; &#xa;--]]&#xa;&#xa;function ApplyOffsetInPlace(series, delta_x, delta_y)&#xa; -- use C++ indeces, not Lua indeces&#xa; for index=0, series:size()-1 do&#xa; x,y = series:at(index)&#xa; series:set(index, x + delta_x, y + delta_y)&#xa; end&#xa;end&#xa;"/>
<scripts/>
</plugin>
<plugin ID="CSV Exporter"/>
</Plugins>
<!-- - - - - - - - - - - - - - - -->
<!-- - - - - - - - - - - - - - - -->
<customMathEquations>
<snippet name="carState.vEgo kmh">
<global></global>
<function>return value * 3.6</function>
<linked_source>/carState/vEgo</linked_source>
</snippet>
<snippet name="carState.vEgo mph">
<global></global>
<function>return value * 2.23694</function>
<linked_source>/carState/vEgo</linked_source>
</snippet>
<snippet name="Desired lateral accel (roll compensated)">
<global></global>
<function>return (value * v1 ^ 2) - (v2 * 9.81)</function>
<linked_source>/controlsState/desiredCurvature</linked_source>
<additional_sources>
<v1>/carState/vEgo</v1>
<v2>/liveParameters/roll</v2>
</additional_sources>
</snippet>
<snippet name="Actual lateral accel (roll compensated)">
<global></global>
<function>return (value * v1 ^ 2) - (v2 * 9.81)</function>
<linked_source>/controlsState/curvature</linked_source>
<additional_sources>
<v1>/carState/vEgo</v1>
<v2>/liveParameters/roll</v2>
</additional_sources>
</snippet>
<snippet name="opendbc default steering lag">
<global></global>
<function>return value + 0.2</function>
<linked_source>/carParams/steerActuatorDelay</linked_source>
</snippet>
<snippet name="Zero">
<global></global>
<function>return (0)</function>
<linked_source>/carState/canValid</linked_source>
</snippet>
</customMathEquations>
<snippets/>
<!-- - - - - - - - - - - - - - - -->
</root>
+300
View File
@@ -0,0 +1,300 @@
<?xml version='1.0' encoding='UTF-8'?>
<root version="2.3.8">
<tabbed_widget parent="main_window" name="Main Window">
<Tab tab_name="Lateral" containers="1">
<Container>
<DockSplitter orientation="-" count="5" sizes="0.200458;0.199313;0.200458;0.199313;0.200458">
<DockArea name="Velocity [m/s]">
<plot style="Lines" mode="TimeSeries">
<range left="1.253354" top="29.954036" bottom="-0.841715" right="631.055584"/>
<limitY/>
<curve color="#0072b2" name="/carState/vEgo"/>
</plot>
</DockArea>
<DockArea name="Curvature [1/m] True [blue] Vehicle Model [purple] Plan [green]">
<plot style="Lines" mode="TimeSeries">
<range left="0.000000" top="0.006648" bottom="-0.003150" right="631.055209"/>
<limitY/>
<curve color="#009e73" name="engaged curvature plan"/>
<curve color="#785ef0" name="engaged curvature vehicle model"/>
<curve color="#0072b2" name="engaged curvature yaw"/>
</plot>
</DockArea>
<DockArea name="Roll [rad]">
<plot style="Lines" mode="TimeSeries">
<range left="0.000000" top="0.166067" bottom="-1.598381" right="631.038276"/>
<limitY/>
<curve color="#ffb000" name="/carControl/orientationNED/0"/>
</plot>
</DockArea>
<DockArea name="Engaged [green] Steering Pressed [blue]">
<plot style="Lines" mode="TimeSeries">
<range left="1.252984" top="1.025000" bottom="-0.025000" right="631.055584"/>
<limitY/>
<curve color="#009e73" name="/selfdriveState/enabled"/>
<curve color="#0072b2" name="/carState/steeringPressed"/>
</plot>
</DockArea>
<DockArea name="Steering Limited: Rate [orange] Saturated [magenta]">
<plot style="Lines" mode="TimeSeries">
<range left="1.253354" top="1.025000" bottom="-0.025000" right="631.055584"/>
<limitY/>
<curve name="steering rate limited" color="#ffb000"/>
<curve name="/controlsState/lateralControlState/pidState/saturated" color="#dc267f"/>
</plot>
</DockArea>
</DockSplitter>
</Container>
</Tab>
<Tab tab_name="Longitudinal" containers="1">
<Container>
<DockSplitter orientation="-" count="5" sizes="0.1875;0.1875;0.1875;0.1875;0.25">
<DockArea name="Velocity [m/s] True [blue] Plan [green] Cruise [magenta]">
<plot style="Lines" mode="TimeSeries">
<range left="0.000000" top="42.713492" bottom="-1.041792" right="631.055584"/>
<limitY/>
<curve color="#dc267f" name="/carState/cruiseState/speed"/>
<curve color="#009e73" name="/longitudinalPlan/speeds/0"/>
<curve color="#0072b2" name="/carState/vEgo"/>
</plot>
</DockArea>
<DockArea name="Acceleration [m/s^2] True [blue] Actuator [purple] Plan [green]">
<plot style="Lines" mode="TimeSeries">
<range left="1.253354" top="0.808303" bottom="-1.213305" right="631.055759"/>
<limitY/>
<curve color="#009e73" name="engaged_accel_plan"/>
<curve color="#785ef0" name="engaged_accel_actuator"/>
<curve color="#0072b2" name="engaged_accel_actual"/>
</plot>
</DockArea>
<DockArea name="Pitch [rad]">
<plot style="Lines" mode="TimeSeries">
<range left="0.000000" top="0.158854" bottom="-0.594843" right="631.038276"/>
<limitY/>
<curve color="#ffb000" name="/carControl/orientationNED/1"/>
</plot>
</DockArea>
<DockArea name="Engaged [green] Gas [orange] Brake [magenta]">
<plot style="Lines" mode="TimeSeries">
<range left="1.253354" top="1.025000" bottom="-0.025000" right="631.055759"/>
<limitY/>
<curve color="#009e73" name="/carControl/enabled"/>
<curve color="#ffb000" name="/carState/gasPressed"/>
<curve color="#dc267f" name="/carState/brakePressed"/>
</plot>
</DockArea>
<DockArea name="State [blue: off,pid,stop,start] Source [green: cruise,lead0,lead1,lead2,e2e]">
<plot style="Lines" mode="TimeSeries">
<range left="1.253620" top="5.125000" bottom="-0.125000" right="631.055759"/>
<limitY/>
<curve color="#0072b2" name="/carControl/actuators/longControlState"/>
<curve color="#009e73" name="/longitudinalPlan/longitudinalPlanSource"/>
</plot>
</DockArea>
</DockSplitter>
</Container>
</Tab>
<Tab tab_name="Lateral Debug" containers="1">
<Container>
<DockSplitter orientation="-" count="4" sizes="0.25;0.25;0.25;0.25">
<DockArea name="Controller F [magenta] P [purple] I [blue]">
<plot style="Lines" mode="TimeSeries">
<range left="0.000000" top="1.000000" bottom="0.000000" right="1.000000"/>
<limitY/>
<curve name="/controlsState/lateralControlState/pidState/f" color="#f14cc1"/>
<curve name="/controlsState/lateralControlState/pidState/p" color="#9467bd"/>
<curve name="/controlsState/lateralControlState/pidState/i" color="#17becf"/>
</plot>
</DockArea>
<DockArea name="Driver Torque [blue] EPS Torque [green]">
<plot style="Lines" mode="TimeSeries">
<range left="1.253354" top="2690.999030" bottom="-3450.198981" right="631.055584"/>
<limitY/>
<curve color="#009e73" name="/carState/steeringTorqueEps"/>
<curve color="#0072b2" name="/carState/steeringTorque"/>
</plot>
</DockArea>
<DockArea name="Engaged [green] Steering Pressed [blue]">
<plot style="Lines" mode="TimeSeries">
<range left="1.253354" top="1.025000" bottom="-0.025000" right="631.055759"/>
<limitY/>
<curve color="#009e73" name="/carControl/enabled"/>
<curve color="#0072b2" name="/carState/steeringPressed"/>
</plot>
</DockArea>
<DockArea name="Steering Limited: Rate [orange] Saturated [magenta]">
<plot style="Lines" mode="TimeSeries">
<range left="1.253354" top="1.025000" bottom="-0.025000" right="631.055584"/>
<limitY/>
<curve name="steering rate limited" color="#ffb000"/>
<curve name="/controlsState/lateralControlState/pidState/saturated" color="#dc267f"/>
</plot>
</DockArea>
</DockSplitter>
</Container>
</Tab>
<currentTabIndex index="0"/>
</tabbed_widget>
<use_relative_time_offset enabled="1"/>
<!-- - - - - - - - - - - - - - - -->
<!-- - - - - - - - - - - - - - - -->
<Plugins>
<plugin ID="DataLoad Rlog"/>
<plugin ID="Cereal Subscriber"/>
</Plugins>
<!-- - - - - - - - - - - - - - - -->
<!-- - - - - - - - - - - - - - - -->
<customMathEquations>
<snippet name="engaged curvature yaw">
<global>engage_delay = 5
last_bad_time = -engage_delay</global>
<function>curvature = value / v3
pressed = v1
enabled = v2
if (pressed == 1 or enabled == 0) then
last_bad_time = time
end
if (time > last_bad_time + engage_delay) then
return curvature
else
return 0
end</function>
<linked_source>/carControl/angularVelocity/2</linked_source>
<additional_sources>
<v1>/carState/steeringPressed</v1>
<v2>/carControl/enabled</v2>
<v3>/carState/vEgo</v3>
</additional_sources>
</snippet>
<snippet name="engaged curvature vehicle model">
<global>engage_delay = 5
last_bad_time = -engage_delay</global>
<function>curvature = value
pressed = v1
enabled = v2
if (pressed == 1 or enabled == 0) then
last_bad_time = time
end
if (time > last_bad_time + engage_delay) then
return value
else
return 0
end</function>
<linked_source>/controlsState/curvature</linked_source>
<additional_sources>
<v1>/carState/steeringPressed</v1>
<v2>/carControl/enabled</v2>
</additional_sources>
</snippet>
<snippet name="engaged curvature plan">
<global>engage_delay = 5
last_bad_time = -engage_delay</global>
<function>curvature = value
pressed = v1
enabled = v2
if (pressed == 1 or enabled == 0) then
last_bad_time = time
end
if (time > last_bad_time + engage_delay) then
return value
else
return 0
end</function>
<linked_source>/modelV2/action/desiredCurvature</linked_source>
<additional_sources>
<v1>/carState/steeringPressed</v1>
<v2>/carControl/enabled</v2>
</additional_sources>
</snippet>
<snippet name="engaged_accel_actual">
<global>engage_delay = 5
last_bad_time = -engage_delay</global>
<function>accel = value
brake = v1
gas = v2
enabled = v3
if (brake ~= 0 or gas ~= 0 or enabled == 0) then
last_bad_time = time
end
if (time > last_bad_time + engage_delay) then
return value
else
return 0
end</function>
<linked_source>/carState/aEgo</linked_source>
<additional_sources>
<v1>/carState/brakePressed</v1>
<v2>/carState/gasPressed</v2>
<v3>/carControl/enabled</v3>
</additional_sources>
</snippet>
<snippet name="engaged_accel_plan">
<global>engage_delay = 5
last_bad_time = -engage_delay</global>
<function>accel = value
brake = v1
gas = v2
enabled = v3
if (brake ~= 0 or gas ~= 0 or enabled == 0) then
last_bad_time = time
end
if (time > last_bad_time + engage_delay) then
return value
else
return 0
end</function>
<linked_source>/longitudinalPlan/accels/0</linked_source>
<additional_sources>
<v1>/carState/brakePressed</v1>
<v2>/carState/gasPressed</v2>
<v3>/carControl/enabled</v3>
</additional_sources>
</snippet>
<snippet name="engaged_accel_actuator">
<global>engage_delay = 5
last_bad_time = -engage_delay</global>
<function>accel = value
brake = v1
gas = v2
enabled = v3
if (brake ~= 0 or gas ~= 0 or enabled == 0) then
last_bad_time = time
end
if (time > last_bad_time + engage_delay) then
return value
else
return 0
end</function>
<linked_source>/carControl/actuators/accel</linked_source>
<additional_sources>
<v1>/carState/brakePressed</v1>
<v2>/carState/gasPressed</v2>
<v3>/carControl/enabled</v3>
</additional_sources>
</snippet>
<snippet name="steering rate limited">
<global></global>
<function>return (math.abs(value - v1) > 0.001 or math.abs(v2 - v3) > 0.05) and 1 or 0</function>
<linked_source>/carControl/actuators/torque</linked_source>
<additional_sources>
<v1>/carOutput/actuatorsOutput/torque</v1>
<v2>/carControl/actuators/steeringAngleDeg</v2>
<v3>/carOutput/actuatorsOutput/steeringAngleDeg</v3>
</additional_sources>
</snippet>
</customMathEquations>
<snippets/>
<!-- - - - - - - - - - - - - - - -->
</root>
+44
View File
@@ -0,0 +1,44 @@
<?xml version='1.0' encoding='UTF-8'?>
<root>
<tabbed_widget name="Main Window" parent="main_window">
<Tab containers="1" tab_name="tab1">
<Container>
<DockSplitter orientation="-" sizes="0.333333;0.333333;0.333333" count="3">
<DockArea name="...">
<plot style="Lines" flip_x="false" flip_y="false" mode="TimeSeries">
<range right="134.825489" top="4402341.574525" bottom="-107369.555525" left="0.000000"/>
<limitY/>
<curve name="/gpsLocationExternal/horizontalAccuracy" color="#1f77b4"/>
</plot>
</DockArea>
<DockArea name="...">
<plot style="Lines" flip_x="false" flip_y="false" mode="TimeSeries">
<range right="134.825489" top="1.025000" bottom="-0.025000" left="0.000000"/>
<limitY/>
<curve name="/gpsLocationExternal/flags" color="#d62728"/>
</plot>
</DockArea>
<DockArea name="...">
<plot style="Lines" flip_x="false" flip_y="false" mode="TimeSeries">
<range right="134.825489" top="6.150000" bottom="-0.150000" left="0.000000"/>
<limitY/>
<curve name="/ubloxGnss/measurementReport/numMeas" color="#1ac938"/>
</plot>
</DockArea>
</DockSplitter>
</Container>
</Tab>
<currentTabIndex index="0"/>
</tabbed_widget>
<use_relative_time_offset enabled="1"/>
<!-- - - - - - - - - - - - - - - -->
<!-- - - - - - - - - - - - - - - -->
<Plugins>
<plugin ID="DataLoad Rlog"/>
<plugin ID="Cereal Subscriber"/>
</Plugins>
<customMathEquations/>
<snippets/>
<!-- - - - - - - - - - - - - - - -->
</root>