파이썬 Streamlit을 활용한 차량 물리 접지력 시뮬레이터 (콰트로 vs 후륜)
1일 전
안녕하세요. '잡학다식 개발자'입니다.
Python의 Streamlit과 Matplotlib을 활용하여, 차량의 구동 방식과 노면 상태에 따른 물리적 접지력(Traction) 변화를 실시간으로 렌더링하는 시뮬레이터를 제작해 보았습니다.
웹 프론트엔드 구축 없이 Streamlit의 세션 상태st.session_state)와 상호작용 위젯을 활용하여, 조건 변경 시 차트가 즉각적으로 반응하도록 구현한 토이 프로젝트입니다.
### 💡 핵심 구현 로직 (Traction Mapping)
차량의 그립력은 타이어 종류와 노면 상태의 상성 데이터, 그리고 구동 방식(AWD/RWD)에 따른 동력 분산 보너스를 계산하여 산출합니다.
# 업데이트된 타이어 마찰 계수 데이터베이스
friction_map = {
"익스트림 서머 (넥센 SUR4G, 한국 RS4 등)": {"마른 아스팔트": 1.2, "빗길": 0.6, "눈길": 0.1},
"UHP 서머 (미쉐린 PS4S, 피렐리 P Zero 등)": {"마른 아스팔트": 1.1, "빗길": 0.8, "눈길": 0.15},
"프리미엄 사계절 (미쉐린 MXM4 등)": {"마른 아스팔트": 0.9, "빗길": 0.7, "눈길": 0.3},
"윈터 타이어 (브리지스톤 블리작 등)": {"마른 아스팔트": 0.8, "빗길": 0.6, "눈길": 0.6}
}
base_mu = friction_map[tire_type][road_cond]
drivetrain_bonus = 1.5 if drivetrain == "사륜구동(AWD/Quattro)" else 1.0
traction_score = base_mu * drivetrain_bonus
# 에어로 효과 실시간 반영 (고속 주행 다운포스)
if apply_aero:
traction_score += 0.15이 계산식을 통해, 일반 승용차가 절대 안전 기준선(0.9G)을 넘나드는 과정과 F1 레이스카의 압도적인 물리적 한계치(4.5G)를 동일한 스케일의 차트에서 동적으로 비교합니다.
🔗 소스 코드 및 실행 안내
구체적인 작동 원리와 코드가 실제 자동차의 물리 법칙과 어떻게 매칭되는지에 대한 자세한 설명은 아래 유튜브 콘텐츠를 참고해 주시기 바랍니다.
▶ 시뮬레이터 구현 및 물리 로직 해설:https://youtu.be/j4q25_HD5Ik
💻 GitHub 저장소 (전체 코드):https://github.com/gohard-lab/quattro_simulator
직접 실행해 보기:
접지력 시뮬레이터(Streamlit):https://quattrosimulator-kbsulzwvq8ucrcpph6rfg5.streamlit.app/
댓글을 작성해보세요.