You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							250 lines
						
					
					
						
							14 KiB
						
					
					
				
			
		
		
	
	
							250 lines
						
					
					
						
							14 KiB
						
					
					
				| <?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

 new_series: a series previously created with ScatterXY.new(name)
 prefix:     prefix of the timeseries, before the index of the array
 suffix_X:   suffix to complete the name of the series containing the X value. If [nil], use the index of the array.
 suffix_Y:   suffix to complete the name of the series containing the Y value
 timestamp:   usually the tracker_time variable
              
 Example:
 
 Assuming we have multiple series in the form:
 
   /trajectory/node.{X}/position/x
   /trajectory/node.{X}/position/y
   
 where {N} is the index of the array (integer). We can create a reactive series from the array with:
 
   new_series = ScatterXY.new("my_trajectory") 
   CreateSeriesFromArray( new_series, "/trajectory/node", "position/x", "position/y", tracker_time );
--]]

function CreateSeriesFromArray( new_series, prefix, suffix_X, suffix_Y, timestamp )
  
  --- clear previous values
  new_series:clear()
  
  --- Append points to new_series
  index = 0
  while(true) do

    x = index;
    -- if not nil, get the X coordinate from a series
    if suffix_X ~= nil then 
      series_x = TimeseriesView.find( string.format( "%s.%d/%s", prefix, index, suffix_X) )
      if series_x == nil then break end
      x = series_x:atTime(timestamp)	 
    end
    
    series_y = TimeseriesView.find( string.format( "%s.%d/%s", prefix, index, suffix_Y) )
    if series_y == nil then break end 
    y = series_y:atTime(timestamp)
    
    new_series:push_back(x,y)
    index = index+1
  end
end

--[[ Similar to the built-in function GetSeriesNames(), but select only the names with a give prefix. --]]

function GetSeriesNamesByPrefix(prefix)
  -- GetSeriesNames(9 is a built-in function
  all_names = GetSeriesNames()
  filtered_names = {}
  for i, name in ipairs(all_names)  do
    -- check the prefix
    if name:find(prefix, 1, #prefix) then
      table.insert(filtered_names, name);
    end
  end
  return filtered_names
end

--[[ Modify an existing series, applying offsets to all their X and Y values

 series: an existing timeseries, obtained with TimeseriesView.find(name)
 delta_x: offset to apply to each x value
 delta_y: offset to apply to each y value 
  
--]]

function ApplyOffsetInPlace(series, delta_x, delta_y)
  -- use C++ indeces, not Lua indeces
  for index=0, series:size()-1 do
    x,y = series:at(index)
    series:set(index, x + delta_x, y + delta_y)
  end
end
"/>
 | |
|    <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>
 | |
| 
 | |
| 
 |