-
Notifications
You must be signed in to change notification settings - Fork 0
/
index.html
194 lines (143 loc) · 8.16 KB
/
index.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<style>
body {
background-color: white;
padding: 5%;
width: 90%;
min-width: 90%;
float: left;
margin: auto;
text-align: left;
font-weight: 300;
font-family: 'Open Sans', sans-serif;
color: #121212;
}
div.padded {
padding-top: 0px;
padding-right: 10%;
padding-bottom: 0.5em;
padding-left: 10%;
}
.emphasis {
text-decoration: underline;
}
h1, h2, h3, h4 {
font-family: 'Source Sans Pro', sans-serif;
}
kbd {
color: #121212;
}
</style>
<title>CS 284A: 3D Drone Simulation</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<link rel="stylesheet" type="text/css" href="style.css" media="screen" />
<meta http-equiv="content-type" content="text/html; charset=utf-8"/>
<link href="https://fonts.googleapis.com/css?family=Open+Sans|Source+Sans+Pro" rel="stylesheet">
<script>
MathJax = {
tex: {
inlineMath: [['$', '$'], ['\\(', '\\)']]
}
};
</script>
<script id="MathJax-script" async
src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-chtml.js">
</script>
</head>
<body>
<br />
<h1 align="middle">CS 184/284A: 3D Drone Simulation</h1>
<div class="padded">
<h3 align="middle">Realistic 3D Drone Simulation with Path Planning in Unreal Engine 5</h3>
</div>
<br/>
<br/>
<div class="padded">
<h2 align="middle">Summary</h2>
We built a 3D drone flight simulator that incorporates open-source data from Google Earth to path plan in realistic world scenarios. The simulation demo is built in a free game engine Unreal Engine. For the purposes of this project, we are focusing on 1 scenario. The demo includes comparing different path-planning algorithms to select the best flight path. We added realism to the simulation such as constraints on where the drone can fly. The output is a video of the virtual camera following the drone path that shows a realistic simulated 3D world and paths planned around obstacles through certain points in space.
</div>
<br/>
<br/>
<div class="center" style="width:100%;text-align:center;margin:auto;">
<iframe style="text-align:center;margin:auto;" width="560" height="315" src="https://www.youtube.com/embed/RWZuf3_bPjQ" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>
</div>
<div class="padded text-center center m-auto">
<h3>
Technical details of the project and our implementation are in the <a href="Drone_Sim_3D__CS_184_284A_Final_Paper.pdf" target="_blank">paper</a>.
</h3>
</div>
<div class="padded text-center center m-auto">
<h3 align="middle"><a href="https://docs.google.com/presentation/d/1pBqTsJZCgPRo1d5ze1cUHPy5c_wH6vMuZk4lr3rkyXg/edit?usp=sharing" target="_blank">Presentation with videos </a> (Google Drive)</h3>
</div>
<div class="padded">
<h2 align="middle">Team Members</h2>
<p>
<ul>
<li>Irina Hallinan (284) <a href="mailto:[email protected]">[email protected]</a></li>
<li>Buyi Geng (284) <a href="mailto:[email protected]">[email protected]</a></li>
<li>Tianyun Yuan (184) <a href="mailto:[email protected]">[email protected]</a></li>
<li>Xinyu Deng (184) <a href="mailto:[email protected]">[email protected]</a></li>
</ul>
</p>
</div>
<div class="padded">
<h2 align="middle">Problem Description</h2>
<p>The idea was to make a 3D animated simulation of a drone flying in a realistic urban setting, such as the city of San Francisco. The simulation loads a realistic 3D scene of an existing place available on Google Earth with obstacles such as buildings and trees. The challenge was to make the drone path realistic: i.e. follow certain rules and constraints in calculating the course while being fast (as it flies). The project explores different algorithms for path planning and compares their tradeoffs. The game engine automatically computes the flight path and displays flight targets on the screen as the drone flies. The program outputs a video taken from the point of view of the drone to show a realistically rendered scene. We can tell the drone where to fly (which points of interest it should fly by) and take a video from a specific point of view.</p>
<p>Additionally, we implemented animations of the drone flying, turning, etc, and of the rotors on each thruster. Several virtual cameras follow the path of the drone as it flies, including a first-person view from the drone itself.</p>
</div>
<div class="padded">
<h2 align="middle">Challenges</h2>
<p>The most challenging part of this project would be to achieve path planning and animation that is realistic, fast, and accurate. All team members had little experience with animation, so learning the basics of Unreal Engine and animation in the allotted time will be a challenge.</p>
</div>
<div class="padded">
<h2 align="middle">Goals and Deliverables</h2>
<p>We created a 3D simulation of a drone flying through a realistic environment. We were be able to set and change parameters of the simulations, such as obstacles to avoid, the speed of the drone, and where the drone should fly by. As a final result, we produced a video in which we show the drone flying along a path as well as colliding with obstacles in the scene. We build our simulation in Unreal Engine 5 in C++ and used Python for path planning algorithms to precompute drone paths.</p>
</div>
<div class="padded">
<h2 align="middle">Questions Planned to Answer</h2>
<ol>
<li>How to use Unreal Engine to make a realistic drone flight simulation (how to integrate Google Earth data into Unreal Engine).</li>
<li>
How to animate the drone and its motion in real-time?
</li>
<li>
How to plan a path the drone should take to avoid collisions and stay within the given constraints?
</li>
</ol>
<p>We hope this simulation helps people flying real drones plan a path. Ideally, we would like to compare our simulated fly path to a real drone (if we can get one).</p>
</div>
<div class="padded">
<h2 align="middle">Resources we used</h2>
<p>Open source software:</p>
<ul>
<li>Blender v3.5</li>
<li>Google Earth Studio v1.7</li>
<li>Meshroom v2023.1.0</li>
<li>Unreal Engine v5.1.1 with UnrealImGui plugin v1.22 and Python API</li>
<li>Visual Studio 2022</li>
</ul>
<p>Open source GitHub code:</p>
<ul>
<li><a href="https://github.com/zhm-real/PathPlanning/tree/master/Search_based_Planning/Search_3D" target="_blank">Search-based Path Planning</a></li>
</ul>
</div>
<div class="padded">
<h2 align="middle">Contributions</h2>
<ul>
<li>
Irina: 3D scene model from Google Earth; integration of model and drone in Unreal Engine. Failure mode of a drone crashing into obstacles.
</li>
<li> Tianyun: Integrated open-source drone model and texture into Unreal Engine. Animated drone rotors. Coded physical properties of drone. Camera perspective.</li>
<li> Buyi: Integrating four path planning algorithms, set the map frame rules and use the JSON file to build the interfaces for map reading and drone control.</li>
<li> Xinyu: Real Time Obstacle Detection, Integrating algorithm scripts into Unreal Engine, doing the comparisons for the four algorithms.</li>
</ul>
</div>
<div class="padded">
<h3 align="middle"><a href="https://irina694.github.io/3d-drone-sim/">Final Project</a></h3>
<h4 align="middle"><a href="https://irina694.github.io/3d-drone-sim/milestone">Milestone</a></h4>
<h4 align="middle"><a href="https://irina694.github.io/3d-drone-sim/proposal/">Proposal</a></h4>
</div>
</body>
</html>