Files
dts-2026Presentation/create_test_modes_pptx.py

1193 lines
37 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/usr/bin/env python3
"""
Create PowerPoint presentation: Test Modes Reference
One slide per test mode with technical details
"""
from pptx import Presentation
from pptx.util import Inches, Pt
from pptx.dml.color import RGBColor
from pptx.enum.text import PP_ALIGN, MSO_ANCHOR
from pptx.enum.shapes import MSO_SHAPE
import os
# Create presentation with widescreen dimensions
prs = Presentation()
prs.slide_width = Inches(13.333)
prs.slide_height = Inches(7.5)
# Color scheme - Professional blue/gray
DARK_BLUE = RGBColor(0, 51, 102)
ACCENT_BLUE = RGBColor(0, 112, 192)
LIGHT_BLUE = RGBColor(220, 235, 250)
DARK_GRAY = RGBColor(64, 64, 64)
LIGHT_GRAY = RGBColor(240, 240, 240)
WHITE = RGBColor(255, 255, 255)
ACCENT_ORANGE = RGBColor(230, 126, 34)
def add_title_slide(title, subtitle=""):
"""Add a title slide"""
slide_layout = prs.slide_layouts[6] # Blank
slide = prs.slides.add_slide(slide_layout)
# Background shape
shape = slide.shapes.add_shape(
MSO_SHAPE.RECTANGLE, 0, 0, prs.slide_width, prs.slide_height
)
shape.fill.solid()
shape.fill.fore_color.rgb = DARK_BLUE
shape.line.fill.background()
# Title
title_box = slide.shapes.add_textbox(
Inches(0.5), Inches(2.5), Inches(12.333), Inches(1.5)
)
tf = title_box.text_frame
p = tf.paragraphs[0]
p.text = title
p.font.size = Pt(54)
p.font.bold = True
p.font.color.rgb = WHITE
p.alignment = PP_ALIGN.CENTER
if subtitle:
sub_box = slide.shapes.add_textbox(
Inches(0.5), Inches(4.2), Inches(12.333), Inches(1)
)
tf = sub_box.text_frame
p = tf.paragraphs[0]
p.text = subtitle
p.font.size = Pt(28)
p.font.color.rgb = LIGHT_BLUE
p.alignment = PP_ALIGN.CENTER
return slide
def add_section_slide(section_title, tests_list):
"""Add a section divider slide with mini TOC"""
slide_layout = prs.slide_layouts[6] # Blank
slide = prs.slides.add_slide(slide_layout)
# Left accent bar
bar = slide.shapes.add_shape(
MSO_SHAPE.RECTANGLE, 0, 0, Inches(0.3), prs.slide_height
)
bar.fill.solid()
bar.fill.fore_color.rgb = ACCENT_BLUE
bar.line.fill.background()
# Section title
title_box = slide.shapes.add_textbox(
Inches(0.8), Inches(0.5), Inches(12), Inches(1.2)
)
tf = title_box.text_frame
p = tf.paragraphs[0]
p.text = section_title
p.font.size = Pt(44)
p.font.bold = True
p.font.color.rgb = DARK_BLUE
# Subtitle
sub_box = slide.shapes.add_textbox(
Inches(0.8), Inches(1.5), Inches(12), Inches(0.5)
)
tf = sub_box.text_frame
p = tf.paragraphs[0]
p.text = "Tests in This Section:"
p.font.size = Pt(20)
p.font.color.rgb = DARK_GRAY
# Tests list
list_box = slide.shapes.add_textbox(
Inches(1.2), Inches(2.2), Inches(11), Inches(4.5)
)
tf = list_box.text_frame
tf.word_wrap = True
for i, test in enumerate(tests_list, 1):
if i == 1:
p = tf.paragraphs[0]
else:
p = tf.add_paragraph()
p.text = f"{i}. {test}"
p.font.size = Pt(22)
p.font.color.rgb = DARK_GRAY
p.space_after = Pt(8)
return slide
def add_test_slide(
test_name,
org,
year,
test_type,
purpose,
setup_data,
dummy_data,
criteria_data,
image_path=None,
note=None,
):
"""Add a test mode slide with all details"""
slide_layout = prs.slide_layouts[6] # Blank
slide = prs.slides.add_slide(slide_layout)
# Header bar
header = slide.shapes.add_shape(
MSO_SHAPE.RECTANGLE, 0, 0, prs.slide_width, Inches(1.0)
)
header.fill.solid()
header.fill.fore_color.rgb = DARK_BLUE
header.line.fill.background()
# Test name
title_box = slide.shapes.add_textbox(
Inches(0.3), Inches(0.15), Inches(10), Inches(0.7)
)
tf = title_box.text_frame
p = tf.paragraphs[0]
p.text = test_name
p.font.size = Pt(32)
p.font.bold = True
p.font.color.rgb = WHITE
# Org/Year/Type badge
badge_box = slide.shapes.add_textbox(
Inches(10.5), Inches(0.25), Inches(2.5), Inches(0.5)
)
tf = badge_box.text_frame
p = tf.paragraphs[0]
p.text = f"{org} | {year}"
p.font.size = Pt(14)
p.font.color.rgb = LIGHT_BLUE
p.alignment = PP_ALIGN.RIGHT
# Test type below badge
type_box = slide.shapes.add_textbox(
Inches(10.5), Inches(0.55), Inches(2.5), Inches(0.4)
)
tf = type_box.text_frame
p = tf.paragraphs[0]
p.text = test_type
p.font.size = Pt(12)
p.font.color.rgb = LIGHT_BLUE
p.alignment = PP_ALIGN.RIGHT
# Purpose section
purpose_label = slide.shapes.add_textbox(
Inches(0.3), Inches(1.15), Inches(2), Inches(0.3)
)
tf = purpose_label.text_frame
p = tf.paragraphs[0]
p.text = "PURPOSE"
p.font.size = Pt(12)
p.font.bold = True
p.font.color.rgb = ACCENT_BLUE
purpose_box = slide.shapes.add_textbox(
Inches(0.3), Inches(1.4), Inches(6.5), Inches(0.9)
)
tf = purpose_box.text_frame
tf.word_wrap = True
p = tf.paragraphs[0]
p.text = purpose
p.font.size = Pt(14)
p.font.color.rgb = DARK_GRAY
# Left column - Test Setup
setup_label = slide.shapes.add_textbox(
Inches(0.3), Inches(2.4), Inches(3), Inches(0.3)
)
tf = setup_label.text_frame
p = tf.paragraphs[0]
p.text = "TEST SETUP"
p.font.size = Pt(12)
p.font.bold = True
p.font.color.rgb = ACCENT_BLUE
setup_box = slide.shapes.add_textbox(
Inches(0.3), Inches(2.7), Inches(3.5), Inches(2.0)
)
tf = setup_box.text_frame
tf.word_wrap = True
for i, (param, value) in enumerate(setup_data):
if i == 0:
p = tf.paragraphs[0]
else:
p = tf.add_paragraph()
p.text = f"{param}: {value}"
p.font.size = Pt(12)
p.font.color.rgb = DARK_GRAY
p.space_after = Pt(4)
# Middle column - Dummy & Instrumentation
dummy_label = slide.shapes.add_textbox(
Inches(4.0), Inches(2.4), Inches(3.5), Inches(0.3)
)
tf = dummy_label.text_frame
p = tf.paragraphs[0]
p.text = "DUMMY & INSTRUMENTATION"
p.font.size = Pt(12)
p.font.bold = True
p.font.color.rgb = ACCENT_BLUE
dummy_box = slide.shapes.add_textbox(
Inches(4.0), Inches(2.7), Inches(3.5), Inches(2.0)
)
tf = dummy_box.text_frame
tf.word_wrap = True
for i, (item, spec) in enumerate(dummy_data):
if i == 0:
p = tf.paragraphs[0]
else:
p = tf.add_paragraph()
p.text = f"{item}: {spec}"
p.font.size = Pt(12)
p.font.color.rgb = DARK_GRAY
p.space_after = Pt(4)
# Bottom section - Injury Criteria table
criteria_label = slide.shapes.add_textbox(
Inches(0.3), Inches(4.8), Inches(3), Inches(0.3)
)
tf = criteria_label.text_frame
p = tf.paragraphs[0]
p.text = "INJURY CRITERIA & LIMITS"
p.font.size = Pt(12)
p.font.bold = True
p.font.color.rgb = ACCENT_BLUE
# Criteria as text (simplified table format)
criteria_box = slide.shapes.add_textbox(
Inches(0.3), Inches(5.1), Inches(7.5), Inches(2.2)
)
tf = criteria_box.text_frame
tf.word_wrap = True
for i, (metric, limit, region) in enumerate(criteria_data[:6]): # Limit to 6 rows
if i == 0:
p = tf.paragraphs[0]
else:
p = tf.add_paragraph()
p.text = f"{metric}: {limit} ({region})"
p.font.size = Pt(11)
p.font.color.rgb = DARK_GRAY
p.space_after = Pt(2)
# Right side - Image placeholder or actual image
if image_path and os.path.exists(image_path):
try:
slide.shapes.add_picture(
image_path, Inches(8.0), Inches(1.2), width=Inches(5.0)
)
except:
# Fallback if image fails
img_box = slide.shapes.add_shape(
MSO_SHAPE.RECTANGLE, Inches(8.0), Inches(1.2), Inches(5.0), Inches(3.5)
)
img_box.fill.solid()
img_box.fill.fore_color.rgb = LIGHT_GRAY
else:
# Image placeholder
img_box = slide.shapes.add_shape(
MSO_SHAPE.RECTANGLE, Inches(8.0), Inches(1.2), Inches(5.0), Inches(3.5)
)
img_box.fill.solid()
img_box.fill.fore_color.rgb = LIGHT_GRAY
img_box.line.color.rgb = DARK_GRAY
img_text = slide.shapes.add_textbox(
Inches(8.0), Inches(2.7), Inches(5.0), Inches(0.5)
)
tf = img_text.text_frame
p = tf.paragraphs[0]
p.text = "[Test Image]"
p.font.size = Pt(14)
p.font.color.rgb = DARK_GRAY
p.alignment = PP_ALIGN.CENTER
# Note if present
if note:
note_box = slide.shapes.add_textbox(
Inches(8.0), Inches(5.0), Inches(5.0), Inches(1.5)
)
tf = note_box.text_frame
tf.word_wrap = True
p = tf.paragraphs[0]
p.text = f"Note: {note}"
p.font.size = Pt(11)
p.font.italic = True
p.font.color.rgb = DARK_GRAY
return slide
# ============================================================================
# BUILD THE PRESENTATION
# ============================================================================
# Title slide
add_title_slide(
"Safety Test Modes Reference",
"One Slide Per Test Mode | Comprehensive Technical Guide",
)
# ============================================================================
# SECTION 1: NHTSA / FMVSS REGULATORY TESTS
# ============================================================================
add_section_slide(
"SECTION 1: NHTSA / FMVSS REGULATORY TESTS",
[
"FMVSS 208 - Full Frontal Impact",
"FMVSS 214 - Side Impact (MDB)",
"FMVSS 214 - Side Pole Impact",
"FMVSS 216 - Roof Crush Resistance",
"FMVSS 301 - Fuel System Integrity",
"FMVSS 208 - Out-of-Position (OOP)",
"FMVSS 213 - Child Restraint Systems",
"FMVSS 201 - Interior Impact (FMH)",
],
)
# FMVSS 208 - Full Frontal
add_test_slide(
"FMVSS 208 - Full Frontal Impact",
"NHTSA",
"1968/1984",
"Full Vehicle Crash Test",
"Evaluates occupant protection in head-on collisions. The most fundamental crash test - simulates striking a fixed barrier at highway speed. Forms the basis of NCAP 5-star ratings.",
[
("Speed", "35 mph (56 km/h)"),
("Barrier", "Rigid concrete wall"),
("Overlap", "100% full width"),
("Vehicle", "Production vehicle"),
("Orientation", "Perpendicular"),
],
[
("Driver ATD", "Hybrid III 50th male"),
("Passenger ATD", "Hybrid III 5th female"),
("Total Channels", "~94"),
("Key Sensors", "Head accel, chest, femur"),
],
[
("HIC15", "≤ 700", "Head"),
("Chest Accel (3ms)", "≤ 60g", "Thorax"),
("Chest Deflection", "≤ 63mm / 52mm", "Thorax"),
("Femur Load", "≤ 10 kN", "Lower Ext"),
("Nij", "≤ 1.0", "Neck"),
("Neck Tension", "≤ 4,170 N", "Neck"),
],
"assets/crash_test_dummies_subaru.jpg",
)
# FMVSS 214 - Side MDB
add_test_slide(
"FMVSS 214 - Side Impact (MDB)",
"NHTSA",
"1990",
"Full Vehicle Crash Test",
"Evaluates occupant protection when struck broadside. Side impacts are particularly dangerous - only inches separate the door from the occupant.",
[
("MDB Speed", "33.5 mph (54 km/h)"),
("MDB Mass", "3,015 lb (1,368 kg)"),
("Angle", "27° crabbed"),
("Impact Point", "Driver side, H-point"),
("Barrier Face", "Deformable honeycomb"),
],
[
("Driver ATD", "ES-2re"),
("Rear ATD", "SID-IIs (5th female)"),
("Total Channels", "~80"),
("Key Sensors", "Ribs, pelvis, abdomen"),
],
[
("HIC36", "≤ 1000", "Head"),
("Rib Deflection", "≤ 44 mm", "Thorax"),
("Lower Spine Accel", "≤ 82g", "Pelvis"),
("Abdominal Force", "≤ 2.5 kN", "Abdomen"),
("Pubic Force", "≤ 6 kN", "Pelvis"),
("V*C", "≤ 1.0 m/s", "Thorax"),
],
"assets/iihs_side_barrier.jpg",
)
# FMVSS 214 - Side Pole
add_test_slide(
"FMVSS 214 - Side Pole Impact",
"NHTSA",
"2007",
"Full Vehicle Crash Test",
"Simulates sliding sideways into a narrow object (tree, pole). Concentrates force on small area, causing severe intrusion. Side curtain airbags critical.",
[
("Speed", "20 mph (32 km/h)"),
("Pole Diameter", "254 mm (10 in)"),
("Impact Angle", "75° oblique"),
("Impact Location", "Driver head position"),
("Vehicle", "Propelled into pole"),
],
[
("Driver ATD", "ES-2re or WorldSID"),
("Total Channels", "~40"),
("Key Sensors", "Head, ribs, pelvis"),
],
[
("HIC36", "≤ 1000", "Head"),
("Rib Deflection", "≤ 44 mm", "Thorax"),
("Lower Spine Accel", "≤ 82g", "Pelvis"),
("Abdominal Force", "≤ 2.5 kN", "Abdomen"),
],
"assets/iihs_side_2021.jpg",
"Side curtain airbags became essential for passing this test.",
)
# FMVSS 216 - Roof Crush
add_test_slide(
"FMVSS 216 - Roof Crush Resistance",
"NHTSA",
"1973/2009",
"Static Test",
"Ensures roof supports vehicle weight during rollover. 2009 upgrade doubled requirement to 3x after Ford/Firestone crisis showed original 1.5x inadequate.",
[
("Test Type", "Static (no crash)"),
("Force Application", "Angled steel plate"),
("Plate Angle", "25° from horizontal"),
("Force Required", "≥ 3× vehicle weight"),
("Duration", "5 seconds"),
],
[
("ATD", "None (static test)"),
("Measurements", "Force, displacement"),
("Channels", "~4-6"),
("Key Sensors", "Load cells"),
],
[
("Strength-to-Weight", "≥ 3.0", "Structure"),
("Max Displacement", "≤ 127 mm", "Before 3×"),
("Both Sides", "Must pass", "Independent"),
],
"assets/roof_strength_test.jpg",
"Original 1.5× standard (1973) doubled to 3× in 2009.",
)
# FMVSS 301 - Fuel System
add_test_slide(
"FMVSS 301 - Fuel System Integrity",
"NHTSA",
"1968/1977",
"Full Vehicle Crash Test",
"Prevents fuel leakage after crashes to reduce fire risk. Strengthened in 1977 after infamous Ford Pinto case showed $11 fix vs. deaths calculation.",
[
("Rear Speed", "50 mph MDB"),
("Side Speed", "20 mph MDB"),
("Rollover", "360° rotation"),
("MDB Mass", "4,000 lb"),
("Duration", "5 min post-crash"),
],
[
("ATD", "None (leakage test)"),
("Measurements", "Fuel leakage volume"),
("Duration", "5 minutes static"),
],
[
("Impact Leakage", "≤ 28g", "During crash"),
("Static Leakage", "≤ 142g/min", "Post-crash"),
("Rollover Leakage", "≤ 142g/min", "Each position"),
],
"assets/cadaver_crash_test.jpg",
"Ford Pinto: 'Cheaper to let them burn' memo became infamous.",
)
# FMVSS 208 - OOP
add_test_slide(
"FMVSS 208 - Out-of-Position (OOP)",
"NHTSA",
"2000",
"Static Deployment Test",
"Ensures airbags don't injure occupants too close at deployment. Added after 175+ deaths from early aggressive airbags (mostly children and small adults).",
[
("Position 1", "Chin on module"),
("Position 2", "Chest on module"),
("Position 3", "Abdomen on module"),
("Position 4", "Child seat present"),
("Test", "Airbag deployment"),
],
[
("ATDs Used", "5th female, children"),
("Children", "6yr, 3yr, 12mo CRABI"),
("Total Channels", "~30 per test"),
("Key Sensors", "Head/neck, chest"),
],
[
("HIC15", "≤ 700", "Head"),
("Nij", "≤ 1.0", "Neck"),
("Neck Tension", "≤ 2,620 N", "Neck (5th)"),
("Chest Deflection", "≤ 52 mm", "Thorax (5th)"),
],
"assets/crabi_infant_dummy.jpg",
"Led to multi-stage airbags and suppression systems.",
)
# FMVSS 213 - Child Restraint
add_test_slide(
"FMVSS 213 - Child Restraint Systems",
"NHTSA",
"1971",
"Sled Test",
"Ensures child car seats protect children in crashes. Tests the child restraint system itself, not the vehicle. Multiple dummy sizes used.",
[
("Test Type", "Sled test"),
("Delta-V", "30 mph (48 km/h)"),
("Peak G", "23-26g"),
("Pulse Duration", "~80 ms"),
("Seat Bench", "Standardized"),
],
[
("Dummies", "CRABI, HIII 3/6/10 yr"),
("Total Channels", "~15-20 per dummy"),
("Key Sensors", "Head accel, excursion"),
],
[
("HIC36", "≤ 1000", "All dummies"),
("Head Excursion", "≤ 720 mm", "Forward"),
("Knee Excursion", "≤ 915 mm", "Forward"),
("Chest Accel (3ms)", "≤ 60g", "All"),
],
"assets/child_dummy_booster.jpg",
)
# FMVSS 201 - Interior Impact
add_test_slide(
"FMVSS 201 - Interior Impact (FMH)",
"NHTSA",
"1968/1998",
"Component Test",
"Ensures interior surfaces (pillars, header) don't cause severe head injury when struck. Led to padded pillars and roof-mounted airbags.",
[
("Test Type", "Component test"),
("Impactor", "Free Motion Headform"),
("FMH Mass", "4.5 kg (10 lb)"),
("Impact Speed", "15 mph (24 km/h)"),
("Targets", "A/B/C pillars, header"),
],
[
("FMH Sensors", "Triaxial accelerometer"),
("Total Channels", "3"),
("Sample Rate", "≥ 8,000 Hz"),
("Filter", "CFC 1000"),
],
[("HIC(d)", "≤ 1000", "All points")],
"assets/iihs_dummy_sensors.jpg",
"Multiple impact points tested across each pillar.",
)
# ============================================================================
# SECTION 2: IIHS CONSUMER TESTS
# ============================================================================
add_section_slide(
"SECTION 2: IIHS CONSUMER INFORMATION TESTS",
[
"IIHS Moderate Overlap Frontal",
"IIHS Small Overlap Frontal",
"IIHS Side Impact (2021 Updated)",
"IIHS Roof Strength",
"IIHS Head Restraint / Whiplash (Discontinued)",
"IIHS Front Crash Prevention - V2V",
"IIHS Headlights",
"IIHS Front Crash Prevention - Pedestrian",
],
)
# IIHS Moderate Overlap
add_test_slide(
"IIHS Moderate Overlap Frontal",
"IIHS",
"1995",
"Full Vehicle Crash Test",
"Simulates head-on crash with partial engagement - the most common serious frontal crash. More demanding than FMVSS 208 because it bypasses part of crush structure.",
[
("Speed", "40 mph (64 km/h)"),
("Overlap", "40% of width"),
("Barrier", "Deformable honeycomb"),
("Barrier Height", "650 mm"),
("Barrier Width", "1,000 mm"),
],
[
("Driver ATD", "Hybrid III 50th male"),
("Total Channels", "~47"),
("Key Sensors", "Head, neck, chest, legs"),
],
[
("Head/Neck", "Good/Acceptable/Marginal/Poor", "Risk level"),
("Chest", "Good/Acceptable/Marginal/Poor", "Risk level"),
("Hip/Thigh", "Good/Acceptable/Marginal/Poor", "Risk level"),
("Lower Leg", "Good/Acceptable/Marginal/Poor", "Risk level"),
],
"assets/iihs_frontal_crash_test.jpg",
)
# IIHS Small Overlap
add_test_slide(
"IIHS Small Overlap Frontal",
"IIHS",
"2012/2017",
"Full Vehicle Crash Test",
"Addresses corner impacts (tree, pole). Many vehicles that aced moderate overlap failed initially - BMW, Mercedes, Audi all rated Marginal/Poor in 2012.",
[
("Speed", "40 mph (64 km/h)"),
("Overlap", "25% of width"),
("Barrier", "RIGID (not deformable)"),
("Tests", "Driver AND Passenger sides"),
("Barrier Edge", "Rounded"),
],
[
("ATD", "Hybrid III 50th male"),
("Total Channels", "~47"),
("Key Sensors", "Head, neck, chest, legs"),
],
[
("Structure", "Intrusion measured", "Compartment"),
("Kinematics", "Stayed in zone?", "Restraint"),
("Injury Risk", "G/A/M/P", "All regions"),
],
"assets/small_overlap_test.jpg",
"2012 launch: Only 3 of 13 midsize cars earned 'Good'.",
)
# IIHS Side 2021
add_test_slide(
"IIHS Side Impact (2021 Updated)",
"IIHS",
"2003/2021",
"Full Vehicle Crash Test",
"Simulates T-bone by larger SUV. 2021 update: heavier barrier (4,200 lb vs 3,300 lb) and faster (37 mph vs 31 mph) to reflect real-world vehicle size increases.",
[
("Barrier Speed", "37 mph (2021)"),
("Barrier Mass", "4,200 lb (2021)"),
("Ground Clearance", "Higher (SUV-like)"),
("Face Height", "Taller"),
("Impact", "Driver side"),
],
[
("Front ATD", "SID-IIs (5th female)"),
("Rear ATD", "SID-IIs (5th female)"),
("Total Channels", "~60"),
("Key Sensors", "Head, ribs, pelvis"),
],
[
("Head/Neck", "G/A/M/P", "HIC, accel"),
("Torso", "G/A/M/P", "Rib deflection"),
("Pelvis", "G/A/M/P", "Accel, pubic"),
],
"assets/iihs_side_2021.jpg",
"Original (2003): 31 mph, 3,300 lb barrier.",
)
# IIHS Roof
add_test_slide(
"IIHS Roof Strength",
"IIHS",
"2009",
"Static Test",
"Evaluates roof strength for rollover. IIHS 'Good' requires 4× vehicle weight - exceeds federal 3× requirement. Most vehicles now earn Good.",
[
("Test Type", "Static loading"),
("Plate Angle", "25°"),
("Loading Rate", "≤ 5 mm/sec"),
("Crush Limit", "127 mm"),
("Both Sides", "Tested separately"),
],
[("ATD", "None"), ("Measurements", "Force, displacement")],
[
("Good", "≥ 4.0×", "Strength-to-weight"),
("Acceptable", "3.25 - 3.99×", "Strength-to-weight"),
("Marginal", "2.50 - 3.24×", "Strength-to-weight"),
("Poor", "< 2.50×", "Strength-to-weight"),
],
"assets/roof_strength_test.jpg",
"Discontinued after 2016 - nearly all vehicles earn Good.",
)
# IIHS Whiplash
add_test_slide(
"IIHS Head Restraint / Whiplash",
"IIHS",
"2004-2020",
"Sled Test (DISCONTINUED)",
"Evaluated whiplash protection in rear-end crashes. Used BioRID II dummy with 24-vertebrae spine. Discontinued because nearly all seats now earn Good.",
[
("Test Type", "Sled test"),
("Delta-V", "10 mph (16 km/h)"),
("Peak Accel", "~10g"),
("Pulse", "Rear-end simulated"),
("Status", "DISCONTINUED 2020"),
],
[
("ATD", "BioRID II"),
("Special", "24-vertebrae spine"),
("Total Channels", "~35"),
("Key Sensors", "Neck, spine motion"),
],
[
("Contact Time", "How quickly head reached restraint", "Timing"),
("Torso Accel", "Peak acceleration", "Severity"),
("Neck Shear", "Maximum force", "Injury risk"),
("Neck Tension", "Maximum force", "Injury risk"),
],
"assets/hybrid_iii_family.jpg",
"IIHS developing more demanding rear-impact test.",
)
# IIHS FCP V2V
add_test_slide(
"IIHS Front Crash Prevention - V2V",
"IIHS",
"2013",
"Track Test",
"Evaluates AEB and FCW systems. Tests response to passenger cars, motorcycles, and semi-trailers. Points for warnings and speed reductions.",
[
("Targets", "Car, motorcycle, trailer"),
("Speeds", "31, 37, 43 mph"),
("Car Config", "Centered and offset"),
("Motorcycle", "Centered and offset"),
("Semi", "FCW only (steer out)"),
],
[
("Instrumentation", "GPS, speed, decel"),
("FCW Timing", "≥ 2.1 sec required"),
("AEB Weight", "2/3 of score"),
("FCW Weight", "1/3 of score"),
],
[
("Full Avoidance", "Maximum points", "AEB"),
("Speed Reduction", "Partial points", "AEB"),
("Warning ≥2.1s", "Required", "FCW"),
],
"assets/iihs_fcp_car_target.png",
)
# IIHS Headlights
add_test_slide(
"IIHS Headlights",
"IIHS",
"2016",
"Track Evaluation",
"Evaluates headlight illumination and glare. Revealed huge variation - some 'luxury' vehicles had poor headlights. Tests straights and curves.",
[
("Track", "Straight and curved"),
("Curves", "500ft, 800ft radius"),
("Measurements", "Light intensity"),
("Conditions", "Nighttime, dry"),
("High Beam", "Auto-assist evaluated"),
],
[
("Instrumentation", "Light meters"),
("Measurements", "Illumination distance"),
("Factors", "Low beam, high beam, glare"),
],
[
("Low Beam Straight", "Primary factor", "Distance"),
("Low Beam Curves", "Critical", "Safety"),
("High Beam", "Additional credit", "Bonus"),
("Excessive Glare", "Deductions", "Penalty"),
],
"assets/iihs_crash_hall.jpg",
"Wide variation even within same model (trim levels).",
)
# IIHS Pedestrian AEB
add_test_slide(
"IIHS Front Crash Prevention - Pedestrian",
"IIHS",
"2019",
"Track Test",
"Evaluates AEB for pedestrian detection. Pedestrian fatalities increased as SUV sales grew. Tests adult and child crossing scenarios.",
[
("Adult Perp", "50th male crossing"),
("Adult Parallel", "Walking along edge"),
("Child", "Darting into road"),
("Speeds", "25, 37 mph"),
("Conditions", "Daytime"),
],
[
("Targets", "Adult/child body forms"),
("Movement", "Propelled on track"),
("Instrumentation", "Speed, braking"),
],
[
("Superior", "Avoid/reduce all scenarios", "Rating"),
("Advanced", "Significant reduction", "Rating"),
("Basic", "Warning only", "Rating"),
],
"assets/euroncap_headform.png",
"Euro NCAP added night testing in 2024.",
)
# ============================================================================
# SECTION 3: NCAP TESTS
# ============================================================================
add_section_slide(
"SECTION 3: NCAP CONSUMER RATING TESTS",
[
"NHTSA NCAP 5-Star Frontal",
"NHTSA NCAP 5-Star Side",
"Euro NCAP MPDB (Mobile Progressive Deformable Barrier)",
],
)
# NHTSA NCAP Frontal
add_test_slide(
"NHTSA NCAP 5-Star Frontal",
"NHTSA",
"1979",
"Full Vehicle Crash Test",
"Provides consumers comparative frontal crash ratings. Same test as FMVSS 208 but published as 1-5 stars based on injury probability.",
[
("Speed", "35 mph (56 km/h)"),
("Barrier", "Rigid wall"),
("Overlap", "100% full frontal"),
("Same as", "FMVSS 208"),
],
[
("Driver ATD", "Hybrid III 50th male"),
("Passenger ATD", "Hybrid III 5th female"),
("Total Channels", "~94"),
],
[
("5 Stars", "≤ 10% injury probability", "Best"),
("4 Stars", "11-20%", "Good"),
("3 Stars", "21-35%", "Average"),
("2 Stars", "36-45%", "Below avg"),
("1 Star", "≥ 46%", "Worst"),
],
"assets/crash_test_dummies_subaru.jpg",
)
# NHTSA NCAP Side
add_test_slide(
"NHTSA NCAP 5-Star Side",
"NHTSA",
"1997/2011",
"Full Vehicle Crash Test",
"Provides consumers comparative side crash ratings. Combines MDB and pole tests (added 2011) for overall side rating.",
[
("MDB Speed", "38.5 mph (62 km/h)"),
("MDB Mass", "3,015 lb"),
("Pole Speed", "20 mph"),
("Pole Diameter", "254 mm"),
("Combined", "Single rating"),
],
[
("Driver MDB", "ES-2re"),
("Driver Pole", "WorldSID"),
("Rear", "SID-IIs 5th female"),
],
[
("MDB + Pole", "Combined rating", "Overall"),
("Driver", "Front seat", "Primary"),
("Rear", "Second row", "Included"),
],
"assets/iihs_side_barrier.jpg",
)
# Euro NCAP MPDB
add_test_slide(
"Euro NCAP MPDB",
"Euro NCAP",
"2020",
"Full Vehicle Crash Test",
"Simulates head-on between similar vehicles. Uniquely measures 'aggressivity' - how much damage test vehicle inflicts on other car.",
[
("Test Vehicle Speed", "50 km/h (31 mph)"),
("Trolley Speed", "50 km/h"),
("Overlap", "50%"),
("Trolley Mass", "1,400 kg"),
("Barrier", "Progressive deformable"),
],
[
("Driver ATD", "THOR-50M"),
("Rear ATDs", "Q6, Q10 children"),
("THOR Features", "150+ channels"),
("Special", "Multi-point chest"),
],
[
("Occupant Protection", "Injury scores", "Primary"),
("Compatibility", "Barrier deformation", "Unique"),
("Penalty", "Aggressive vehicles penalized", "Modifier"),
],
"assets/thor_dummy.jpg",
"THOR-50M: Most advanced frontal dummy in use.",
)
# ============================================================================
# SECTION 4: PEDESTRIAN PROTECTION
# ============================================================================
add_section_slide(
"SECTION 4: PEDESTRIAN PROTECTION",
[
"Euro NCAP Pedestrian - Legform Impact",
"Euro NCAP Pedestrian - Headform Impact",
"Euro NCAP AEB Pedestrian/Cyclist",
],
)
# Legform
add_test_slide(
"Euro NCAP Pedestrian - Legform Impact",
"Euro NCAP",
"1997",
"Component Test",
"Evaluates bumper design for pedestrian leg injuries. Bumper typically contacts leg first when vehicle strikes pedestrian.",
[
("Impactor", "Flexible lower legform"),
("Impact Speed", "40 km/h (25 mph)"),
("Target", "Front bumper"),
("Test Points", "Multiple across width"),
("Upper Leg Mass", "8.6 kg"),
],
[
("Knee Sensors", "Angle, shear"),
("Tibia Sensors", "Accel, bending"),
("Total Mass", "13.4 kg"),
],
[
("Knee Bending", "≤15° good, ≥21° poor", "Angle"),
("Knee Shear", "≤3.5mm good, ≥6mm poor", "Displacement"),
("Tibia Accel", "≤150g good, ≥200g poor", "Acceleration"),
],
"assets/euroncap_headform.png",
)
# Headform
add_test_slide(
"Euro NCAP Pedestrian - Headform Impact",
"Euro NCAP",
"1997/2023",
"Component Test",
"Evaluates hood/windshield design for pedestrian head injuries. Hood surface and windshield base are where pedestrians' heads typically strike.",
[
("Impact Speed", "40 km/h (25 mph)"),
("Adult Headform", "4.5 kg, 165mm"),
("Child Headform", "3.5 kg, 130mm"),
("Target", "Hood, windshield base"),
("Test Points", "Grid of locations"),
],
[
("Sensors", "Triaxial accelerometer"),
("Channels", "3 per impact"),
("Filter", "CFC 1000"),
],
[
("HIC15 Good", "≤ 650", "Green"),
("HIC15 Adequate", "650-1000", "Yellow"),
("HIC15 Poor", "≥ 1700", "Red"),
],
"assets/euroncap_headform.png",
"Led to raised hoods, pop-up systems, external airbags.",
)
# AEB Pedestrian/Cyclist
add_test_slide(
"Euro NCAP AEB Pedestrian/Cyclist",
"Euro NCAP",
"2016/2018/2024",
"Track Test",
"Evaluates active systems that detect and brake for pedestrians/cyclists. 2024 update added night testing for pedestrians.",
[
("Adult Crossing", "CPFA, CPNA scenarios"),
("Adult Along Road", "CPLA scenario"),
("Child Running", "CPNC scenario"),
("Cyclist", "CBFA, CBLA scenarios"),
("Speeds", "20, 40, 60 km/h"),
],
[
("Targets", "Adult/child body forms"),
("Cyclist", "Bike + rider target"),
("2024 Update", "Night testing added"),
],
[
("Full Avoidance", "Maximum points", "Best"),
("Speed Reduction", "Partial points", "Good"),
("Warning Only", "Minimal points", "Basic"),
("No Response", "Zero points", "Fail"),
],
"assets/euroncap_cyclist_headform.png",
)
# ============================================================================
# SECTION 5: SPORTS / HELMET TESTING
# ============================================================================
add_section_slide(
"SECTION 5: SPORTS / HELMET TESTING",
[
"NOCSAE Football Helmet - Drop Test",
"NOCSAE Football Helmet - Linear Impactor",
"NOCSAE Lacrosse Helmet",
"Ice Hockey Helmet (ASTM/HECC/CSA)",
"FMVSS 218 - Motorcycle Helmet",
],
)
# Football Drop
add_test_slide(
"NOCSAE Football Helmet - Drop Test",
"NOCSAE",
"1973",
"Drop Test",
"Ensures helmets attenuate impact energy to prevent skull fracture and severe brain injury. Founding test that reduced football fatalities by 90%.",
[
("Standard Drop", "60 inches (152 cm)"),
("Additional Heights", "36, 48, 72 inches"),
("Headform", "Humanoid (rigid)"),
("Anvils", "Flat, hemi, edge"),
("Temps", "Ambient, hot, cold"),
],
[
("Sensors", "Triaxial accelerometer"),
("Sample Rate", "≥ 10,000 Hz"),
("Filter", "CFC 1000"),
],
[
("SI Limit", "< 1200", "All conditions"),
("Drop Sequence", "Front, side, rear, top", "60 inch"),
("Conditioning", "Multiple impacts", "Per protocol"),
],
"assets/hybrid_iii_family.jpg",
"Pre-1973: 32 deaths/yr. Post-standard: ~3/yr (90% reduction).",
)
# Football Linear Impactor
add_test_slide(
"NOCSAE Football - Linear Impactor",
"NOCSAE",
"2016",
"Ram Impact Test",
"Evaluates oblique impacts causing rotational acceleration - linked to concussions. Supplements drop tests to address rotational brain injury.",
[
("Impactor", "Pneumatic ram"),
("Ram Mass", "~13 kg"),
("Impact Speed", "5.5-9.3 m/s"),
("Locations", "Multiple angles"),
("Headform", "Hybrid III head/neck"),
],
[
("Linear Accel", "3-axis accelerometer"),
("Rotational Accel", "Angular rate sensors"),
("Rotational Velocity", "Calculated"),
],
[
("Peak Linear", "Brain injury risk", "Linear"),
("Peak Rotational", "Concussion risk", "Rotational"),
("Velocity", "Brain strain", "Rotational"),
],
"assets/atd_family.png",
"NFL/NFLPA uses combined data for helmet rankings.",
)
# Lacrosse
add_test_slide(
"NOCSAE Lacrosse Helmet",
"NOCSAE",
"ND041",
"Drop + Projectile",
"Protects against collision and ball impacts. Combines impact attenuation with projectile protection from high-speed lacrosse ball.",
[
("Drop Heights", "60, 48, 36 inches"),
("Headform", "Humanoid"),
("Anvils", "Flat, hemispherical"),
("Ball Speed", "45 mph (20 m/s)"),
("Ball Targets", "Faceguard and shell"),
],
[
("Sensors", "Triaxial accelerometer"),
("Sample Rate", "≥ 8,000 Hz"),
("Filter", "CFC 1000"),
],
[
("Drop SI", "< 1200", "Impact attenuation"),
("Ball SI", "< 1200", "Projectile"),
("Penetration", "None allowed", "Faceguard"),
],
"assets/atd_family.png",
)
# Hockey
add_test_slide(
"Ice Hockey Helmet",
"HECC/CSA/ASTM",
"Multiple",
"Drop + Puck",
"Protects against falls, collisions, and puck impacts (100+ mph). Must allow facemask integration. Multiple international standards.",
[
("Drop Heights", "1.5m, 2.0m"),
("Headform", "ISO/CSA specified"),
("Anvils", "Flat, hemi, edge"),
("Puck Mass", "170g (official)"),
("Puck Speed", "25-40 m/s"),
],
[
("Standards", "CSA, ASTM, HECC, CE"),
("Sensors", "Triaxial accelerometer"),
("Primary", "Peak g measurement"),
],
[
("Drop Flat", "Peak < 275g", "CSA"),
("Drop Hemi", "Peak < 275g", "CSA"),
("Puck Impact", "No fracture", "Shell"),
("Facemask", "No penetration", "Puck"),
],
"assets/atd_family.png",
)
# Motorcycle
add_test_slide(
"FMVSS 218 - Motorcycle Helmet",
"NHTSA",
"1968",
"Drop + Penetration",
"Minimum requirements for motorcycle helmets (DOT certification). Every street-legal helmet must pass. Snell and ECE exceed DOT.",
[
("Drop Height", "1.83m (flat), 1.38m (hemi)"),
("Anvils", "Flat, hemispherical"),
("Headforms", "ISO (multiple sizes)"),
("Conditioning", "Ambient, hot, cold, wet"),
("Penetration", "3kg cone from 3m"),
],
[
("Sensors", "Accelerometer"),
("Primary", "Peak acceleration"),
("Penetration", "Contact detection"),
],
[
("Peak Accel", "≤ 400g", "DOT"),
("Penetration", "No headform contact", "Pass/Fail"),
("Snell M2020", "275g (voluntary)", "Stricter"),
("ECE 22.06", "Includes rotational", "Europe"),
],
"assets/john_stapp_portrait.jpg",
"DOT is minimum; Snell and ECE exceed requirements.",
)
# ============================================================================
# Save the presentation
# ============================================================================
output_file = "Test_Modes_Reference.pptx"
prs.save(output_file)
print(f"Presentation created: {output_file}")
print(f"Total slides: {len(prs.slides)}")