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>Oq5EdW%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&2GAVmGVh43yzNeZ>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路侧智能感知系统优化与实现