Skip to content

Commit

Permalink
course (#25)
Browse files Browse the repository at this point in the history
* course

* course

* course

* coures

* course

* coure

* course

* course

* course

* course

* course

* course

---------

Co-authored-by: zoudai <2184819232>
  • Loading branch information
jiandaoshou-aidehua authored Jul 8, 2024
1 parent 5bef06e commit 7b8b2fa
Show file tree
Hide file tree
Showing 16 changed files with 337 additions and 44 deletions.
44 changes: 44 additions & 0 deletions docs/course/congestion_sim.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
# 交通拥堵模拟

`generate_traffic.py` 是一个用于模拟交通的脚本。通过多次运行该脚本,可以模拟和分析不同交通流量下的交通拥堵情况,并进行数据统计和优化评估。

## 功能介绍

1. **交通拥堵模拟**:通过多次运行脚本生成大量车辆,模拟不同场景下的交通流量变化。
2. **[统计分析](traffic_indicators.md)**:对多次模拟过程中的拥堵情况进行数据采集和统计分析。
3. **效果评估**:评估不同交通优化措施对缓解交通拥堵的影响。

# generate_traffic.py 使用说明文档

## 概述

`generate_traffic.py` 是一个用于模拟交通拥堵的脚本。通过多次运行该脚本,可以模拟和分析不同交通流量下的交通拥堵情况,并进行数据统计和优化评估。

## 功能介绍

1. **交通拥堵模拟**:通过多次运行脚本生成大量车辆,模拟不同场景下的交通流量变化。
2. **统计分析**:对多次模拟过程中的拥堵情况进行数据采集和统计分析。
3. **效果评估**:评估不同交通优化措施对缓解交通拥堵的影响。

## 使用方法

### 依赖环境

在运行 `generate_traffic.py` 之前,请确保安装了以下依赖包:

- `CARLA`仿真环境的搭建。
- Carla,Numpy等依赖包的安装。

### 脚本运行

使用以下命令运行脚本:

```
python generate_traffic.py
```

## 多次运行模拟交通拥堵

为了模拟不同交通流量下的拥堵情况,可以多次运行 [**generate_traffic.py**](../../src/examples/generate_traffic.py) 脚本。

使用[**traffic_indicators.py**](../../src/course/traffic%20indicators.py)脚本对路口交通流量、路口车均延误、路口饱和、排队长度四种路口真实性评价指标分析。
14 changes: 7 additions & 7 deletions docs/course/microscopic_Intersection_demo.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,15 +7,15 @@
- #### **环境要求**

- Python 3.6 及以上版本

- CARLA 仿真环境

- 安装必要的Python库:
- **[spectator.py](https://github.com/OpenHUTB/carla_doc/blob/master/src/course/spectator/spectator.py)**
- [**湖工商场景**](https://pan.baidu.com/s/15T1hGoWJ70tVmsTX7-zcSw?pwd=hutb )**(WindowsNoEditor)**,并运行**[generate_traffic.py](https://github.com/OpenHUTB/carla_doc/blob/master/src/examples/generate_traffic.py)**

- **[spectator.py](../../src/course/spectator/spectator.py)**

- [**湖工商场景**](https://pan.baidu.com/s/15T1hGoWJ70tVmsTX7-zcSw?pwd=hutb )**(WindowsNoEditor)**,并运行**[generate_traffic.py](../../src/examples/generate_traffic.py)**

- 安装必要的python库

```
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
- Python 3.6 及以上版本
- CARLA 仿真环境
- 安装必要的Python库:
- [**camera.py**](https://github.com/OpenHUTB/carla_doc/blob/master/src/course/camera.py)
- [**camera.py**](../../src/course/camera.py)
- [**湖工商场景**](https://pan.baidu.com/s/15T1hGoWJ70tVmsTX7-zcSw?pwd=hutb )**(WindowsNoEditor)**

```
Expand Down
12 changes: 6 additions & 6 deletions docs/course/navigation.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,17 +2,15 @@

​ 车辆运动支持定义车辆运动起点和目标位置,为每辆车指定随机速度值,使其沿轨迹移动时不会发生碰撞或模拟碰撞,看到车辆沿指定轨迹行驶以到达其目标位置。

​ 本示例设计了一个 [**automatic_control_revised.py**](https://github.com/OpenHUTB/carla_doc/blob/master/src/course/navigation/automatic_control_revised.py) 脚本进行实现
​ 本示例设计了一个 [**automatic_control_revised.py**](../../src/course/navigation/automatic_control_revised.py) 脚本进行实现

![](../img/traffic_course_img/4.gif)

**注意** 需要将 [**agents**](https://github.com/OpenHUTB/carla_doc/tree/master/src/carla_agent) 文件夹位置添加到代码环境变量中,或者复制该文件夹使其与本示例脚本同级。
**注意** 需要将 [**agents**](../../src/carla_agent) 文件夹位置添加到代码环境变量中,或者复制该文件夹使其与本示例脚本同级。

[**湖工商场景**](https://pan.baidu.com/s/15T1hGoWJ70tVmsTX7-zcSw?pwd=hutb )**(WindowsNoEditor)**



​ 自定义一些生成位置的起始点坐标
​ 自定义一些生成位置的起始点坐标<span id="definePoint"></span>

```python
diming = {
Expand Down Expand Up @@ -80,7 +78,7 @@ vehicle = world.spawn_actor(ego_vehicle_bp, spawn_point)
world.tick()
```

​ 生成终点,给起点和终点生成一个车辆运行轨迹,定义初始速度
​ 生成终点,给起点和终点生成一个车辆运行轨迹,定义初始速度<span id="initSpeed"></span>

```python
# 设置初始速度
Expand Down Expand Up @@ -175,4 +173,6 @@ while True:
vehicle.apply_control(control)
```

###### 轨迹生成<span id="generateTrajectory"></span>

![](../img/traffic_course_img/5.png)
4 changes: 2 additions & 2 deletions docs/course/object_detection.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
# 基于Carla仿真环境的目标检测

[**object_dection.py**](https://github.com/OpenHUTB/carla_doc/blob/master/src/course/object_detection/object_detection.py) 脚本主要是在 **Carla** 中使用 **YOLOv3** 检测车辆。[相关链接](https://openhutb.github.io/carla_doc/algorithms/perception/)
[**object_dection.py**](../../src/course/object_detection/object_detection.py) 脚本主要是在 **Carla** 中使用 **YOLOv3** 检测车辆。[相关链接](../algorithms/perception.md)

[**湖工商场景**](https://pan.baidu.com/s/15T1hGoWJ70tVmsTX7-zcSw?pwd=hutb )**(WindowsNoEditor)**,并运行**[generate_traffic.py](https://github.com/OpenHUTB/carla_doc/blob/master/src/examples/generate_traffic.py)**
[**湖工商场景**](https://pan.baidu.com/s/15T1hGoWJ70tVmsTX7-zcSw?pwd=hutb )**(WindowsNoEditor)**,并运行**[generate_traffic.py](../../src/examples/generate_traffic.py)**

![](../img/traffic_course_img/3.gif)

Expand Down
36 changes: 36 additions & 0 deletions docs/course/regional_macro.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
# 区域宏观

​ 此示例支持联合虚拟引擎仿真模拟实验,得到 **3D** 宏观区域场景演示。

## 环境依赖

- [**roadrunner**](https://pan.baidu.com/s/15T1hGoWJ70tVmsTX7-zcSw?pwd=hutb )

- **carla编辑器** [**配置教程**](https://zhuanlan.zhihu.com/p/552983835)


## 场景设计

​ 针对大区域的场景设计,支持从 **[openstreet](https://www.openstreetmap.org/)** 官网导出路网文件作为模版,然后导入到 **roadrunner** 中进行道路修改。

![](../img/traffic_course_img/roadnet.png)

## 导入到虚幻引擎

​ 本示例使用的为 **carla** 插件作为渲染引擎,进行建筑、树、山等的设计。

![](../img/traffic_course_img/regional_macro.png)


## 导出可执行程序进行仿真模拟实验

​ 运行下述exe程序作为服务端,采用python脚本与其通信。

![](../img/traffic_course_img/execu.png)

## 宏观地图

​ 将地图调整到全局俯视位置。

![](../img/traffic_course_img/regional_macro.gif)
94 changes: 94 additions & 0 deletions docs/course/roadnet_evaluation.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
# 路网评价

#### **介绍**

[该代码](../../src/course/roadnet_evaluation.py)用于评估CARLA仿真环境中的路网质量。评估的指标包括路网覆盖率、路口数量、交通灯数量和道路平均宽度。评估结果可以帮助了解仿真环境中的道路网络结构和配置。

#### **环境配置**

要运行该代码,需要以下软件和库:

- [CARLA仿真器](https://pan.baidu.com/s/15T1hGoWJ70tVmsTX7-zcSw?pwd=hutb)
- Python 3.x
- `carla` Python API
- `geopandas`
- `shapely`

安装所需库的命令:

```
pip install carla==0.9.15
pip install geopandas shapely
```

#### **功能结构**

该功能包含以下主要部分:

1. **计算路网覆盖率**
2. **计算路口数量**
3. **计算交通灯数量**
4. **计算道路平均宽度**

##### 计算路网覆盖率

将道路几何信息转换为GeoPandas数据框,并计算道路覆盖的总长度和感兴趣区域的总面积,最后计算覆盖率。

```
def road_coverage(world):
road_geometries = get_road_geometries(world)
road_lines = [LineString(road_geometries)]
road_gdf = gpd.GeoDataFrame(geometry=road_lines)
area_of_interest = Polygon([(-500, -500), (-500, 500), (500, 500), (500, -500)])
area_gdf = gpd.GeoDataFrame(geometry=[area_of_interest])
total_road_length = road_gdf.length.sum()
total_area = area_gdf.area.sum()
coverage_ratio = total_road_length / total_area
return coverage_ratio
```

##### 计算路口数量

通过遍历所有路点,找到位于路口的路点并获取唯一的路口ID。

```
def intersection_num(world):
carla_map = world.get_map()
waypoints = carla_map.generate_waypoints(distance=2.0)
junction_ids = set()
for waypoint in waypoints:
if waypoint.is_junction:
junction = waypoint.get_junction()
junction_ids.add(junction.id)
return len(junction_ids)
```

##### 计算交通灯数量

它通过获取所有交通灯的演员对象并计数来实现。

```
def traffic_num(world):
traffic_lights = world.get_actors().filter('traffic.traffic_light')
return len(traffic_lights)
```

##### 计算道路平均宽度

它遍历所有路点,累计车道宽度并计算平均值。

```
def road_width(world):
carla_map = world.get_map()
waypoints = carla_map.generate_waypoints(2.0)
total_width = 0.0
lane_count = 0
for waypoint in waypoints:
total_width += waypoint.lane_width
lane_count += 1
if lane_count > 0:
average_width = total_width / lane_count
return average_width
else:
return 0
```
16 changes: 8 additions & 8 deletions docs/course/scenario.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,19 +6,19 @@

## RoadRunner简介

​ RoadRunner是一个交互式编辑器,可以让您设计3D场景来仿真和测试自动驾驶系统。它可以用来创建道路布局和伴随的opdrive和几何信息。[在这里了解更多关于RoadRunner的信息](https://github.com/OpenHUTB/carla_doc/blob/master/docs/rr_home)
​ RoadRunner是一个交互式编辑器,可以让您设计3D场景来仿真和测试自动驾驶系统。它可以用来创建道路布局和伴随的opdrive和几何信息。

​ RoadRunner是MATLAB校园许可的一部分,因此许多大学可以提供无限制的学术访问。[检查](https://github.com/OpenHUTB/carla_doc/blob/master/docs/rr_eligibility)一下你的大学是否有访问权限。如果有任何关于可访问性的问题或麻烦,请联系[[email protected]](mailto:[email protected])[还有一个试用版](https://github.com/OpenHUTB/carla_doc/blob/master/docs/[rr_trial_version)
​ RoadRunner是MATLAB校园许可的一部分,因此许多大学可以提供无限制的学术访问。检查一下你的大学是否有访问权限。如果有任何关于可访问性的问题或麻烦,请联系[[email protected]](mailto:[email protected])

​ 参加 Carla 排行榜的每个人都可以获得RoadRunner的许可证。[点击这里了解更多信息](https://github.com/OpenHUTB/carla_doc/blob/master/docs/rr_leaderboard)
​ 参加 Carla 排行榜的每个人都可以获得RoadRunner的许可证。

**[RoadRunner R2022b 安装包](https://pan.baidu.com/s/1n2fJvWff4pbtMe97GOqtvQ?pwd=hutb)**,如下图所示,解压后直接运行里面的exe程序。

![](../img/traffic_course_img/1.png)

------

## RoadRunner基本使用
## RoadRunner基本使用<span id="sceneEditing"></span>

RoadRunner界面分为Scene Editing和Scenario Editing,下图所示为roadrunner软件的Scene Editing(静态路网编辑)基本功能界面:

Expand All @@ -38,13 +38,13 @@ RoadRunner界面分为Scene Editing和Scenario Editing,下图所示为roadrunn

------

### 使用公开道路地图生成道路网络
### 使用公开道路地图生成道路网络<span id="generateMapByOpenMap"></span>

**[OpenStreetMap](https://www.openstreetmap.org/)**是一个开放、可编辑的地图项目,由全球志愿者贡献数据,其数据包括道路、建筑物、地理特征、交通设施等地理信息。使用者可以搜索相应的道路信息,选择导出**osm**路网文件。

![](../img/traffic_course_img/3.png)

**还可以进行对该网站的编辑修改****[OpenStreetMap地图编辑](https://openhutb.github.io/carla_doc/adv_edit_openstreetmap/)**
**还可以进行对该网站的编辑修改****[OpenStreetMap地图编辑](../../adv_edit_openstreetmap/)**



Expand All @@ -58,12 +58,12 @@ RoadRunner界面分为Scene Editing和Scenario Editing,下图所示为roadrunn

## 在RoadRunner进行车辆模拟仿真

**Scenario Editing**为动态路网编辑,可以添加/删除车辆,进行车辆速度设置、轨迹的可视化规划等, 并支持编辑器内播放,用于可视化场景并连接到其他场景 用于协同仿真的模拟器。右上角的下拉栏可进行动/静编辑切换。相关学习链接可参考:**[Scenario]([设计和模拟场景 - MATLAB 和 Simulink - MathWorks 中国](https://ww2.mathworks.cn/help/roadrunner-scenario/design-and-simulate-scenarios.html))**
**Scenario Editing**为动态路网编辑,可以添加/删除车辆,进行车辆速度设置、轨迹的可视化规划等, 并支持编辑器内播放,用于可视化场景并连接到其他场景 用于协同仿真的模拟器。右上角的下拉栏可进行动/静编辑切换。

------

# 基于Carla与RoadRunner的联合仿真

参考链接:**[联合仿真](https://zhuanlan.zhihu.com/p/552983835)**

[RoadRunner导出大地图教程](https://openhutb.github.io/carla_doc/tuto_M_generate_map/)
[RoadRunner导出大地图教程](../..//tuto_M_generate_map/)
12 changes: 6 additions & 6 deletions docs/course/traffic_indicators.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
# 路口评价指标分析计算(HutbCarlaCity)

​ 为支持 [**湖工商场景**](https://pan.baidu.com/s/15T1hGoWJ70tVmsTX7-zcSw?pwd=hutb ) **(WindowsNoEditor)** 高保正的十字路口三维建模,设计 **[traffic_indicators.py](https://github.com/OpenHUTB/carla_doc/blob/master/src/course/traffic%20indicators.py)** 脚本对路口交通流量、路口车均延误、路口饱和、排队长度四种路口真实性评价指标分析。
​ 为支持 [**湖工商场景**](https://pan.baidu.com/s/15T1hGoWJ70tVmsTX7-zcSw?pwd=hutb ) **(WindowsNoEditor)** 高保正的十字路口三维建模,设计 **[traffic_indicators.py](../../src/course/traffic%20indicators.py)** 脚本对路口交通流量、路口车均延误、路口饱和、排队长度四种路口真实性评价指标分析。

**首先需要对场景中添加车辆,运行[generate_traffic.py](https://github.com/OpenHUTB/carla_doc/blob/master/src/examples/generate_traffic.py)脚本,生成足够的车辆**
**首先需要对场景中添加车辆,运行[generate_traffic.py](../../src/examples/generate_traffic.py)脚本,生成足够的车辆**



Expand Down Expand Up @@ -57,7 +57,7 @@ SATURATION = 32 # 路口最大容量
DWELL_TIME = 50 # 50秒后认为车辆已离开路口
```

### 路口交通流量函数get_traffic_flow()
### 路口交通流量函数get_traffic_flow()<span id="trafficFlow"></span>

```python
def get_traffic_flow(world, junction, traffic_flows, i, counted_vehicles):
Expand Down Expand Up @@ -86,7 +86,7 @@ def get_traffic_flow(world, junction, traffic_flows, i, counted_vehicles):
del counted_vehicles[vehicle_id]
```

### 路口饱和度函数saturation()
### 路口饱和度函数saturation()<span id="saturation"></span>

采用**路口实际车流量/路口道路最大所承载车流量** 计算 **路口饱和度**

Expand Down Expand Up @@ -120,7 +120,7 @@ def saturation(world,junctions,counted_vehicles):
return ave_saturation
```

### 排队长度函数queue_lengths()
### 排队长度函数queue_lengths()<span id="queueLength"></span>

采用 **路口实际车流量*平均车辆长度** 计算 **排队长度**

Expand Down Expand Up @@ -151,7 +151,7 @@ def queue_lengths(world,junctions,counted_vehicles):
return queue_length
```

### 车均延误函数ave_delay()
### 车均延误函数ave_delay()<span id="aveDelay"></span>

采用以下计算公式进行计算:![](../img/traffic_course_img/4.png)

Expand Down
5 changes: 2 additions & 3 deletions docs/course/trajectory_tracking.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
# 轨迹跟踪 Drive.py

​ 本示例使用 **Carla** 模拟器来执行轨迹跟踪任务, [**Drive.py**](https://github.com/OpenHUTB/carla_doc/blob/master/src/course/trajectory_tracking/Drive.py) 主要功能包括连接CARLA服务器、设置模拟环境、生成车辆、读取和处理路径点数据、控制车辆运动、记录和保存仿真结果下面对于主要函数进行介绍。
​ 本示例使用 **Carla** 模拟器来执行轨迹跟踪任务, [**Drive.py**](../../src/course/trajectory_tracking/Drive.py) 主要功能包括连接CARLA服务器、设置模拟环境、生成车辆、读取和处理路径点数据、控制车辆运动、记录和保存仿真结果下面对于主要函数进行介绍。

基于 [**湖工商场景**](https://pan.baidu.com/s/15T1hGoWJ70tVmsTX7-zcSw?pwd=hutb )**(WindowsNoEditor)**,首先需要运行[generate_traffic.py](https://github.com/OpenHUTB/carla_doc/blob/master/src/examples/generate_traffic.py)
基于 [**湖工商场景**](https://pan.baidu.com/s/15T1hGoWJ70tVmsTX7-zcSw?pwd=hutb )**(WindowsNoEditor)**,首先需要运行[generate_traffic.py](../../src/examples/generate_traffic.py)

## 定义CARLA设置

Expand Down Expand Up @@ -43,7 +43,6 @@ def make_carla_settings():
# Add other weather conditions as needed

return settings, weather

```


Expand Down
Binary file added docs/img/traffic_course_img/execu.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/img/traffic_course_img/regional_macro.gif
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/img/traffic_course_img/regional_macro.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/img/traffic_course_img/roadnet.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading

0 comments on commit 7b8b2fa

Please sign in to comment.