From 6a2bced7a1c0715dfc595f7c6c4a56a6a7749021 Mon Sep 17 00:00:00 2001
From: liuhuatao <2814267042@qq.com>
Date: Fri, 8 May 2026 18:24:19 +0800
Subject: [PATCH 01/36] redmin
---
src/vision_based_parking/README.md | 32 +++++++++++++
src/vision_based_parking/config.yaml | 24 ++++++++++
src/vision_based_parking/main_parking_ctrl.py | 40 ++++++++++++++++
.../main_parking_detector.py | 41 ++++++++++++++++
src/vision_based_parking/main_parking_sim.py | 48 +++++++++++++++++++
src/vision_based_parking/utils.py | 22 +++++++++
6 files changed, 207 insertions(+)
create mode 100644 src/vision_based_parking/README.md
create mode 100644 src/vision_based_parking/config.yaml
create mode 100644 src/vision_based_parking/main_parking_ctrl.py
create mode 100644 src/vision_based_parking/main_parking_detector.py
create mode 100644 src/vision_based_parking/main_parking_sim.py
create mode 100644 src/vision_based_parking/utils.py
diff --git a/src/vision_based_parking/README.md b/src/vision_based_parking/README.md
new file mode 100644
index 0000000000..b016afc858
--- /dev/null
+++ b/src/vision_based_parking/README.md
@@ -0,0 +1,32 @@
+# Vision Based Parking (基于视觉的自动泊车系统)
+
+本项目实现了一个基于计算机视觉的自动泊车仿真系统。系统通过摄像头获取环境图像,利用图像处理技术识别停车位,并控制车辆自动泊入指定车位。
+
+## 🚀 项目简介
+
+该项目模拟了自动驾驶车辆在停车场环境下的感知与控制流程。主要包含以下模块:
+- **感知模块 (`main_parking_detector.py`)**:使用 OpenCV 进行边缘检测和霍夫变换,识别地面车位线。
+- **控制模块 (`main_parking_ctrl.py`)**:基于 PID 算法计算转向角度和速度,实现车辆的闭环控制。
+- **仿真模块 (`main_parking_sim.py`)**:基于 Pygame/Python 的 2D 仿真环境,可视化车辆运动轨迹。
+
+## 📂 文件结构
+
+- `main_parking_sim.py`: **主程序**,启动仿真循环,整合感知与控制模块。
+- `main_parking_detector.py`: 视觉处理脚本,负责从图像中提取车位特征。
+- `main_parking_ctrl.py`: 车辆运动控制脚本,负责计算车辆下一步的动作。
+- `config.yaml`: 配置文件,包含车辆参数、PID 增益及仿真设置。
+- `utils.py`: 工具库,包含坐标转换、绘图辅助函数等。
+
+## 🛠️ 环境依赖
+
+请确保已安装以下 Python 库:
+
+- OpenCV (`cv2`)
+- NumPy
+- PyYAML
+- Pygame (用于仿真显示)
+
+你可以使用以下命令安装依赖:
+
+```bash
+pip install opencv-python numpy pyyaml pygame
diff --git a/src/vision_based_parking/config.yaml b/src/vision_based_parking/config.yaml
new file mode 100644
index 0000000000..c5d72a5997
--- /dev/null
+++ b/src/vision_based_parking/config.yaml
@@ -0,0 +1,24 @@
+# config.yaml
+# 车辆物理参数
+vehicle:
+ width: 20 # 车辆宽度 (像素)
+ length: 40 # 车辆长度 (像素)
+ wheel_base: 25 # 轴距 (用于阿克曼转向计算)
+
+# 仿真环境参数
+simulation:
+ width: 800 # 窗口宽度
+ height: 600 # 窗口高度
+ fps: 30 # 帧率
+
+# 控制器参数 (PID)
+controller:
+ kp: 0.8 # 比例系数
+ kd: 0.1 # 微分系数
+ max_steering_angle: 45 # 最大转向角
+
+# 视觉参数
+vision:
+ roi_y_start: 300 # 感兴趣区域起始Y坐标 (只看车头前方)
+ canny_thresh1: 50
+ canny_thresh2: 150
\ No newline at end of file
diff --git a/src/vision_based_parking/main_parking_ctrl.py b/src/vision_based_parking/main_parking_ctrl.py
new file mode 100644
index 0000000000..e51b783b40
--- /dev/null
+++ b/src/vision_based_parking/main_parking_ctrl.py
@@ -0,0 +1,40 @@
+# main_parking_ctrl.py
+
+class PIDController:
+ def __init__(self, kp, kd):
+ self.kp = kp
+ self.kd = kd
+ self.prev_error = 0
+
+ def update(self, error):
+ """
+ 根据误差计算控制量
+ """
+ # 简单的 PD 控制
+ derivative = error - self.prev_error
+ output = self.kp * error + self.kd * derivative
+ self.prev_error = error
+ return output
+
+class ParkingController:
+ def __init__(self, config):
+ self.steering_pid = PIDController(config['controller']['kp'], config['controller']['kd'])
+ self.max_steering = config['controller']['max_steering_angle']
+
+ def compute_action(self, car_x, target_x):
+ """
+ 输入: 车辆当前x坐标, 目标x坐标
+ 输出: 转向角 (-45 到 45)
+ """
+ if target_x is None:
+ return 0 # 没看到车位就不动
+
+ error = target_x - car_x
+
+ # 使用 PID 计算转向
+ steering = self.steering_pid.update(error)
+
+ # 限制最大角度
+ steering = max(-self.max_steering, min(self.max_steering, steering))
+
+ return steering
\ No newline at end of file
diff --git a/src/vision_based_parking/main_parking_detector.py b/src/vision_based_parking/main_parking_detector.py
new file mode 100644
index 0000000000..63b9003403
--- /dev/null
+++ b/src/vision_based_parking/main_parking_detector.py
@@ -0,0 +1,41 @@
+# main_parking_detector.py
+import cv2
+import numpy as np
+
+class ParkingDetector:
+ def __init__(self):
+ self.parking_spot_center = None
+
+ def detect(self, frame):
+ """
+ 输入: 原始图像
+ 输出: 处理后的图像, (车位中心x, 车位中心y) 或 None
+ """
+ # 1. 灰度化
+ gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
+
+ # 2. 边缘检测 (Canny)
+ edges = cv2.Canny(gray, 50, 150)
+
+ # 3. 霍夫变换检测直线
+ lines = cv2.HoughLinesP(edges, 1, np.pi / 180, threshold=50, minLineLength=50, maxLineGap=10)
+
+ parking_x = None
+
+ if lines is not None:
+ # 简单逻辑:假设我们要找两条垂直的线作为车位边界
+ # 这里为了演示,我们简化为:如果检测到线,就在图像中心画个目标点
+ # 实际逻辑应解析 lines 数组找到两条平行线的中间
+
+ for line in lines:
+ x1, y1, x2, y2 = line[0]
+ cv2.line(frame, (x1, y1), (x2, y2), (255, 0, 0), 2) # 画出检测到的蓝线
+
+ # 模拟:假设车位就在屏幕正中央 (400, 300)
+ # 真实项目中,这里需要计算两条白线的几何中心
+ parking_x = frame.shape[1] // 2
+
+ # 在图像上标记目标中心
+ cv2.circle(frame, (parking_x, 100), 5, (0, 0, 255), -1)
+
+ return frame, parking_x
\ No newline at end of file
diff --git a/src/vision_based_parking/main_parking_sim.py b/src/vision_based_parking/main_parking_sim.py
new file mode 100644
index 0000000000..a05a5b141a
--- /dev/null
+++ b/src/vision_based_parking/main_parking_sim.py
@@ -0,0 +1,48 @@
+# main_parking_sim.py
+import cv2
+import numpy as np
+import yaml
+from main_parking_detector import ParkingDetector
+from main_parking_ctrl import ParkingController
+from utils import draw_car
+
+# 1. 加载配置
+with open('config.yaml', 'r') as f:
+ config = yaml.safe_load(f)
+
+def main():
+ # 2. 初始化模块
+ detector = ParkingDetector()
+ controller = ParkingController(config)
+
+ # 3. 初始化车辆状态 (x, y, 角度)
+ car_x, car_y, car_angle = 100, 500, -10 # 初始在左下角,稍微偏一点
+
+ # 创建一个黑色的画布作为仿真环境
+ simulation_window = "Vision Based Parking Sim"
+ cv2.namedWindow(simulation_window)
+
+ print("🚗 泊车仿真启动! 按 'q' 退出")
+
+ while True:
+ # --- 仿真环境渲染 ---
+ # 创建一个空白图像 (黑色背景)
+ frame = np.zeros((config['simulation']['height'], config['simulation']['width'], 3), dtype=np.uint8)
+
+ # 画出简单的地面标线 (模拟摄像头看到的画面)
+ cv2.rectangle(frame, (300, 0), (500, 200), (255, 255, 255), 2) # 车位框
+
+ # --- 1. 感知 (视觉) ---
+ # 将当前帧传给检测器,获取目标点
+ processed_frame, target_x = detector.detect(frame)
+
+ # --- 2. 控制 (大脑) ---
+ # 计算应该打多少方向盘
+ # 假设车辆中心就是 car_x
+ steering_angle = controller.compute_action(car_x, target_x)
+
+ # --- 3. 运动学更新 (物理) ---
+ # 简单的运动模型:车一直向前开,根据转向角改变横向位置
+ # 这里为了演示简化了物理公式
+ speed = 2
+ car_x += speed
\ No newline at end of file
diff --git a/src/vision_based_parking/utils.py b/src/vision_based_parking/utils.py
new file mode 100644
index 0000000000..c0c6399e1b
--- /dev/null
+++ b/src/vision_based_parking/utils.py
@@ -0,0 +1,22 @@
+# utils.py
+import cv2
+import numpy as np
+
+def draw_car(frame, x, y, angle, color=(0, 255, 0)):
+ """
+ 在图像上绘制代表车辆的矩形
+ :param frame: 图像帧
+ :param x, y: 中心坐标
+ :param angle: 旋转角度
+ :param color: 颜色
+ """
+ # 简单的矩形代表车,实际项目中这里会加载车辆图片
+ box = cv2.boxPoints(((x, y), (40, 20), angle))
+ box = np.int0(box)
+ cv2.drawContours(frame, [box], 0, color, 2)
+
+def calculate_error(current_x, target_x):
+ """
+ 计算横向误差
+ """
+ return target_x - current_x
\ No newline at end of file
From 3842b01d1f475bbc1975ec2eaf0e0b4a07331306 Mon Sep 17 00:00:00 2001
From: liuhuatao <2814267042@qq.com>
Date: Sun, 17 May 2026 20:39:50 +0800
Subject: [PATCH 02/36] readme
---
src/vision_based_parking/README.md | 83 ++++++++++++++++++------------
1 file changed, 51 insertions(+), 32 deletions(-)
diff --git a/src/vision_based_parking/README.md b/src/vision_based_parking/README.md
index b016afc858..8ed5bbdf2c 100644
--- a/src/vision_based_parking/README.md
+++ b/src/vision_based_parking/README.md
@@ -1,32 +1,51 @@
-# Vision Based Parking (基于视觉的自动泊车系统)
-
-本项目实现了一个基于计算机视觉的自动泊车仿真系统。系统通过摄像头获取环境图像,利用图像处理技术识别停车位,并控制车辆自动泊入指定车位。
-
-## 🚀 项目简介
-
-该项目模拟了自动驾驶车辆在停车场环境下的感知与控制流程。主要包含以下模块:
-- **感知模块 (`main_parking_detector.py`)**:使用 OpenCV 进行边缘检测和霍夫变换,识别地面车位线。
-- **控制模块 (`main_parking_ctrl.py`)**:基于 PID 算法计算转向角度和速度,实现车辆的闭环控制。
-- **仿真模块 (`main_parking_sim.py`)**:基于 Pygame/Python 的 2D 仿真环境,可视化车辆运动轨迹。
-
-## 📂 文件结构
-
-- `main_parking_sim.py`: **主程序**,启动仿真循环,整合感知与控制模块。
-- `main_parking_detector.py`: 视觉处理脚本,负责从图像中提取车位特征。
-- `main_parking_ctrl.py`: 车辆运动控制脚本,负责计算车辆下一步的动作。
-- `config.yaml`: 配置文件,包含车辆参数、PID 增益及仿真设置。
-- `utils.py`: 工具库,包含坐标转换、绘图辅助函数等。
-
-## 🛠️ 环境依赖
-
-请确保已安装以下 Python 库:
-
-- OpenCV (`cv2`)
-- NumPy
-- PyYAML
-- Pygame (用于仿真显示)
-
-你可以使用以下命令安装依赖:
-
-```bash
-pip install opencv-python numpy pyyaml pygame
+CARLA 视觉泊车与路径规划系统
+本项目基于 CARLA 自动驾驶模拟器,实现了一套完整的视觉感知与路径规划系统。系统利用车载摄像头采集图像,通过目标检测算法(如 YOLO)识别周围环境与车位,并结合规划算法控制车辆在仿真环境中自动行驶与泊车。
+项目演示
+系统运行界面预览
+左侧:控制台日志,实时显示 FPS、车速、检测目标数量及车辆状态(如“车辆已重置到新位置”)。
+中间:第一人称视角与规划路径显示(蓝色引导线)。
+右侧:第三人称追踪视角,展示车辆整体运动姿态。
+小窗:目标检测视图,实时标注检测到的障碍物或车位。
+功能特性
+高保真仿真:基于 CARLA 模拟器,提供逼真的城市环境与物理反馈。
+视觉感知:集成目标检测算法(如 YOLO),实时处理摄像头数据,识别车位、车辆及交通标志。
+智能规划:实现基于视觉反馈的路径规划算法,引导车辆完成泊车或巡航任务。
+实时控制:通过 Python API 与 CARLA 交互,发送油门、刹车及转向指令。
+文件结构
+carla_vision_parking/
+├── main_planner.py # 主程序:连接CARLA服务器,协调感知与控制循环
+├── detector.py # 视觉模块:封装YOLO或其他检测算法
+├── controller.py # 控制模块:PID控制器或纯追踪算法
+├── config.yaml # 配置文件:CARLA连接参数、车辆参数、检测阈值
+└── utils.py # 工具库:坐标转换、图像绘制辅助函数
+环境依赖
+在运行项目之前,请确保您的系统满足以下要求:
+CARLA 模拟器:版本 0.9.13 或更高版本(下载地址)。
+Python:版本 3.7 或更高。
+Python 库:
+opencv-python:用于图像处理。
+numpy:用于数学计算。
+pygame:用于简单的可视化(可选)。
+torch / ultralytics:如果使用 YOLOv8 进行检测。
+carla:CARLA 的 Python API(通常在 PythonAPI/carla/dist/ 目录下)。
+安装依赖库:
+pip install opencv-python numpy pygame torch ultralytics
+pip install opencv-python numpy pygame torch ultralytics
+运行步骤
+启动 CARLA 服务器:
+首先,启动 CARLA 模拟器。您可以使用以下命令启动服务器(Windows):
+# 在 CARLA 根目录下运行
+CarlaUE4.exe -windowed -ResX=800 -ResY=600
+或者在 Linux 上:
+./CarlaUE4.sh -windowed -ResX=800 -ResY=600
+运行主程序:
+打开一个新的终端窗口,导航到项目目录并运行主程序:
+python main_planner.py
+观察仿真:
+程序启动后,您将看到 CARLA 模拟器窗口中出现车辆,并且控制台会输出实时的日志信息。您可以通过调整 config.yaml 中的参数来优化车辆的行为。
+配置说明
+您可以在 config.yaml 文件中调整以下参数:
+carla_host: CARLA 服务器的 IP 地址(默认为 localhost)。
+carla_port: CARLA 服务器的端口号(默认为 2000)。
+vehicle_speed: 车辆的最大行驶速度。
+parking_threshold: 判断车辆是否到达停车位的阈值。
From 966ecb96d7da7fb850ad88fce585f0bc91799ef4 Mon Sep 17 00:00:00 2001
From: liuhuatao <2814267042@qq.com>
Date: Mon, 25 May 2026 16:37:03 +0800
Subject: [PATCH 03/36] =?UTF-8?q?feat:=20=E5=AE=9E=E7=8E=B0=20CARLA=20?=
=?UTF-8?q?=E8=BF=9E=E6=8E=A5=E4=B8=8E=E4=BB=BF=E7=9C=9F=E4=B8=BB=E5=BE=AA?=
=?UTF-8?q?=E7=8E=AF?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
$null | 3 +
src/vision_based_parking/config.yaml | 31 ++---
src/vision_based_parking/controller.py | 113 ++++++++++++++++
src/vision_based_parking/detector.py | 40 ++++++
src/vision_based_parking/main_parking_ctrl.py | 40 ------
.../main_parking_detector.py | 41 ------
src/vision_based_parking/main_parking_sim.py | 48 -------
src/vision_based_parking/main_planner.py | 123 ++++++++++++++++++
src/vision_based_parking/utils.py | 23 +---
tests/test_vision_parking.py | 104 +++++++++++++++
10 files changed, 401 insertions(+), 165 deletions(-)
create mode 100644 $null
create mode 100644 src/vision_based_parking/controller.py
create mode 100644 src/vision_based_parking/detector.py
delete mode 100644 src/vision_based_parking/main_parking_ctrl.py
delete mode 100644 src/vision_based_parking/main_parking_detector.py
delete mode 100644 src/vision_based_parking/main_parking_sim.py
create mode 100644 src/vision_based_parking/main_planner.py
create mode 100644 tests/test_vision_parking.py
diff --git a/$null b/$null
new file mode 100644
index 0000000000..4c7dcb4f35
--- /dev/null
+++ b/$null
@@ -0,0 +1,3 @@
+Ϣ: Ҳ ";"
+Ϣ: Ҳ "--version"
+Ϣ: Ҳ "py"
diff --git a/src/vision_based_parking/config.yaml b/src/vision_based_parking/config.yaml
index c5d72a5997..3cb96a9f42 100644
--- a/src/vision_based_parking/config.yaml
+++ b/src/vision_based_parking/config.yaml
@@ -1,24 +1,21 @@
-# config.yaml
-# 车辆物理参数
-vehicle:
- width: 20 # 车辆宽度 (像素)
- length: 40 # 车辆长度 (像素)
- wheel_base: 25 # 轴距 (用于阿克曼转向计算)
+carla_host: localhost
+carla_port: 2000
+# 可填真实 CARLA PythonAPI 目录,或课程提供的 fake carla.py 所在目录/文件路径
+carla_pythonapi_path: "../../hutb/PythonAPI/carla/dist"
+vehicle_blueprint: vehicle.lincoln.mkz_2017
-# 仿真环境参数
simulation:
- width: 800 # 窗口宽度
- height: 600 # 窗口高度
- fps: 30 # 帧率
+ width: 800
+ height: 600
+ fps: 30
-# 控制器参数 (PID)
controller:
- kp: 0.8 # 比例系数
- kd: 0.1 # 微分系数
- max_steering_angle: 45 # 最大转向角
+ kp: 0.8
+ ki: 0.0
+ kd: 0.1
+ max_steering_angle: 45
+ default_throttle: 0.3
-# 视觉参数
vision:
- roi_y_start: 300 # 感兴趣区域起始Y坐标 (只看车头前方)
canny_thresh1: 50
- canny_thresh2: 150
\ No newline at end of file
+ canny_thresh2: 150
diff --git a/src/vision_based_parking/controller.py b/src/vision_based_parking/controller.py
new file mode 100644
index 0000000000..bb99fe22a9
--- /dev/null
+++ b/src/vision_based_parking/controller.py
@@ -0,0 +1,113 @@
+import os
+import sys
+from pathlib import Path
+from types import SimpleNamespace
+
+MODULE_DIR = Path(__file__).resolve().parent
+
+
+def configure_carla_pythonapi(path=None):
+ """Add a CARLA PythonAPI location to sys.path when provided."""
+ if path is None:
+ path = os.environ.get('CARLA_PYTHONAPI_PATH')
+
+ if not path:
+ return
+
+ resolved = Path(path).expanduser()
+ if not resolved.is_absolute():
+ resolved = (MODULE_DIR / resolved).resolve()
+
+ if not resolved.exists():
+ return
+
+ if resolved.is_file():
+ candidate_paths = [resolved.parent]
+ else:
+ candidate_paths = [resolved]
+ if resolved.is_dir():
+ candidate_paths.extend([
+ resolved / 'dist',
+ resolved / 'PythonAPI',
+ resolved / 'PythonAPI' / 'carla',
+ resolved / 'PythonAPI' / 'carla' / 'dist',
+ resolved / 'carla',
+ resolved / 'carla' / 'dist',
+ ])
+
+ for candidate in candidate_paths:
+ if candidate.exists() and str(candidate) not in sys.path:
+ sys.path.insert(0, str(candidate))
+
+
+def load_carla_module():
+ try:
+ import carla
+ return carla
+ except ImportError:
+ configure_carla_pythonapi()
+ try:
+ import carla
+ return carla
+ except ImportError:
+ return None
+
+
+class PIDController:
+ def __init__(self, kp=0.8, ki=0.0, kd=0.1):
+ self.kp = kp
+ self.ki = ki
+ self.kd = kd
+ self.prev_error = 0.0
+ self.integral = 0.0
+
+ def update(self, error, dt=1.0):
+ self.integral += error * dt
+ derivative = (error - self.prev_error) / dt if dt != 0 else 0.0
+ self.prev_error = error
+ return self.kp * error + self.ki * self.integral + self.kd * derivative
+
+
+class ParkingController:
+ _carla_module = None # 缓存 carla 模块,避免重复导入
+
+ def __init__(self, config):
+ ctrl = config.get('controller', {})
+ self.pid = PIDController(ctrl.get('kp', 0.8), ctrl.get('ki', 0.0), ctrl.get('kd', 0.1))
+ self.max_steer = ctrl.get('max_steering_angle', 45)
+ self.default_throttle = ctrl.get('default_throttle', 0.3)
+
+ def _get_carla(self):
+ """获取 carla 模块,缓存以便复用。"""
+ if ParkingController._carla_module is None:
+ ParkingController._carla_module = load_carla_module()
+ return ParkingController._carla_module
+
+ def compute_control(self, vehicle, target_x, dt=1.0):
+ carla = self._get_carla()
+ if carla is None:
+ return SimpleNamespace(
+ throttle=self.default_throttle,
+ steer=0.0,
+ brake=0.0,
+ )
+
+ control = carla.VehicleControl()
+ if target_x is None:
+ control.throttle = 0.0
+ control.steer = 0.0
+ control.brake = 0.0
+ return control
+
+ current_x = vehicle.get_transform().location.x
+ error = target_x - current_x
+ steer_value = self.pid.update(error, dt)
+
+ # 防止 max_steer 为 0 导致除零
+ divisor = max(abs(self.max_steer), 1e-6)
+ steer_value = max(-divisor, min(divisor, steer_value)) / divisor
+
+ control.throttle = self.default_throttle
+ control.steer = steer_value
+ control.brake = 0.0
+ return control
diff --git a/src/vision_based_parking/detector.py b/src/vision_based_parking/detector.py
new file mode 100644
index 0000000000..997ac0c939
--- /dev/null
+++ b/src/vision_based_parking/detector.py
@@ -0,0 +1,40 @@
+import cv2
+import numpy as np
+
+class ParkingDetector:
+ def __init__(self, config=None):
+ self.config = config or {}
+
+ def capture_frame(self, world, vehicle):
+ # TODO: 使用 CARLA 摄像头传感器获取实际图像
+ width = self.config.get('simulation', {}).get('width', 800)
+ height = self.config.get('simulation', {}).get('height', 600)
+ return np.zeros((height, width, 3), dtype=np.uint8)
+
+ def detect(self, frame):
+ gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
+ edges = cv2.Canny(
+ gray,
+ self.config.get('vision', {}).get('canny_thresh1', 50),
+ self.config.get('vision', {}).get('canny_thresh2', 150)
+ )
+ lines = cv2.HoughLinesP(
+ edges,
+ rho=1,
+ theta=np.pi / 180,
+ threshold=50,
+ minLineLength=50,
+ maxLineGap=10
+ )
+
+ target_x = None
+ if lines is not None:
+ for line in lines:
+ x1, y1, x2, y2 = line[0]
+ cv2.line(frame, (x1, y1), (x2, y2), (255, 0, 0), 2)
+ target_x = frame.shape[1] // 2
+ cv2.circle(frame, (target_x, frame.shape[0] // 2), 8, (0, 0, 255), -1)
+ cv2.putText(frame, '目标车位', (target_x - 60, frame.shape[0] // 2 - 20),
+ cv2.FONT_HERSHEY_SIMPLEX, 0.6, (0, 0, 255), 2)
+
+ return frame, target_x
diff --git a/src/vision_based_parking/main_parking_ctrl.py b/src/vision_based_parking/main_parking_ctrl.py
deleted file mode 100644
index e51b783b40..0000000000
--- a/src/vision_based_parking/main_parking_ctrl.py
+++ /dev/null
@@ -1,40 +0,0 @@
-# main_parking_ctrl.py
-
-class PIDController:
- def __init__(self, kp, kd):
- self.kp = kp
- self.kd = kd
- self.prev_error = 0
-
- def update(self, error):
- """
- 根据误差计算控制量
- """
- # 简单的 PD 控制
- derivative = error - self.prev_error
- output = self.kp * error + self.kd * derivative
- self.prev_error = error
- return output
-
-class ParkingController:
- def __init__(self, config):
- self.steering_pid = PIDController(config['controller']['kp'], config['controller']['kd'])
- self.max_steering = config['controller']['max_steering_angle']
-
- def compute_action(self, car_x, target_x):
- """
- 输入: 车辆当前x坐标, 目标x坐标
- 输出: 转向角 (-45 到 45)
- """
- if target_x is None:
- return 0 # 没看到车位就不动
-
- error = target_x - car_x
-
- # 使用 PID 计算转向
- steering = self.steering_pid.update(error)
-
- # 限制最大角度
- steering = max(-self.max_steering, min(self.max_steering, steering))
-
- return steering
\ No newline at end of file
diff --git a/src/vision_based_parking/main_parking_detector.py b/src/vision_based_parking/main_parking_detector.py
deleted file mode 100644
index 63b9003403..0000000000
--- a/src/vision_based_parking/main_parking_detector.py
+++ /dev/null
@@ -1,41 +0,0 @@
-# main_parking_detector.py
-import cv2
-import numpy as np
-
-class ParkingDetector:
- def __init__(self):
- self.parking_spot_center = None
-
- def detect(self, frame):
- """
- 输入: 原始图像
- 输出: 处理后的图像, (车位中心x, 车位中心y) 或 None
- """
- # 1. 灰度化
- gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
-
- # 2. 边缘检测 (Canny)
- edges = cv2.Canny(gray, 50, 150)
-
- # 3. 霍夫变换检测直线
- lines = cv2.HoughLinesP(edges, 1, np.pi / 180, threshold=50, minLineLength=50, maxLineGap=10)
-
- parking_x = None
-
- if lines is not None:
- # 简单逻辑:假设我们要找两条垂直的线作为车位边界
- # 这里为了演示,我们简化为:如果检测到线,就在图像中心画个目标点
- # 实际逻辑应解析 lines 数组找到两条平行线的中间
-
- for line in lines:
- x1, y1, x2, y2 = line[0]
- cv2.line(frame, (x1, y1), (x2, y2), (255, 0, 0), 2) # 画出检测到的蓝线
-
- # 模拟:假设车位就在屏幕正中央 (400, 300)
- # 真实项目中,这里需要计算两条白线的几何中心
- parking_x = frame.shape[1] // 2
-
- # 在图像上标记目标中心
- cv2.circle(frame, (parking_x, 100), 5, (0, 0, 255), -1)
-
- return frame, parking_x
\ No newline at end of file
diff --git a/src/vision_based_parking/main_parking_sim.py b/src/vision_based_parking/main_parking_sim.py
deleted file mode 100644
index a05a5b141a..0000000000
--- a/src/vision_based_parking/main_parking_sim.py
+++ /dev/null
@@ -1,48 +0,0 @@
-# main_parking_sim.py
-import cv2
-import numpy as np
-import yaml
-from main_parking_detector import ParkingDetector
-from main_parking_ctrl import ParkingController
-from utils import draw_car
-
-# 1. 加载配置
-with open('config.yaml', 'r') as f:
- config = yaml.safe_load(f)
-
-def main():
- # 2. 初始化模块
- detector = ParkingDetector()
- controller = ParkingController(config)
-
- # 3. 初始化车辆状态 (x, y, 角度)
- car_x, car_y, car_angle = 100, 500, -10 # 初始在左下角,稍微偏一点
-
- # 创建一个黑色的画布作为仿真环境
- simulation_window = "Vision Based Parking Sim"
- cv2.namedWindow(simulation_window)
-
- print("🚗 泊车仿真启动! 按 'q' 退出")
-
- while True:
- # --- 仿真环境渲染 ---
- # 创建一个空白图像 (黑色背景)
- frame = np.zeros((config['simulation']['height'], config['simulation']['width'], 3), dtype=np.uint8)
-
- # 画出简单的地面标线 (模拟摄像头看到的画面)
- cv2.rectangle(frame, (300, 0), (500, 200), (255, 255, 255), 2) # 车位框
-
- # --- 1. 感知 (视觉) ---
- # 将当前帧传给检测器,获取目标点
- processed_frame, target_x = detector.detect(frame)
-
- # --- 2. 控制 (大脑) ---
- # 计算应该打多少方向盘
- # 假设车辆中心就是 car_x
- steering_angle = controller.compute_action(car_x, target_x)
-
- # --- 3. 运动学更新 (物理) ---
- # 简单的运动模型:车一直向前开,根据转向角改变横向位置
- # 这里为了演示简化了物理公式
- speed = 2
- car_x += speed
\ No newline at end of file
diff --git a/src/vision_based_parking/main_planner.py b/src/vision_based_parking/main_planner.py
new file mode 100644
index 0000000000..c674c1e29f
--- /dev/null
+++ b/src/vision_based_parking/main_planner.py
@@ -0,0 +1,123 @@
+import os
+import sys
+import time
+from pathlib import Path
+from types import SimpleNamespace
+
+import cv2
+import yaml
+
+from controller import ParkingController, configure_carla_pythonapi
+from detector import ParkingDetector
+from utils import draw_text
+
+
+class DemoVehicle:
+ def __init__(self):
+ self.current_x = 0.0
+
+ def get_transform(self):
+ return SimpleNamespace(location=SimpleNamespace(x=self.current_x))
+
+ def apply_control(self, control):
+ self.current_x += float(getattr(control, 'throttle', 0.0)) * 0.01
+
+
+def load_config(path='config.yaml'):
+ config_path = Path(path)
+ if not config_path.is_absolute():
+ config_path = Path(__file__).resolve().parent / config_path
+
+ with open(config_path, 'r', encoding='utf-8') as f:
+ return yaml.safe_load(f)
+
+
+def configure_carla_for_run(config):
+ custom_path = config.get('carla_pythonapi_path')
+ if custom_path:
+ configure_carla_pythonapi(custom_path)
+ return
+
+ env_path = os.environ.get('CARLA_PYTHONAPI_PATH')
+ if env_path:
+ configure_carla_pythonapi(env_path)
+
+
+def connect_carla(host, port, timeout=10.0):
+ try:
+ import carla
+ client = carla.Client(host, port)
+ client.set_timeout(timeout)
+ return client
+ except (ImportError, AttributeError) as exc:
+ raise RuntimeError('CARLA Python API 未安装或不完整,请先安装 carla 模块或提供完整的 fake API。') from exc
+
+
+def run_simulation_loop(config, detector, controller, world, vehicle):
+ print('仿真循环已启动,按 q 退出。')
+ target_fps = config['simulation'].get('fps', 30)
+ frame_duration = 1.0 / target_fps
+ prev_time = time.perf_counter()
+
+ while True:
+ loop_start = time.perf_counter()
+ dt = loop_start - prev_time
+ prev_time = loop_start
+
+ frame = detector.capture_frame(world, vehicle)
+ result_frame, target_x = detector.detect(frame)
+ control = controller.compute_control(vehicle, target_x, dt)
+
+ if vehicle is not None:
+ vehicle.apply_control(control)
+
+ draw_text(result_frame, f"目标 X: {target_x}", (20, 30))
+ draw_text(result_frame, f"转向: {control.steer:.2f}", (20, 60))
+ cv2.imshow('Vision Based Parking', result_frame)
+
+ if cv2.waitKey(1) == ord('q'):
+ break
+
+ # 精确帧率控制:扣除本帧已用时间后再休眠
+ elapsed = time.perf_counter() - loop_start
+ sleep_time = frame_duration - elapsed
+ if sleep_time > 0:
+ time.sleep(sleep_time)
+
+
+def main():
+ config = load_config()
+ print(f"加载配置:{config}")
+
+ configure_carla_for_run(config)
+
+ detector = ParkingDetector(config)
+ controller = ParkingController(config)
+
+ world = None
+ vehicle = None
+
+ try:
+ client = connect_carla(config.get('carla_host', 'localhost'), config.get('carla_port', 2000))
+ world = client.get_world()
+
+ print('正在生成仿真车辆...')
+ blueprint_library = world.get_blueprint_library()
+ vehicle_bp = blueprint_library.find(config.get('vehicle_blueprint', 'vehicle.lincoln.mkz_2017'))
+ spawn_point = world.get_map().get_spawn_points()[0]
+ vehicle = world.spawn_actor(vehicle_bp, spawn_point)
+ except RuntimeError as exc:
+ print(f"{exc},进入演示模式。")
+ vehicle = DemoVehicle()
+
+ try:
+ run_simulation_loop(config, detector, controller, world, vehicle)
+ finally:
+ print('销毁车辆并关闭窗口。')
+ if hasattr(vehicle, 'destroy'):
+ vehicle.destroy()
+ cv2.destroyAllWindows()
+
+
+if __name__ == '__main__':
+ main()
diff --git a/src/vision_based_parking/utils.py b/src/vision_based_parking/utils.py
index c0c6399e1b..839ffb7371 100644
--- a/src/vision_based_parking/utils.py
+++ b/src/vision_based_parking/utils.py
@@ -1,22 +1,7 @@
-# utils.py
import cv2
-import numpy as np
-def draw_car(frame, x, y, angle, color=(0, 255, 0)):
- """
- 在图像上绘制代表车辆的矩形
- :param frame: 图像帧
- :param x, y: 中心坐标
- :param angle: 旋转角度
- :param color: 颜色
- """
- # 简单的矩形代表车,实际项目中这里会加载车辆图片
- box = cv2.boxPoints(((x, y), (40, 20), angle))
- box = np.int0(box)
- cv2.drawContours(frame, [box], 0, color, 2)
+def draw_text(frame, text, position=(20, 30), color=(255, 255, 255), scale=0.7, thickness=2):
+ cv2.putText(frame, text, position, cv2.FONT_HERSHEY_SIMPLEX, scale, color, thickness)
-def calculate_error(current_x, target_x):
- """
- 计算横向误差
- """
- return target_x - current_x
\ No newline at end of file
+def clamp(value, minimum, maximum):
+ return max(minimum, min(maximum, value))
diff --git a/tests/test_vision_parking.py b/tests/test_vision_parking.py
new file mode 100644
index 0000000000..4cb3d5b851
--- /dev/null
+++ b/tests/test_vision_parking.py
@@ -0,0 +1,104 @@
+import importlib.util
+import os
+import sys
+from pathlib import Path
+
+project_root = Path(__file__).resolve().parents[1]
+vision_root = project_root / 'src' / 'vision_based_parking'
+sys.path.insert(0, str(vision_root))
+
+from controller import ParkingController, configure_carla_pythonapi, load_carla_module
+
+
+def test_controller_falls_back_without_carla():
+ controller = ParkingController({
+ 'controller': {
+ 'kp': 1.0,
+ 'ki': 0.0,
+ 'kd': 0.0,
+ 'max_steering_angle': 45,
+ 'default_throttle': 0.25,
+ }
+ })
+
+ control = controller.compute_control(vehicle=None, target_x=120)
+
+ assert control.throttle == 0.25
+ assert control.steer == 0.0
+ assert control.brake == 0.0
+
+
+def test_load_config_resolves_relative_to_module_dir(tmp_path):
+ original_cwd = os.getcwd()
+ try:
+ os.chdir(tmp_path)
+ spec = importlib.util.spec_from_file_location(
+ 'main_planner',
+ vision_root / 'main_planner.py',
+ )
+ module = importlib.util.module_from_spec(spec)
+ spec.loader.exec_module(module)
+
+ config = module.load_config()
+ finally:
+ os.chdir(original_cwd)
+
+ assert config['carla_host'] == 'localhost'
+ assert config['carla_port'] == 2000
+
+
+def test_configure_carla_pythonapi_loads_stub_module(tmp_path, monkeypatch):
+ stub_root = tmp_path / 'fake_carla_api'
+ stub_root.mkdir()
+ (stub_root / 'carla.py').write_text('class VehicleControl:\n pass\n')
+
+ monkeypatch.setenv('CARLA_PYTHONAPI_PATH', str(stub_root))
+ sys.modules.pop('carla', None)
+ configure_carla_pythonapi()
+
+ module = load_carla_module()
+
+ assert module is not None
+ assert module.__name__ == 'carla'
+ assert str(stub_root) in sys.path
+
+
+def test_configure_carla_pythonapi_loads_stub_file_path(tmp_path, monkeypatch):
+ stub_root = tmp_path / 'fake_carla_api'
+ stub_root.mkdir()
+ stub_file = stub_root / 'carla.py'
+ stub_file.write_text('class VehicleControl:\n pass\n')
+
+ monkeypatch.delenv('CARLA_PYTHONAPI_PATH', raising=False)
+ sys.modules.pop('carla', None)
+ configure_carla_pythonapi(str(stub_file))
+
+ module = load_carla_module()
+
+ assert module is not None
+ assert module.__name__ == 'carla'
+ assert str(stub_root) in sys.path
+
+
+def test_connect_carla_raises_runtime_error_for_incomplete_stub(tmp_path, monkeypatch):
+ stub_root = tmp_path / 'fake_carla_api'
+ stub_root.mkdir()
+ (stub_root / 'carla.py').write_text('class VehicleControl:\n pass\n')
+
+ monkeypatch.delenv('CARLA_PYTHONAPI_PATH', raising=False)
+ sys.modules.pop('carla', None)
+
+ spec = importlib.util.spec_from_file_location(
+ 'main_planner',
+ vision_root / 'main_planner.py',
+ )
+ module = importlib.util.module_from_spec(spec)
+ spec.loader.exec_module(module)
+ module.configure_carla_for_run({'carla_pythonapi_path': str(stub_root)})
+
+ try:
+ module.connect_carla('localhost', 2000)
+ except RuntimeError as exc:
+ assert 'CARLA Python API' in str(exc)
+ else:
+ raise AssertionError('Expected RuntimeError when fake API is incomplete')
From f0e4628e4046453f799b4c0ee08ed6a645ef8586 Mon Sep 17 00:00:00 2001
From: liuhuatao <2814267042@qq.com>
Date: Sat, 6 Jun 2026 16:48:57 +0800
Subject: [PATCH 04/36] =?UTF-8?q?docs:=20=E6=B7=BB=E5=8A=A0=20vision=5Fbas?=
=?UTF-8?q?ed=5Fparking=20=E6=A8=A1=E5=9D=97=E6=96=87=E6=A1=A3?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
docs/vision_based_parking/README.md | 116 ++++++++++++++++++++++++++++
1 file changed, 116 insertions(+)
create mode 100644 docs/vision_based_parking/README.md
diff --git a/docs/vision_based_parking/README.md b/docs/vision_based_parking/README.md
new file mode 100644
index 0000000000..819c4df228
--- /dev/null
+++ b/docs/vision_based_parking/README.md
@@ -0,0 +1,116 @@
+# CARLA 视觉泊车与路径规划系统
+
+## 1. 项目简介
+本项目基于 CARLA 自动驾驶模拟器,实现了一套完整的视觉感知与路径规划系统。系统利用车载摄像头采集图像,通过计算机视觉算法识别周围环境与车位,并结合 PID 控制算法控制车辆在仿真环境中自动行驶与泊车。
+
+## 2. 选题说明
+- **技术方案**: 基于 CARLA 模拟器的视觉泊车系统,采用 Canny 边缘检测 + Hough 直线检测进行车位识别,PID 控制器进行车辆转向控制。
+- **设计思路**: 将感知、规划、控制三个模块解耦,通过配置文件统一管理参数,支持 CARLA 真机模式和本地演示模式的无缝切换。
+
+## 3. 开发运行环境
+- **操作系统**: Windows 10/11, Ubuntu 20.04/22.04
+- **仿真平台**: CARLA 0.9.13+
+- **编程语言**: Python 3.7+
+- **核心框架**: OpenCV, NumPy, PyTorch (可选), CARLA Python API
+- **开发工具**: Visual Studio Code / PyCharm
+
+## 4. 模块结构与入口
+- 本模块的所有核心代码存放于 `src/vision_based_parking` 目录下。
+- 模块的主程序入口为 `main.py`。
+
+---
+
+# [第1次提交] vision_based_parking: CARLA 视觉泊车与路径规划系统
+
+## 1. 模块功能
+本模块实现了 CARLA 自动驾驶场景中视觉泊车的完整闭环:
+
+- **视觉感知**: 通过 Canny 边缘检测和 Hough 直线变换,实时检测图像中的车道线和车位目标,支持未来扩展 YOLO 等深度学习检测器。
+- **路径规划**: 基于检测到的目标位置(target_x),计算车辆的目标转向角度,生成泊车引导路径。
+- **PID 控制**: 实现经典 PID 控制器,根据位置误差实时计算转向指令,控制车辆平稳驶向目标车位。
+- **多模式运行**: 支持连接 CARLA 服务器的真机模式,以及无需 CARLA 的本地演示模式(DemoVehicle)。
+- **灵活配置**: 通过 `config.yaml` 统一管理 CARLA 连接参数、车辆参数、PID 控制参数和视觉检测阈值。
+
+## 2. 运行指南
+
+### 步骤 1:启动 CARLA 模拟器
+首先,启动 CARLA 模拟器:
+
+**Windows:**
+```bash
+cd CARLA根目录
+CarlaUE4.exe -windowed -ResX=800 -ResY=600
+```
+
+**Linux:**
+```bash
+cd CARLA根目录
+./CarlaUE4.sh -windowed -ResX=800 -ResY=600
+```
+
+### 步骤 2:配置 Python 环境
+```bash
+pip install opencv-python numpy pyyaml -i https://pypi.tuna.tsinghua.edu.cn/simple
+```
+
+如需使用深度学习检测器(如 YOLOv8),还需安装:
+```bash
+pip install torch ultralytics -i https://pypi.tuna.tsinghua.edu.cn/simple
+```
+
+### 步骤 3:配置 CARLA Python API
+在 `config.yaml` 中设置 CARLA Python API 路径:
+```yaml
+carla_pythonapi_path: "../../hutb/PythonAPI/carla/dist"
+```
+或设置环境变量:
+```bash
+set CARLA_PYTHONAPI_PATH=D:\hutb\PythonAPI\carla\dist # Windows
+export CARLA_PYTHONAPI_PATH=/opt/carla/PythonAPI/carla/dist # Linux
+```
+
+### 步骤 4:运行程序
+在项目根目录下执行:
+```bash
+python src/vision_based_parking/main.py
+```
+
+如果未安装 CARLA 或 CARLA 服务器未启动,程序会自动进入演示模式,使用虚拟车辆进行仿真。
+
+### 步骤 5:操作说明
+- 程序启动后将打开 `Vision Based Parking` 窗口,显示检测结果和路径规划信息。
+- 左上角显示目标 X 坐标和当前转向角度。
+- 按 `q` 键退出程序。
+
+## 3. 配置说明
+`config.yaml` 主要参数:
+
+| 参数 | 说明 | 默认值 |
+|------|------|--------|
+| `carla_host` | CARLA 服务器 IP | localhost |
+| `carla_port` | CARLA 服务器端口 | 2000 |
+| `carla_pythonapi_path` | CARLA Python API 路径 | ../../hutb/PythonAPI/carla/dist |
+| `vehicle_blueprint` | 车辆蓝图名称 | vehicle.lincoln.mkz_2017 |
+| `simulation.fps` | 仿真帧率 | 30 |
+| `controller.kp` | PID 比例系数 | 0.8 |
+| `controller.ki` | PID 积分系数 | 0.0 |
+| `controller.kd` | PID 微分系数 | 0.1 |
+| `controller.max_steering_angle` | 最大转向角度 | 45 |
+| `controller.default_throttle` | 默认油门 | 0.3 |
+| `vision.canny_thresh1` | Canny 阈值1 | 50 |
+| `vision.canny_thresh2` | Canny 阈值2 | 150 |
+
+## 4. 模块文件说明
+| 文件 | 功能 |
+|------|------|
+| `main.py` | 主入口,连接 CARLA、协调感知与控制循环 |
+| `detector.py` | 视觉感知模块:Canny + Hough 车位检测 |
+| `controller.py` | 控制模块:PID 控制器 + CARLA API 路径配置 |
+| `utils.py` | 工具库:图像绘制、数值钳位辅助函数 |
+| `config.yaml` | 配置文件:CARLA 连接参数、车辆参数、检测阈值 |
+
+## 5. 参考
+- [CARLA 官方文档](https://carla.readthedocs.io/)
+- [CARLA Python API 参考](https://carla.readthedocs.io/en/latest/python_api/)
+- [OpenCV Canny 边缘检测](https://docs.opencv.org/4.x/da/d22/tutorial_py_canny.html)
+- [Hough 直线变换](https://docs.opencv.org/4.x/d9/db0/tutorial_hough_lines.html)
From c7671122a5de021ac0b7a6c61b7fdabb77a8f11a Mon Sep 17 00:00:00 2001
From: liuhuatao <2814267042@qq.com>
Date: Tue, 9 Jun 2026 16:36:56 +0800
Subject: [PATCH 05/36] =?UTF-8?q?feat:=20=E9=87=8D=E5=91=BD=E5=90=8D?=
=?UTF-8?q?=E5=85=A5=E5=8F=A3=E6=96=87=E4=BB=B6=E4=B8=BA=20main.py?=
=?UTF-8?q?=EF=BC=8C=E7=AC=A6=E5=90=88=E9=A1=B9=E7=9B=AE=E7=BA=A6=E5=AE=9A?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/vision_based_parking/{main_planner.py => main.py} | 0
tests/test_vision_parking.py | 8 ++++----
2 files changed, 4 insertions(+), 4 deletions(-)
rename src/vision_based_parking/{main_planner.py => main.py} (100%)
diff --git a/src/vision_based_parking/main_planner.py b/src/vision_based_parking/main.py
similarity index 100%
rename from src/vision_based_parking/main_planner.py
rename to src/vision_based_parking/main.py
diff --git a/tests/test_vision_parking.py b/tests/test_vision_parking.py
index 4cb3d5b851..f5772ab5b9 100644
--- a/tests/test_vision_parking.py
+++ b/tests/test_vision_parking.py
@@ -33,8 +33,8 @@ def test_load_config_resolves_relative_to_module_dir(tmp_path):
try:
os.chdir(tmp_path)
spec = importlib.util.spec_from_file_location(
- 'main_planner',
- vision_root / 'main_planner.py',
+ 'main',
+ vision_root / 'main.py',
)
module = importlib.util.module_from_spec(spec)
spec.loader.exec_module(module)
@@ -89,8 +89,8 @@ def test_connect_carla_raises_runtime_error_for_incomplete_stub(tmp_path, monkey
sys.modules.pop('carla', None)
spec = importlib.util.spec_from_file_location(
- 'main_planner',
- vision_root / 'main_planner.py',
+ 'main',
+ vision_root / 'main.py',
)
module = importlib.util.module_from_spec(spec)
spec.loader.exec_module(module)
From 46b91aebac93e9340950d93df866211ddc0febd3 Mon Sep 17 00:00:00 2001
From: liuhuatao <2814267042@qq.com>
Date: Tue, 9 Jun 2026 16:44:25 +0800
Subject: [PATCH 06/36] =?UTF-8?q?docs:=20=E5=AE=8C=E5=96=84=20vision=5Fbas?=
=?UTF-8?q?ed=5Fparking=20=E6=A8=A1=E5=9D=97=E6=96=87=E6=A1=A3=EF=BC=8C?=
=?UTF-8?q?=E6=B7=BB=E5=8A=A0=20mkdocs=20=E5=AF=BC=E8=88=AA=E5=92=8C?=
=?UTF-8?q?=E9=A6=96=E9=A1=B5=E9=93=BE=E6=8E=A5?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
docs/index.md | 2 ++
mkdocs.yml | 2 ++
src/vision_based_parking/README.md | 51 ------------------------------
3 files changed, 4 insertions(+), 51 deletions(-)
delete mode 100644 src/vision_based_parking/README.md
diff --git a/docs/index.md b/docs/index.md
index 3347b8896f..8ec9c52652 100644
--- a/docs/index.md
+++ b/docs/index.md
@@ -80,6 +80,8 @@ title: 主页
[__setup_tool模块汇报文档__](./setup_tool/report.md) - setup_tool 模块背景、改进内容、运行方式与效果总结
+[__视觉泊车__](./vision_based_parking/README.md) - 基于 CARLA 的视觉泊车与路径规划系统
+
## 规划
[__导航__](#navigation)
diff --git a/mkdocs.yml b/mkdocs.yml
index 7a6d2b064f..03ee30ac4b 100644
--- a/mkdocs.yml
+++ b/mkdocs.yml
@@ -50,6 +50,8 @@ nav:
- CarRacing DQN/DoubleDQN:训练改进与可视化对比: 'car_racing_dqn_improvements.md'
- 自动驾驶感知系统: 'carla_yolo_detection/README.md'
- 自动驾驶车辆语义分割: 'auto_drive_seg/README.md'
+- 钢铁表面缺陷检测: 'steel_defect_detection/README.md'
+- CARLA 视觉泊车: 'vision_based_parking/README.md'
# - mdx_math 用于行内公式显示
diff --git a/src/vision_based_parking/README.md b/src/vision_based_parking/README.md
deleted file mode 100644
index 8ed5bbdf2c..0000000000
--- a/src/vision_based_parking/README.md
+++ /dev/null
@@ -1,51 +0,0 @@
-CARLA 视觉泊车与路径规划系统
-本项目基于 CARLA 自动驾驶模拟器,实现了一套完整的视觉感知与路径规划系统。系统利用车载摄像头采集图像,通过目标检测算法(如 YOLO)识别周围环境与车位,并结合规划算法控制车辆在仿真环境中自动行驶与泊车。
-项目演示
-系统运行界面预览
-左侧:控制台日志,实时显示 FPS、车速、检测目标数量及车辆状态(如“车辆已重置到新位置”)。
-中间:第一人称视角与规划路径显示(蓝色引导线)。
-右侧:第三人称追踪视角,展示车辆整体运动姿态。
-小窗:目标检测视图,实时标注检测到的障碍物或车位。
-功能特性
-高保真仿真:基于 CARLA 模拟器,提供逼真的城市环境与物理反馈。
-视觉感知:集成目标检测算法(如 YOLO),实时处理摄像头数据,识别车位、车辆及交通标志。
-智能规划:实现基于视觉反馈的路径规划算法,引导车辆完成泊车或巡航任务。
-实时控制:通过 Python API 与 CARLA 交互,发送油门、刹车及转向指令。
-文件结构
-carla_vision_parking/
-├── main_planner.py # 主程序:连接CARLA服务器,协调感知与控制循环
-├── detector.py # 视觉模块:封装YOLO或其他检测算法
-├── controller.py # 控制模块:PID控制器或纯追踪算法
-├── config.yaml # 配置文件:CARLA连接参数、车辆参数、检测阈值
-└── utils.py # 工具库:坐标转换、图像绘制辅助函数
-环境依赖
-在运行项目之前,请确保您的系统满足以下要求:
-CARLA 模拟器:版本 0.9.13 或更高版本(下载地址)。
-Python:版本 3.7 或更高。
-Python 库:
-opencv-python:用于图像处理。
-numpy:用于数学计算。
-pygame:用于简单的可视化(可选)。
-torch / ultralytics:如果使用 YOLOv8 进行检测。
-carla:CARLA 的 Python API(通常在 PythonAPI/carla/dist/ 目录下)。
-安装依赖库:
-pip install opencv-python numpy pygame torch ultralytics
-pip install opencv-python numpy pygame torch ultralytics
-运行步骤
-启动 CARLA 服务器:
-首先,启动 CARLA 模拟器。您可以使用以下命令启动服务器(Windows):
-# 在 CARLA 根目录下运行
-CarlaUE4.exe -windowed -ResX=800 -ResY=600
-或者在 Linux 上:
-./CarlaUE4.sh -windowed -ResX=800 -ResY=600
-运行主程序:
-打开一个新的终端窗口,导航到项目目录并运行主程序:
-python main_planner.py
-观察仿真:
-程序启动后,您将看到 CARLA 模拟器窗口中出现车辆,并且控制台会输出实时的日志信息。您可以通过调整 config.yaml 中的参数来优化车辆的行为。
-配置说明
-您可以在 config.yaml 文件中调整以下参数:
-carla_host: CARLA 服务器的 IP 地址(默认为 localhost)。
-carla_port: CARLA 服务器的端口号(默认为 2000)。
-vehicle_speed: 车辆的最大行驶速度。
-parking_threshold: 判断车辆是否到达停车位的阈值。
From 8e2899878e217923b2ddb650abcd58b158895bad Mon Sep 17 00:00:00 2001
From: liuhuatao <2814267042@qq.com>
Date: Thu, 11 Jun 2026 22:28:04 +0800
Subject: [PATCH 07/36] readme
---
docs/driving_reward_analysis/README.md | 101 +++++++++++++++++++++++++
1 file changed, 101 insertions(+)
create mode 100644 docs/driving_reward_analysis/README.md
diff --git a/docs/driving_reward_analysis/README.md b/docs/driving_reward_analysis/README.md
new file mode 100644
index 0000000000..35040000b2
--- /dev/null
+++ b/docs/driving_reward_analysis/README.md
@@ -0,0 +1,101 @@
+# 自动驾驶奖励函数分析系统
+
+## 1. 项目简介
+本项目实现了一套完整的自动驾驶奖励函数建模与可视化分析系统。通过数学建模方式定义速度跟踪、距离控制、舒适性三类核心奖励函数,支持参数化配置、批量仿真与可视化输出,无需任何模拟器即可独立运行。
+
+系统可广泛应用于:
+- 强化学习自动驾驶算法的奖励设计
+- 自适应巡航控制(ACC)策略评估
+- 自动驾驶决策系统的安全性与舒适性权衡分析
+
+## 2. 选题说明
+- **技术方案**: 基于纯 Python + NumPy + Matplotlib 的奖励函数建模与可视化
+- **设计思路**: 将自动驾驶中的核心评价指标抽象为数学函数,通过参数化配置实现灵活的奖励设计,支持单场景分析与批量对比实验
+- **独特价值**: 无需 CARLA、AirSim 等重型模拟器,纯代码即可生成专业级分析图表
+
+## 3. 开发运行环境
+- **操作系统**: Windows 10/11, Ubuntu 20.04/22.04, macOS
+- **编程语言**: Python 3.8+
+- **核心依赖**: NumPy, Matplotlib
+- **开发工具**: Visual Studio Code / PyCharm / Jupyter Notebook
+
+## 4. 模块结构与入口
+- 本模块的所有核心代码存放于 `src/driving_reward_analysis` 目录下
+- 模块的主程序入口为 `main.py`
+- 奖励函数定义位于 `rewards.py`
+- 可视化工具位于 `visualizer.py`
+
+---
+
+# [第1次提交] driving_reward_analysis: 自动驾驶奖励函数分析系统
+
+## 1. 模块功能
+本模块实现了自动驾驶奖励函数的完整建模与分析流程:
+
+- **速度跟踪奖励**: 基于高斯分布建模,车辆速度越接近目标速度奖励越高,支持自定义目标速度和容忍度
+- **距离控制奖励**: 分段线性函数建模,保持安全距离时获得最大奖励,过近时惩罚急剧增加
+- **舒适性奖励**: 基于加速度的二次函数建模,零加速度时奖励最高,剧烈加减速时惩罚增加
+- **批量仿真**: 支持多组参数配置的批量实验,生成对比分析图表
+- **可视化输出**: 自动生成专业的奖励函数曲线图,支持保存为 PNG 格式
+
+## 2. 运行指南
+
+### 步骤 1:安装依赖
+```bash
+pip install numpy matplotlib -i https://pypi.tuna.tsinghua.edu.cn/simple
+```
+
+### 步骤 2:运行主程序
+在项目根目录下执行:
+```bash
+python src/driving_reward_analysis/main.py
+```
+
+程序将自动生成 `outputs/` 目录,并保存以下效果图:
+- `reward_func_analysis.png` — 三类奖励函数综合分析图
+- `reward_comparison.png` — 不同参数下的奖励函数对比图
+
+### 步骤 3:自定义参数
+编辑 `config.yaml` 文件调整奖励函数参数:
+```yaml
+speed_reward:
+ target_speed: 25.0 # 目标速度 (m/s)
+ tolerance: 5.0 # 速度容忍度
+
+distance_reward:
+ safe_distance: 15.0 # 安全距离 (m)
+ critical_distance: 5.0 # 临界距离 (m)
+
+comfort_reward:
+ max_acceleration: 2.0 # 最大加速度 (m/s²)
+```
+
+## 3. 模块文件说明
+| 文件 | 功能 |
+|------|------|
+| `main.py` | 主入口,执行奖励函数建模与可视化 |
+| `rewards.py` | 奖励函数定义:速度、距离、舒适性 |
+| `visualizer.py` | 可视化工具:绘制奖励函数曲线 |
+| `config.yaml` | 配置文件:奖励函数参数 |
+| `utils.py` | 工具函数:数据生成、文件保存 |
+
+## 4. 奖励函数数学定义
+
+### 速度跟踪奖励
+$$R_{speed}(v) = -\left(\frac{v - v_{target}}{\sigma}\right)^2$$
+
+其中 $v_{target}$ 为目标速度,$\sigma$ 为容忍度参数。
+
+### 距离控制奖励
+$$R_{dist}(d) = \begin{cases} -100 & d < d_{critical} \\ -10 \times (d_{safe} - d) & d_{critical} \leq d < d_{safe} \\ 0 & d \geq d_{safe} \end{cases}$$
+
+### 舒适性奖励
+$$R_{comfort}(a) = -a^2$$
+
+其中 $a$ 为加速度,零加速度时奖励最高。
+
+## 5. 参考
+- [强化学习奖励设计](https://spinningup.openai.com/en/latest/spinningup/rl_intro.html)
+- [自适应巡航控制](https://en.wikipedia.org/wiki/Adaptive_cruise_control)
+- [NumPy 文档](https://numpy.org/doc/)
+- [Matplotlib 文档](https://matplotlib.org/stable/)
From 6e61622396a7af4046d78d03a8683da7fccf3777 Mon Sep 17 00:00:00 2001
From: liuhuatao <2814267042@qq.com>
Date: Thu, 11 Jun 2026 22:33:48 +0800
Subject: [PATCH 08/36] =?UTF-8?q?=E5=88=A0=E9=99=A4=E6=97=A7=E9=A1=B9?=
=?UTF-8?q?=E7=9B=AE?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
docs/vision_based_parking/README.md | 116 -----------------------
src/vision_based_parking/config.yaml | 21 -----
src/vision_based_parking/controller.py | 113 -----------------------
src/vision_based_parking/detector.py | 40 --------
src/vision_based_parking/main.py | 123 -------------------------
src/vision_based_parking/utils.py | 7 --
6 files changed, 420 deletions(-)
delete mode 100644 docs/vision_based_parking/README.md
delete mode 100644 src/vision_based_parking/config.yaml
delete mode 100644 src/vision_based_parking/controller.py
delete mode 100644 src/vision_based_parking/detector.py
delete mode 100644 src/vision_based_parking/main.py
delete mode 100644 src/vision_based_parking/utils.py
diff --git a/docs/vision_based_parking/README.md b/docs/vision_based_parking/README.md
deleted file mode 100644
index 819c4df228..0000000000
--- a/docs/vision_based_parking/README.md
+++ /dev/null
@@ -1,116 +0,0 @@
-# CARLA 视觉泊车与路径规划系统
-
-## 1. 项目简介
-本项目基于 CARLA 自动驾驶模拟器,实现了一套完整的视觉感知与路径规划系统。系统利用车载摄像头采集图像,通过计算机视觉算法识别周围环境与车位,并结合 PID 控制算法控制车辆在仿真环境中自动行驶与泊车。
-
-## 2. 选题说明
-- **技术方案**: 基于 CARLA 模拟器的视觉泊车系统,采用 Canny 边缘检测 + Hough 直线检测进行车位识别,PID 控制器进行车辆转向控制。
-- **设计思路**: 将感知、规划、控制三个模块解耦,通过配置文件统一管理参数,支持 CARLA 真机模式和本地演示模式的无缝切换。
-
-## 3. 开发运行环境
-- **操作系统**: Windows 10/11, Ubuntu 20.04/22.04
-- **仿真平台**: CARLA 0.9.13+
-- **编程语言**: Python 3.7+
-- **核心框架**: OpenCV, NumPy, PyTorch (可选), CARLA Python API
-- **开发工具**: Visual Studio Code / PyCharm
-
-## 4. 模块结构与入口
-- 本模块的所有核心代码存放于 `src/vision_based_parking` 目录下。
-- 模块的主程序入口为 `main.py`。
-
----
-
-# [第1次提交] vision_based_parking: CARLA 视觉泊车与路径规划系统
-
-## 1. 模块功能
-本模块实现了 CARLA 自动驾驶场景中视觉泊车的完整闭环:
-
-- **视觉感知**: 通过 Canny 边缘检测和 Hough 直线变换,实时检测图像中的车道线和车位目标,支持未来扩展 YOLO 等深度学习检测器。
-- **路径规划**: 基于检测到的目标位置(target_x),计算车辆的目标转向角度,生成泊车引导路径。
-- **PID 控制**: 实现经典 PID 控制器,根据位置误差实时计算转向指令,控制车辆平稳驶向目标车位。
-- **多模式运行**: 支持连接 CARLA 服务器的真机模式,以及无需 CARLA 的本地演示模式(DemoVehicle)。
-- **灵活配置**: 通过 `config.yaml` 统一管理 CARLA 连接参数、车辆参数、PID 控制参数和视觉检测阈值。
-
-## 2. 运行指南
-
-### 步骤 1:启动 CARLA 模拟器
-首先,启动 CARLA 模拟器:
-
-**Windows:**
-```bash
-cd CARLA根目录
-CarlaUE4.exe -windowed -ResX=800 -ResY=600
-```
-
-**Linux:**
-```bash
-cd CARLA根目录
-./CarlaUE4.sh -windowed -ResX=800 -ResY=600
-```
-
-### 步骤 2:配置 Python 环境
-```bash
-pip install opencv-python numpy pyyaml -i https://pypi.tuna.tsinghua.edu.cn/simple
-```
-
-如需使用深度学习检测器(如 YOLOv8),还需安装:
-```bash
-pip install torch ultralytics -i https://pypi.tuna.tsinghua.edu.cn/simple
-```
-
-### 步骤 3:配置 CARLA Python API
-在 `config.yaml` 中设置 CARLA Python API 路径:
-```yaml
-carla_pythonapi_path: "../../hutb/PythonAPI/carla/dist"
-```
-或设置环境变量:
-```bash
-set CARLA_PYTHONAPI_PATH=D:\hutb\PythonAPI\carla\dist # Windows
-export CARLA_PYTHONAPI_PATH=/opt/carla/PythonAPI/carla/dist # Linux
-```
-
-### 步骤 4:运行程序
-在项目根目录下执行:
-```bash
-python src/vision_based_parking/main.py
-```
-
-如果未安装 CARLA 或 CARLA 服务器未启动,程序会自动进入演示模式,使用虚拟车辆进行仿真。
-
-### 步骤 5:操作说明
-- 程序启动后将打开 `Vision Based Parking` 窗口,显示检测结果和路径规划信息。
-- 左上角显示目标 X 坐标和当前转向角度。
-- 按 `q` 键退出程序。
-
-## 3. 配置说明
-`config.yaml` 主要参数:
-
-| 参数 | 说明 | 默认值 |
-|------|------|--------|
-| `carla_host` | CARLA 服务器 IP | localhost |
-| `carla_port` | CARLA 服务器端口 | 2000 |
-| `carla_pythonapi_path` | CARLA Python API 路径 | ../../hutb/PythonAPI/carla/dist |
-| `vehicle_blueprint` | 车辆蓝图名称 | vehicle.lincoln.mkz_2017 |
-| `simulation.fps` | 仿真帧率 | 30 |
-| `controller.kp` | PID 比例系数 | 0.8 |
-| `controller.ki` | PID 积分系数 | 0.0 |
-| `controller.kd` | PID 微分系数 | 0.1 |
-| `controller.max_steering_angle` | 最大转向角度 | 45 |
-| `controller.default_throttle` | 默认油门 | 0.3 |
-| `vision.canny_thresh1` | Canny 阈值1 | 50 |
-| `vision.canny_thresh2` | Canny 阈值2 | 150 |
-
-## 4. 模块文件说明
-| 文件 | 功能 |
-|------|------|
-| `main.py` | 主入口,连接 CARLA、协调感知与控制循环 |
-| `detector.py` | 视觉感知模块:Canny + Hough 车位检测 |
-| `controller.py` | 控制模块:PID 控制器 + CARLA API 路径配置 |
-| `utils.py` | 工具库:图像绘制、数值钳位辅助函数 |
-| `config.yaml` | 配置文件:CARLA 连接参数、车辆参数、检测阈值 |
-
-## 5. 参考
-- [CARLA 官方文档](https://carla.readthedocs.io/)
-- [CARLA Python API 参考](https://carla.readthedocs.io/en/latest/python_api/)
-- [OpenCV Canny 边缘检测](https://docs.opencv.org/4.x/da/d22/tutorial_py_canny.html)
-- [Hough 直线变换](https://docs.opencv.org/4.x/d9/db0/tutorial_hough_lines.html)
diff --git a/src/vision_based_parking/config.yaml b/src/vision_based_parking/config.yaml
deleted file mode 100644
index 3cb96a9f42..0000000000
--- a/src/vision_based_parking/config.yaml
+++ /dev/null
@@ -1,21 +0,0 @@
-carla_host: localhost
-carla_port: 2000
-# 可填真实 CARLA PythonAPI 目录,或课程提供的 fake carla.py 所在目录/文件路径
-carla_pythonapi_path: "../../hutb/PythonAPI/carla/dist"
-vehicle_blueprint: vehicle.lincoln.mkz_2017
-
-simulation:
- width: 800
- height: 600
- fps: 30
-
-controller:
- kp: 0.8
- ki: 0.0
- kd: 0.1
- max_steering_angle: 45
- default_throttle: 0.3
-
-vision:
- canny_thresh1: 50
- canny_thresh2: 150
diff --git a/src/vision_based_parking/controller.py b/src/vision_based_parking/controller.py
deleted file mode 100644
index bb99fe22a9..0000000000
--- a/src/vision_based_parking/controller.py
+++ /dev/null
@@ -1,113 +0,0 @@
-import os
-import sys
-from pathlib import Path
-from types import SimpleNamespace
-
-MODULE_DIR = Path(__file__).resolve().parent
-
-
-def configure_carla_pythonapi(path=None):
- """Add a CARLA PythonAPI location to sys.path when provided."""
- if path is None:
- path = os.environ.get('CARLA_PYTHONAPI_PATH')
-
- if not path:
- return
-
- resolved = Path(path).expanduser()
- if not resolved.is_absolute():
- resolved = (MODULE_DIR / resolved).resolve()
-
- if not resolved.exists():
- return
-
- if resolved.is_file():
- candidate_paths = [resolved.parent]
- else:
- candidate_paths = [resolved]
- if resolved.is_dir():
- candidate_paths.extend([
- resolved / 'dist',
- resolved / 'PythonAPI',
- resolved / 'PythonAPI' / 'carla',
- resolved / 'PythonAPI' / 'carla' / 'dist',
- resolved / 'carla',
- resolved / 'carla' / 'dist',
- ])
-
- for candidate in candidate_paths:
- if candidate.exists() and str(candidate) not in sys.path:
- sys.path.insert(0, str(candidate))
-
-
-def load_carla_module():
- try:
- import carla
- return carla
- except ImportError:
- configure_carla_pythonapi()
- try:
- import carla
- return carla
- except ImportError:
- return None
-
-
-class PIDController:
- def __init__(self, kp=0.8, ki=0.0, kd=0.1):
- self.kp = kp
- self.ki = ki
- self.kd = kd
- self.prev_error = 0.0
- self.integral = 0.0
-
- def update(self, error, dt=1.0):
- self.integral += error * dt
- derivative = (error - self.prev_error) / dt if dt != 0 else 0.0
- self.prev_error = error
- return self.kp * error + self.ki * self.integral + self.kd * derivative
-
-
-class ParkingController:
- _carla_module = None # 缓存 carla 模块,避免重复导入
-
- def __init__(self, config):
- ctrl = config.get('controller', {})
- self.pid = PIDController(ctrl.get('kp', 0.8), ctrl.get('ki', 0.0), ctrl.get('kd', 0.1))
- self.max_steer = ctrl.get('max_steering_angle', 45)
- self.default_throttle = ctrl.get('default_throttle', 0.3)
-
- def _get_carla(self):
- """获取 carla 模块,缓存以便复用。"""
- if ParkingController._carla_module is None:
- ParkingController._carla_module = load_carla_module()
- return ParkingController._carla_module
-
- def compute_control(self, vehicle, target_x, dt=1.0):
- carla = self._get_carla()
- if carla is None:
- return SimpleNamespace(
- throttle=self.default_throttle,
- steer=0.0,
- brake=0.0,
- )
-
- control = carla.VehicleControl()
- if target_x is None:
- control.throttle = 0.0
- control.steer = 0.0
- control.brake = 0.0
- return control
-
- current_x = vehicle.get_transform().location.x
- error = target_x - current_x
- steer_value = self.pid.update(error, dt)
-
- # 防止 max_steer 为 0 导致除零
- divisor = max(abs(self.max_steer), 1e-6)
- steer_value = max(-divisor, min(divisor, steer_value)) / divisor
-
- control.throttle = self.default_throttle
- control.steer = steer_value
- control.brake = 0.0
- return control
diff --git a/src/vision_based_parking/detector.py b/src/vision_based_parking/detector.py
deleted file mode 100644
index 997ac0c939..0000000000
--- a/src/vision_based_parking/detector.py
+++ /dev/null
@@ -1,40 +0,0 @@
-import cv2
-import numpy as np
-
-class ParkingDetector:
- def __init__(self, config=None):
- self.config = config or {}
-
- def capture_frame(self, world, vehicle):
- # TODO: 使用 CARLA 摄像头传感器获取实际图像
- width = self.config.get('simulation', {}).get('width', 800)
- height = self.config.get('simulation', {}).get('height', 600)
- return np.zeros((height, width, 3), dtype=np.uint8)
-
- def detect(self, frame):
- gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
- edges = cv2.Canny(
- gray,
- self.config.get('vision', {}).get('canny_thresh1', 50),
- self.config.get('vision', {}).get('canny_thresh2', 150)
- )
- lines = cv2.HoughLinesP(
- edges,
- rho=1,
- theta=np.pi / 180,
- threshold=50,
- minLineLength=50,
- maxLineGap=10
- )
-
- target_x = None
- if lines is not None:
- for line in lines:
- x1, y1, x2, y2 = line[0]
- cv2.line(frame, (x1, y1), (x2, y2), (255, 0, 0), 2)
- target_x = frame.shape[1] // 2
- cv2.circle(frame, (target_x, frame.shape[0] // 2), 8, (0, 0, 255), -1)
- cv2.putText(frame, '目标车位', (target_x - 60, frame.shape[0] // 2 - 20),
- cv2.FONT_HERSHEY_SIMPLEX, 0.6, (0, 0, 255), 2)
-
- return frame, target_x
diff --git a/src/vision_based_parking/main.py b/src/vision_based_parking/main.py
deleted file mode 100644
index c674c1e29f..0000000000
--- a/src/vision_based_parking/main.py
+++ /dev/null
@@ -1,123 +0,0 @@
-import os
-import sys
-import time
-from pathlib import Path
-from types import SimpleNamespace
-
-import cv2
-import yaml
-
-from controller import ParkingController, configure_carla_pythonapi
-from detector import ParkingDetector
-from utils import draw_text
-
-
-class DemoVehicle:
- def __init__(self):
- self.current_x = 0.0
-
- def get_transform(self):
- return SimpleNamespace(location=SimpleNamespace(x=self.current_x))
-
- def apply_control(self, control):
- self.current_x += float(getattr(control, 'throttle', 0.0)) * 0.01
-
-
-def load_config(path='config.yaml'):
- config_path = Path(path)
- if not config_path.is_absolute():
- config_path = Path(__file__).resolve().parent / config_path
-
- with open(config_path, 'r', encoding='utf-8') as f:
- return yaml.safe_load(f)
-
-
-def configure_carla_for_run(config):
- custom_path = config.get('carla_pythonapi_path')
- if custom_path:
- configure_carla_pythonapi(custom_path)
- return
-
- env_path = os.environ.get('CARLA_PYTHONAPI_PATH')
- if env_path:
- configure_carla_pythonapi(env_path)
-
-
-def connect_carla(host, port, timeout=10.0):
- try:
- import carla
- client = carla.Client(host, port)
- client.set_timeout(timeout)
- return client
- except (ImportError, AttributeError) as exc:
- raise RuntimeError('CARLA Python API 未安装或不完整,请先安装 carla 模块或提供完整的 fake API。') from exc
-
-
-def run_simulation_loop(config, detector, controller, world, vehicle):
- print('仿真循环已启动,按 q 退出。')
- target_fps = config['simulation'].get('fps', 30)
- frame_duration = 1.0 / target_fps
- prev_time = time.perf_counter()
-
- while True:
- loop_start = time.perf_counter()
- dt = loop_start - prev_time
- prev_time = loop_start
-
- frame = detector.capture_frame(world, vehicle)
- result_frame, target_x = detector.detect(frame)
- control = controller.compute_control(vehicle, target_x, dt)
-
- if vehicle is not None:
- vehicle.apply_control(control)
-
- draw_text(result_frame, f"目标 X: {target_x}", (20, 30))
- draw_text(result_frame, f"转向: {control.steer:.2f}", (20, 60))
- cv2.imshow('Vision Based Parking', result_frame)
-
- if cv2.waitKey(1) == ord('q'):
- break
-
- # 精确帧率控制:扣除本帧已用时间后再休眠
- elapsed = time.perf_counter() - loop_start
- sleep_time = frame_duration - elapsed
- if sleep_time > 0:
- time.sleep(sleep_time)
-
-
-def main():
- config = load_config()
- print(f"加载配置:{config}")
-
- configure_carla_for_run(config)
-
- detector = ParkingDetector(config)
- controller = ParkingController(config)
-
- world = None
- vehicle = None
-
- try:
- client = connect_carla(config.get('carla_host', 'localhost'), config.get('carla_port', 2000))
- world = client.get_world()
-
- print('正在生成仿真车辆...')
- blueprint_library = world.get_blueprint_library()
- vehicle_bp = blueprint_library.find(config.get('vehicle_blueprint', 'vehicle.lincoln.mkz_2017'))
- spawn_point = world.get_map().get_spawn_points()[0]
- vehicle = world.spawn_actor(vehicle_bp, spawn_point)
- except RuntimeError as exc:
- print(f"{exc},进入演示模式。")
- vehicle = DemoVehicle()
-
- try:
- run_simulation_loop(config, detector, controller, world, vehicle)
- finally:
- print('销毁车辆并关闭窗口。')
- if hasattr(vehicle, 'destroy'):
- vehicle.destroy()
- cv2.destroyAllWindows()
-
-
-if __name__ == '__main__':
- main()
diff --git a/src/vision_based_parking/utils.py b/src/vision_based_parking/utils.py
deleted file mode 100644
index 839ffb7371..0000000000
--- a/src/vision_based_parking/utils.py
+++ /dev/null
@@ -1,7 +0,0 @@
-import cv2
-
-def draw_text(frame, text, position=(20, 30), color=(255, 255, 255), scale=0.7, thickness=2):
- cv2.putText(frame, text, position, cv2.FONT_HERSHEY_SIMPLEX, scale, color, thickness)
-
-def clamp(value, minimum, maximum):
- return max(minimum, min(maximum, value))
From 313d11f8bffe6c665484a00aef6730ddfa9c05ee Mon Sep 17 00:00:00 2001
From: liuhuatao <2814267042@qq.com>
Date: Thu, 11 Jun 2026 22:50:29 +0800
Subject: [PATCH 09/36] =?UTF-8?q?=E5=90=8C=E6=AD=A5?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
docs/index.md | 2 +
mkdocs.yml | 1 +
src/driving_reward_analysis/config.yaml | 25 ++++
src/driving_reward_analysis/main.py | 148 ++++++++++++++++++++++
src/driving_reward_analysis/rewards.py | 145 +++++++++++++++++++++
src/driving_reward_analysis/utils.py | 100 +++++++++++++++
src/driving_reward_analysis/visualizer.py | 139 ++++++++++++++++++++
7 files changed, 560 insertions(+)
create mode 100644 src/driving_reward_analysis/config.yaml
create mode 100644 src/driving_reward_analysis/main.py
create mode 100644 src/driving_reward_analysis/rewards.py
create mode 100644 src/driving_reward_analysis/utils.py
create mode 100644 src/driving_reward_analysis/visualizer.py
diff --git a/docs/index.md b/docs/index.md
index 8ec9c52652..a60aeb02e3 100644
--- a/docs/index.md
+++ b/docs/index.md
@@ -86,6 +86,8 @@ title: 主页
[__导航__](#navigation)
+[__奖励分析__](./driving_reward_analysis/README.md) - 自动驾驶奖励函数建模与可视化分析
+
## 控制
[PID](#pid)
diff --git a/mkdocs.yml b/mkdocs.yml
index 03ee30ac4b..2eb33d7670 100644
--- a/mkdocs.yml
+++ b/mkdocs.yml
@@ -52,6 +52,7 @@ nav:
- 自动驾驶车辆语义分割: 'auto_drive_seg/README.md'
- 钢铁表面缺陷检测: 'steel_defect_detection/README.md'
- CARLA 视觉泊车: 'vision_based_parking/README.md'
+- 自动驾驶奖励分析: 'driving_reward_analysis/README.md'
# - mdx_math 用于行内公式显示
diff --git a/src/driving_reward_analysis/config.yaml b/src/driving_reward_analysis/config.yaml
new file mode 100644
index 0000000000..f53cd23f15
--- /dev/null
+++ b/src/driving_reward_analysis/config.yaml
@@ -0,0 +1,25 @@
+# 自动驾驶奖励函数分析系统配置
+
+# 速度跟踪奖励参数
+speed_reward:
+ target_speed: 25.0 # 目标速度 (m/s),对应图中峰值位置
+ tolerance: 5.0 # 速度容忍度,控制曲线宽度
+ speed_range: [0, 35] # 速度分析范围 [min, max]
+
+# 距离控制奖励参数
+distance_reward:
+ safe_distance: 15.0 # 安全距离 (m),对应图中红色虚线位置
+ critical_distance: 5.0 # 临界距离 (m),小于此距离时惩罚最大
+ distance_range: [0, 100] # 距离分析范围 [min, max]
+
+# 舒适性奖励参数
+comfort_reward:
+ max_acceleration: 2.0 # 最大加速度 (m/s²)
+ acceleration_range: [-3, 2] # 加速度分析范围 [min, max]
+
+# 可视化配置
+visualization:
+ figure_size: [12, 10] # 图表尺寸 (宽, 高)
+ dpi: 150 # 输出图片分辨率
+ output_dir: "outputs" # 输出目录
+ show_plot: false # 是否显示图表窗口
diff --git a/src/driving_reward_analysis/main.py b/src/driving_reward_analysis/main.py
new file mode 100644
index 0000000000..afac85c9a9
--- /dev/null
+++ b/src/driving_reward_analysis/main.py
@@ -0,0 +1,148 @@
+"""
+自动驾驶奖励函数分析系统 - 主入口
+
+整合奖励函数建模、批量仿真与可视化输出的完整流水线。
+
+使用示例:
+ python main.py # 运行完整分析
+ python main.py --config custom_config.yaml # 使用自定义配置
+"""
+
+import argparse
+import os
+import sys
+from pathlib import Path
+
+# 将当前脚本目录加入 Python 路径
+SCRIPT_DIR = Path(__file__).parent
+sys.path.insert(0, str(SCRIPT_DIR))
+
+from rewards import create_rewards_from_config
+from utils import load_config, ensure_output_dir, generate_scenario_data, compute_total_reward
+from visualizer import plot_reward_analysis, plot_parameter_comparison
+
+
+def cmd_analyze(args, config):
+ """执行奖励函数分析"""
+ print("\n>>> 执行奖励函数分析...")
+
+ # 创建奖励函数实例
+ rewards = create_rewards_from_config(config)
+
+ # 设置输出目录
+ viz_cfg = config.get('visualization', {})
+ output_dir = viz_cfg.get('output_dir', 'outputs')
+ output_dir = ensure_output_dir(SCRIPT_DIR / output_dir)
+
+ # 绘制综合分析图
+ print(" 绘制奖励函数综合分析图...")
+ plot_reward_analysis(
+ rewards,
+ config,
+ str(output_dir / 'reward_func_analysis.png')
+ )
+
+ # 绘制参数对比图
+ print(" 绘制参数对比图...")
+ from rewards import SpeedReward, DistanceReward
+
+ plot_parameter_comparison(
+ SpeedReward, 'target_speed', [20.0, 25.0, 30.0],
+ {'tolerance': 5.0},
+ str(output_dir / 'speed_reward_comparison.png'),
+ xlabel='Speed (m/s)'
+ )
+
+ plot_parameter_comparison(
+ DistanceReward, 'safe_distance', [10.0, 15.0, 20.0],
+ {'critical_distance': 5.0},
+ str(output_dir / 'distance_reward_comparison.png'),
+ xlabel='Distance (m)'
+ )
+
+ print(f"\n 分析完成!输出目录: {output_dir}")
+
+
+def cmd_simulate(args, config):
+ """执行批量仿真"""
+ print("\n>>> 执行批量仿真...")
+
+ rewards = create_rewards_from_config(config)
+
+ # 生成场景数据
+ print(" 生成模拟场景数据...")
+ scenario_data = generate_scenario_data(num_samples=1000)
+
+ # 计算奖励
+ print(" 计算奖励...")
+ reward_results = compute_total_reward(rewards, scenario_data)
+
+ # 输出统计信息
+ print("\n 奖励统计:")
+ print(f" 速度奖励: mean={reward_results['speed_reward'].mean():.3f}, "
+ f"std={reward_results['speed_reward'].std():.3f}")
+ print(f" 距离奖励: mean={reward_results['distance_reward'].mean():.3f}, "
+ f"std={reward_results['distance_reward'].std():.3f}")
+ print(f" 舒适性奖励: mean={reward_results['comfort_reward'].mean():.3f}, "
+ f"std={reward_results['comfort_reward'].std():.3f}")
+ print(f" 总奖励: mean={reward_results['total_reward'].mean():.3f}, "
+ f"std={reward_results['total_reward'].std():.3f}")
+
+
+def cmd_all(args, config):
+ """运行完整流水线"""
+ print("\n" + "=" * 60)
+ print(" 自动驾驶奖励函数分析 - 完整流水线")
+ print("=" * 60)
+
+ cmd_analyze(args, config)
+ cmd_simulate(args, config)
+
+ print("\n" + "=" * 60)
+ print(" 全部流程已完成!")
+ print("=" * 60)
+
+
+def main():
+ parser = argparse.ArgumentParser(
+ description="自动驾驶奖励函数分析系统 - 主入口",
+ formatter_class=argparse.RawDescriptionHelpFormatter,
+ epilog="""
+命令列表:
+ analyze 绘制奖励函数分析图
+ simulate 执行批量仿真并输出统计
+ all 完整流水线(默认)
+
+示例:
+ python main.py
+ python main.py analyze
+ python main.py simulate
+ """,
+ )
+
+ parser.add_argument("command", nargs="?", default="all",
+ choices=["analyze", "simulate", "all"],
+ help="要执行的命令")
+ parser.add_argument("--config", type=str, default="config.yaml",
+ help="配置文件路径")
+
+ args = parser.parse_args()
+
+ # 切换工作目录
+ os.chdir(SCRIPT_DIR)
+
+ # 加载配置
+ config = load_config(args.config)
+
+ # 分发命令
+ commands = {
+ "analyze": cmd_analyze,
+ "simulate": cmd_simulate,
+ "all": cmd_all,
+ }
+
+ commands[args.command](args, config)
+
+
+if __name__ == "__main__":
+ main()
diff --git a/src/driving_reward_analysis/rewards.py b/src/driving_reward_analysis/rewards.py
new file mode 100644
index 0000000000..591b53b1da
--- /dev/null
+++ b/src/driving_reward_analysis/rewards.py
@@ -0,0 +1,145 @@
+"""
+自动驾驶奖励函数定义模块
+
+实现三类核心奖励函数:
+- 速度跟踪奖励 (Speed Tracking Reward)
+- 距离控制奖励 (Distance Control Reward)
+- 舒适性奖励 (Comfort Reward)
+"""
+
+import numpy as np
+
+
+class SpeedReward:
+ """速度跟踪奖励函数
+
+ 基于高斯分布建模,车辆速度越接近目标速度奖励越高。
+ 当速度等于目标速度时,奖励达到最大值。
+ """
+
+ def __init__(self, target_speed=25.0, tolerance=5.0):
+ self.target_speed = target_speed
+ self.tolerance = tolerance
+
+ def compute(self, speed):
+ """计算速度跟踪奖励
+
+ Args:
+ speed: 当前速度 (m/s),标量或数组
+
+ Returns:
+ 奖励值,范围约为 [-0.5, 0.5]
+ """
+ speed = np.asarray(speed, dtype=float)
+ # 高斯型奖励函数,峰值在 target_speed
+ reward = np.exp(-0.5 * ((speed - self.target_speed) / self.tolerance) ** 2) * 0.5
+ # 添加偏移使低速时有一定负奖励
+ reward -= 0.5
+ return reward
+
+ def get_range(self):
+ """返回速度分析范围"""
+ return np.linspace(0, 35, 500)
+
+
+class DistanceReward:
+ """距离控制奖励函数
+
+ 分段线性函数建模:
+ - 小于临界距离:最大惩罚 (-1.0)
+ - 临界距离到安全距离之间:线性过渡
+ - 大于安全距离:零奖励(不额外鼓励过远距离)
+ """
+
+ def __init__(self, safe_distance=15.0, critical_distance=5.0):
+ self.safe_distance = safe_distance
+ self.critical_distance = critical_distance
+
+ def compute(self, distance):
+ """计算距离控制奖励
+
+ Args:
+ distance: 前车距离 (m),标量或数组
+
+ Returns:
+ 奖励值,范围 [-1.0, 0.0]
+ """
+ distance = np.asarray(distance, dtype=float)
+ reward = np.zeros_like(distance)
+
+ # 小于临界距离:最大惩罚
+ mask_critical = distance < self.critical_distance
+ reward[mask_critical] = -1.0
+
+ # 临界距离到安全距离之间:线性过渡
+ mask_transition = (distance >= self.critical_distance) & (distance < self.safe_distance)
+ reward[mask_transition] = -1.0 + (distance[mask_transition] - self.critical_distance) / \
+ (self.safe_distance - self.critical_distance)
+
+ # 大于安全距离:零奖励
+ mask_safe = distance >= self.safe_distance
+ reward[mask_safe] = 0.0
+
+ return reward
+
+ def get_range(self):
+ """返回距离分析范围"""
+ return np.linspace(0, 100, 500)
+
+
+class ComfortReward:
+ """舒适性奖励函数
+
+ 基于加速度的二次函数建模:
+ - 零加速度时奖励最高
+ - 加速度绝对值越大,惩罚越严重
+ """
+
+ def __init__(self, max_acceleration=2.0):
+ self.max_acceleration = max_acceleration
+
+ def compute(self, acceleration):
+ """计算舒适性奖励
+
+ Args:
+ acceleration: 当前加速度 (m/s²),标量或数组
+
+ Returns:
+ 奖励值,范围约为 [-0.5, 0.5]
+ """
+ acceleration = np.asarray(acceleration, dtype=float)
+ # 二次函数,峰值在 0
+ reward = 0.5 - 0.5 * (acceleration / self.max_acceleration) ** 2
+ return reward
+
+ def get_range(self):
+ """返回加速度分析范围"""
+ return np.linspace(-3, 2, 500)
+
+
+def create_rewards_from_config(config):
+ """从配置字典创建奖励函数实例
+
+ Args:
+ config: 配置字典,通常从 config.yaml 加载
+
+ Returns:
+ dict: 包含三个奖励函数实例的字典
+ """
+ speed_cfg = config.get('speed_reward', {})
+ distance_cfg = config.get('distance_reward', {})
+ comfort_cfg = config.get('comfort_reward', {})
+
+ return {
+ 'speed': SpeedReward(
+ target_speed=speed_cfg.get('target_speed', 25.0),
+ tolerance=speed_cfg.get('tolerance', 5.0)
+ ),
+ 'distance': DistanceReward(
+ safe_distance=distance_cfg.get('safe_distance', 15.0),
+ critical_distance=distance_cfg.get('critical_distance', 5.0)
+ ),
+ 'comfort': ComfortReward(
+ max_acceleration=comfort_cfg.get('max_acceleration', 2.0)
+ )
+ }
diff --git a/src/driving_reward_analysis/utils.py b/src/driving_reward_analysis/utils.py
new file mode 100644
index 0000000000..3768692456
--- /dev/null
+++ b/src/driving_reward_analysis/utils.py
@@ -0,0 +1,100 @@
+"""
+工具函数模块
+
+提供辅助功能:配置加载、数据生成、文件管理等
+"""
+
+import os
+from pathlib import Path
+
+import yaml
+
+
+def load_config(config_path='config.yaml'):
+ """加载 YAML 配置文件
+
+ Args:
+ config_path: 配置文件路径,默认为当前目录下的 config.yaml
+
+ Returns:
+ dict: 配置字典
+ """
+ config_file = Path(config_path)
+ if not config_file.is_absolute():
+ config_file = Path(__file__).resolve().parent / config_file
+
+ with open(config_file, 'r', encoding='utf-8') as f:
+ return yaml.safe_load(f)
+
+
+def ensure_output_dir(output_dir):
+ """确保输出目录存在
+
+ Args:
+ output_dir: 输出目录路径
+
+ Returns:
+ Path: 输出目录的 Path 对象
+ """
+ path = Path(output_dir)
+ path.mkdir(parents=True, exist_ok=True)
+ return path
+
+
+def generate_scenario_data(num_samples=1000):
+ """生成模拟驾驶场景数据
+
+ 生成随机的速度、距离、加速度数据,用于批量奖励计算
+
+ Args:
+ num_samples: 样本数量
+
+ Returns:
+ dict: 包含 'speed', 'distance', 'acceleration' 三个数组的字典
+ """
+ np = __import__('numpy')
+
+ # 速度:正态分布,均值 20 m/s,标准差 5
+ speed = np.random.normal(20, 5, num_samples)
+ speed = np.clip(speed, 0, 40)
+
+ # 距离:指数分布,模拟不同跟车距离
+ distance = np.random.exponential(20, num_samples)
+ distance = np.clip(distance, 0, 100)
+
+ # 加速度:正态分布,均值 0,标准差 1
+ acceleration = np.random.normal(0, 1, num_samples)
+ acceleration = np.clip(acceleration, -3, 3)
+
+ return {
+ 'speed': speed,
+ 'distance': distance,
+ 'acceleration': acceleration
+ }
+
+
+def compute_total_reward(rewards, scenario_data):
+ """计算总奖励
+
+ 根据场景数据,计算三类奖励的加权和
+
+ Args:
+ rewards: dict,包含三个奖励函数实例
+ scenario_data: dict,包含场景数据
+
+ Returns:
+ dict: 包含各类奖励和总奖励的字典
+ """
+ speed_r = rewards['speed'].compute(scenario_data['speed'])
+ distance_r = rewards['distance'].compute(scenario_data['distance'])
+ comfort_r = rewards['comfort'].compute(scenario_data['acceleration'])
+
+ # 简单加权求和(可根据需求调整权重)
+ total_r = speed_r + distance_r + comfort_r
+
+ return {
+ 'speed_reward': speed_r,
+ 'distance_reward': distance_r,
+ 'comfort_reward': comfort_r,
+ 'total_reward': total_r
+ }
diff --git a/src/driving_reward_analysis/visualizer.py b/src/driving_reward_analysis/visualizer.py
new file mode 100644
index 0000000000..eddb025901
--- /dev/null
+++ b/src/driving_reward_analysis/visualizer.py
@@ -0,0 +1,139 @@
+"""
+奖励函数可视化模块
+
+提供专业的奖励函数曲线绘制功能,支持:
+- 单函数详细分析图
+- 多函数对比分析图
+- 批量参数对比图
+"""
+
+import os
+from pathlib import Path
+
+import matplotlib
+matplotlib.use('Agg') # 无GUI后端,适合服务器运行
+import matplotlib.pyplot as plt
+import numpy as np
+
+
+def setup_chinese_font():
+ """配置中文字体支持"""
+ plt.rcParams['font.sans-serif'] = ['SimHei', 'DejaVu Sans']
+ plt.rcParams['axes.unicode_minus'] = False
+
+
+def plot_reward_analysis(rewards, config, output_path):
+ """绘制奖励函数综合分析图
+
+ 生成与示例图片类似的三子图布局:
+ - 上:速度跟踪奖励
+ - 中:距离控制奖励
+ - 下:舒适性奖励
+
+ Args:
+ rewards: dict,包含 'speed', 'distance', 'comfort' 三个奖励函数实例
+ config: 配置字典
+ output_path: 输出图片路径
+ """
+ setup_chinese_font()
+
+ fig, axes = plt.subplots(3, 1, figsize=(12, 10), dpi=150)
+ fig.patch.set_facecolor('white')
+
+ # ===== 子图1:速度跟踪奖励 =====
+ ax1 = axes[0]
+ speed_range = rewards['speed'].get_range()
+ speed_reward = rewards['speed'].compute(speed_range)
+
+ ax1.plot(speed_range, speed_reward, 'b-', linewidth=1.5, label='Speed Reward')
+ target_speed = config['speed_reward']['target_speed']
+ ax1.axvline(x=target_speed, color='r', linestyle='--', linewidth=1.5,
+ label=f'Target Speed ({target_speed} m/s)')
+ ax1.set_title('Speed Tracking Reward', fontsize=14, fontweight='bold')
+ ax1.set_xlabel('Speed (m/s)', fontsize=11)
+ ax1.set_ylabel('Reward', fontsize=11)
+ ax1.legend(loc='upper right', fontsize=9)
+ ax1.grid(True, alpha=0.3)
+ ax1.set_xlim(0, 35)
+
+ # ===== 子图2:距离控制奖励 =====
+ ax2 = axes[1]
+ distance_range = rewards['distance'].get_range()
+ distance_reward = rewards['distance'].compute(distance_range)
+
+ ax2.plot(distance_range, distance_reward, 'b-', linewidth=1.5, label='Distance Reward')
+ safe_distance = config['distance_reward']['safe_distance']
+ ax2.axvline(x=safe_distance, color='r', linestyle='--', linewidth=1.5,
+ label=f'Min Safe Distance ({safe_distance} m)')
+ ax2.set_title('Distance Control Reward', fontsize=14, fontweight='bold')
+ ax2.set_xlabel('Distance (m)', fontsize=11)
+ ax2.set_ylabel('Reward', fontsize=11)
+ ax2.legend(loc='upper right', fontsize=9)
+ ax2.grid(True, alpha=0.3)
+ ax2.set_xlim(0, 100)
+
+ # ===== 子图3:舒适性奖励 =====
+ ax3 = axes[2]
+ accel_range = rewards['comfort'].get_range()
+ comfort_reward = rewards['comfort'].compute(accel_range)
+
+ ax3.plot(accel_range, comfort_reward, 'b-', linewidth=1.5, label='Comfort Reward')
+ ax3.axvline(x=0, color='r', linestyle='--', linewidth=1.5,
+ label='Zero Acceleration')
+ ax3.set_title('Comfort Reward', fontsize=14, fontweight='bold')
+ ax3.set_xlabel('Acceleration (m/s²)', fontsize=11)
+ ax3.set_ylabel('Reward', fontsize=11)
+ ax3.legend(loc='upper right', fontsize=9)
+ ax3.grid(True, alpha=0.3)
+ ax3.set_xlim(-3, 2)
+
+ plt.tight_layout(pad=2.0)
+
+ # 保存图片
+ Path(output_path).parent.mkdir(parents=True, exist_ok=True)
+ plt.savefig(output_path, dpi=150, bbox_inches='tight', facecolor='white')
+ plt.close(fig)
+
+ print(f" 已保存: {output_path}")
+
+
+def plot_parameter_comparison(reward_class, param_name, param_values,
+ fixed_params, output_path, xlabel='X'):
+ """绘制不同参数下的奖励函数对比图
+
+ Args:
+ reward_class: 奖励函数类
+ param_name: 要变化的参数名
+ param_values: 参数取值列表
+ fixed_params: 固定参数字典
+ output_path: 输出图片路径
+ xlabel: X轴标签
+ """
+ setup_chinese_font()
+
+ fig, ax = plt.subplots(figsize=(10, 6), dpi=150)
+ fig.patch.set_facecolor('white')
+
+ colors = plt.cm.viridis(np.linspace(0, 0.8, len(param_values)))
+
+ for i, val in enumerate(param_values):
+ params = fixed_params.copy()
+ params[param_name] = val
+ reward = reward_class(**params)
+ x_range = reward.get_range()
+ y_values = reward.compute(x_range)
+ ax.plot(x_range, y_values, color=colors[i], linewidth=1.5,
+ label=f'{param_name}={val}')
+
+ ax.set_title(f'{reward_class.__name__} - Parameter Comparison',
+ fontsize=14, fontweight='bold')
+ ax.set_xlabel(xlabel, fontsize=11)
+ ax.set_ylabel('Reward', fontsize=11)
+ ax.legend(loc='best', fontsize=9)
+ ax.grid(True, alpha=0.3)
+
+ Path(output_path).parent.mkdir(parents=True, exist_ok=True)
+ plt.savefig(output_path, dpi=150, bbox_inches='tight', facecolor='white')
+ plt.close(fig)
+
+ print(f" 已保存: {output_path}")
From 50269f206ac9b06eb4caa3c774caef7dd8d85ac5 Mon Sep 17 00:00:00 2001
From: liuhuatao <2814267042@qq.com>
Date: Thu, 11 Jun 2026 22:52:46 +0800
Subject: [PATCH 10/36] =?UTF-8?q?=E5=90=8C=E6=AD=A5?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/driving_reward_analysis/config.yaml | 25 ----
src/driving_reward_analysis/main.py | 148 ----------------------
src/driving_reward_analysis/rewards.py | 145 ---------------------
src/driving_reward_analysis/utils.py | 100 ---------------
src/driving_reward_analysis/visualizer.py | 139 --------------------
5 files changed, 557 deletions(-)
delete mode 100644 src/driving_reward_analysis/config.yaml
delete mode 100644 src/driving_reward_analysis/main.py
delete mode 100644 src/driving_reward_analysis/rewards.py
delete mode 100644 src/driving_reward_analysis/utils.py
delete mode 100644 src/driving_reward_analysis/visualizer.py
diff --git a/src/driving_reward_analysis/config.yaml b/src/driving_reward_analysis/config.yaml
deleted file mode 100644
index f53cd23f15..0000000000
--- a/src/driving_reward_analysis/config.yaml
+++ /dev/null
@@ -1,25 +0,0 @@
-# 自动驾驶奖励函数分析系统配置
-
-# 速度跟踪奖励参数
-speed_reward:
- target_speed: 25.0 # 目标速度 (m/s),对应图中峰值位置
- tolerance: 5.0 # 速度容忍度,控制曲线宽度
- speed_range: [0, 35] # 速度分析范围 [min, max]
-
-# 距离控制奖励参数
-distance_reward:
- safe_distance: 15.0 # 安全距离 (m),对应图中红色虚线位置
- critical_distance: 5.0 # 临界距离 (m),小于此距离时惩罚最大
- distance_range: [0, 100] # 距离分析范围 [min, max]
-
-# 舒适性奖励参数
-comfort_reward:
- max_acceleration: 2.0 # 最大加速度 (m/s²)
- acceleration_range: [-3, 2] # 加速度分析范围 [min, max]
-
-# 可视化配置
-visualization:
- figure_size: [12, 10] # 图表尺寸 (宽, 高)
- dpi: 150 # 输出图片分辨率
- output_dir: "outputs" # 输出目录
- show_plot: false # 是否显示图表窗口
diff --git a/src/driving_reward_analysis/main.py b/src/driving_reward_analysis/main.py
deleted file mode 100644
index afac85c9a9..0000000000
--- a/src/driving_reward_analysis/main.py
+++ /dev/null
@@ -1,148 +0,0 @@
-"""
-自动驾驶奖励函数分析系统 - 主入口
-
-整合奖励函数建模、批量仿真与可视化输出的完整流水线。
-
-使用示例:
- python main.py # 运行完整分析
- python main.py --config custom_config.yaml # 使用自定义配置
-"""
-
-import argparse
-import os
-import sys
-from pathlib import Path
-
-# 将当前脚本目录加入 Python 路径
-SCRIPT_DIR = Path(__file__).parent
-sys.path.insert(0, str(SCRIPT_DIR))
-
-from rewards import create_rewards_from_config
-from utils import load_config, ensure_output_dir, generate_scenario_data, compute_total_reward
-from visualizer import plot_reward_analysis, plot_parameter_comparison
-
-
-def cmd_analyze(args, config):
- """执行奖励函数分析"""
- print("\n>>> 执行奖励函数分析...")
-
- # 创建奖励函数实例
- rewards = create_rewards_from_config(config)
-
- # 设置输出目录
- viz_cfg = config.get('visualization', {})
- output_dir = viz_cfg.get('output_dir', 'outputs')
- output_dir = ensure_output_dir(SCRIPT_DIR / output_dir)
-
- # 绘制综合分析图
- print(" 绘制奖励函数综合分析图...")
- plot_reward_analysis(
- rewards,
- config,
- str(output_dir / 'reward_func_analysis.png')
- )
-
- # 绘制参数对比图
- print(" 绘制参数对比图...")
- from rewards import SpeedReward, DistanceReward
-
- plot_parameter_comparison(
- SpeedReward, 'target_speed', [20.0, 25.0, 30.0],
- {'tolerance': 5.0},
- str(output_dir / 'speed_reward_comparison.png'),
- xlabel='Speed (m/s)'
- )
-
- plot_parameter_comparison(
- DistanceReward, 'safe_distance', [10.0, 15.0, 20.0],
- {'critical_distance': 5.0},
- str(output_dir / 'distance_reward_comparison.png'),
- xlabel='Distance (m)'
- )
-
- print(f"\n 分析完成!输出目录: {output_dir}")
-
-
-def cmd_simulate(args, config):
- """执行批量仿真"""
- print("\n>>> 执行批量仿真...")
-
- rewards = create_rewards_from_config(config)
-
- # 生成场景数据
- print(" 生成模拟场景数据...")
- scenario_data = generate_scenario_data(num_samples=1000)
-
- # 计算奖励
- print(" 计算奖励...")
- reward_results = compute_total_reward(rewards, scenario_data)
-
- # 输出统计信息
- print("\n 奖励统计:")
- print(f" 速度奖励: mean={reward_results['speed_reward'].mean():.3f}, "
- f"std={reward_results['speed_reward'].std():.3f}")
- print(f" 距离奖励: mean={reward_results['distance_reward'].mean():.3f}, "
- f"std={reward_results['distance_reward'].std():.3f}")
- print(f" 舒适性奖励: mean={reward_results['comfort_reward'].mean():.3f}, "
- f"std={reward_results['comfort_reward'].std():.3f}")
- print(f" 总奖励: mean={reward_results['total_reward'].mean():.3f}, "
- f"std={reward_results['total_reward'].std():.3f}")
-
-
-def cmd_all(args, config):
- """运行完整流水线"""
- print("\n" + "=" * 60)
- print(" 自动驾驶奖励函数分析 - 完整流水线")
- print("=" * 60)
-
- cmd_analyze(args, config)
- cmd_simulate(args, config)
-
- print("\n" + "=" * 60)
- print(" 全部流程已完成!")
- print("=" * 60)
-
-
-def main():
- parser = argparse.ArgumentParser(
- description="自动驾驶奖励函数分析系统 - 主入口",
- formatter_class=argparse.RawDescriptionHelpFormatter,
- epilog="""
-命令列表:
- analyze 绘制奖励函数分析图
- simulate 执行批量仿真并输出统计
- all 完整流水线(默认)
-
-示例:
- python main.py
- python main.py analyze
- python main.py simulate
- """,
- )
-
- parser.add_argument("command", nargs="?", default="all",
- choices=["analyze", "simulate", "all"],
- help="要执行的命令")
- parser.add_argument("--config", type=str, default="config.yaml",
- help="配置文件路径")
-
- args = parser.parse_args()
-
- # 切换工作目录
- os.chdir(SCRIPT_DIR)
-
- # 加载配置
- config = load_config(args.config)
-
- # 分发命令
- commands = {
- "analyze": cmd_analyze,
- "simulate": cmd_simulate,
- "all": cmd_all,
- }
-
- commands[args.command](args, config)
-
-
-if __name__ == "__main__":
- main()
diff --git a/src/driving_reward_analysis/rewards.py b/src/driving_reward_analysis/rewards.py
deleted file mode 100644
index 591b53b1da..0000000000
--- a/src/driving_reward_analysis/rewards.py
+++ /dev/null
@@ -1,145 +0,0 @@
-"""
-自动驾驶奖励函数定义模块
-
-实现三类核心奖励函数:
-- 速度跟踪奖励 (Speed Tracking Reward)
-- 距离控制奖励 (Distance Control Reward)
-- 舒适性奖励 (Comfort Reward)
-"""
-
-import numpy as np
-
-
-class SpeedReward:
- """速度跟踪奖励函数
-
- 基于高斯分布建模,车辆速度越接近目标速度奖励越高。
- 当速度等于目标速度时,奖励达到最大值。
- """
-
- def __init__(self, target_speed=25.0, tolerance=5.0):
- self.target_speed = target_speed
- self.tolerance = tolerance
-
- def compute(self, speed):
- """计算速度跟踪奖励
-
- Args:
- speed: 当前速度 (m/s),标量或数组
-
- Returns:
- 奖励值,范围约为 [-0.5, 0.5]
- """
- speed = np.asarray(speed, dtype=float)
- # 高斯型奖励函数,峰值在 target_speed
- reward = np.exp(-0.5 * ((speed - self.target_speed) / self.tolerance) ** 2) * 0.5
- # 添加偏移使低速时有一定负奖励
- reward -= 0.5
- return reward
-
- def get_range(self):
- """返回速度分析范围"""
- return np.linspace(0, 35, 500)
-
-
-class DistanceReward:
- """距离控制奖励函数
-
- 分段线性函数建模:
- - 小于临界距离:最大惩罚 (-1.0)
- - 临界距离到安全距离之间:线性过渡
- - 大于安全距离:零奖励(不额外鼓励过远距离)
- """
-
- def __init__(self, safe_distance=15.0, critical_distance=5.0):
- self.safe_distance = safe_distance
- self.critical_distance = critical_distance
-
- def compute(self, distance):
- """计算距离控制奖励
-
- Args:
- distance: 前车距离 (m),标量或数组
-
- Returns:
- 奖励值,范围 [-1.0, 0.0]
- """
- distance = np.asarray(distance, dtype=float)
- reward = np.zeros_like(distance)
-
- # 小于临界距离:最大惩罚
- mask_critical = distance < self.critical_distance
- reward[mask_critical] = -1.0
-
- # 临界距离到安全距离之间:线性过渡
- mask_transition = (distance >= self.critical_distance) & (distance < self.safe_distance)
- reward[mask_transition] = -1.0 + (distance[mask_transition] - self.critical_distance) / \
- (self.safe_distance - self.critical_distance)
-
- # 大于安全距离:零奖励
- mask_safe = distance >= self.safe_distance
- reward[mask_safe] = 0.0
-
- return reward
-
- def get_range(self):
- """返回距离分析范围"""
- return np.linspace(0, 100, 500)
-
-
-class ComfortReward:
- """舒适性奖励函数
-
- 基于加速度的二次函数建模:
- - 零加速度时奖励最高
- - 加速度绝对值越大,惩罚越严重
- """
-
- def __init__(self, max_acceleration=2.0):
- self.max_acceleration = max_acceleration
-
- def compute(self, acceleration):
- """计算舒适性奖励
-
- Args:
- acceleration: 当前加速度 (m/s²),标量或数组
-
- Returns:
- 奖励值,范围约为 [-0.5, 0.5]
- """
- acceleration = np.asarray(acceleration, dtype=float)
- # 二次函数,峰值在 0
- reward = 0.5 - 0.5 * (acceleration / self.max_acceleration) ** 2
- return reward
-
- def get_range(self):
- """返回加速度分析范围"""
- return np.linspace(-3, 2, 500)
-
-
-def create_rewards_from_config(config):
- """从配置字典创建奖励函数实例
-
- Args:
- config: 配置字典,通常从 config.yaml 加载
-
- Returns:
- dict: 包含三个奖励函数实例的字典
- """
- speed_cfg = config.get('speed_reward', {})
- distance_cfg = config.get('distance_reward', {})
- comfort_cfg = config.get('comfort_reward', {})
-
- return {
- 'speed': SpeedReward(
- target_speed=speed_cfg.get('target_speed', 25.0),
- tolerance=speed_cfg.get('tolerance', 5.0)
- ),
- 'distance': DistanceReward(
- safe_distance=distance_cfg.get('safe_distance', 15.0),
- critical_distance=distance_cfg.get('critical_distance', 5.0)
- ),
- 'comfort': ComfortReward(
- max_acceleration=comfort_cfg.get('max_acceleration', 2.0)
- )
- }
diff --git a/src/driving_reward_analysis/utils.py b/src/driving_reward_analysis/utils.py
deleted file mode 100644
index 3768692456..0000000000
--- a/src/driving_reward_analysis/utils.py
+++ /dev/null
@@ -1,100 +0,0 @@
-"""
-工具函数模块
-
-提供辅助功能:配置加载、数据生成、文件管理等
-"""
-
-import os
-from pathlib import Path
-
-import yaml
-
-
-def load_config(config_path='config.yaml'):
- """加载 YAML 配置文件
-
- Args:
- config_path: 配置文件路径,默认为当前目录下的 config.yaml
-
- Returns:
- dict: 配置字典
- """
- config_file = Path(config_path)
- if not config_file.is_absolute():
- config_file = Path(__file__).resolve().parent / config_file
-
- with open(config_file, 'r', encoding='utf-8') as f:
- return yaml.safe_load(f)
-
-
-def ensure_output_dir(output_dir):
- """确保输出目录存在
-
- Args:
- output_dir: 输出目录路径
-
- Returns:
- Path: 输出目录的 Path 对象
- """
- path = Path(output_dir)
- path.mkdir(parents=True, exist_ok=True)
- return path
-
-
-def generate_scenario_data(num_samples=1000):
- """生成模拟驾驶场景数据
-
- 生成随机的速度、距离、加速度数据,用于批量奖励计算
-
- Args:
- num_samples: 样本数量
-
- Returns:
- dict: 包含 'speed', 'distance', 'acceleration' 三个数组的字典
- """
- np = __import__('numpy')
-
- # 速度:正态分布,均值 20 m/s,标准差 5
- speed = np.random.normal(20, 5, num_samples)
- speed = np.clip(speed, 0, 40)
-
- # 距离:指数分布,模拟不同跟车距离
- distance = np.random.exponential(20, num_samples)
- distance = np.clip(distance, 0, 100)
-
- # 加速度:正态分布,均值 0,标准差 1
- acceleration = np.random.normal(0, 1, num_samples)
- acceleration = np.clip(acceleration, -3, 3)
-
- return {
- 'speed': speed,
- 'distance': distance,
- 'acceleration': acceleration
- }
-
-
-def compute_total_reward(rewards, scenario_data):
- """计算总奖励
-
- 根据场景数据,计算三类奖励的加权和
-
- Args:
- rewards: dict,包含三个奖励函数实例
- scenario_data: dict,包含场景数据
-
- Returns:
- dict: 包含各类奖励和总奖励的字典
- """
- speed_r = rewards['speed'].compute(scenario_data['speed'])
- distance_r = rewards['distance'].compute(scenario_data['distance'])
- comfort_r = rewards['comfort'].compute(scenario_data['acceleration'])
-
- # 简单加权求和(可根据需求调整权重)
- total_r = speed_r + distance_r + comfort_r
-
- return {
- 'speed_reward': speed_r,
- 'distance_reward': distance_r,
- 'comfort_reward': comfort_r,
- 'total_reward': total_r
- }
diff --git a/src/driving_reward_analysis/visualizer.py b/src/driving_reward_analysis/visualizer.py
deleted file mode 100644
index eddb025901..0000000000
--- a/src/driving_reward_analysis/visualizer.py
+++ /dev/null
@@ -1,139 +0,0 @@
-"""
-奖励函数可视化模块
-
-提供专业的奖励函数曲线绘制功能,支持:
-- 单函数详细分析图
-- 多函数对比分析图
-- 批量参数对比图
-"""
-
-import os
-from pathlib import Path
-
-import matplotlib
-matplotlib.use('Agg') # 无GUI后端,适合服务器运行
-import matplotlib.pyplot as plt
-import numpy as np
-
-
-def setup_chinese_font():
- """配置中文字体支持"""
- plt.rcParams['font.sans-serif'] = ['SimHei', 'DejaVu Sans']
- plt.rcParams['axes.unicode_minus'] = False
-
-
-def plot_reward_analysis(rewards, config, output_path):
- """绘制奖励函数综合分析图
-
- 生成与示例图片类似的三子图布局:
- - 上:速度跟踪奖励
- - 中:距离控制奖励
- - 下:舒适性奖励
-
- Args:
- rewards: dict,包含 'speed', 'distance', 'comfort' 三个奖励函数实例
- config: 配置字典
- output_path: 输出图片路径
- """
- setup_chinese_font()
-
- fig, axes = plt.subplots(3, 1, figsize=(12, 10), dpi=150)
- fig.patch.set_facecolor('white')
-
- # ===== 子图1:速度跟踪奖励 =====
- ax1 = axes[0]
- speed_range = rewards['speed'].get_range()
- speed_reward = rewards['speed'].compute(speed_range)
-
- ax1.plot(speed_range, speed_reward, 'b-', linewidth=1.5, label='Speed Reward')
- target_speed = config['speed_reward']['target_speed']
- ax1.axvline(x=target_speed, color='r', linestyle='--', linewidth=1.5,
- label=f'Target Speed ({target_speed} m/s)')
- ax1.set_title('Speed Tracking Reward', fontsize=14, fontweight='bold')
- ax1.set_xlabel('Speed (m/s)', fontsize=11)
- ax1.set_ylabel('Reward', fontsize=11)
- ax1.legend(loc='upper right', fontsize=9)
- ax1.grid(True, alpha=0.3)
- ax1.set_xlim(0, 35)
-
- # ===== 子图2:距离控制奖励 =====
- ax2 = axes[1]
- distance_range = rewards['distance'].get_range()
- distance_reward = rewards['distance'].compute(distance_range)
-
- ax2.plot(distance_range, distance_reward, 'b-', linewidth=1.5, label='Distance Reward')
- safe_distance = config['distance_reward']['safe_distance']
- ax2.axvline(x=safe_distance, color='r', linestyle='--', linewidth=1.5,
- label=f'Min Safe Distance ({safe_distance} m)')
- ax2.set_title('Distance Control Reward', fontsize=14, fontweight='bold')
- ax2.set_xlabel('Distance (m)', fontsize=11)
- ax2.set_ylabel('Reward', fontsize=11)
- ax2.legend(loc='upper right', fontsize=9)
- ax2.grid(True, alpha=0.3)
- ax2.set_xlim(0, 100)
-
- # ===== 子图3:舒适性奖励 =====
- ax3 = axes[2]
- accel_range = rewards['comfort'].get_range()
- comfort_reward = rewards['comfort'].compute(accel_range)
-
- ax3.plot(accel_range, comfort_reward, 'b-', linewidth=1.5, label='Comfort Reward')
- ax3.axvline(x=0, color='r', linestyle='--', linewidth=1.5,
- label='Zero Acceleration')
- ax3.set_title('Comfort Reward', fontsize=14, fontweight='bold')
- ax3.set_xlabel('Acceleration (m/s²)', fontsize=11)
- ax3.set_ylabel('Reward', fontsize=11)
- ax3.legend(loc='upper right', fontsize=9)
- ax3.grid(True, alpha=0.3)
- ax3.set_xlim(-3, 2)
-
- plt.tight_layout(pad=2.0)
-
- # 保存图片
- Path(output_path).parent.mkdir(parents=True, exist_ok=True)
- plt.savefig(output_path, dpi=150, bbox_inches='tight', facecolor='white')
- plt.close(fig)
-
- print(f" 已保存: {output_path}")
-
-
-def plot_parameter_comparison(reward_class, param_name, param_values,
- fixed_params, output_path, xlabel='X'):
- """绘制不同参数下的奖励函数对比图
-
- Args:
- reward_class: 奖励函数类
- param_name: 要变化的参数名
- param_values: 参数取值列表
- fixed_params: 固定参数字典
- output_path: 输出图片路径
- xlabel: X轴标签
- """
- setup_chinese_font()
-
- fig, ax = plt.subplots(figsize=(10, 6), dpi=150)
- fig.patch.set_facecolor('white')
-
- colors = plt.cm.viridis(np.linspace(0, 0.8, len(param_values)))
-
- for i, val in enumerate(param_values):
- params = fixed_params.copy()
- params[param_name] = val
- reward = reward_class(**params)
- x_range = reward.get_range()
- y_values = reward.compute(x_range)
- ax.plot(x_range, y_values, color=colors[i], linewidth=1.5,
- label=f'{param_name}={val}')
-
- ax.set_title(f'{reward_class.__name__} - Parameter Comparison',
- fontsize=14, fontweight='bold')
- ax.set_xlabel(xlabel, fontsize=11)
- ax.set_ylabel('Reward', fontsize=11)
- ax.legend(loc='best', fontsize=9)
- ax.grid(True, alpha=0.3)
-
- Path(output_path).parent.mkdir(parents=True, exist_ok=True)
- plt.savefig(output_path, dpi=150, bbox_inches='tight', facecolor='white')
- plt.close(fig)
-
- print(f" 已保存: {output_path}")
From 93bc0282c128000d6f54ad29e923c048f87826df Mon Sep 17 00:00:00 2001
From: liuhuatao <2814267042@qq.com>
Date: Thu, 11 Jun 2026 23:10:13 +0800
Subject: [PATCH 11/36] =?UTF-8?q?=E5=90=8C=E6=AD=A5?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
mkdocs.yml | 2 -
tests/test_vision_parking.py | 104 -----------------------------------
2 files changed, 106 deletions(-)
delete mode 100644 tests/test_vision_parking.py
diff --git a/mkdocs.yml b/mkdocs.yml
index 2eb33d7670..bbde6bfa4a 100644
--- a/mkdocs.yml
+++ b/mkdocs.yml
@@ -50,8 +50,6 @@ nav:
- CarRacing DQN/DoubleDQN:训练改进与可视化对比: 'car_racing_dqn_improvements.md'
- 自动驾驶感知系统: 'carla_yolo_detection/README.md'
- 自动驾驶车辆语义分割: 'auto_drive_seg/README.md'
-- 钢铁表面缺陷检测: 'steel_defect_detection/README.md'
-- CARLA 视觉泊车: 'vision_based_parking/README.md'
- 自动驾驶奖励分析: 'driving_reward_analysis/README.md'
diff --git a/tests/test_vision_parking.py b/tests/test_vision_parking.py
deleted file mode 100644
index f5772ab5b9..0000000000
--- a/tests/test_vision_parking.py
+++ /dev/null
@@ -1,104 +0,0 @@
-import importlib.util
-import os
-import sys
-from pathlib import Path
-
-project_root = Path(__file__).resolve().parents[1]
-vision_root = project_root / 'src' / 'vision_based_parking'
-sys.path.insert(0, str(vision_root))
-
-from controller import ParkingController, configure_carla_pythonapi, load_carla_module
-
-
-def test_controller_falls_back_without_carla():
- controller = ParkingController({
- 'controller': {
- 'kp': 1.0,
- 'ki': 0.0,
- 'kd': 0.0,
- 'max_steering_angle': 45,
- 'default_throttle': 0.25,
- }
- })
-
- control = controller.compute_control(vehicle=None, target_x=120)
-
- assert control.throttle == 0.25
- assert control.steer == 0.0
- assert control.brake == 0.0
-
-
-def test_load_config_resolves_relative_to_module_dir(tmp_path):
- original_cwd = os.getcwd()
- try:
- os.chdir(tmp_path)
- spec = importlib.util.spec_from_file_location(
- 'main',
- vision_root / 'main.py',
- )
- module = importlib.util.module_from_spec(spec)
- spec.loader.exec_module(module)
-
- config = module.load_config()
- finally:
- os.chdir(original_cwd)
-
- assert config['carla_host'] == 'localhost'
- assert config['carla_port'] == 2000
-
-
-def test_configure_carla_pythonapi_loads_stub_module(tmp_path, monkeypatch):
- stub_root = tmp_path / 'fake_carla_api'
- stub_root.mkdir()
- (stub_root / 'carla.py').write_text('class VehicleControl:\n pass\n')
-
- monkeypatch.setenv('CARLA_PYTHONAPI_PATH', str(stub_root))
- sys.modules.pop('carla', None)
- configure_carla_pythonapi()
-
- module = load_carla_module()
-
- assert module is not None
- assert module.__name__ == 'carla'
- assert str(stub_root) in sys.path
-
-
-def test_configure_carla_pythonapi_loads_stub_file_path(tmp_path, monkeypatch):
- stub_root = tmp_path / 'fake_carla_api'
- stub_root.mkdir()
- stub_file = stub_root / 'carla.py'
- stub_file.write_text('class VehicleControl:\n pass\n')
-
- monkeypatch.delenv('CARLA_PYTHONAPI_PATH', raising=False)
- sys.modules.pop('carla', None)
- configure_carla_pythonapi(str(stub_file))
-
- module = load_carla_module()
-
- assert module is not None
- assert module.__name__ == 'carla'
- assert str(stub_root) in sys.path
-
-
-def test_connect_carla_raises_runtime_error_for_incomplete_stub(tmp_path, monkeypatch):
- stub_root = tmp_path / 'fake_carla_api'
- stub_root.mkdir()
- (stub_root / 'carla.py').write_text('class VehicleControl:\n pass\n')
-
- monkeypatch.delenv('CARLA_PYTHONAPI_PATH', raising=False)
- sys.modules.pop('carla', None)
-
- spec = importlib.util.spec_from_file_location(
- 'main',
- vision_root / 'main.py',
- )
- module = importlib.util.module_from_spec(spec)
- spec.loader.exec_module(module)
- module.configure_carla_for_run({'carla_pythonapi_path': str(stub_root)})
-
- try:
- module.connect_carla('localhost', 2000)
- except RuntimeError as exc:
- assert 'CARLA Python API' in str(exc)
- else:
- raise AssertionError('Expected RuntimeError when fake API is incomplete')
From 943bf0c61dc733afe13911ff8a20b36594b06c68 Mon Sep 17 00:00:00 2001
From: liuhuatao <2814267042@qq.com>
Date: Thu, 11 Jun 2026 23:16:07 +0800
Subject: [PATCH 12/36] =?UTF-8?q?=E5=90=8C=E6=AD=A5=E6=9B=B4=E6=94=B9?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
{docs => src}/driving_reward_analysis/README.md | 0
1 file changed, 0 insertions(+), 0 deletions(-)
rename {docs => src}/driving_reward_analysis/README.md (100%)
diff --git a/docs/driving_reward_analysis/README.md b/src/driving_reward_analysis/README.md
similarity index 100%
rename from docs/driving_reward_analysis/README.md
rename to src/driving_reward_analysis/README.md
From 01679e2fa4f00bebc4c5669803815f22f3cff5b4 Mon Sep 17 00:00:00 2001
From: liuhuatao <2814267042@qq.com>
Date: Fri, 12 Jun 2026 14:30:55 +0800
Subject: [PATCH 13/36] =?UTF-8?q?=E6=9C=9F=E6=9C=AB=E6=96=87=E6=A1=A3?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
docs/driving_reward_analysis/README.md | 101 ++++++++++
mkdocs.yml | 2 +
src/driving_reward_analysis/config.yaml | 17 ++
src/driving_reward_analysis/main.py | 110 +++++++++++
src/driving_reward_analysis/rewards.py | 91 +++++++++
src/driving_reward_analysis/utils.py | 107 ++++++++++
src/driving_reward_analysis/visualizer.py | 230 ++++++++++++++++++++++
7 files changed, 658 insertions(+)
create mode 100644 docs/driving_reward_analysis/README.md
create mode 100644 src/driving_reward_analysis/config.yaml
create mode 100644 src/driving_reward_analysis/main.py
create mode 100644 src/driving_reward_analysis/rewards.py
create mode 100644 src/driving_reward_analysis/utils.py
create mode 100644 src/driving_reward_analysis/visualizer.py
diff --git a/docs/driving_reward_analysis/README.md b/docs/driving_reward_analysis/README.md
new file mode 100644
index 0000000000..421c9182a2
--- /dev/null
+++ b/docs/driving_reward_analysis/README.md
@@ -0,0 +1,101 @@
+# 自动驾驶奖励函数分析系统
+
+## 1. 项目简介
+本项目实现了一套完整的自动驾驶奖励函数建模与可视化分析系统。通过数学建模方式定义速度跟踪、距离控制、舒适性三类核心奖励函数,支持参数化配置、批量仿真与可视化输出,无需任何模拟器即可独立运行。
+
+系统可广泛应用于:
+- 强化学习自动驾驶算法的奖励设计
+- 自适应巡航控制(ACC)策略评估
+- 自动驾驶决策系统的安全性与舒适性权衡分析
+
+## 2. 选题说明
+- **技术方案**: 基于纯 Python + NumPy + Matplotlib 的奖励函数建模与可视化
+- **设计思路**: 将自动驾驶中的核心评价指标抽象为数学函数,通过参数化配置实现灵活的奖励设计,支持单场景分析与批量对比实验
+- **独特价值**: 无需 CARLA、AirSim 等重型模拟器,纯代码即可生成专业级分析图表
+
+## 3. 开发运行环境
+- **操作系统**: Windows 10/11, Ubuntu 20.04/22.04, macOS
+- **编程语言**: Python 3.8+
+- **核心依赖**: NumPy, Matplotlib
+- **开发工具**: Visual Studio Code / PyCharm / Jupyter Notebook
+
+## 4. 模块结构与入口
+- 本模块的所有核心代码存放于 `src/driving_reward_analysis` 目录下
+- 模块的主程序入口为 `main.py`[text](../../src/driving_reward_analysis/README.md)
+- 奖励函数定义位于 `rewards.py`
+- 可视化工具位于 `visualizer.py`
+
+---
+
+# driving_reward_analysis: 自动驾驶奖励函数分析系统
+
+## 1. 模块功能
+本模块实现了自动驾驶奖励函数的完整建模与分析流程:
+
+- **速度跟踪奖励**: 基于高斯分布建模,车辆速度越接近目标速度奖励越高,支持自定义目标速度和容忍度
+- **距离控制奖励**: 分段线性函数建模,保持安全距离时获得最大奖励,过近时惩罚急剧增加
+- **舒适性奖励**: 基于加速度的二次函数建模,零加速度时奖励最高,剧烈加减速时惩罚增加
+- **批量仿真**: 支持多组参数配置的批量实验,生成对比分析图表
+- **可视化输出**: 自动生成专业的奖励函数曲线图,支持保存为 PNG 格式
+
+## 2. 运行指南
+
+### 步骤 1:安装依赖
+```bash
+pip install numpy matplotlib -i https://pypi.tuna.tsinghua.edu.cn/simple
+```
+
+### 步骤 2:运行主程序
+在项目根目录下执行:
+```bash
+python src/driving_reward_analysis/main.py
+```
+
+程序将自动生成 `outputs/` 目录,并保存以下效果图:
+- `reward_func_analysis.png` — 三类奖励函数综合分析图
+- `reward_comparison.png` — 不同参数下的奖励函数对比图
+
+### 步骤 3:自定义参数
+编辑 `config.yaml` 文件调整奖励函数参数:
+```yaml
+speed_reward:
+ target_speed: 25.0 # 目标速度 (m/s)
+ tolerance: 5.0 # 速度容忍度
+
+distance_reward:
+ safe_distance: 15.0 # 安全距离 (m)
+ critical_distance: 5.0 # 临界距离 (m)
+
+comfort_reward:
+ max_acceleration: 2.0 # 最大加速度 (m/s²)
+```
+
+## 3. 模块文件说明
+| 文件 | 功能 |
+|------|------|
+| `main.py` | 主入口,执行奖励函数建模与可视化 |
+| `rewards.py` | 奖励函数定义:速度、距离、舒适性 |
+| `visualizer.py` | 可视化工具:绘制奖励函数曲线 |
+| `config.yaml` | 配置文件:奖励函数参数 |
+| `utils.py` | 工具函数:数据生成、文件保存 |
+
+## 4. 奖励函数数学定义
+
+### 速度跟踪奖励
+$$R_{speed}(v) = -\left(\frac{v - v_{target}}{\sigma}\right)^2$$
+
+其中 $v_{target}$ 为目标速度,$\sigma$ 为容忍度参数。
+
+### 距离控制奖励
+$$R_{dist}(d) = \begin{cases} -100 & d < d_{critical} \\ -10 \times (d_{safe} - d) & d_{critical} \leq d < d_{safe} \\ 0 & d \geq d_{safe} \end{cases}$$
+
+### 舒适性奖励
+$$R_{comfort}(a) = -a^2$$
+
+其中 $a$ 为加速度,零加速度时奖励最高。
+
+## 5. 参考
+- [强化学习奖励设计](https://spinningup.openai.com/en/latest/spinningup/rl_intro.html)
+- [自适应巡航控制](https://en.wikipedia.org/wiki/Adaptive_cruise_control)
+- [NumPy 文档](https://numpy.org/doc/)
+- [Matplotlib 文档](https://matplotlib.org/stable/)
diff --git a/mkdocs.yml b/mkdocs.yml
index bbde6bfa4a..a47cbb1998 100644
--- a/mkdocs.yml
+++ b/mkdocs.yml
@@ -50,6 +50,8 @@ nav:
- CarRacing DQN/DoubleDQN:训练改进与可视化对比: 'car_racing_dqn_improvements.md'
- 自动驾驶感知系统: 'carla_yolo_detection/README.md'
- 自动驾驶车辆语义分割: 'auto_drive_seg/README.md'
+- 双足人形机器人SAC步态仿真: 'mujoco_running/running.md'
+- 人形机器人项目: mujoco_hci_sim/README.md
- 自动驾驶奖励分析: 'driving_reward_analysis/README.md'
diff --git a/src/driving_reward_analysis/config.yaml b/src/driving_reward_analysis/config.yaml
new file mode 100644
index 0000000000..d6689f0b2d
--- /dev/null
+++ b/src/driving_reward_analysis/config.yaml
@@ -0,0 +1,17 @@
+# 自动驾驶奖励函数分析系统 - 配置文件
+
+speed_reward:
+ target_speed: 25.0 # 目标速度 (m/s)
+ tolerance: 5.0 # 速度容忍度 (m/s)
+
+distance_reward:
+ safe_distance: 15.0 # 安全距离 (m)
+ critical_distance: 5.0 # 临界距离 (m)
+
+comfort_reward:
+ max_acceleration: 2.0 # 最大加速度 (m/s²)
+
+visualization:
+ fig_size: [12, 10] # 图表尺寸
+ dpi: 100 # 输出分辨率
+ output_dir: "outputs" # 输出目录
diff --git a/src/driving_reward_analysis/main.py b/src/driving_reward_analysis/main.py
new file mode 100644
index 0000000000..42ba2ee1ff
--- /dev/null
+++ b/src/driving_reward_analysis/main.py
@@ -0,0 +1,110 @@
+"""自动驾驶奖励函数分析系统 - 主入口.
+
+运行方式:
+ python main.py # 执行完整分析
+ python main.py --mode plot # 仅绘制理论曲线
+ python main.py --mode sim # 仅运行仿真分析
+"""
+
+import sys
+import argparse
+from utils import load_config, generate_scenario_data, compute_rewards, ensure_output_dir
+from visualizer import (
+ plot_reward_curves,
+ plot_scenario_rewards,
+ plot_speed_reward_comparison,
+ plot_distance_reward_comparison,
+)
+
+
+def run_analysis(output_dir: str) -> None:
+ """执行完整分析流程."""
+ print("=" * 60)
+ print(" 自动驾驶奖励函数分析系统")
+ print("=" * 60)
+
+ # 1. 加载配置
+ config = load_config()
+ print(f"\n[Config] 目标速度: {config['speed_reward']['target_speed']} m/s")
+ print(f"[Config] 安全距离: {config['distance_reward']['safe_distance']} m")
+ print(f"[Config] 临界距离: {config['distance_reward']['critical_distance']} m")
+ print(f"[Config] 最大加速度: {config['comfort_reward']['max_acceleration']} m/s²")
+
+ # 2. 绘制理论奖励曲线
+ print("\n[Plot] 生成奖励函数理论曲线...")
+ plot_reward_curves(output_dir, config)
+
+ # 3. 生成场景数据
+ print("\n[Sim] 生成仿真场景数据...")
+ scenario = generate_scenario_data(num_steps=200, dt=0.1)
+
+ # 4. 计算奖励值
+ print("[Sim] 计算奖励值...")
+ rewards = compute_rewards(scenario, config)
+
+ # 5. 输出统计信息
+ print("\n[Stats] 奖励统计:")
+ for name, key in [
+ ("速度跟踪奖励", "speed_reward"),
+ ("距离控制奖励", "distance_reward"),
+ ("舒适性奖励", "comfort_reward"),
+ ("总奖励", "total_reward"),
+ ]:
+ vals = rewards[key]
+ print(f" {name}: mean={vals.mean():.3f}, std={vals.std():.3f}, "
+ f"min={vals.min():.3f}, max={vals.max():.3f}")
+
+ # 6. 绘制场景奖励变化图
+ print("\n[Plot] 生成场景仿真奖励曲线...")
+ plot_scenario_rewards(rewards, output_dir)
+
+ # 7. 参数对比图
+ print("\n[Plot] 生成参数对比图...")
+ plot_speed_reward_comparison(output_dir, config)
+ plot_distance_reward_comparison(output_dir, config)
+
+ print(f"\n{'=' * 60}")
+ print(f" 分析完成!效果图已保存至: {output_dir}")
+ print(f"{'=' * 60}")
+
+
+def main() -> None:
+ """主函数."""
+ parser = argparse.ArgumentParser(description="自动驾驶奖励函数分析系统")
+ parser.add_argument(
+ "--mode",
+ choices=["all", "plot", "sim"],
+ default="all",
+ help="运行模式: all=全部, plot=仅绘图, sim=仅仿真 (default: all)",
+ )
+ args = parser.parse_args()
+
+ output_dir = ensure_output_dir("outputs")
+
+ if args.mode in ("all", "plot"):
+ config = load_config()
+ plot_reward_curves(output_dir, config)
+ plot_speed_reward_comparison(output_dir, config)
+ plot_distance_reward_comparison(output_dir, config)
+
+ if args.mode in ("all", "sim"):
+ config = load_config()
+ scenario = generate_scenario_data()
+ rewards = compute_rewards(scenario, config)
+ plot_scenario_rewards(rewards, output_dir)
+
+ print("\n[Stats] 奖励统计:")
+ for name, key in [
+ ("速度跟踪奖励", "speed_reward"),
+ ("距离控制奖励", "distance_reward"),
+ ("舒适性奖励", "comfort_reward"),
+ ("总奖励", "total_reward"),
+ ]:
+ vals = rewards[key]
+ print(f" {name}: mean={vals.mean():.3f}, std={vals.std():.3f}")
+
+ print(f"\n完成!输出目录: {output_dir}")
+
+
+if __name__ == "__main__":
+ main()
diff --git a/src/driving_reward_analysis/rewards.py b/src/driving_reward_analysis/rewards.py
new file mode 100644
index 0000000000..120ecd3073
--- /dev/null
+++ b/src/driving_reward_analysis/rewards.py
@@ -0,0 +1,91 @@
+"""自动驾驶奖励函数定义模块.
+
+实现三类核心奖励函数:
+- 速度跟踪奖励 (Speed Tracking Reward)
+- 距离控制奖励 (Distance Control Reward)
+- 舒适性奖励 (Comfort Reward)
+"""
+
+import numpy as np
+
+
+def speed_reward(
+ velocity: np.ndarray,
+ config: dict,
+) -> np.ndarray:
+ """速度跟踪奖励函数.
+
+ 基于高斯分布建模,车辆速度越接近目标速度奖励越高.
+ R_speed(v) = -((v - v_target) / sigma)^2
+
+ Args:
+ velocity: 当前速度数组 (m/s)
+ config: 速度奖励配置,包含 target_speed 和 tolerance
+
+ Returns:
+ 速度奖励值数组
+ """
+ target = config.get("target_speed", 25.0)
+ sigma = config.get("tolerance", 5.0)
+
+ reward = -((velocity - target) / sigma) ** 2
+ return np.clip(reward, -100, 0)
+
+
+def distance_reward(
+ distance: np.ndarray,
+ config: dict,
+) -> np.ndarray:
+ """距离控制奖励函数.
+
+ 分段线性函数建模:
+ - d < critical: 严重惩罚 (-100)
+ - critical <= d < safe: 线性增长
+ - d >= safe: 最大奖励 (0)
+
+ Args:
+ distance: 当前前车距离数组 (m)
+ config: 距离奖励配置,包含 safe_distance 和 critical_distance
+
+ Returns:
+ 距离奖励值数组
+ """
+ safe = config.get("safe_distance", 15.0)
+ critical = config.get("critical_distance", 5.0)
+
+ reward = np.zeros_like(distance, dtype=np.float64)
+
+ # d < critical: 严重惩罚
+ mask_critical = distance < critical
+ reward[mask_critical] = -100.0
+
+ # critical <= d < safe: 线性增长
+ mask_linear = (distance >= critical) & (distance < safe)
+ reward[mask_linear] = -10.0 * (safe - distance[mask_linear])
+
+ # d >= safe: 0 (最大奖励)
+ # 默认为 0
+
+ return reward
+
+
+def comfort_reward(
+ acceleration: np.ndarray,
+ config: dict,
+) -> np.ndarray:
+ """舒适性奖励函数.
+
+ 基于加速度的二次函数建模,零加速度时奖励最高.
+ R_comfort(a) = -a^2
+
+ Args:
+ acceleration: 当前加速度数组 (m/s²)
+ config: 舒适性奖励配置,包含 max_acceleration
+
+ Returns:
+ 舒适性奖励值数组
+ """
+ max_acc = config.get("max_acceleration", 2.0)
+
+ reward = -(acceleration**2)
+ return np.clip(reward, -(max_acc**2) * 2, 0)
diff --git a/src/driving_reward_analysis/utils.py b/src/driving_reward_analysis/utils.py
new file mode 100644
index 0000000000..0ecc501652
--- /dev/null
+++ b/src/driving_reward_analysis/utils.py
@@ -0,0 +1,107 @@
+"""工具函数:配置加载、数据生成、文件保存."""
+
+import os
+import yaml
+import numpy as np
+
+
+def load_config(config_path: str = None) -> dict:
+ """加载 YAML 配置文件.
+
+ Args:
+ config_path: 配置文件路径,默认为同目录下的 config.yaml
+
+ Returns:
+ 配置字典
+ """
+ if config_path is None:
+ config_path = os.path.join(os.path.dirname(__file__), "config.yaml")
+
+ with open(config_path, "r", encoding="utf-8") as f:
+ config = yaml.safe_load(f)
+ return config
+
+
+def generate_scenario_data(
+ num_steps: int = 200,
+ dt: float = 0.1,
+ seed: int = 42,
+) -> dict:
+ """生成仿真场景数据.
+
+ 模拟车辆在高速公路上行驶的场景,包含速度、距离和加速度数据.
+
+ Args:
+ num_steps: 时间步数
+ dt: 时间步长 (s)
+ seed: 随机种子
+
+ Returns:
+ 包含 velocity, distance, acceleration 的字典
+ """
+ rng = np.random.default_rng(seed)
+ t = np.arange(num_steps) * dt
+
+ # 模拟速度变化:基准速度 + 随机波动 + 周期性变化
+ velocity = 25.0 + 5.0 * np.sin(0.1 * t) + rng.normal(0, 2.0, num_steps)
+
+ # 模拟前车距离变化
+ distance = 20.0 - 8.0 * np.sin(0.08 * t) + rng.normal(0, 3.0, num_steps)
+ distance = np.clip(distance, 1.0, 40.0)
+
+ # 加速度通过速度差分计算
+ acceleration = np.gradient(velocity, dt)
+
+ return {
+ "time": t,
+ "velocity": velocity,
+ "distance": distance,
+ "acceleration": acceleration,
+ }
+
+
+def compute_rewards(
+ scenario: dict,
+ config: dict,
+) -> dict:
+ """计算场景中所有奖励值.
+
+ Args:
+ scenario: 场景数据字典
+ config: 配置字典
+
+ Returns:
+ 包含各类奖励值的字典
+ """
+ from rewards import speed_reward, distance_reward, comfort_reward
+
+ v = scenario["velocity"]
+ d = scenario["distance"]
+ a = scenario["acceleration"]
+
+ return {
+ "time": scenario["time"],
+ "speed_reward": speed_reward(v, config["speed_reward"]),
+ "distance_reward": distance_reward(d, config["distance_reward"]),
+ "comfort_reward": comfort_reward(a, config["comfort_reward"]),
+ "total_reward": (
+ speed_reward(v, config["speed_reward"])
+ + distance_reward(d, config["distance_reward"])
+ + comfort_reward(a, config["comfort_reward"])
+ ),
+ }
+
+
+def ensure_output_dir(output_dir: str) -> str:
+ """确保输出目录存在.
+
+ Args:
+ output_dir: 输出目录路径
+
+ Returns:
+ 输出目录的绝对路径
+ """
+ base = os.path.dirname(__file__)
+ full_path = os.path.join(base, output_dir)
+ os.makedirs(full_path, exist_ok=True)
+ return full_path
diff --git a/src/driving_reward_analysis/visualizer.py b/src/driving_reward_analysis/visualizer.py
new file mode 100644
index 0000000000..b5f21bdad0
--- /dev/null
+++ b/src/driving_reward_analysis/visualizer.py
@@ -0,0 +1,230 @@
+"""可视化模块:生成奖励函数分析图表."""
+
+import os
+import numpy as np
+import matplotlib.pyplot as plt
+
+
+# 设置中文字体
+plt.rcParams["font.sans-serif"] = ["SimHei", "Microsoft YaHei", "DejaVu Sans"]
+plt.rcParams["axes.unicode_minus"] = False
+
+
+def plot_reward_curves(
+ output_dir: str,
+ config: dict,
+) -> str:
+ """绘制三类奖励函数的理论曲线.
+
+ Args:
+ output_dir: 输出目录路径
+ config: 配置字典
+
+ Returns:
+ 保存的图片路径
+ """
+ speed_cfg = config["speed_reward"]
+ distance_cfg = config["distance_reward"]
+ comfort_cfg = config["comfort_reward"]
+
+ fig, axes = plt.subplots(1, 3, figsize=(15, 4.5))
+
+ # ---- 速度跟踪奖励 ----
+ v = np.linspace(0, 50, 200)
+ speed_r = -((v - speed_cfg["target_speed"]) / speed_cfg["tolerance"]) ** 2
+ speed_r = np.clip(speed_r, -100, 0)
+
+ ax = axes[0]
+ ax.plot(v, speed_r, "b-", linewidth=2)
+ ax.axvline(speed_cfg["target_speed"], color="r", linestyle="--", alpha=0.7,
+ label=f'Target={speed_cfg["target_speed"]} m/s')
+ ax.fill_between(
+ v, -10, speed_r,
+ where=(v > speed_cfg["target_speed"] - speed_cfg["tolerance"])
+ & (v < speed_cfg["target_speed"] + speed_cfg["tolerance"]),
+ alpha=0.15, color="green",
+ )
+ ax.set_xlabel("Speed (m/s)", fontsize=11)
+ ax.set_ylabel("Reward", fontsize=11)
+ ax.set_title("Speed Tracking Reward", fontsize=13, fontweight="bold")
+ ax.legend(fontsize=9)
+ ax.grid(True, alpha=0.3)
+
+ # ---- 距离控制奖励 ----
+ d = np.linspace(0, 30, 200)
+ safe = distance_cfg["safe_distance"]
+ critical = distance_cfg["critical_distance"]
+ dist_r = np.zeros_like(d)
+ dist_r[d < critical] = -100
+ mask = (d >= critical) & (d < safe)
+ dist_r[mask] = -10 * (safe - d[mask])
+
+ ax = axes[1]
+ ax.plot(d, dist_r, "orange", linewidth=2)
+ ax.axvline(critical, color="r", linestyle="--", alpha=0.7,
+ label=f'Critical={critical} m')
+ ax.axvline(safe, color="g", linestyle="--", alpha=0.7,
+ label=f'Safe={safe} m')
+ ax.set_xlabel("Distance (m)", fontsize=11)
+ ax.set_ylabel("Reward", fontsize=11)
+ ax.set_title("Distance Control Reward", fontsize=13, fontweight="bold")
+ ax.legend(fontsize=9)
+ ax.grid(True, alpha=0.3)
+
+ # ---- 舒适性奖励 ----
+ a = np.linspace(-5, 5, 200)
+ comfort_r = -(a**2)
+ comfort_r = np.clip(comfort_r, -(comfort_cfg["max_acceleration"]**2) * 2, 0)
+
+ ax = axes[2]
+ ax.plot(a, comfort_r, "green", linewidth=2)
+ ax.axvline(0, color="gray", linestyle="--", alpha=0.5)
+ ax.axvspan(
+ -comfort_cfg["max_acceleration"], comfort_cfg["max_acceleration"],
+ alpha=0.15, color="green", label=f'±{comfort_cfg["max_acceleration"]} m/s²'
+ )
+ ax.set_xlabel("Acceleration (m/s²)", fontsize=11)
+ ax.set_ylabel("Reward", fontsize=11)
+ ax.set_title("Comfort Reward", fontsize=13, fontweight="bold")
+ ax.legend(fontsize=9)
+ ax.grid(True, alpha=0.3)
+
+ fig.suptitle("Autonomous Driving Reward Function Analysis",
+ fontsize=15, fontweight="bold", y=1.02)
+ plt.tight_layout()
+
+ save_path = os.path.join(output_dir, "reward_func_analysis.png")
+ fig.savefig(save_path, dpi=150, bbox_inches="tight")
+ plt.close(fig)
+ print(f"[Saved] {save_path}")
+ return save_path
+
+
+def plot_scenario_rewards(
+ rewards: dict,
+ output_dir: str,
+) -> str:
+ """绘制场景仿真中的奖励变化曲线.
+
+ Args:
+ rewards: 包含 time, speed_reward, distance_reward, comfort_reward, total_reward 的字典
+ output_dir: 输出目录路径
+
+ Returns:
+ 保存的图片路径
+ """
+ t = rewards["time"]
+
+ fig, axes = plt.subplots(4, 1, figsize=(12, 10), sharex=True)
+
+ titles = [
+ "Speed Tracking Reward",
+ "Distance Control Reward",
+ "Comfort Reward",
+ "Total Reward",
+ ]
+ keys = ["speed_reward", "distance_reward", "comfort_reward", "total_reward"]
+ colors = ["blue", "orange", "green", "purple"]
+
+ for i, (ax, title, key, color) in enumerate(zip(axes, titles, keys, colors)):
+ ax.plot(t, rewards[key], color=color, linewidth=1.5)
+ ax.set_ylabel("Reward", fontsize=11)
+ ax.set_title(title, fontsize=12, fontweight="bold")
+ ax.grid(True, alpha=0.3)
+ ax.axhline(0, color="gray", linestyle="--", alpha=0.5)
+
+ axes[-1].set_xlabel("Time (s)", fontsize=11)
+
+ fig.suptitle("Reward Evolution During Simulation",
+ fontsize=14, fontweight="bold", y=1.01)
+ plt.tight_layout()
+
+ save_path = os.path.join(output_dir, "reward_comparison.png")
+ fig.savefig(save_path, dpi=150, bbox_inches="tight")
+ plt.close(fig)
+ print(f"[Saved] {save_path}")
+ return save_path
+
+
+def plot_speed_reward_comparison(
+ output_dir: str,
+ config: dict,
+) -> str:
+ """绘制不同目标速度下的速度奖励对比图.
+
+ Args:
+ output_dir: 输出目录路径
+ config: 配置字典
+
+ Returns:
+ 保存的图片路径
+ """
+ v = np.linspace(0, 50, 200)
+ tolerance = config["speed_reward"]["tolerance"]
+
+ targets = [20.0, 25.0, 30.0]
+ colors = ["blue", "orange", "green"]
+
+ fig, ax = plt.subplots(figsize=(8, 5))
+
+ for target, color in zip(targets, colors):
+ r = -((v - target) / tolerance) ** 2
+ r = np.clip(r, -100, 0)
+ ax.plot(v, r, color=color, linewidth=2, label=f'Target={target} m/s')
+
+ ax.set_xlabel("Speed (m/s)", fontsize=12)
+ ax.set_ylabel("Reward", fontsize=12)
+ ax.set_title("Speed Reward with Different Target Speeds",
+ fontsize=14, fontweight="bold")
+ ax.legend(fontsize=10)
+ ax.grid(True, alpha=0.3)
+
+ plt.tight_layout()
+ save_path = os.path.join(output_dir, "speed_reward_comparison.png")
+ fig.savefig(save_path, dpi=150, bbox_inches="tight")
+ plt.close(fig)
+ print(f"[Saved] {save_path}")
+ return save_path
+
+
+def plot_distance_reward_comparison(
+ output_dir: str,
+ config: dict,
+) -> str:
+ """绘制不同安全距离下的距离奖励对比图.
+
+ Args:
+ output_dir: 输出目录路径
+ config: 配置字典
+
+ Returns:
+ 保存的图片路径
+ """
+ d = np.linspace(0, 30, 200)
+ critical = config["distance_reward"]["critical_distance"]
+
+ safe_values = [10.0, 15.0, 20.0]
+ colors = ["orange", "red", "brown"]
+
+ fig, ax = plt.subplots(figsize=(8, 5))
+
+ for safe, color in zip(safe_values, colors):
+ r = np.zeros_like(d)
+ r[d < critical] = -100
+ mask = (d >= critical) & (d < safe)
+ r[mask] = -10 * (safe - d[mask])
+ ax.plot(d, r, color=color, linewidth=2, label=f'Safe={safe} m')
+
+ ax.set_xlabel("Distance (m)", fontsize=12)
+ ax.set_ylabel("Reward", fontsize=12)
+ ax.set_title("Distance Reward with Different Safe Distances",
+ fontsize=14, fontweight="bold")
+ ax.legend(fontsize=10)
+ ax.grid(True, alpha=0.3)
+
+ plt.tight_layout()
+ save_path = os.path.join(output_dir, "distance_reward_comparison.png")
+ fig.savefig(save_path, dpi=150, bbox_inches="tight")
+ plt.close(fig)
+ print(f"[Saved] {save_path}")
+ return save_path
From 7c62e2a52d15245d6c37260d3f2c1c904e8e2a30 Mon Sep 17 00:00:00 2001
From: liuhuatao <2814267042@qq.com>
Date: Fri, 12 Jun 2026 22:04:20 +0800
Subject: [PATCH 14/36] =?UTF-8?q?=E5=90=8C=E6=AD=A5?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
$null | 3 --
docs/index.md | 78 ---------------------------------------------------
2 files changed, 81 deletions(-)
delete mode 100644 $null
diff --git a/$null b/$null
deleted file mode 100644
index 4c7dcb4f35..0000000000
--- a/$null
+++ /dev/null
@@ -1,3 +0,0 @@
-Ϣ: Ҳ ";"
-Ϣ: Ҳ "--version"
-Ϣ: Ҳ "py"
diff --git a/docs/index.md b/docs/index.md
index 6dbeaa48b1..05c9c9784c 100644
--- a/docs/index.md
+++ b/docs/index.md
@@ -75,88 +75,10 @@ title: 主页
[__基于自监督学习与PPO强化学习的自动驾驶仿真项目__](./autonomous_driving/README.md) - 基于CARLA的SSL+RL自动驾驶仿真系统
-
-[__视觉泊车__](./vision_based_parking/README.md) - 基于 CARLA 的视觉泊车与路径规划系统
-
## 规划
[__导航__](#navigation)
-[__奖励分析__](./driving_reward_analysis/README.md) - 自动驾驶奖励函数建模与可视化分析
-
## 控制
[PID](#pid)
-title: 主页
-
-
-
-# [神经网络](https://github.com/OpenHUTB/nn)
-
-
-
-欢迎使用神经网络文档,该页面包含所有内容的索引。
-
-
-
-## 目录
-
-
-
-- [入门](#primary) - 基础算法与模型示例
-
-- [感知](#perception) - 计算机视觉与感知系统
-
-- [规划](#planning) - 路径规划与决策
-
-- [控制](#control) - 控制算法与仿真
-
-
-
----
-
-
-
-## 入门
-
-
-
-- [__热身__](warmup.md) - 入门热身示例
-
-- [__线性回归__](linear_regression.md) - 基础线性回归模型
-
-- [__线性回归改进__](linear_regression_improved.md) - 线性回归优化版本
-
-- [__线性回归修复__](linear_regression_fix.md) - 修复偏置未更新bug
-
-[__人形机器人SAC强化学习步态优化__](./mujoco_running/running.md) - 基于CPG+PD+SAC残差强化学习的缓步稳定行走仿真
-
-[__人形机器人自主行走__](./mujoco_hci_sim/README.md) - 基于PPO强化学习的Humanoid人形机器人自主行走仿真
-
-[__人形机器人站立行走__](./mujoco_man/mujoco_manrun.md) - 基于 CPG + PD 的人形机器人稳定站立与行走仿真(MuJoCo)
-
-[__td3_carracing__](./td3_carracing/README.md) - 基于 TD3 + CNN 的 CarRacing 强化学习自动驾驶系统
-
-[__机器人仿真(MuJoCo)__](ant_robot/机器人仿真系统.md)
-
-[__机械臂仿真系统__](arm_sim.md) - 基于MuJoCo的机械臂仿真与功能优化
-
-[__自动驾驶系统__](./auto_drive_system/auto_drive_system_README) - 基于强化学习的自动驾驶系统
-
-## 控制
-
-[__无人机飞行控制__](./UVA_flight_control_system.md) - 基于AirSim的无人机飞行控制系统
-
-[__人形机器人平衡控制__](./humanoid_balance/Humanoid_Balance.md) - 基于强化学习的人形机器人平衡控制仿真
-
-[__工程规范优化__](./improve/project.md) - 多场景仿真与控制优化项目
-
-
-# 其他
-[ 驾驶事故视频识别 ](./carla_temporal_collage/index.md) - 基于 Temporal Collage Prompting 的 CARLA 驾驶事故视频识别系统
-
-[__CARLA IMU 数据采集平台__](./carla_imu/carla_imu.md) — CARLA惯性测量单元数据采集与可视化驾驶平台开发汇报文档
-
-[__人形机器人SAC强化学习步态优化__](./mujoco_running/running.md) - 基于CPG+PD+SAC残差强化学习的缓步稳定行走仿真
-
-[__setup_tool模块汇报文档__](./setup_tool/report.md) - setup_tool 模块背景、改进内容、运行方式与效果总结
From 51f25a4162ae31c2974a2b6aae8dfb283a562c1a Mon Sep 17 00:00:00 2001
From: liuhuatao <2814267042@qq.com>
Date: Fri, 12 Jun 2026 22:09:26 +0800
Subject: [PATCH 15/36] =?UTF-8?q?=E5=90=8C=E6=AD=A5?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
docs/index.md | 38 ++++++++++++++++++++++++++++++++++++--
1 file changed, 36 insertions(+), 2 deletions(-)
diff --git a/docs/index.md b/docs/index.md
index 05c9c9784c..ecce041d90 100644
--- a/docs/index.md
+++ b/docs/index.md
@@ -75,10 +75,44 @@ title: 主页
[__基于自监督学习与PPO强化学习的自动驾驶仿真项目__](./autonomous_driving/README.md) - 基于CARLA的SSL+RL自动驾驶仿真系统
+
## 规划
-[__导航__](#navigation)
+[__Carla YOLO规划器__](carla_yolo_planner.md) - Carla环境结合YOLO的自动驾驶路径规划方案
+
+[__人形机器人SAC强化学习步态优化__](./mujoco_running/running.md) - 基于CPG+PD+SAC残差强化学习的缓步稳定行走仿真
+
+[__人形机器人自主行走__](./mujoco_hci_sim/README.md) - 基于PPO强化学习的Humanoid人形机器人自主行走仿真
+
+[__人形机器人站立行走__](./mujoco_man/mujoco_manrun.md) - 基于 CPG + PD 的人形机器人稳定站立与行走仿真(MuJoCo)
+
+[__td3_carracing__](./td3_carracing/README.md) - 基于 TD3 + CNN 的 CarRacing 强化学习自动驾驶系统
+
+[__机器人仿真(MuJoCo)__](ant_robot/机器人仿真系统.md)
+
+[__机械臂仿真系统__](arm_sim.md) - 基于MuJoCo的机械臂仿真与功能优化
+
+[__CARLA自动驾驶多场景仿真项目__](./DeFIX/docs/index.md)
+
+[__自动驾驶系统__](./auto_drive_system/auto_drive_system_README) - 基于强化学习的自动驾驶系统
+
+[__carla_2d_deeprl__](./carla_2d_deeprl/README.md) - 基于 CARLA 的极简 2D 深度强化学习自动驾驶环境。
+
## 控制
-[PID](#pid)
+[__无人机飞行控制__](./UVA_flight_control_system.md) - 基于AirSim的无人机飞行控制系统
+
+[__人形机器人平衡控制__](./humanoid_balance/Humanoid_Balance.md) - 基于强化学习的人形机器人平衡控制仿真
+
+[__工程规范优化__](./improve/project.md) - 多场景仿真与控制优化项目
+
+
+# 其他
+[ 驾驶事故视频识别 ](./carla_temporal_collage/index.md) - 基于 Temporal Collage Prompting 的 CARLA 驾驶事故视频识别系统
+
+[__CARLA IMU 数据采集平台__](./carla_imu/carla_imu.md) — CARLA惯性测量单元数据采集与可视化驾驶平台开发汇报文档
+
+[__人形机器人SAC强化学习步态优化__](./mujoco_running/running.md) - 基于CPG+PD+SAC残差强化学习的缓步稳定行走仿真
+
+[__setup_tool模块汇报文档__](./setup_tool/report.md) - setup_tool 模块背景、改进内容、运行方式与效果总结
\ No newline at end of file
From fecc74b3b791f56d2c7b45542dd23b52f1288b02 Mon Sep 17 00:00:00 2001
From: liuhuatao <2814267042@qq.com>
Date: Fri, 12 Jun 2026 23:36:47 +0800
Subject: [PATCH 16/36] =?UTF-8?q?=E5=90=8C=E6=AD=A5?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
docs/index.md | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/docs/index.md b/docs/index.md
index ecce041d90..5a1368979f 100644
--- a/docs/index.md
+++ b/docs/index.md
@@ -115,4 +115,6 @@ title: 主页
[__人形机器人SAC强化学习步态优化__](./mujoco_running/running.md) - 基于CPG+PD+SAC残差强化学习的缓步稳定行走仿真
-[__setup_tool模块汇报文档__](./setup_tool/report.md) - setup_tool 模块背景、改进内容、运行方式与效果总结
\ No newline at end of file
+[__setup_tool模块汇报文档__](./setup_tool/report.md) - setup_tool 模块背景、改进内容、运行方式与效果总结
+
+[__carla自动驾驶系统辅助监视器__](./autonomous_vehicle_monitor/monitor.md) -carla自动驾驶系统辅助器
\ No newline at end of file
From 94919b7c4d649f53b1f2f7ffb6b564cd23898535 Mon Sep 17 00:00:00 2001
From: liuhuatao <2814267042@qq.com>
Date: Fri, 12 Jun 2026 23:46:13 +0800
Subject: [PATCH 17/36] =?UTF-8?q?=E5=90=8C=E6=AD=A5?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
docs/index.md | 144 ++++++++++++++++++++++++++------------------------
1 file changed, 75 insertions(+), 69 deletions(-)
diff --git a/docs/index.md b/docs/index.md
index 5a1368979f..4a0bf3fcb8 100644
--- a/docs/index.md
+++ b/docs/index.md
@@ -1,83 +1,85 @@
title: 主页
-
# [神经网络](https://github.com/OpenHUTB/nn)
欢迎使用神经网络文档,该页面包含所有内容的索引。
-* [__入门__](#primary)
-* [__感知__](#perception)
-* [__规划__](#planning)
-* [__控制__](#control)
-* [__其他__](#other)
+## 目录
+
+- [入门](#primary) - 基础算法与模型示例
+- [感知](#perception) - 计算机视觉与感知系统
+- [规划](#planning) - 路径规划与决策
+- [控制](#control) - 控制算法与仿真
+- [其他](#other)
---
## 入门
-
-[__热身__](warmup.md) — 入门热身示例
-
-[__线性回归__](linear_regression.md)
-
-[__线性回归改进__](linear_regression_improved.md)
-
-[__线性回归修复__](linear_regression_fix.md) - 修复偏置未更新bug
-
-[__softmax回归__](softmax_regression.md)
-
-[__线性回归和softmax回归改进__](softmax_regression_improved.md)
-
-[__支持向量机__](svm.md)
-
-[__支持向量机改进__](svm_improved.md)
-
-[__简单神经网络__](simple_nn.md)
-
-[__卷积神经网络__](CNN.md)
-
-[__卷积神经网络改进__](cnn_keras_sequential_improved.md)
-
-[__循环神经网络__](RNN.md)
-
-[__循环神经网络改进__](poem_generation_rnn_improved.md)
-
-[__注意力机制__](attention.md)
-
-[__高斯混合__](gaussian_mixture.md)
-
-[__高斯混合改进__](./chap11_gaussian_mixture/README.md)
-
-[__受限玻尔兹曼机__](RBM.md)
-
-[__强化学习__](RL.md)
-
-[__强化学习工作空间__](rl_workspace.md)
+- [__热身__](warmup.md) — 入门热身示例
+- [__线性回归__](linear_regression.md) - 基础线性回归模型
+- [__线性回归改进__](linear_regression_improved.md) - 线性回归优化版本
+- [__线性回归修复__](linear_regression_fix.md) - 修复偏置未更新bug
+- [__softmax回归__](softmax_regression.md) - 多分类softmax回归
+- [__线性回归和softmax回归改进__](softmax_regression_improved.md) - 回归算法改进
+- [__支持向量机__](svm.md) - SVM分类算法
+- [__支持向量机改进__](svm_improved.md) - SVM优化版本
+- [__简单神经网络__](simple_nn.md) - 基础神经网络
+- [__卷积神经网络__](CNN.md) - CNN基础实现
+- [__卷积神经网络改进__](cnn_keras_sequential_improved.md) - CNN优化版本
+- [__循环神经网络__](RNN.md) - RNN基础实现
+- [__循环神经网络改进__](poem_generation_rnn_improved.md) - RNN优化版本
+- [__注意力机制__](attention.md) - 注意力机制原理与实现
+- [__高斯混合__](gaussian_mixture.md) - 高斯混合模型
+- [__高斯混合改进__](./chap11_gaussian_mixture/README.md) - 高斯混合优化
+- [__受限玻尔兹曼机__](RBM.md) - RBM基础实现
+- [__强化学习__](RL.md) - 强化学习基础
+- [__机器人仿真__](ant_robot/机器人仿真系统.md) - MuJoCo机器人仿真
+- [__强化学习工作空间__](rl_workspace.md) - 强化学习工作空间
+
+[__基于深度学习置信度加权的自动驾驶雨天多传感器融合感知优化__](rain_sensor_fusion\DEMO_REPORT.md)
---
-## 感知
-
-[__车道线检测__](./lane_detection/README.md) - 基于 OpenCV 的 Carla 场景车道线检测(分步实现)
-
-[__carla_CAM__](./carla_CAM/README.md) - 使用类激活映射测试卷积神经网络
-
-[__用户使用手势控制 Airsim 无人机__](./drone_hand_gesture/README.md) - 使用手势识别控制 Airsim 无人机飞行
-
-[__V2X路侧智能感知__](./edge_intelligence_V2X/README.md) - 基于YOLOv8n的V2X路侧智能感知系统优化与实现
-
-[__目标检测__](./test/object_detection.md) - 目标检测与危险评估
-
-[__图像目标检测__](./image_object_detection/image_object_detection.md) - 多功能图像目标检测系统
-
-[__路径追踪__](./test.md)
-
-[__交通标识检测__](./traffic_sign_detection/README.md) - 目标检测
-
-[__基于自监督学习与PPO强化学习的自动驾驶仿真项目__](./autonomous_driving/README.md) - 基于CARLA的SSL+RL自动驾驶仿真系统
+## 感知
+- [__车道线检测__](./lane_detection/README.md) - 基于 OpenCV 的 Carla 场景车道线检测(分步实现)
+- [__carla_CAM__](./carla_CAM/README.md) - 使用类激活映射测试卷积神经网络
+- [__交通标识识别__](./carla_traffic_sign_recognition/carla_traffic_sign_recognition.md) — 交通标识识别
+- [__V2X路侧智能感知__](./edge_intelligence_V2X/README.md) - 基于YOLOv8n的V2X路侧智能感知系统优化与实现
+- [__Carla多模态异常检测__](./carla_auto_vision_navigator.md) - 基于多模态融合的Carla非结构化场景异常检测自动驾驶
+- [__目标检测__](./test/object_detection.md) - 目标检测与危险评估
+- [__图像目标检测__](./image_object_detection/image_object_detection.md) - 多功能图像目标检测系统
+- __跟踪__ - 目标跟踪
+- [__路径追踪__](./test.md) - 路径追踪测试
+- [__交通标识检测__](./traffic_sign_detection/README.md) - 交通标识目标检测
+- [__td3_carracing__](./td3_carracing/README.md) - 基于 TD3 + CNN 的强化学习自动驾驶系统
+- [__无人机飞行控制__](./UVA_flight_control_system.md) - 基于AirSim的无人机飞行控制系统
+- [__人形机器人平衡控制__](./humanoid_balance/Humanoid_Balance.md) - 基于强化学习的人形机器人平衡控制仿真
+- [__工程规范优化__](./improve/project.md) - 多场景仿真与控制优化项目
+- [__人形机器人站立行走__](./mujoco_man/mujoco_manrun.md) - 基于 CPG + PD 的人形机器人稳定站立与行走仿真(MuJoCo)
+- [__setup_tool模块汇报文档__](./setup_tool/report.md) - setup_tool 模块背景、改进内容、运行方式与效果总结
+- [__机械臂自动抓取__](./robot_arm/README.md) - 基于Franka Panda的机械臂自动抓取仿真项目
+- [__CARLA天气鲁棒性测试__](./carla_weather_robustness/README.md) - CARLA多天气条件下自动驾驶感知鲁棒性测试系统
+
+- [__自动驾驶车辆语义分割__](./auto_drive_seg/README.md) - 基于 U-Net + Focal Loss 的 CARLA 街景 8 类语义分割(含数据增强、速度基准、概率热力图、类别频率分析)
+- [__用户使用手势控制 Airsim 无人机__](./drone_hand_gesture/README.md) - 使用手势识别控制 Airsim 无人机飞行
+
+- [__基于自监督学习与PPO强化学习的自动驾驶仿真项目__](./autonomous_driving/README.md) - 基于CARLA的SSL+RL自动驾驶仿真系统
+- [__CARLA天气鲁棒性测试__](./carla_weather_robustness/README.md) - CARLA多天气条件下自动驾驶感知鲁棒性测试系统
+
## 规划
+[__导航__](#navigation)
+- [__Carla YOLO规划器__](carla_yolo_planner.md) - Carla环境结合YOLO的自动驾驶路径规划方案
+- [__人形机器人SAC强化学习步态优化__](./mujoco_running/running.md) - 基于CPG+PD+SAC残差强化学习的缓步稳定行走仿真
+- [__人形机器人自主行走__](./mujoco_hci_sim/README.md) - 基于PPO强化学习的Humanoid人形机器人自主行走仿真
+- [__人形机器人站立行走__](./mujoco_man/mujoco_manrun.md) - 基于 CPG + PD 的人形机器人稳定站立与行走仿真(MuJoCo)
+- [__td3_carracing__](./td3_carracing/README.md) - 基于 TD3 + CNN 的 CarRacing 强化学习自动驾驶系统
+- [__机器人仿真(MuJoCo)__](ant_robot/机器人仿真系统.md)
+- [__机械臂仿真系统__](arm_sim.md) - 基于MuJoCo的机械臂仿真与功能优化
+- [__CARLA天气鲁棒性测试__](./carla_weather_robustness/README.md) - CARLA多天气条件下自动驾驶感知鲁棒性测试系统
+- [__CARLA自动驾驶系统__](carla_ad_gym_rl/carla_ad_gym_rl.md) - CARLA 仿真与强化学习的自动驾驶智能决策系统
[__Carla YOLO规划器__](carla_yolo_planner.md) - Carla环境结合YOLO的自动驾驶路径规划方案
[__人形机器人SAC强化学习步态优化__](./mujoco_running/running.md) - 基于CPG+PD+SAC残差强化学习的缓步稳定行走仿真
@@ -98,15 +100,19 @@ title: 主页
[__carla_2d_deeprl__](./carla_2d_deeprl/README.md) - 基于 CARLA 的极简 2D 深度强化学习自动驾驶环境。
+[__PilotNet自动驾驶系统__](./pilotnet/index.md) - 基于NVIDIA PilotNet架构的端到端自动驾驶学习系统
-## 控制
-
-[__无人机飞行控制__](./UVA_flight_control_system.md) - 基于AirSim的无人机飞行控制系统
-[__人形机器人平衡控制__](./humanoid_balance/Humanoid_Balance.md) - 基于强化学习的人形机器人平衡控制仿真
-
-[__工程规范优化__](./improve/project.md) - 多场景仿真与控制优化项目
+## 控制
+[PID](#pid)
+- [__导航__](#navigation)
+- [__自动驾驶系统__](./auto_drive_system/auto_drive_system_README) - 基于强化学习的自动驾驶系统
+- [__CARLA自动驾驶多场景仿真项目__](./DeFIX/docs/index.md)
+- [__carla_2d_deeprl__](./carla_2d_deeprl/README.md) - 基于 CARLA 的极简 2D 深度强化学习自动驾驶环境。
+- [__无人机飞行控制__](./UVA_flight_control_system.md) - 基于AirSim的无人机飞行控制系统
+- [__人形机器人平衡控制__](./humanoid_balance/Humanoid_Balance.md) - 基于强化学习的人形机器人平衡控制仿真
+- [__工程规范优化__](./improve/project.md) - 多场景仿真与控制优化项目
# 其他
[ 驾驶事故视频识别 ](./carla_temporal_collage/index.md) - 基于 Temporal Collage Prompting 的 CARLA 驾驶事故视频识别系统
From 59f2a0d7b954c0d4869480933abccd0b13f9df6b Mon Sep 17 00:00:00 2001
From: liuhuatao <2814267042@qq.com>
Date: Fri, 12 Jun 2026 23:48:16 +0800
Subject: [PATCH 18/36] =?UTF-8?q?=E5=90=8C=E6=AD=A5?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/driving_reward_analysis/visualizer.py | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/src/driving_reward_analysis/visualizer.py b/src/driving_reward_analysis/visualizer.py
index b5f21bdad0..c1204ac475 100644
--- a/src/driving_reward_analysis/visualizer.py
+++ b/src/driving_reward_analysis/visualizer.py
@@ -13,6 +13,7 @@
def plot_reward_curves(
output_dir: str,
config: dict,
+ prefix: str = "",
) -> str:
"""绘制三类奖励函数的理论曲线.
@@ -93,7 +94,7 @@ def plot_reward_curves(
fontsize=15, fontweight="bold", y=1.02)
plt.tight_layout()
- save_path = os.path.join(output_dir, "reward_func_analysis.png")
+ save_path = os.path.join(output_dir, f"{prefix}reward_func_analysis.png")
fig.savefig(save_path, dpi=150, bbox_inches="tight")
plt.close(fig)
print(f"[Saved] {save_path}")
@@ -103,6 +104,7 @@ def plot_reward_curves(
def plot_scenario_rewards(
rewards: dict,
output_dir: str,
+ prefix: str = "",
) -> str:
"""绘制场景仿真中的奖励变化曲线.
@@ -139,7 +141,7 @@ def plot_scenario_rewards(
fontsize=14, fontweight="bold", y=1.01)
plt.tight_layout()
- save_path = os.path.join(output_dir, "reward_comparison.png")
+ save_path = os.path.join(output_dir, f"{prefix}reward_comparison.png")
fig.savefig(save_path, dpi=150, bbox_inches="tight")
plt.close(fig)
print(f"[Saved] {save_path}")
From c1845b719801ffb32b345a2e3981dd27ebfaa9f5 Mon Sep 17 00:00:00 2001
From: liuhuatao <2814267042@qq.com>
Date: Sat, 13 Jun 2026 00:04:15 +0800
Subject: [PATCH 19/36] =?UTF-8?q?=E5=90=8C=E6=AD=A5?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
docs/index.md | 131 +++++++++++++++++++++++++-------------------------
1 file changed, 66 insertions(+), 65 deletions(-)
diff --git a/docs/index.md b/docs/index.md
index 4a0bf3fcb8..9cb9642ca2 100644
--- a/docs/index.md
+++ b/docs/index.md
@@ -6,36 +6,36 @@ title: 主页
## 目录
-- [入门](#primary) - 基础算法与模型示例
-- [感知](#perception) - 计算机视觉与感知系统
-- [规划](#planning) - 路径规划与决策
-- [控制](#control) - 控制算法与仿真
-- [其他](#other)
+ [入门](#primary) - 基础算法与模型示例
+ [感知](#perception) - 计算机视觉与感知系统
+ [规划](#planning) - 路径规划与决策
+ [控制](#control) - 控制算法与仿真
+ [其他](#other)
---
## 入门
-- [__热身__](warmup.md) — 入门热身示例
-- [__线性回归__](linear_regression.md) - 基础线性回归模型
-- [__线性回归改进__](linear_regression_improved.md) - 线性回归优化版本
-- [__线性回归修复__](linear_regression_fix.md) - 修复偏置未更新bug
-- [__softmax回归__](softmax_regression.md) - 多分类softmax回归
-- [__线性回归和softmax回归改进__](softmax_regression_improved.md) - 回归算法改进
-- [__支持向量机__](svm.md) - SVM分类算法
-- [__支持向量机改进__](svm_improved.md) - SVM优化版本
-- [__简单神经网络__](simple_nn.md) - 基础神经网络
-- [__卷积神经网络__](CNN.md) - CNN基础实现
-- [__卷积神经网络改进__](cnn_keras_sequential_improved.md) - CNN优化版本
-- [__循环神经网络__](RNN.md) - RNN基础实现
-- [__循环神经网络改进__](poem_generation_rnn_improved.md) - RNN优化版本
-- [__注意力机制__](attention.md) - 注意力机制原理与实现
-- [__高斯混合__](gaussian_mixture.md) - 高斯混合模型
-- [__高斯混合改进__](./chap11_gaussian_mixture/README.md) - 高斯混合优化
-- [__受限玻尔兹曼机__](RBM.md) - RBM基础实现
-- [__强化学习__](RL.md) - 强化学习基础
-- [__机器人仿真__](ant_robot/机器人仿真系统.md) - MuJoCo机器人仿真
-- [__强化学习工作空间__](rl_workspace.md) - 强化学习工作空间
+ [__热身__](warmup.md) — 入门热身示例
+ [__线性回归__](linear_regression.md) - 基础线性回归模型
+ [__线性回归改进__](linear_regression_improved.md) - 线性回归优化版本
+ [__线性回归修复__](linear_regression_fix.md) - 修复偏置未更新bug
+ [__softmax回归__](softmax_regression.md) - 多分类softmax回归
+ [__线性回归和softmax回归改进__](softmax_regression_improved.md) - 回归算法改进
+ [__支持向量机__](svm.md) - SVM分类算法
+ [__支持向量机改进__](svm_improved.md) - SVM优化版本
+ [__简单神经网络__](simple_nn.md) - 基础神经网络
+ [__卷积神经网络__](CNN.md) - CNN基础实现
+ [__卷积神经网络改进__](cnn_keras_sequential_improved.md) - CNN优化版本
+ [__循环神经网络__](RNN.md) - RNN基础实现
+ [__循环神经网络改进__](poem_generation_rnn_improved.md) - RNN优化版本
+ [__注意力机制__](attention.md) - 注意力机制原理与实现
+ [__高斯混合__](gaussian_mixture.md) - 高斯混合模型
+ [__高斯混合改进__](./chap11_gaussian_mixture/README.md) - 高斯混合优化
+ [__受限玻尔兹曼机__](RBM.md) - RBM基础实现
+ [__强化学习__](RL.md) - 强化学习基础
+ [__机器人仿真__](ant_robot/机器人仿真系统.md) - MuJoCo机器人仿真
+ [__强化学习工作空间__](rl_workspace.md) - 强化学习工作空间
[__基于深度学习置信度加权的自动驾驶雨天多传感器融合感知优化__](rain_sensor_fusion\DEMO_REPORT.md)
@@ -43,43 +43,44 @@ title: 主页
## 感知
-- [__车道线检测__](./lane_detection/README.md) - 基于 OpenCV 的 Carla 场景车道线检测(分步实现)
-- [__carla_CAM__](./carla_CAM/README.md) - 使用类激活映射测试卷积神经网络
-- [__交通标识识别__](./carla_traffic_sign_recognition/carla_traffic_sign_recognition.md) — 交通标识识别
-- [__V2X路侧智能感知__](./edge_intelligence_V2X/README.md) - 基于YOLOv8n的V2X路侧智能感知系统优化与实现
-- [__Carla多模态异常检测__](./carla_auto_vision_navigator.md) - 基于多模态融合的Carla非结构化场景异常检测自动驾驶
-- [__目标检测__](./test/object_detection.md) - 目标检测与危险评估
-- [__图像目标检测__](./image_object_detection/image_object_detection.md) - 多功能图像目标检测系统
-- __跟踪__ - 目标跟踪
-- [__路径追踪__](./test.md) - 路径追踪测试
-- [__交通标识检测__](./traffic_sign_detection/README.md) - 交通标识目标检测
-- [__td3_carracing__](./td3_carracing/README.md) - 基于 TD3 + CNN 的强化学习自动驾驶系统
-- [__无人机飞行控制__](./UVA_flight_control_system.md) - 基于AirSim的无人机飞行控制系统
-- [__人形机器人平衡控制__](./humanoid_balance/Humanoid_Balance.md) - 基于强化学习的人形机器人平衡控制仿真
-- [__工程规范优化__](./improve/project.md) - 多场景仿真与控制优化项目
-- [__人形机器人站立行走__](./mujoco_man/mujoco_manrun.md) - 基于 CPG + PD 的人形机器人稳定站立与行走仿真(MuJoCo)
-- [__setup_tool模块汇报文档__](./setup_tool/report.md) - setup_tool 模块背景、改进内容、运行方式与效果总结
-- [__机械臂自动抓取__](./robot_arm/README.md) - 基于Franka Panda的机械臂自动抓取仿真项目
-- [__CARLA天气鲁棒性测试__](./carla_weather_robustness/README.md) - CARLA多天气条件下自动驾驶感知鲁棒性测试系统
-
-- [__自动驾驶车辆语义分割__](./auto_drive_seg/README.md) - 基于 U-Net + Focal Loss 的 CARLA 街景 8 类语义分割(含数据增强、速度基准、概率热力图、类别频率分析)
-- [__用户使用手势控制 Airsim 无人机__](./drone_hand_gesture/README.md) - 使用手势识别控制 Airsim 无人机飞行
-
-- [__基于自监督学习与PPO强化学习的自动驾驶仿真项目__](./autonomous_driving/README.md) - 基于CARLA的SSL+RL自动驾驶仿真系统
-- [__CARLA天气鲁棒性测试__](./carla_weather_robustness/README.md) - CARLA多天气条件下自动驾驶感知鲁棒性测试系统
+ [__车道线检测__](./lane_detection/README.md) - 基于 OpenCV 的 Carla 场景车道线检测(分步实现)
+ [__carla_CAM__](./carla_CAM/README.md) - 使用类激活映射测试卷积神经网络
+ [__交通标识识别__](./carla_traffic_sign_recognition/carla_traffic_sign_recognition.md) — 交通标识识别
+ [__V2X路侧智能感知__](./edge_intelligence_V2X/README.md) - 基于YOLOv8n的V2X路侧智能感知系统优化与实现
+ [__Carla多模态异常检测__](./carla_auto_vision_navigator.md) - 基于多模态融合的Carla非结构化场景异常检测自动驾驶
+ [__目标检测__](./test/object_detection.md) - 目标检测与危险评估
+ [__图像目标检测__](./image_object_detection/image_object_detection.md) - 多功能图像目标检测系统
+ __跟踪__ - 目标跟踪
+ [__路径追踪__](./test.md) - 路径追踪测试
+ [__交通标识检测__](./traffic_sign_detection/README.md) - 交通标识目标检测
+ [__td3_carracing__](./td3_carracing/README.md) - 基于 TD3 + CNN 的强化学习自动驾驶系统
+ [__无人机飞行控制__](./UVA_flight_control_system.md) - 基于AirSim的无人机飞行控制系统
+ [__人形机器人平衡控制__](./humanoid_balance/Humanoid_Balance.md) - 基于强化学习的人形机器人平衡控制仿真
+ [__工程规范优化__](./improve/project.md) - 多场景仿真与控制优化项目
+ [__人形机器人站立行走__](./mujoco_man/mujoco_manrun.md) - 基于 CPG + PD 的人形机器人稳定站立与行走仿真(MuJoCo)
+ [__setup_tool模块汇报文档__](./setup_tool/report.md) - setup_tool 模块背景、改进内容、运行方式与效果总结
+ [__机械臂自动抓取__](./robot_arm/README.md) - 基于Franka Panda的机械臂自动抓取仿真项目
+ [__CARLA天气鲁棒性测试__](./carla_weather_robustness/README.md) - CARLA多天气条件下自动驾驶感知鲁棒性测试系统
+
+ [__自动驾驶车辆语义分割__](./auto_drive_seg/README.md) - 基于 U-Net + Focal Loss 的 CARLA 街景 8 类语义分割(含数据增强、速度基准、概率热力图、类别频率分析)
+ [__用户使用手势控制 Airsim 无人机__](./drone_hand_gesture/README.md) - 使用手势识别控制 Airsim 无人机飞行
+
+ [__基于自监督学习与PPO强化学习的自动驾驶仿真项目__](./autonomous_driving/README.md) - 基于CARLA的SSL+RL自动驾驶仿真系统
+ [__CARLA天气鲁棒性测试__](./carla_weather_robustness/README.md) - CARLA多天气条件下自动驾驶感知鲁棒性测试系统
## 规划
[__导航__](#navigation)
-- [__Carla YOLO规划器__](carla_yolo_planner.md) - Carla环境结合YOLO的自动驾驶路径规划方案
-- [__人形机器人SAC强化学习步态优化__](./mujoco_running/running.md) - 基于CPG+PD+SAC残差强化学习的缓步稳定行走仿真
-- [__人形机器人自主行走__](./mujoco_hci_sim/README.md) - 基于PPO强化学习的Humanoid人形机器人自主行走仿真
-- [__人形机器人站立行走__](./mujoco_man/mujoco_manrun.md) - 基于 CPG + PD 的人形机器人稳定站立与行走仿真(MuJoCo)
-- [__td3_carracing__](./td3_carracing/README.md) - 基于 TD3 + CNN 的 CarRacing 强化学习自动驾驶系统
-- [__机器人仿真(MuJoCo)__](ant_robot/机器人仿真系统.md)
-- [__机械臂仿真系统__](arm_sim.md) - 基于MuJoCo的机械臂仿真与功能优化
-- [__CARLA天气鲁棒性测试__](./carla_weather_robustness/README.md) - CARLA多天气条件下自动驾驶感知鲁棒性测试系统
-- [__CARLA自动驾驶系统__](carla_ad_gym_rl/carla_ad_gym_rl.md) - CARLA 仿真与强化学习的自动驾驶智能决策系统
+ [__Carla YOLO规划器__](carla_yolo_planner.md) - Carla环境结合YOLO的自动驾驶路径规划方案
+ [__人形机器人SAC强化学习步态优化__](./mujoco_running/running.md) - 基于CPG+PD+SAC残差强化学习的缓步稳定行走仿真
+ [__人形机器人自主行走__](./mujoco_hci_sim/README.md) - 基于PPO强化学习的Humanoid人形机器人自主行走仿真
+ [__人形机器人站立行走__](./mujoco_man/mujoco_manrun.md) - 基于 CPG + PD 的人形机器人稳定站立与行走仿真(MuJoCo)
+ [__td3_carracing__](./td3_carracing/README.md) - 基于 TD3 + CNN 的 CarRacing 强化学习自动驾驶系统
+ [__机器人仿真(MuJoCo)__](ant_robot/机器人仿真系统.md)
+ [__机械臂仿真系统__](arm_sim.md) - 基于MuJoCo的机械臂仿真与功能优化
+ [__CARLA自动驾驶系统__](carla_ad_gym_rl/carla_ad_gym_rl.md) - CARLA 仿真与强化学习的自动驾驶智能决策系统
+ [__CARLA天气鲁棒性测试__](./carla_weather_robustness/README.md) - CARLA多天气条件下自动驾驶感知鲁棒性测试系统
+
[__Carla YOLO规划器__](carla_yolo_planner.md) - Carla环境结合YOLO的自动驾驶路径规划方案
[__人形机器人SAC强化学习步态优化__](./mujoco_running/running.md) - 基于CPG+PD+SAC残差强化学习的缓步稳定行走仿真
@@ -106,13 +107,13 @@ title: 主页
## 控制
[PID](#pid)
-- [__导航__](#navigation)
-- [__自动驾驶系统__](./auto_drive_system/auto_drive_system_README) - 基于强化学习的自动驾驶系统
-- [__CARLA自动驾驶多场景仿真项目__](./DeFIX/docs/index.md)
-- [__carla_2d_deeprl__](./carla_2d_deeprl/README.md) - 基于 CARLA 的极简 2D 深度强化学习自动驾驶环境。
-- [__无人机飞行控制__](./UVA_flight_control_system.md) - 基于AirSim的无人机飞行控制系统
-- [__人形机器人平衡控制__](./humanoid_balance/Humanoid_Balance.md) - 基于强化学习的人形机器人平衡控制仿真
-- [__工程规范优化__](./improve/project.md) - 多场景仿真与控制优化项目
+ [__导航__](#navigation)
+ [__自动驾驶系统__](./auto_drive_system/auto_drive_system_README) - 基于强化学习的自动驾驶系统
+ [__CARLA自动驾驶多场景仿真项目__](./DeFIX/docs/index.md)
+ [__carla_2d_deeprl__](./carla_2d_deeprl/README.md) - 基于 CARLA 的极简 2D 深度强化学习自动驾驶环境。
+ [__无人机飞行控制__](./UVA_flight_control_system.md) - 基于AirSim的无人机飞行控制系统
+ [__人形机器人平衡控制__](./humanoid_balance/Humanoid_Balance.md) - 基于强化学习的人形机器人平衡控制仿真
+ [__工程规范优化__](./improve/project.md) - 多场景仿真与控制优化项目
# 其他
[ 驾驶事故视频识别 ](./carla_temporal_collage/index.md) - 基于 Temporal Collage Prompting 的 CARLA 驾驶事故视频识别系统
From b66c6828d7a567e0ea4132f656392edbb4ccd0ab Mon Sep 17 00:00:00 2001
From: liuhuatao <2814267042@qq.com>
Date: Sat, 13 Jun 2026 00:09:45 +0800
Subject: [PATCH 20/36] =?UTF-8?q?=E5=90=8C=E6=AD=A5?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
docs/index.md | 131 +++++++++++++++++++++++++-------------------------
1 file changed, 65 insertions(+), 66 deletions(-)
diff --git a/docs/index.md b/docs/index.md
index 9cb9642ca2..3c71b6b8e6 100644
--- a/docs/index.md
+++ b/docs/index.md
@@ -6,36 +6,36 @@ title: 主页
## 目录
- [入门](#primary) - 基础算法与模型示例
- [感知](#perception) - 计算机视觉与感知系统
- [规划](#planning) - 路径规划与决策
- [控制](#control) - 控制算法与仿真
- [其他](#other)
++ [入门](#primary) - 基础算法与模型示例
++ [感知](#perception) - 计算机视觉与感知系统
++ [规划](#planning) - 路径规划与决策
++ [控制](#control) - 控制算法与仿真
++ [其他](#other)
---
## 入门
- [__热身__](warmup.md) — 入门热身示例
- [__线性回归__](linear_regression.md) - 基础线性回归模型
- [__线性回归改进__](linear_regression_improved.md) - 线性回归优化版本
- [__线性回归修复__](linear_regression_fix.md) - 修复偏置未更新bug
- [__softmax回归__](softmax_regression.md) - 多分类softmax回归
- [__线性回归和softmax回归改进__](softmax_regression_improved.md) - 回归算法改进
- [__支持向量机__](svm.md) - SVM分类算法
- [__支持向量机改进__](svm_improved.md) - SVM优化版本
- [__简单神经网络__](simple_nn.md) - 基础神经网络
- [__卷积神经网络__](CNN.md) - CNN基础实现
- [__卷积神经网络改进__](cnn_keras_sequential_improved.md) - CNN优化版本
- [__循环神经网络__](RNN.md) - RNN基础实现
- [__循环神经网络改进__](poem_generation_rnn_improved.md) - RNN优化版本
- [__注意力机制__](attention.md) - 注意力机制原理与实现
- [__高斯混合__](gaussian_mixture.md) - 高斯混合模型
- [__高斯混合改进__](./chap11_gaussian_mixture/README.md) - 高斯混合优化
- [__受限玻尔兹曼机__](RBM.md) - RBM基础实现
- [__强化学习__](RL.md) - 强化学习基础
- [__机器人仿真__](ant_robot/机器人仿真系统.md) - MuJoCo机器人仿真
- [__强化学习工作空间__](rl_workspace.md) - 强化学习工作空间
++ [__热身__](warmup.md) — 入门热身示例
++ [__线性回归__](linear_regression.md) - 基础线性回归模型
++ [__线性回归改进__](linear_regression_improved.md) - 线性回归优化版本
++ [__线性回归修复__](linear_regression_fix.md) - 修复偏置未更新bug
++ [__softmax回归__](softmax_regression.md) - 多分类softmax回归
++ [__线性回归和softmax回归改进__](softmax_regression_improved.md) - 回归算法改进
++ [__支持向量机__](svm.md) - SVM分类算法
++ [__支持向量机改进__](svm_improved.md) - SVM优化版本
++ [__简单神经网络__](simple_nn.md) - 基础神经网络
++ [__卷积神经网络__](CNN.md) - CNN基础实现
++ [__卷积神经网络改进__](cnn_keras_sequential_improved.md) - CNN优化版本
++ [__循环神经网络__](RNN.md) - RNN基础实现
++ [__循环神经网络改进__](poem_generation_rnn_improved.md) - RNN优化版本
++ [__注意力机制__](attention.md) - 注意力机制原理与实现
++ [__高斯混合__](gaussian_mixture.md) - 高斯混合模型
++ [__高斯混合改进__](./chap11_gaussian_mixture/README.md) - 高斯混合优化
++ [__受限玻尔兹曼机__](RBM.md) - RBM基础实现
++ [__强化学习__](RL.md) - 强化学习基础
++ [__机器人仿真__](ant_robot/机器人仿真系统.md) - MuJoCo机器人仿真
++ [__强化学习工作空间__](rl_workspace.md) - 强化学习工作空间
[__基于深度学习置信度加权的自动驾驶雨天多传感器融合感知优化__](rain_sensor_fusion\DEMO_REPORT.md)
@@ -43,44 +43,43 @@ title: 主页
## 感知
- [__车道线检测__](./lane_detection/README.md) - 基于 OpenCV 的 Carla 场景车道线检测(分步实现)
- [__carla_CAM__](./carla_CAM/README.md) - 使用类激活映射测试卷积神经网络
- [__交通标识识别__](./carla_traffic_sign_recognition/carla_traffic_sign_recognition.md) — 交通标识识别
- [__V2X路侧智能感知__](./edge_intelligence_V2X/README.md) - 基于YOLOv8n的V2X路侧智能感知系统优化与实现
- [__Carla多模态异常检测__](./carla_auto_vision_navigator.md) - 基于多模态融合的Carla非结构化场景异常检测自动驾驶
- [__目标检测__](./test/object_detection.md) - 目标检测与危险评估
- [__图像目标检测__](./image_object_detection/image_object_detection.md) - 多功能图像目标检测系统
- __跟踪__ - 目标跟踪
- [__路径追踪__](./test.md) - 路径追踪测试
- [__交通标识检测__](./traffic_sign_detection/README.md) - 交通标识目标检测
- [__td3_carracing__](./td3_carracing/README.md) - 基于 TD3 + CNN 的强化学习自动驾驶系统
- [__无人机飞行控制__](./UVA_flight_control_system.md) - 基于AirSim的无人机飞行控制系统
- [__人形机器人平衡控制__](./humanoid_balance/Humanoid_Balance.md) - 基于强化学习的人形机器人平衡控制仿真
- [__工程规范优化__](./improve/project.md) - 多场景仿真与控制优化项目
- [__人形机器人站立行走__](./mujoco_man/mujoco_manrun.md) - 基于 CPG + PD 的人形机器人稳定站立与行走仿真(MuJoCo)
- [__setup_tool模块汇报文档__](./setup_tool/report.md) - setup_tool 模块背景、改进内容、运行方式与效果总结
- [__机械臂自动抓取__](./robot_arm/README.md) - 基于Franka Panda的机械臂自动抓取仿真项目
- [__CARLA天气鲁棒性测试__](./carla_weather_robustness/README.md) - CARLA多天气条件下自动驾驶感知鲁棒性测试系统
-
- [__自动驾驶车辆语义分割__](./auto_drive_seg/README.md) - 基于 U-Net + Focal Loss 的 CARLA 街景 8 类语义分割(含数据增强、速度基准、概率热力图、类别频率分析)
- [__用户使用手势控制 Airsim 无人机__](./drone_hand_gesture/README.md) - 使用手势识别控制 Airsim 无人机飞行
-
- [__基于自监督学习与PPO强化学习的自动驾驶仿真项目__](./autonomous_driving/README.md) - 基于CARLA的SSL+RL自动驾驶仿真系统
- [__CARLA天气鲁棒性测试__](./carla_weather_robustness/README.md) - CARLA多天气条件下自动驾驶感知鲁棒性测试系统
++ [__车道线检测__](./lane_detection/README.md) - 基于 OpenCV 的 Carla 场景车道线检测(分步实现)
++ [__carla_CAM__](./carla_CAM/README.md) - 使用类激活映射测试卷积神经网络
++ [__交通标识识别__](./carla_traffic_sign_recognition/carla_traffic_sign_recognition.md) — 交通标识识别
++ [__V2X路侧智能感知__](./edge_intelligence_V2X/README.md) - 基于YOLOv8n的V2X路侧智能感知系统优化与实现
++ [__Carla多模态异常检测__](./carla_auto_vision_navigator.md) - 基于多模态融合的Carla非结构化场景异常检测自动驾驶
++ [__目标检测__](./test/object_detection.md) - 目标检测与危险评估
++ [__图像目标检测__](./image_object_detection/image_object_detection.md) - 多功能图像目标检测系统
++ __跟踪__ - 目标跟踪
++ [__路径追踪__](./test.md) - 路径追踪测试
++ [__交通标识检测__](./traffic_sign_detection/README.md) - 交通标识目标检测
++ [__td3_carracing__](./td3_carracing/README.md) - 基于 TD3 + CNN 的强化学习自动驾驶系统
++ [__无人机飞行控制__](./UVA_flight_control_system.md) - 基于AirSim的无人机飞行控制系统
++ [__人形机器人平衡控制__](./humanoid_balance/Humanoid_Balance.md) - 基于强化学习的人形机器人平衡控制仿真
++ [__工程规范优化__](./improve/project.md) - 多场景仿真与控制优化项目
++ [__人形机器人站立行走__](./mujoco_man/mujoco_manrun.md) - 基于 CPG + PD 的人形机器人稳定站立与行走仿真(MuJoCo)
++ [__setup_tool模块汇报文档__](./setup_tool/report.md) - setup_tool 模块背景、改进内容、运行方式与效果总结
++ [__机械臂自动抓取__](./robot_arm/README.md) - 基于Franka Panda的机械臂自动抓取仿真项目
++ [__CARLA天气鲁棒性测试__](./carla_weather_robustness/README.md) - CARLA多天气条件下自动驾驶感知鲁棒性测试系统
+
++ [__自动驾驶车辆语义分割__](./auto_drive_seg/README.md) - 基于 U-Net + Focal Loss 的 CARLA 街景 8 类语义分割(含数据增强、速度基准、概率热力图、类别频率分析)
++ [__用户使用手势控制 Airsim 无人机__](./drone_hand_gesture/README.md) - 使用手势识别控制 Airsim 无人机飞行
+
++ [__基于自监督学习与PPO强化学习的自动驾驶仿真项目__](./autonomous_driving/README.md) - 基于CARLA的SSL+RL自动驾驶仿真系统
++ [__CARLA天气鲁棒性测试__](./carla_weather_robustness/README.md) - CARLA多天气条件下自动驾驶感知鲁棒性测试系统
## 规划
[__导航__](#navigation)
- [__Carla YOLO规划器__](carla_yolo_planner.md) - Carla环境结合YOLO的自动驾驶路径规划方案
- [__人形机器人SAC强化学习步态优化__](./mujoco_running/running.md) - 基于CPG+PD+SAC残差强化学习的缓步稳定行走仿真
- [__人形机器人自主行走__](./mujoco_hci_sim/README.md) - 基于PPO强化学习的Humanoid人形机器人自主行走仿真
- [__人形机器人站立行走__](./mujoco_man/mujoco_manrun.md) - 基于 CPG + PD 的人形机器人稳定站立与行走仿真(MuJoCo)
- [__td3_carracing__](./td3_carracing/README.md) - 基于 TD3 + CNN 的 CarRacing 强化学习自动驾驶系统
- [__机器人仿真(MuJoCo)__](ant_robot/机器人仿真系统.md)
- [__机械臂仿真系统__](arm_sim.md) - 基于MuJoCo的机械臂仿真与功能优化
- [__CARLA自动驾驶系统__](carla_ad_gym_rl/carla_ad_gym_rl.md) - CARLA 仿真与强化学习的自动驾驶智能决策系统
- [__CARLA天气鲁棒性测试__](./carla_weather_robustness/README.md) - CARLA多天气条件下自动驾驶感知鲁棒性测试系统
-
++ [__Carla YOLO规划器__](carla_yolo_planner.md) - Carla环境结合YOLO的自动驾驶路径规划方案
++ [__人形机器人SAC强化学习步态优化__](./mujoco_running/running.md) - 基于CPG+PD+SAC残差强化学习的缓步稳定行走仿真
++ [__人形机器人自主行走__](./mujoco_hci_sim/README.md) - 基于PPO强化学习的Humanoid人形机器人自主行走仿真
++ [__人形机器人站立行走__](./mujoco_man/mujoco_manrun.md) - 基于 CPG + PD 的人形机器人稳定站立与行走仿真(MuJoCo)
++ [__td3_carracing__](./td3_carracing/README.md) - 基于 TD3 + CNN 的 CarRacing 强化学习自动驾驶系统
++ [__机器人仿真(MuJoCo)__](ant_robot/机器人仿真系统.md)
++ [__机械臂仿真系统__](arm_sim.md) - 基于MuJoCo的机械臂仿真与功能优化
++ [__CARLA天气鲁棒性测试__](./carla_weather_robustness/README.md) - CARLA多天气条件下自动驾驶感知鲁棒性测试系统
++ [__CARLA自动驾驶系统__](carla_ad_gym_rl/carla_ad_gym_rl.md) - CARLA 仿真与强化学习的自动驾驶智能决策系统
[__Carla YOLO规划器__](carla_yolo_planner.md) - Carla环境结合YOLO的自动驾驶路径规划方案
[__人形机器人SAC强化学习步态优化__](./mujoco_running/running.md) - 基于CPG+PD+SAC残差强化学习的缓步稳定行走仿真
@@ -107,13 +106,13 @@ title: 主页
## 控制
[PID](#pid)
- [__导航__](#navigation)
- [__自动驾驶系统__](./auto_drive_system/auto_drive_system_README) - 基于强化学习的自动驾驶系统
- [__CARLA自动驾驶多场景仿真项目__](./DeFIX/docs/index.md)
- [__carla_2d_deeprl__](./carla_2d_deeprl/README.md) - 基于 CARLA 的极简 2D 深度强化学习自动驾驶环境。
- [__无人机飞行控制__](./UVA_flight_control_system.md) - 基于AirSim的无人机飞行控制系统
- [__人形机器人平衡控制__](./humanoid_balance/Humanoid_Balance.md) - 基于强化学习的人形机器人平衡控制仿真
- [__工程规范优化__](./improve/project.md) - 多场景仿真与控制优化项目
++ [__导航__](#navigation)
++ [__自动驾驶系统__](./auto_drive_system/auto_drive_system_README) - 基于强化学习的自动驾驶系统
++ [__CARLA自动驾驶多场景仿真项目__](./DeFIX/docs/index.md)
++ [__carla_2d_deeprl__](./carla_2d_deeprl/README.md) - 基于 CARLA 的极简 2D 深度强化学习自动驾驶环境。
++ [__无人机飞行控制__](./UVA_flight_control_system.md) - 基于AirSim的无人机飞行控制系统
++ [__人形机器人平衡控制__](./humanoid_balance/Humanoid_Balance.md) - 基于强化学习的人形机器人平衡控制仿真
++ [__工程规范优化__](./improve/project.md) - 多场景仿真与控制优化项目
# 其他
[ 驾驶事故视频识别 ](./carla_temporal_collage/index.md) - 基于 Temporal Collage Prompting 的 CARLA 驾驶事故视频识别系统
From 3d27e178d5cc3d0e8ba31f7aaf3230f6d692525e Mon Sep 17 00:00:00 2001
From: liuhuatao <2814267042@qq.com>
Date: Sat, 13 Jun 2026 00:13:38 +0800
Subject: [PATCH 21/36] =?UTF-8?q?=E5=90=8C=E6=AD=A5?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
docs/index.md | Bin 8296 -> 6326 bytes
1 file changed, 0 insertions(+), 0 deletions(-)
diff --git a/docs/index.md b/docs/index.md
index 3c71b6b8e656ca2b13f733deac0a3b7e4d1ea1d0..7b2159756e7023e04c3c19414273e2a0797b04cf 100644
GIT binary patch
literal 6326
zcmd5=OKe+36rJ)dzaV}U>V`+VpdV2Okocs4C@Ij=^d+&Av{l-^*v_+^CQeN3IK+iC
z5kWKxC3HcF3W5!P7VQeDWl@BxumDji#7`h#Qwdd~0SO5SDB+wp9?!gI#}2HJ_2Sr`
zx%b?2zccfH=R}Xli9X?q24RWy_R!2#;&P#$mH4hx>>fEa+Pd$%(OqJdNMUtOWJDJ0
zLwF^<{V6ddVq%?$ivf|wx6N4Lihi+4w2L
z&rA)?#9q8OvbODk*k#G5TaR^4!n4N1;|NE%tv|iMcVb!zZG*s(7E!#9
z6!qw}H$~43n`>RHiUVH;mh=FzLZ)||oV+${?&yPLTF`?hStkF@_?^aTa?lUSgLv;N
zTbpnF($F1iS+VO9sCm{dvl1vMp
zumoi^xAgB@ll(1l)Qy3yWQkYFNfy3Nz?Y1`$A!s`|Cj&5&$DfQ8I*2v=Kr;_hQ+cL
za+k!fX*+eWA*ndag5`9H4?o9xwI2_6ELP*#-u8&90$Qi^F{_f}4YY&+OXSTqyij>Oq5Ed^5gNP$pr`cnI2z7Or
zm7Tq5p~_y~rxvd7vJNGtBhQ~0{UEg^t$am>W%pt(bpsJS9>-r)s#Rp0lk|
zFK-kbsD%@GOEkhqv^R>+4ci71TI^NamkLRBD@wlYMY%}TSepdGfn&bNIS&sV!N0-@Md!%aemC4S%`|Aju@Ej
ztVk~SXXllbfsy9GKa@}n8$G%M9&N&t7k5L_M7~__pHKWSdSmmlNS#ej`caPv_&qtaEjCi)cX%sJb_iKRf
z$T=@3INc9;wV$XsbLa7JCax8A%z0MT4T!jih~U4q-e*&<$u7~$3dvb~p$h4r%WG9f
zvu>#@p!8ISvev9aBe1j&kAvQ%^spi;ugVzKGLK}R+Wz_I(l#YobIKT@o@4H&l;11I
z?U>V$Om!T$BVeYn7#zy9-yUyc=
z2$#-pg(Z)|ibg!aewc%0cYq@qam;*j#!NDKU3gV3RxO;nH$sENE2m|v!hZVA?@CHQA
zt@0j)XsfTR9d(*#M%#FDY_El>WFxTtnto%q!m7Ap&D6I$GSXVWH0y2-Cnip-YHg6$
zOlciwHAY*xhcrtzrlZZku^E+*`Rmv5UUDKik)JEnhvy1PAN!=qr0hm=hOFF={5L`GPAR^sOkzry{|up-MM%(w|#rc3n|8IeFnz!Ja7Z30QG>
z7ZfVq3#kdzuT|%JolV9mi*-Yea<>HE6M-tELbPEk|#L+J)t!|?@8_w^+|L*%FI>a39y^Pw|7sE|$66j4
zW9*>uzXWA4>XoxRC@Ik~>;^T4@A`%TqD
z#>UgrZ--CkXD9W6jkr#)3?0Ecz^D1o~#4i759Tm44F%#6C>Y&&E
E0Uz6{r~m)}
literal 8296
zcmeHMTW=Fd7JkpKXbmqQM66+6Mx)u0LIOLi5)y@rX2qgbV|S7s>~3$n9pKF&H|HK8
z7jkprkdTB7c9;N3Y$y3IGp_3P6Mtb()oI(+cEf6RnT3ayP_WBY=T_%@=Teqth1Kt*
z;$gm&e%sJ+M!IcprtJKbef-$YFW))aV_DJIcY#2+X7$AHHU^DIpgpSUKi<4?DWL1;
z8XD*?>(1$9@%Yr9*%pt|xnY`q{=P8oWH*6yX=R;^50dF!I+CEvBV=fhWRC2`0sGB5
zDa`(!cm%x9NcK{O9M3j1oR@Bs!OhbA_MNk5qNWy6%!lWs3ldq)+3AFxnWy`+#luOu
zohGRouep|ev?Ce4m4=bWt}XKREVK?-9baQOe4%TQ@&P_te8KwmpN%N
z_^z0rgUyE3qnco^3l}bMRZ&0b`&d-bB`x%quUtL9`r-QkTl;}qL6+_QS59tMmhYUs
zub7c|v@sGoC;gU~k&poXT(tol$eq%}7FkM><0tG`SkqO-lufnURAVu)38zporm!3B
z$yD@Gp)*I$>5?xkS&KwXqgM^NL`CMs!ZR{HXOAT5@-Ov7i>Dc~G2u_NOMBqb!(F5g
z{4qn9U(%&FbZ+l%yc_Aoj4mspJgDmGF8CC>4k9q%L4k4wW-;Dt=(SZ~Bt@cOMb6b#S#o)CoSjnr}l0zQV$B*?_97>=AP
zTvk|>^%@Tl;vLzOi358pTYI|s+BH{Z_=J&2GAVm?Z>GVh43yzNeZ>OpdAljH|k(
zDdAc@fM~rQAgdgyj>(yYoh3#T4hv>*{s9UmW+%>EKv#anU
zVzW!IE&ey7*{Ip!3NP|H*eo6|+dH|^{2NBx49oWo^B#a{uxwb5Xu|e}27o+}wV0cv
z2d_!)1*!$0Q#?(xucK>pr61CjGyIZ_ZkKjWN;~gLOWR~)hiohs3u};3Kzt`P0T+we
z1x?K5P&6GJUym84+!bdC{EwE)ZS8XB<&O5w8%)P)R=~4jR;Z-1+Qi@-zbN%RWq|uU
zLEnxsPK^P`U#c8ZEj7qI)9V1JpTyF4^DPOKk(w1VtVm=zM;Ed+M}p^3}`AEeBrb>1l$#$47>(auGlN~4)${Atlg!E5|+t9F3&VglXsRsO)
z%X&io9$keSB6UP7Wt=QK2dmEEOIe134B6rWY6ths>bcWnzJ&z~)6S(Y{)m2B@0A|I
zi2nG2coTh2v;tDLLf^=6zors|dJ_%fS@QEV=|;;p(s>C|B@15>%*4yA7z8kl&aVOB
z0(6$1r=0XSmZ`|?=B*~V3tYR$lHEd9jy;T7YPm8&=Wf!>>skc3`BD;D0UvU_UO{Pc
zwC|+TBEz0|M9~c`B;Qp4rh;nV$MV7@Tqxf)`m})T!2ToDtHm~8_`#;VJqAU)Gu~fC
z;6`vRUZw`%FLUNHC-5pB7f1rU80E#2rSuV8TiFjh%GtXM_U;%M)Oovy){Mk|HiCu>
z8V0H#&A3o%L2i+nJN^py*U`eRuSO$#d!J+$kuV5?v{5d=VoZS*6ppD@JStm;5oYDV
z$~=8NOh-4dtj48A(2)68M!j!0pO8D=&~
zQ_C~~Ez?sp3EVVY-*bi^q3_Yrr(|jlne&t`L%ZVV#8*s3zo$qYiXKv!U-^+iy~PV?
zZt84pf^s2B1cYB3!^YG0J*HjC<;ffJd
z!cwadi(yV?ib_s;9&SbYR)UsAq|VYZ^w6_=bRt96Qvd;QRi(r#t5H^SWO#^OzvBV%Or6hlCQz>jGWsS@_6SI9J=
z!03UygDN`4N>;CKA|cG;A0UT#Q)^T}MZ|2y);pqU}W|sajn(
zB1SwWGus2OdZj}?+zEiz_3N$YJ6r21ilFvIxSb@i*$7S|#M00mRtSY5t75YSCkZ(a
zMh}bs`xS5kr
zPyj7xI_Zm;*PEKftAxT5DjpG`UDO1~WCNIh`+pgzc}f8EJm1lB9!Sy57&*v@1VJjh
z@D#`*j*9Td%)ERMyeFtZmFbII_3l{CU^Q4S5=SrfmEm(|5l_8=5#(9&3m$I?
z!a9gfUcpG>Wr#5)MpLCYK%<<+tagsER{nh_h&HU`3#5VMIR!JqF3#gI$N+q!<`iHH
zmXqj#NcoG1bv}IKlGGcq8mkJx@56{}hTZn4^4-;*6OhnCOjmC$B~r$|2Zx*PRRM_n
zkAQ-8-8G@}IdQ^A95IqHLR_5slVHL}gg=ZDY)t-%icKbt2NKW*o~2KT5{%z}2@);|
zEKNTpMliy4feD?r*g;^$ibiTtuU!2p5Hfdskivix22P>6D-)lr1VfdNqvoi_lVvFR?#{@+2
z=);Qz{+t7RJG8K2L6z&-!Czfaged!6SFNgn@R0`;yLRhp%he{SOo67}!5o7n`Q0o@
z?!jM?raP^}_ZX#Ht(LmT($f%#G36L3rYXHV->5sT$=l)qxoR
zJh}vpa2TdfJ(L`XOEd*dS(HZM!L9n_3zkE-ekgIEYNS
zvl4VkEfROD7x={M7B;Bmr)hr{+k1F1gLf=4*e{Y|1lakv~_o_Ww5Z(_X2F%_KGvNM@B`3er
J577i_{{p9pVl)5%
From 83fe7ec29f31f5bcb95ecded863ab874e777c360 Mon Sep 17 00:00:00 2001
From: liuhuatao <2814267042@qq.com>
Date: Mon, 15 Jun 2026 21:22:02 +0800
Subject: [PATCH 22/36] =?UTF-8?q?=E5=90=8C=E6=AD=A5?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
docs/index.md | 133 ++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 133 insertions(+)
diff --git a/docs/index.md b/docs/index.md
index e69de29bb2..43a40b07bd 100644
--- a/docs/index.md
+++ b/docs/index.md
@@ -0,0 +1,133 @@
+title: 主页
+
+# [神经网络](https://github.com/OpenHUTB/nn)
+
+欢迎使用神经网络文档,该页面包含所有内容的索引。
+
+## 目录
+
+- [入门](#primary) - 基础算法与模型示例
+- [感知](#perception) - 计算机视觉与感知系统
+- [规划](#planning) - 路径规划与决策
+- [控制](#control) - 控制算法与仿真
+- [其他](#other)
+
+---
+
+## 入门
+
+- [__热身__](warmup.md) — 入门热身示例
+- [__线性回归__](linear_regression.md) - 基础线性回归模型
+- [__线性回归改进__](linear_regression_improved.md) - 线性回归优化版本
+- [__线性回归修复__](linear_regression_fix.md) - 修复偏置未更新bug
+- [__softmax回归__](softmax_regression.md) - 多分类softmax回归
+- [__线性回归和softmax回归改进__](softmax_regression_improved.md) - 回归算法改进
+- [__支持向量机__](svm.md) - SVM分类算法
+- [__支持向量机改进__](svm_improved.md) - SVM优化版本
+- [__简单神经网络__](simple_nn.md) - 基础神经网络
+- [__卷积神经网络__](CNN.md) - CNN基础实现
+- [__卷积神经网络改进__](cnn_keras_sequential_improved.md) - CNN优化版本
+- [__循环神经网络__](RNN.md) - RNN基础实现
+- [__循环神经网络改进__](poem_generation_rnn_improved.md) - RNN优化版本
+- [__注意力机制__](attention.md) - 注意力机制原理与实现
+- [__高斯混合__](gaussian_mixture.md) - 高斯混合模型
+- [__高斯混合改进__](./chap11_gaussian_mixture/README.md) - 高斯混合优化
+- [__受限玻尔兹曼机__](RBM.md) - RBM基础实现
+- [__强化学习__](RL.md) - 强化学习基础
+- [__机器人仿真__](ant_robot/机器人仿真系统.md) - MuJoCo机器人仿真
+- [__强化学习工作空间__](rl_workspace.md) - 强化学习工作空间
+
+[__基于深度学习置信度加权的自动驾驶雨天多传感器融合感知优化__](rain_sensor_fusion\DEMO_REPORT.md)
+
+---
+
+## 感知
+
+- [__车道线检测__](./lane_detection/README.md) - 基于 OpenCV 的 Carla 场景车道线检测(分步实现)
+- [__carla_CAM__](./carla_CAM/README.md) - 使用类激活映射测试卷积神经网络
+- [__交通标识识别__](./carla_traffic_sign_recognition/carla_traffic_sign_recognition.md) — 交通标识识别
+- [__V2X路侧智能感知__](./edge_intelligence_V2X/README.md) - 基于YOLOv8n的V2X路侧智能感知系统优化与实现
+- [__Carla多模态异常检测__](./carla_auto_vision_navigator.md) - 基于多模态融合的Carla非结构化场景异常检测自动驾驶
+- [__目标检测__](./test/object_detection.md) - 目标检测与危险评估
+- [__图像目标检测__](./image_object_detection/image_object_detection.md) - 多功能图像目标检测系统
+- __跟踪__ - 目标跟踪
+- [__路径追踪__](./test.md) - 路径追踪测试
+- [__交通标识检测__](./traffic_sign_detection/README.md) - 交通标识目标检测
+- [__td3_carracing__](./td3_carracing/README.md) - 基于 TD3 + CNN 的强化学习自动驾驶系统
+- [__无人机飞行控制__](./UVA_flight_control_system.md) - 基于AirSim的无人机飞行控制系统
+- [__人形机器人平衡控制__](./humanoid_balance/Humanoid_Balance.md) - 基于强化学习的人形机器人平衡控制仿真
+- [__工程规范优化__](./improve/project.md) - 多场景仿真与控制优化项目
+- [__人形机器人站立行走__](./mujoco_man/mujoco_manrun.md) - 基于 CPG + PD 的人形机器人稳定站立与行走仿真(MuJoCo)
+- [__setup_tool模块汇报文档__](./setup_tool/report.md) - setup_tool 模块背景、改进内容、运行方式与效果总结
+- [__机械臂自动抓取__](./robot_arm/README.md) - 基于Franka Panda的机械臂自动抓取仿真项目
+- [__CARLA天气鲁棒性测试__](./carla_weather_robustness/README.md) - CARLA多天气条件下自动驾驶感知鲁棒性测试系统
+
+- [__自动驾驶车辆语义分割__](./auto_drive_seg/README.md) - 基于 U-Net + Focal Loss 的 CARLA 街景 8 类语义分割(含数据增强、速度基准、概率热力图、类别频率分析)
+- [__用户使用手势控制 Airsim 无人机__](./drone_hand_gesture/README.md) - 使用手势识别控制 Airsim 无人机飞行
+
+- [__基于自监督学习与PPO强化学习的自动驾驶仿真项目__](./autonomous_driving/README.md) - 基于CARLA的SSL+RL自动驾驶仿真系统
+- [__CARLA天气鲁棒性测试__](./carla_weather_robustness/README.md) - CARLA多天气条件下自动驾驶感知鲁棒性测试系统
+- [__CARLA 模拟器中的物体与碰撞检测系统__](./carla_collision_detect/carla_collision_detect.md) - 物体与碰撞检测
+- [__car_navigation_system__](./car_navigation_system/README.md) - 多模态CARLA导航避障系统
+- [__CARLA 多传感器自动驾驶仿真平台__](./carla_multisensor_platform/carla_multisensor_platform.md) - 基于CARLA 0.9.15构建的多传感器融合自动驾驶仿真与数据采集平台
+
+## 规划
+
+[__导航__](#navigation)
+- [__Carla YOLO规划器__](carla_yolo_planner.md) - Carla环境结合YOLO的自动驾驶路径规划方案
+- [__人形机器人SAC强化学习步态优化__](./mujoco_running/running.md) - 基于CPG+PD+SAC残差强化学习的缓步稳定行走仿真
+- [__人形机器人自主行走__](./mujoco_hci_sim/README.md) - 基于PPO强化学习的Humanoid人形机器人自主行走仿真
+- [__人形机器人站立行走__](./mujoco_man/mujoco_manrun.md) - 基于 CPG + PD 的人形机器人稳定站立与行走仿真(MuJoCo)
+- [__td3_carracing__](./td3_carracing/README.md) - 基于 TD3 + CNN 的 CarRacing 强化学习自动驾驶系统
+- [__无人机路径学习__](./drone_path_learning/README.md) - 基于 AirSim + Gym + Stable-Baselines3 的无人机视觉导航强化学习项目
+- [__机器人仿真(MuJoCo)__](ant_robot/机器人仿真系统.md)
+- [__机械臂仿真系统__](arm_sim.md) - 基于MuJoCo的机械臂仿真与功能优化
+- [__CARLA自动驾驶系统__](carla_ad_gym_rl/carla_ad_gym_rl.md) - CARLA 仿真与强化学习的自动驾驶智能决策系统
+- [__CARLA天气鲁棒性测试__](./carla_weather_robustness/README.md) - CARLA多天气条件下自动驾驶感知鲁棒性测试系统
+
+[__Carla YOLO规划器__](carla_yolo_planner.md) - Carla环境结合YOLO的自动驾驶路径规划方案
+
+[__人形机器人SAC强化学习步态优化__](./mujoco_running/running.md) - 基于CPG+PD+SAC残差强化学习的缓步稳定行走仿真
+
+[__人形机器人自主行走__](./mujoco_hci_sim/README.md) - 基于PPO强化学习的Humanoid人形机器人自主行走仿真
+
+[__人形机器人站立行走__](./mujoco_man/mujoco_manrun.md) - 基于 CPG + PD 的人形机器人稳定站立与行走仿真(MuJoCo)
+
+[__td3_carracing__](./td3_carracing/README.md) - 基于 TD3 + CNN 的 CarRacing 强化学习自动驾驶系统
+
+[__机器人仿真(MuJoCo)__](ant_robot/机器人仿真系统.md)
+
+[__机械臂仿真系统__](arm_sim.md) - 基于MuJoCo的机械臂仿真与功能优化
+
+[__CARLA自动驾驶多场景仿真项目__](./DeFIX/docs/index.md)
+
+[__自动驾驶系统__](./auto_drive_system/auto_drive_system_README) - 基于强化学习的自动驾驶系统
+
+[__carla_2d_deeprl__](./carla_2d_deeprl/README.md) - 基于 CARLA 的极简 2D 深度强化学习自动驾驶环境。
+
+[__PilotNet自动驾驶系统__](./pilotnet/index.md) - 基于NVIDIA PilotNet架构的端到端自动驾驶学习系统
+
+
+[__用户使用手势控制 Airsim 无人机__](./drone_hand_gesture/README.md) - 使用手势识别控制 Airsim 无人机飞行
+
+[__V2X路侧智能感知__](./edge_intelligence_V2X/README.md) - 基于YOLOv8n的V2X路侧智能感知系统优化与实现
+
+[PID](#pid)
+- [__导航__](#navigation)
+- [__自动驾驶系统__](./auto_drive_system/auto_drive_system_README) - 基于强化学习的自动驾驶系统
+- [__CARLA自动驾驶多场景仿真项目__](./DeFIX/docs/index.md)
+- [__carla_2d_deeprl__](./carla_2d_deeprl/README.md) - 基于 CARLA 的极简 2D 深度强化学习自动驾驶环境。
+- [__无人机飞行控制__](./UVA_flight_control_system.md) - 基于AirSim的无人机飞行控制系统
+- [__人形机器人平衡控制__](./humanoid_balance/Humanoid_Balance.md) - 基于强化学习的人形机器人平衡控制仿真
+- [__工程规范优化__](./improve/project.md) - 多场景仿真与控制优化项目
+
+# 其他
+[ 驾驶事故视频识别 ](./carla_temporal_collage/index.md) - 基于 Temporal Collage Prompting 的 CARLA 驾驶事故视频识别系统
+
+[__CARLA IMU 数据采集平台__](./carla_imu/carla_imu.md) — CARLA惯性测量单元数据采集与可视化驾驶平台开发汇报文档
+
+[__人形机器人SAC强化学习步态优化__](./mujoco_running/running.md) - 基于CPG+PD+SAC残差强化学习的缓步稳定行走仿真
+
+[__setup_tool模块汇报文档__](./setup_tool/report.md) - setup_tool 模块背景、改进内容、运行方式与效果总结
+
+[__carla自动驾驶系统辅助监视器__](./autonomous_vehicle_monitor/monitor.md) -carla自动驾驶系统辅助器
\ No newline at end of file
From f1afc9292021997670481ed5bb8eadc182b4f929 Mon Sep 17 00:00:00 2001
From: liuhuatao <2814267042@qq.com>
Date: Mon, 15 Jun 2026 21:28:21 +0800
Subject: [PATCH 23/36] =?UTF-8?q?=E5=90=8C=E6=AD=A5?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
docs/index.md | 2 ++
1 file changed, 2 insertions(+)
diff --git a/docs/index.md b/docs/index.md
index 43a40b07bd..d6894261b8 100644
--- a/docs/index.md
+++ b/docs/index.md
@@ -107,6 +107,8 @@ title: 主页
[__PilotNet自动驾驶系统__](./pilotnet/index.md) - 基于NVIDIA PilotNet架构的端到端自动驾驶学习系统
+[__自动驾驶车道检测与路径规划仿真平台__](./driveSim-enhanced/README.md)
+
[__用户使用手势控制 Airsim 无人机__](./drone_hand_gesture/README.md) - 使用手势识别控制 Airsim 无人机飞行
From cf7af807193284ed0da6ea313a8002e5950de26d Mon Sep 17 00:00:00 2001
From: liuhuatao <2814267042@qq.com>
Date: Mon, 15 Jun 2026 21:30:36 +0800
Subject: [PATCH 24/36] =?UTF-8?q?=E5=90=8C=E6=AD=A5?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/driving_reward_analysis/README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/driving_reward_analysis/README.md b/src/driving_reward_analysis/README.md
index 35040000b2..36fc7c0a94 100644
--- a/src/driving_reward_analysis/README.md
+++ b/src/driving_reward_analysis/README.md
@@ -27,7 +27,7 @@
---
-# [第1次提交] driving_reward_analysis: 自动驾驶奖励函数分析系统
+# driving_reward_analysis: 自动驾驶奖励函数分析系统
## 1. 模块功能
本模块实现了自动驾驶奖励函数的完整建模与分析流程:
From 3bfea52bc6542222df436e789414bd5fd578a15d Mon Sep 17 00:00:00 2001
From: liuhuatao <2814267042@qq.com>
Date: Mon, 15 Jun 2026 22:25:32 +0800
Subject: [PATCH 25/36] =?UTF-8?q?=E5=90=8C=E6=AD=A5?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
docs/index.md | 146 +++++++++++++++++++++++---------------------------
1 file changed, 66 insertions(+), 80 deletions(-)
diff --git a/docs/index.md b/docs/index.md
index d6894261b8..865cd150ce 100644
--- a/docs/index.md
+++ b/docs/index.md
@@ -1,89 +1,82 @@
title: 主页
+
# [神经网络](https://github.com/OpenHUTB/nn)
欢迎使用神经网络文档,该页面包含所有内容的索引。
-## 目录
-
-- [入门](#primary) - 基础算法与模型示例
-- [感知](#perception) - 计算机视觉与感知系统
-- [规划](#planning) - 路径规划与决策
-- [控制](#control) - 控制算法与仿真
-- [其他](#other)
+* [__入门__](#primary)
+* [__感知__](#perception)
+* [__规划__](#planning)
+* [__控制__](#control)
+* [__其他__](#other)
---
## 入门
-- [__热身__](warmup.md) — 入门热身示例
-- [__线性回归__](linear_regression.md) - 基础线性回归模型
-- [__线性回归改进__](linear_regression_improved.md) - 线性回归优化版本
-- [__线性回归修复__](linear_regression_fix.md) - 修复偏置未更新bug
-- [__softmax回归__](softmax_regression.md) - 多分类softmax回归
-- [__线性回归和softmax回归改进__](softmax_regression_improved.md) - 回归算法改进
-- [__支持向量机__](svm.md) - SVM分类算法
-- [__支持向量机改进__](svm_improved.md) - SVM优化版本
-- [__简单神经网络__](simple_nn.md) - 基础神经网络
-- [__卷积神经网络__](CNN.md) - CNN基础实现
-- [__卷积神经网络改进__](cnn_keras_sequential_improved.md) - CNN优化版本
-- [__循环神经网络__](RNN.md) - RNN基础实现
-- [__循环神经网络改进__](poem_generation_rnn_improved.md) - RNN优化版本
-- [__注意力机制__](attention.md) - 注意力机制原理与实现
-- [__高斯混合__](gaussian_mixture.md) - 高斯混合模型
-- [__高斯混合改进__](./chap11_gaussian_mixture/README.md) - 高斯混合优化
-- [__受限玻尔兹曼机__](RBM.md) - RBM基础实现
-- [__强化学习__](RL.md) - 强化学习基础
-- [__机器人仿真__](ant_robot/机器人仿真系统.md) - MuJoCo机器人仿真
-- [__强化学习工作空间__](rl_workspace.md) - 强化学习工作空间
-
-[__基于深度学习置信度加权的自动驾驶雨天多传感器融合感知优化__](rain_sensor_fusion\DEMO_REPORT.md)
----
+[__热身__](warmup.md) — 入门热身示例
+
+[__线性回归__](linear_regression.md)
+
+[__线性回归改进__](linear_regression_improved.md)
+
+[__线性回归修复__](linear_regression_fix.md) - 修复偏置未更新bug
+
+[__softmax回归__](softmax_regression.md)
+
+[__线性回归和softmax回归改进__](softmax_regression_improved.md)
+
+[__支持向量机__](svm.md)
+
+[__支持向量机改进__](svm_improved.md)
+
+[__简单神经网络__](simple_nn.md)
+
+[__卷积神经网络__](CNN.md)
+
+[__卷积神经网络改进__](cnn_keras_sequential_improved.md)
+
+[__循环神经网络__](RNN.md)
+
+[__循环神经网络改进__](poem_generation_rnn_improved.md)
+
+[__注意力机制__](attention.md)
+
+[__高斯混合__](gaussian_mixture.md)
+
+[__高斯混合改进__](./chap11_gaussian_mixture/README.md)
+[__受限玻尔兹曼机__](RBM.md)
+
+[__强化学习__](RL.md)
+
+[__强化学习工作空间__](rl_workspace.md)
+
+---
## 感知
-- [__车道线检测__](./lane_detection/README.md) - 基于 OpenCV 的 Carla 场景车道线检测(分步实现)
-- [__carla_CAM__](./carla_CAM/README.md) - 使用类激活映射测试卷积神经网络
-- [__交通标识识别__](./carla_traffic_sign_recognition/carla_traffic_sign_recognition.md) — 交通标识识别
-- [__V2X路侧智能感知__](./edge_intelligence_V2X/README.md) - 基于YOLOv8n的V2X路侧智能感知系统优化与实现
-- [__Carla多模态异常检测__](./carla_auto_vision_navigator.md) - 基于多模态融合的Carla非结构化场景异常检测自动驾驶
-- [__目标检测__](./test/object_detection.md) - 目标检测与危险评估
-- [__图像目标检测__](./image_object_detection/image_object_detection.md) - 多功能图像目标检测系统
-- __跟踪__ - 目标跟踪
-- [__路径追踪__](./test.md) - 路径追踪测试
-- [__交通标识检测__](./traffic_sign_detection/README.md) - 交通标识目标检测
-- [__td3_carracing__](./td3_carracing/README.md) - 基于 TD3 + CNN 的强化学习自动驾驶系统
-- [__无人机飞行控制__](./UVA_flight_control_system.md) - 基于AirSim的无人机飞行控制系统
-- [__人形机器人平衡控制__](./humanoid_balance/Humanoid_Balance.md) - 基于强化学习的人形机器人平衡控制仿真
-- [__工程规范优化__](./improve/project.md) - 多场景仿真与控制优化项目
-- [__人形机器人站立行走__](./mujoco_man/mujoco_manrun.md) - 基于 CPG + PD 的人形机器人稳定站立与行走仿真(MuJoCo)
-- [__setup_tool模块汇报文档__](./setup_tool/report.md) - setup_tool 模块背景、改进内容、运行方式与效果总结
-- [__机械臂自动抓取__](./robot_arm/README.md) - 基于Franka Panda的机械臂自动抓取仿真项目
-- [__CARLA天气鲁棒性测试__](./carla_weather_robustness/README.md) - CARLA多天气条件下自动驾驶感知鲁棒性测试系统
-
-- [__自动驾驶车辆语义分割__](./auto_drive_seg/README.md) - 基于 U-Net + Focal Loss 的 CARLA 街景 8 类语义分割(含数据增强、速度基准、概率热力图、类别频率分析)
-- [__用户使用手势控制 Airsim 无人机__](./drone_hand_gesture/README.md) - 使用手势识别控制 Airsim 无人机飞行
-
-- [__基于自监督学习与PPO强化学习的自动驾驶仿真项目__](./autonomous_driving/README.md) - 基于CARLA的SSL+RL自动驾驶仿真系统
-- [__CARLA天气鲁棒性测试__](./carla_weather_robustness/README.md) - CARLA多天气条件下自动驾驶感知鲁棒性测试系统
-- [__CARLA 模拟器中的物体与碰撞检测系统__](./carla_collision_detect/carla_collision_detect.md) - 物体与碰撞检测
-- [__car_navigation_system__](./car_navigation_system/README.md) - 多模态CARLA导航避障系统
-- [__CARLA 多传感器自动驾驶仿真平台__](./carla_multisensor_platform/carla_multisensor_platform.md) - 基于CARLA 0.9.15构建的多传感器融合自动驾驶仿真与数据采集平台
+[__车道线检测__](./lane_detection/README.md) - 基于 OpenCV 的 Carla 场景车道线检测(分步实现)
-## 规划
+[__carla_CAM__](./carla_CAM/README.md) - 使用类激活映射测试卷积神经网络
+
+[__用户使用手势控制 Airsim 无人机__](./drone_hand_gesture/README.md) - 使用手势识别控制 Airsim 无人机飞行
+
+[__V2X路侧智能感知__](./edge_intelligence_V2X/README.md) - 基于YOLOv8n的V2X路侧智能感知系统优化与实现
-[__导航__](#navigation)
-- [__Carla YOLO规划器__](carla_yolo_planner.md) - Carla环境结合YOLO的自动驾驶路径规划方案
-- [__人形机器人SAC强化学习步态优化__](./mujoco_running/running.md) - 基于CPG+PD+SAC残差强化学习的缓步稳定行走仿真
-- [__人形机器人自主行走__](./mujoco_hci_sim/README.md) - 基于PPO强化学习的Humanoid人形机器人自主行走仿真
-- [__人形机器人站立行走__](./mujoco_man/mujoco_manrun.md) - 基于 CPG + PD 的人形机器人稳定站立与行走仿真(MuJoCo)
-- [__td3_carracing__](./td3_carracing/README.md) - 基于 TD3 + CNN 的 CarRacing 强化学习自动驾驶系统
-- [__无人机路径学习__](./drone_path_learning/README.md) - 基于 AirSim + Gym + Stable-Baselines3 的无人机视觉导航强化学习项目
-- [__机器人仿真(MuJoCo)__](ant_robot/机器人仿真系统.md)
-- [__机械臂仿真系统__](arm_sim.md) - 基于MuJoCo的机械臂仿真与功能优化
-- [__CARLA自动驾驶系统__](carla_ad_gym_rl/carla_ad_gym_rl.md) - CARLA 仿真与强化学习的自动驾驶智能决策系统
-- [__CARLA天气鲁棒性测试__](./carla_weather_robustness/README.md) - CARLA多天气条件下自动驾驶感知鲁棒性测试系统
+[__目标检测__](./test/object_detection.md) - 目标检测与危险评估
+
+[__图像目标检测__](./image_object_detection/image_object_detection.md) - 多功能图像目标检测系统
+
+[__路径追踪__](./test.md)
+
+[__交通标识检测__](./traffic_sign_detection/README.md) - 目标检测
+
+[__基于自监督学习与PPO强化学习的自动驾驶仿真项目__](./autonomous_driving/README.md) - 基于CARLA的SSL+RL自动驾驶仿真系统
+
+
+## 规划
[__Carla YOLO规划器__](carla_yolo_planner.md) - Carla环境结合YOLO的自动驾驶路径规划方案
@@ -107,21 +100,14 @@ title: 主页
[__PilotNet自动驾驶系统__](./pilotnet/index.md) - 基于NVIDIA PilotNet架构的端到端自动驾驶学习系统
-[__自动驾驶车道检测与路径规划仿真平台__](./driveSim-enhanced/README.md)
+## 控制
+[__无人机飞行控制__](./UVA_flight_control_system.md) - 基于AirSim的无人机飞行控制系统
-[__用户使用手势控制 Airsim 无人机__](./drone_hand_gesture/README.md) - 使用手势识别控制 Airsim 无人机飞行
+[__人形机器人平衡控制__](./humanoid_balance/Humanoid_Balance.md) - 基于强化学习的人形机器人平衡控制仿真
-[__V2X路侧智能感知__](./edge_intelligence_V2X/README.md) - 基于YOLOv8n的V2X路侧智能感知系统优化与实现
+[__工程规范优化__](./improve/project.md) - 多场景仿真与控制优化项目
-[PID](#pid)
-- [__导航__](#navigation)
-- [__自动驾驶系统__](./auto_drive_system/auto_drive_system_README) - 基于强化学习的自动驾驶系统
-- [__CARLA自动驾驶多场景仿真项目__](./DeFIX/docs/index.md)
-- [__carla_2d_deeprl__](./carla_2d_deeprl/README.md) - 基于 CARLA 的极简 2D 深度强化学习自动驾驶环境。
-- [__无人机飞行控制__](./UVA_flight_control_system.md) - 基于AirSim的无人机飞行控制系统
-- [__人形机器人平衡控制__](./humanoid_balance/Humanoid_Balance.md) - 基于强化学习的人形机器人平衡控制仿真
-- [__工程规范优化__](./improve/project.md) - 多场景仿真与控制优化项目
# 其他
[ 驾驶事故视频识别 ](./carla_temporal_collage/index.md) - 基于 Temporal Collage Prompting 的 CARLA 驾驶事故视频识别系统
From 38f73dc6201f9fe5ca4abe9dbf019132a59f56d9 Mon Sep 17 00:00:00 2001
From: liuhuatao <2814267042@qq.com>
Date: Mon, 15 Jun 2026 22:27:58 +0800
Subject: [PATCH 26/36] =?UTF-8?q?=E5=90=8C=E6=AD=A5?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
docs/index.md | 148 +++++++++++++++++++++++++++-----------------------
1 file changed, 80 insertions(+), 68 deletions(-)
diff --git a/docs/index.md b/docs/index.md
index 865cd150ce..dab58dea6a 100644
--- a/docs/index.md
+++ b/docs/index.md
@@ -1,83 +1,90 @@
title: 主页
-
# [神经网络](https://github.com/OpenHUTB/nn)
欢迎使用神经网络文档,该页面包含所有内容的索引。
-* [__入门__](#primary)
-* [__感知__](#perception)
-* [__规划__](#planning)
-* [__控制__](#control)
-* [__其他__](#other)
+## 目录
+
+- [入门](#primary) - 基础算法与模型示例
+- [感知](#perception) - 计算机视觉与感知系统
+- [规划](#planning) - 路径规划与决策
+- [控制](#control) - 控制算法与仿真
+- [其他](#other)
---
## 入门
-
-[__热身__](warmup.md) — 入门热身示例
-
-[__线性回归__](linear_regression.md)
-
-[__线性回归改进__](linear_regression_improved.md)
-
-[__线性回归修复__](linear_regression_fix.md) - 修复偏置未更新bug
-
-[__softmax回归__](softmax_regression.md)
-
-[__线性回归和softmax回归改进__](softmax_regression_improved.md)
-
-[__支持向量机__](svm.md)
-
-[__支持向量机改进__](svm_improved.md)
-
-[__简单神经网络__](simple_nn.md)
-
-[__卷积神经网络__](CNN.md)
-
-[__卷积神经网络改进__](cnn_keras_sequential_improved.md)
-
-[__循环神经网络__](RNN.md)
-
-[__循环神经网络改进__](poem_generation_rnn_improved.md)
-
-[__注意力机制__](attention.md)
-
-[__高斯混合__](gaussian_mixture.md)
-
-[__高斯混合改进__](./chap11_gaussian_mixture/README.md)
-
-[__受限玻尔兹曼机__](RBM.md)
-
-[__强化学习__](RL.md)
-
-[__强化学习工作空间__](rl_workspace.md)
+- [__热身__](warmup.md) — 入门热身示例
+- [__线性回归__](linear_regression.md) - 基础线性回归模型
+- [__线性回归改进__](linear_regression_improved.md) - 线性回归优化版本
+- [__线性回归修复__](linear_regression_fix.md) - 修复偏置未更新bug
+- [__softmax回归__](softmax_regression.md) - 多分类softmax回归
+- [__线性回归和softmax回归改进__](softmax_regression_improved.md) - 回归算法改进
+- [__支持向量机__](svm.md) - SVM分类算法
+- [__支持向量机改进__](svm_improved.md) - SVM优化版本
+- [__简单神经网络__](simple_nn.md) - 基础神经网络
+- [__卷积神经网络__](CNN.md) - CNN基础实现
+- [__卷积神经网络改进__](cnn_keras_sequential_improved.md) - CNN优化版本
+- [__循环神经网络__](RNN.md) - RNN基础实现
+- [__循环神经网络改进__](poem_generation_rnn_improved.md) - RNN优化版本
+- [__注意力机制__](attention.md) - 注意力机制原理与实现
+- [__高斯混合__](gaussian_mixture.md) - 高斯混合模型
+- [__高斯混合改进__](./chap11_gaussian_mixture/README.md) - 高斯混合优化
+- [__受限玻尔兹曼机__](RBM.md) - RBM基础实现
+- [__强化学习__](RL.md) - 强化学习基础
+- [__机器人仿真__](ant_robot/机器人仿真系统.md) - MuJoCo机器人仿真
+- [__强化学习工作空间__](rl_workspace.md) - 强化学习工作空间
+
+[__基于深度学习置信度加权的自动驾驶雨天多传感器融合感知优化__](rain_sensor_fusion\DEMO_REPORT.md)
---
-## 感知
-
-[__车道线检测__](./lane_detection/README.md) - 基于 OpenCV 的 Carla 场景车道线检测(分步实现)
-
-[__carla_CAM__](./carla_CAM/README.md) - 使用类激活映射测试卷积神经网络
-
-[__用户使用手势控制 Airsim 无人机__](./drone_hand_gesture/README.md) - 使用手势识别控制 Airsim 无人机飞行
-
-[__V2X路侧智能感知__](./edge_intelligence_V2X/README.md) - 基于YOLOv8n的V2X路侧智能感知系统优化与实现
-[__目标检测__](./test/object_detection.md) - 目标检测与危险评估
-
-[__图像目标检测__](./image_object_detection/image_object_detection.md) - 多功能图像目标检测系统
-
-[__路径追踪__](./test.md)
-
-[__交通标识检测__](./traffic_sign_detection/README.md) - 目标检测
-
-[__基于自监督学习与PPO强化学习的自动驾驶仿真项目__](./autonomous_driving/README.md) - 基于CARLA的SSL+RL自动驾驶仿真系统
+## 感知
+- [__车道线检测__](./lane_detection/README.md) - 基于 OpenCV 的 Carla 场景车道线检测(分步实现)
+- [__carla_CAM__](./carla_CAM/README.md) - 使用类激活映射测试卷积神经网络
+- [__交通标识识别__](./carla_traffic_sign_recognition/carla_traffic_sign_recognition.md) — 交通标识识别
+- [__V2X路侧智能感知__](./edge_intelligence_V2X/README.md) - 基于YOLOv8n的V2X路侧智能感知系统优化与实现
+- [__Carla多模态异常检测__](./carla_auto_vision_navigator.md) - 基于多模态融合的Carla非结构化场景异常检测自动驾驶
+- [__目标检测__](./test/object_detection.md) - 目标检测与危险评估
+- [__图像目标检测__](./image_object_detection/image_object_detection.md) - 多功能图像目标检测系统
+- __跟踪__ - 目标跟踪
+- [__路径追踪__](./test.md) - 路径追踪测试
+- [__交通标识检测__](./traffic_sign_detection/README.md) - 交通标识目标检测
+- [__td3_carracing__](./td3_carracing/README.md) - 基于 TD3 + CNN 的强化学习自动驾驶系统
+- [__无人机飞行控制__](./UVA_flight_control_system.md) - 基于AirSim的无人机飞行控制系统
+- [__人形机器人平衡控制__](./humanoid_balance/Humanoid_Balance.md) - 基于强化学习的人形机器人平衡控制仿真
+- [__工程规范优化__](./improve/project.md) - 多场景仿真与控制优化项目
+- [__人形机器人站立行走__](./mujoco_man/mujoco_manrun.md) - 基于 CPG + PD 的人形机器人稳定站立与行走仿真(MuJoCo)
+- [__setup_tool模块汇报文档__](./setup_tool/report.md) - setup_tool 模块背景、改进内容、运行方式与效果总结
+- [__机械臂自动抓取__](./robot_arm/README.md) - 基于Franka Panda的机械臂自动抓取仿真项目
+- [__CARLA天气鲁棒性测试__](./carla_weather_robustness/README.md) - CARLA多天气条件下自动驾驶感知鲁棒性测试系统
+
+- [__自动驾驶车辆语义分割__](./auto_drive_seg/README.md) - 基于 U-Net + Focal Loss 的 CARLA 街景 8 类语义分割(含数据增强、速度基准、概率热力图、类别频率分析)
+- [__用户使用手势控制 Airsim 无人机__](./drone_hand_gesture/README.md) - 使用手势识别控制 Airsim 无人机飞行
+
+- [__基于自监督学习与PPO强化学习的自动驾驶仿真项目__](./autonomous_driving/README.md) - 基于CARLA的SSL+RL自动驾驶仿真系统
+- [__CARLA天气鲁棒性测试__](./carla_weather_robustness/README.md) - CARLA多天气条件下自动驾驶感知鲁棒性测试系统
+- [__CARLA 模拟器中的物体与碰撞检测系统__](./carla_collision_detect/carla_collision_detect.md) - 物体与碰撞检测
+- [__car_navigation_system__](./car_navigation_system/README.md) - 多模态CARLA导航避障系统
+- [__CARLA 多传感器自动驾驶仿真平台__](./carla_multisensor_platform/carla_multisensor_platform.md) - 基于CARLA 0.9.15构建的多传感器融合自动驾驶仿真与数据采集平台
## 规划
+[__导航__](#navigation)
+- [__Carla YOLO规划器__](carla_yolo_planner.md) - Carla环境结合YOLO的自动驾驶路径规划方案
+- [__人形机器人SAC强化学习步态优化__](./mujoco_running/running.md) - 基于CPG+PD+SAC残差强化学习的缓步稳定行走仿真
+- [__人形机器人自主行走__](./mujoco_hci_sim/README.md) - 基于PPO强化学习的Humanoid人形机器人自主行走仿真
+- [__人形机器人站立行走__](./mujoco_man/mujoco_manrun.md) - 基于 CPG + PD 的人形机器人稳定站立与行走仿真(MuJoCo)
+- [__td3_carracing__](./td3_carracing/README.md) - 基于 TD3 + CNN 的 CarRacing 强化学习自动驾驶系统
+- [__无人机路径学习__](./drone_path_learning/README.md) - 基于 AirSim + Gym + Stable-Baselines3 的无人机视觉导航强化学习项目
+- [__机器人仿真(MuJoCo)__](ant_robot/机器人仿真系统.md)
+- [__机械臂仿真系统__](arm_sim.md) - 基于MuJoCo的机械臂仿真与功能优化
+- [__CARLA自动驾驶系统__](carla_ad_gym_rl/carla_ad_gym_rl.md) - CARLA 仿真与强化学习的自动驾驶智能决策系统
+- [__CARLA天气鲁棒性测试__](./carla_weather_robustness/README.md) - CARLA多天气条件下自动驾驶感知鲁棒性测试系统
+
[__Carla YOLO规划器__](carla_yolo_planner.md) - Carla环境结合YOLO的自动驾驶路径规划方案
[__人形机器人SAC强化学习步态优化__](./mujoco_running/running.md) - 基于CPG+PD+SAC残差强化学习的缓步稳定行走仿真
@@ -100,14 +107,19 @@ title: 主页
[__PilotNet自动驾驶系统__](./pilotnet/index.md) - 基于NVIDIA PilotNet架构的端到端自动驾驶学习系统
-## 控制
-
-[__无人机飞行控制__](./UVA_flight_control_system.md) - 基于AirSim的无人机飞行控制系统
-[__人形机器人平衡控制__](./humanoid_balance/Humanoid_Balance.md) - 基于强化学习的人形机器人平衡控制仿真
+[__用户使用手势控制 Airsim 无人机__](./drone_hand_gesture/README.md) - 使用手势识别控制 Airsim 无人机飞行
-[__工程规范优化__](./improve/project.md) - 多场景仿真与控制优化项目
+[__V2X路侧智能感知__](./edge_intelligence_V2X/README.md) - 基于YOLOv8n的V2X路侧智能感知系统优化与实现
+[PID](#pid)
+- [__导航__](#navigation)
+- [__自动驾驶系统__](./auto_drive_system/auto_drive_system_README) - 基于强化学习的自动驾驶系统
+- [__CARLA自动驾驶多场景仿真项目__](./DeFIX/docs/index.md)
+- [__carla_2d_deeprl__](./carla_2d_deeprl/README.md) - 基于 CARLA 的极简 2D 深度强化学习自动驾驶环境。
+- [__无人机飞行控制__](./UVA_flight_control_system.md) - 基于AirSim的无人机飞行控制系统
+- [__人形机器人平衡控制__](./humanoid_balance/Humanoid_Balance.md) - 基于强化学习的人形机器人平衡控制仿真
+- [__工程规范优化__](./improve/project.md) - 多场景仿真与控制优化项目
# 其他
[ 驾驶事故视频识别 ](./carla_temporal_collage/index.md) - 基于 Temporal Collage Prompting 的 CARLA 驾驶事故视频识别系统
@@ -118,4 +130,4 @@ title: 主页
[__setup_tool模块汇报文档__](./setup_tool/report.md) - setup_tool 模块背景、改进内容、运行方式与效果总结
-[__carla自动驾驶系统辅助监视器__](./autonomous_vehicle_monitor/monitor.md) -carla自动驾驶系统辅助器
\ No newline at end of file
+[__carla自动驾驶系统辅助监视器__](./autonomous_vehicle_monitor/monitor.md) -carla自动驾驶系统辅助器这是nn中的index
\ No newline at end of file
From 7fd35f0e2c74e2c4cc1113ea245eb1ed64dc9f78 Mon Sep 17 00:00:00 2001
From: liuhuatao <2814267042@qq.com>
Date: Mon, 15 Jun 2026 22:34:36 +0800
Subject: [PATCH 27/36] =?UTF-8?q?=E5=90=8C=E6=AD=A5?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
docs/index.md | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/docs/index.md b/docs/index.md
index dab58dea6a..ffa904c7d2 100644
--- a/docs/index.md
+++ b/docs/index.md
@@ -103,6 +103,7 @@ title: 主页
[__自动驾驶系统__](./auto_drive_system/auto_drive_system_README) - 基于强化学习的自动驾驶系统
+## 控制
[__carla_2d_deeprl__](./carla_2d_deeprl/README.md) - 基于 CARLA 的极简 2D 深度强化学习自动驾驶环境。
[__PilotNet自动驾驶系统__](./pilotnet/index.md) - 基于NVIDIA PilotNet架构的端到端自动驾驶学习系统
@@ -130,4 +131,4 @@ title: 主页
[__setup_tool模块汇报文档__](./setup_tool/report.md) - setup_tool 模块背景、改进内容、运行方式与效果总结
-[__carla自动驾驶系统辅助监视器__](./autonomous_vehicle_monitor/monitor.md) -carla自动驾驶系统辅助器这是nn中的index
\ No newline at end of file
+[__carla自动驾驶系统辅助监视器__](./autonomous_vehicle_monitor/monitor.md) -carla自动驾驶系统辅助器
\ No newline at end of file
From 9bfe17c6fe5f6e7c11f54eb231100618f5768770 Mon Sep 17 00:00:00 2001
From: liuhuatao <2814267042@qq.com>
Date: Mon, 15 Jun 2026 22:37:23 +0800
Subject: [PATCH 28/36] =?UTF-8?q?=E5=90=8C=E6=AD=A5?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
docs/index.md | 14 +++-----------
1 file changed, 3 insertions(+), 11 deletions(-)
diff --git a/docs/index.md b/docs/index.md
index ffa904c7d2..df85409524 100644
--- a/docs/index.md
+++ b/docs/index.md
@@ -67,10 +67,7 @@ title: 主页
- [__基于自监督学习与PPO强化学习的自动驾驶仿真项目__](./autonomous_driving/README.md) - 基于CARLA的SSL+RL自动驾驶仿真系统
- [__CARLA天气鲁棒性测试__](./carla_weather_robustness/README.md) - CARLA多天气条件下自动驾驶感知鲁棒性测试系统
-- [__CARLA 模拟器中的物体与碰撞检测系统__](./carla_collision_detect/carla_collision_detect.md) - 物体与碰撞检测
-- [__car_navigation_system__](./car_navigation_system/README.md) - 多模态CARLA导航避障系统
-- [__CARLA 多传感器自动驾驶仿真平台__](./carla_multisensor_platform/carla_multisensor_platform.md) - 基于CARLA 0.9.15构建的多传感器融合自动驾驶仿真与数据采集平台
-
+-
## 规划
[__导航__](#navigation)
@@ -79,7 +76,6 @@ title: 主页
- [__人形机器人自主行走__](./mujoco_hci_sim/README.md) - 基于PPO强化学习的Humanoid人形机器人自主行走仿真
- [__人形机器人站立行走__](./mujoco_man/mujoco_manrun.md) - 基于 CPG + PD 的人形机器人稳定站立与行走仿真(MuJoCo)
- [__td3_carracing__](./td3_carracing/README.md) - 基于 TD3 + CNN 的 CarRacing 强化学习自动驾驶系统
-- [__无人机路径学习__](./drone_path_learning/README.md) - 基于 AirSim + Gym + Stable-Baselines3 的无人机视觉导航强化学习项目
- [__机器人仿真(MuJoCo)__](ant_robot/机器人仿真系统.md)
- [__机械臂仿真系统__](arm_sim.md) - 基于MuJoCo的机械臂仿真与功能优化
- [__CARLA自动驾驶系统__](carla_ad_gym_rl/carla_ad_gym_rl.md) - CARLA 仿真与强化学习的自动驾驶智能决策系统
@@ -103,16 +99,12 @@ title: 主页
[__自动驾驶系统__](./auto_drive_system/auto_drive_system_README) - 基于强化学习的自动驾驶系统
-## 控制
+
[__carla_2d_deeprl__](./carla_2d_deeprl/README.md) - 基于 CARLA 的极简 2D 深度强化学习自动驾驶环境。
[__PilotNet自动驾驶系统__](./pilotnet/index.md) - 基于NVIDIA PilotNet架构的端到端自动驾驶学习系统
-
-[__用户使用手势控制 Airsim 无人机__](./drone_hand_gesture/README.md) - 使用手势识别控制 Airsim 无人机飞行
-
-[__V2X路侧智能感知__](./edge_intelligence_V2X/README.md) - 基于YOLOv8n的V2X路侧智能感知系统优化与实现
-
+## 控制
[PID](#pid)
- [__导航__](#navigation)
- [__自动驾驶系统__](./auto_drive_system/auto_drive_system_README) - 基于强化学习的自动驾驶系统
From 860f754c58ceb534641440552bdb9de6047f18f3 Mon Sep 17 00:00:00 2001
From: liuhuatao <2814267042@qq.com>
Date: Mon, 15 Jun 2026 22:38:37 +0800
Subject: [PATCH 29/36] =?UTF-8?q?=E5=90=8C=E6=AD=A5?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
docs/index.md | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/docs/index.md b/docs/index.md
index df85409524..65197bfcd4 100644
--- a/docs/index.md
+++ b/docs/index.md
@@ -67,7 +67,6 @@ title: 主页
- [__基于自监督学习与PPO强化学习的自动驾驶仿真项目__](./autonomous_driving/README.md) - 基于CARLA的SSL+RL自动驾驶仿真系统
- [__CARLA天气鲁棒性测试__](./carla_weather_robustness/README.md) - CARLA多天气条件下自动驾驶感知鲁棒性测试系统
--
## 规划
[__导航__](#navigation)
@@ -103,8 +102,9 @@ title: 主页
[__carla_2d_deeprl__](./carla_2d_deeprl/README.md) - 基于 CARLA 的极简 2D 深度强化学习自动驾驶环境。
[__PilotNet自动驾驶系统__](./pilotnet/index.md) - 基于NVIDIA PilotNet架构的端到端自动驾驶学习系统
-
+-
## 控制
+-
[PID](#pid)
- [__导航__](#navigation)
- [__自动驾驶系统__](./auto_drive_system/auto_drive_system_README) - 基于强化学习的自动驾驶系统
From 20228b9db0493a88d266cdfad176a5cf37b7ecd1 Mon Sep 17 00:00:00 2001
From: liuhuatao123 <2814267042@qq.com>
Date: Mon, 15 Jun 2026 22:40:48 +0800
Subject: [PATCH 30/36] Update index.md
---
docs/index.md | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/docs/index.md b/docs/index.md
index 65197bfcd4..e1f2aa21b3 100644
--- a/docs/index.md
+++ b/docs/index.md
@@ -67,6 +67,7 @@ title: 主页
- [__基于自监督学习与PPO强化学习的自动驾驶仿真项目__](./autonomous_driving/README.md) - 基于CARLA的SSL+RL自动驾驶仿真系统
- [__CARLA天气鲁棒性测试__](./carla_weather_robustness/README.md) - CARLA多天气条件下自动驾驶感知鲁棒性测试系统
+-
## 规划
[__导航__](#navigation)
@@ -98,13 +99,12 @@ title: 主页
[__自动驾驶系统__](./auto_drive_system/auto_drive_system_README) - 基于强化学习的自动驾驶系统
-
[__carla_2d_deeprl__](./carla_2d_deeprl/README.md) - 基于 CARLA 的极简 2D 深度强化学习自动驾驶环境。
[__PilotNet自动驾驶系统__](./pilotnet/index.md) - 基于NVIDIA PilotNet架构的端到端自动驾驶学习系统
--
+
## 控制
--
+
[PID](#pid)
- [__导航__](#navigation)
- [__自动驾驶系统__](./auto_drive_system/auto_drive_system_README) - 基于强化学习的自动驾驶系统
@@ -123,4 +123,4 @@ title: 主页
[__setup_tool模块汇报文档__](./setup_tool/report.md) - setup_tool 模块背景、改进内容、运行方式与效果总结
-[__carla自动驾驶系统辅助监视器__](./autonomous_vehicle_monitor/monitor.md) -carla自动驾驶系统辅助器
\ No newline at end of file
+[__carla自动驾驶系统辅助监视器__](./autonomous_vehicle_monitor/monitor.md) -carla自动驾驶系统辅助器
From 35396b96158c5af3d1b42a9922d0e7293bd0f2b3 Mon Sep 17 00:00:00 2001
From: liuhuatao123 <2814267042@qq.com>
Date: Mon, 15 Jun 2026 22:42:19 +0800
Subject: [PATCH 31/36] Update index.md
---
docs/index.md | 13 +++++++++++--
1 file changed, 11 insertions(+), 2 deletions(-)
diff --git a/docs/index.md b/docs/index.md
index e1f2aa21b3..548d00e319 100644
--- a/docs/index.md
+++ b/docs/index.md
@@ -67,7 +67,10 @@ title: 主页
- [__基于自监督学习与PPO强化学习的自动驾驶仿真项目__](./autonomous_driving/README.md) - 基于CARLA的SSL+RL自动驾驶仿真系统
- [__CARLA天气鲁棒性测试__](./carla_weather_robustness/README.md) - CARLA多天气条件下自动驾驶感知鲁棒性测试系统
--
+- [__CARLA 模拟器中的物体与碰撞检测系统__](./carla_collision_detect/carla_collision_detect.md) - 物体与碰撞检测
+- [__car_navigation_system__](./car_navigation_system/README.md) - 多模态CARLA导航避障系统
+- [__CARLA 多传感器自动驾驶仿真平台__](./carla_multisensor_platform/carla_multisensor_platform.md) - 基于CARLA 0.9.15构建的多传感器融合自动驾驶仿真与数据采集平台
+
## 规划
[__导航__](#navigation)
@@ -76,6 +79,7 @@ title: 主页
- [__人形机器人自主行走__](./mujoco_hci_sim/README.md) - 基于PPO强化学习的Humanoid人形机器人自主行走仿真
- [__人形机器人站立行走__](./mujoco_man/mujoco_manrun.md) - 基于 CPG + PD 的人形机器人稳定站立与行走仿真(MuJoCo)
- [__td3_carracing__](./td3_carracing/README.md) - 基于 TD3 + CNN 的 CarRacing 强化学习自动驾驶系统
+- [__无人机路径学习__](./drone_path_learning/README.md) - 基于 AirSim + Gym + Stable-Baselines3 的无人机视觉导航强化学习项目
- [__机器人仿真(MuJoCo)__](ant_robot/机器人仿真系统.md)
- [__机械臂仿真系统__](arm_sim.md) - 基于MuJoCo的机械臂仿真与功能优化
- [__CARLA自动驾驶系统__](carla_ad_gym_rl/carla_ad_gym_rl.md) - CARLA 仿真与强化学习的自动驾驶智能决策系统
@@ -103,7 +107,12 @@ title: 主页
[__PilotNet自动驾驶系统__](./pilotnet/index.md) - 基于NVIDIA PilotNet架构的端到端自动驾驶学习系统
-## 控制
+[__自动驾驶车道检测与路径规划仿真平台__](./driveSim-enhanced/README.md)
+
+
+[__用户使用手势控制 Airsim 无人机__](./drone_hand_gesture/README.md) - 使用手势识别控制 Airsim 无人机飞行
+
+[__V2X路侧智能感知__](./edge_intelligence_V2X/README.md) - 基于YOLOv8n的V2X路侧智能感知系统优化与实现
[PID](#pid)
- [__导航__](#navigation)
From c6ae66e25a00d6e7cf2b0c21dab79bee56c1129d Mon Sep 17 00:00:00 2001
From: liuhuatao123 <2814267042@qq.com>
Date: Mon, 15 Jun 2026 22:51:30 +0800
Subject: [PATCH 32/36] Update index.md
---
docs/index.md | 2 --
1 file changed, 2 deletions(-)
diff --git a/docs/index.md b/docs/index.md
index 548d00e319..a6d2f9d76c 100644
--- a/docs/index.md
+++ b/docs/index.md
@@ -107,8 +107,6 @@ title: 主页
[__PilotNet自动驾驶系统__](./pilotnet/index.md) - 基于NVIDIA PilotNet架构的端到端自动驾驶学习系统
-[__自动驾驶车道检测与路径规划仿真平台__](./driveSim-enhanced/README.md)
-
[__用户使用手势控制 Airsim 无人机__](./drone_hand_gesture/README.md) - 使用手势识别控制 Airsim 无人机飞行
From 9a827d5133361b7b372b82d7ecdd7e492942a33b Mon Sep 17 00:00:00 2001
From: liuhuatao123 <2814267042@qq.com>
Date: Mon, 22 Jun 2026 00:03:01 +0800
Subject: [PATCH 33/36] =?UTF-8?q?=E5=90=8C=E6=AD=A5mkdocs?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.vscode/extensions.json | 5 +++++
1 file changed, 5 insertions(+)
create mode 100644 .vscode/extensions.json
diff --git a/.vscode/extensions.json b/.vscode/extensions.json
new file mode 100644
index 0000000000..a49fa81fbe
--- /dev/null
+++ b/.vscode/extensions.json
@@ -0,0 +1,5 @@
+{
+ "recommendations": [
+ "tencent-cloud.coding-copilot"
+ ]
+}
\ No newline at end of file
From 0fbd7b3152778894606d6df0594bd6dfd71a7bc5 Mon Sep 17 00:00:00 2001
From: liuhuatao123 <2814267042@qq.com>
Date: Mon, 22 Jun 2026 00:06:16 +0800
Subject: [PATCH 34/36] =?UTF-8?q?=E5=90=8C=E6=AD=A5?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.vscode/extensions.json | 5 -----
1 file changed, 5 deletions(-)
delete mode 100644 .vscode/extensions.json
diff --git a/.vscode/extensions.json b/.vscode/extensions.json
deleted file mode 100644
index a49fa81fbe..0000000000
--- a/.vscode/extensions.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "recommendations": [
- "tencent-cloud.coding-copilot"
- ]
-}
\ No newline at end of file
From 7a53b5ae7ea65f704d13a7f4df863054b6cc7255 Mon Sep 17 00:00:00 2001
From: liuhuatao123 <2814267042@qq.com>
Date: Mon, 22 Jun 2026 00:09:12 +0800
Subject: [PATCH 35/36] =?UTF-8?q?=E5=90=8C=E6=AD=A5mkdocs?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
mkdocs.yml | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/mkdocs.yml b/mkdocs.yml
index 229931647e..8256b7ba92 100644
--- a/mkdocs.yml
+++ b/mkdocs.yml
@@ -50,19 +50,19 @@ nav:
- CarRacing DQN/DoubleDQN:训练改进与可视化对比: 'car_racing_dqn_improvements.md'
- 自动驾驶感知系统: 'carla_yolo_detection/README.md'
- 自动驾驶车辆语义分割: 'auto_drive_seg/README.md'
-- 双足人形机器人SAC步态仿真: 'mujoco_running/running.md'
-- 人形机器人项目: mujoco_hci_sim/README.md
-- 自动驾驶奖励分析: 'driving_reward_analysis/README.md'
-
- 无人机路径学习: 'drone_path_learning/README.md'
+- 自动驾驶奖励分析: 'driving_reward_analysis/README.md'
- 双足人形机器人SAC步态仿真: 'mujoco_running/running.md'
- 人形机器人项目: mujoco_hci_sim/README.md
+- 车辆自动驾驶辅助功能: 'vehicle_autonomous_core/README.md'
- RL-ACC: 'rl_acc/README.md'
- CARLA天气鲁棒性测试: 'carla_weather_robustness/README.md'
- CARLA多传感器自动驾驶仿真平台: 'carla_multisensor_platform/carla_multisensor_platform.md'
+- 无人机飞行控制程序: 'drone_flight_sim/README.md'
+- 交通拥堵仿真与智能调控: 'lidar_project/README.md'
# - mdx_math 用于行内公式显示
markdown_extensions:
- admonition
- mdx_math
- - tables
+ - tables
\ No newline at end of file
From 9f996e9d1581669af1ae504877e8d6e6d09e5a86 Mon Sep 17 00:00:00 2001
From: liuhuatao123 <2814267042@qq.com>
Date: Mon, 22 Jun 2026 00:11:51 +0800
Subject: [PATCH 36/36] =?UTF-8?q?=E5=90=8C=E6=AD=A5?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
docs/index.md | 2 --
1 file changed, 2 deletions(-)
diff --git a/docs/index.md b/docs/index.md
index 2a6f83c74d..548d00e319 100644
--- a/docs/index.md
+++ b/docs/index.md
@@ -110,8 +110,6 @@ title: 主页
[__自动驾驶车道检测与路径规划仿真平台__](./driveSim-enhanced/README.md)
-[__用户使用手势控制 Airsim 无人机__](./drone_hand_gesture/README.md) - 使用手势识别控制 Airsim 无人机飞行
-
[__用户使用手势控制 Airsim 无人机__](./drone_hand_gesture/README.md) - 使用手势识别控制 Airsim 无人机飞行
[__V2X路侧智能感知__](./edge_intelligence_V2X/README.md) - 基于YOLOv8n的V2X路侧智能感知系统优化与实现