-
Notifications
You must be signed in to change notification settings - Fork 0
/
sensing.html
174 lines (161 loc) · 8.05 KB
/
sensing.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
<!DOCTYPE HTML>
<html>
<head>
<title>Sensing</title>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no" />
<link rel="stylesheet" href="assets/css/main.css" />
<noscript>
<link rel="stylesheet" href="assets/css/noscript.css" />
</noscript>
</head>
<body class="is-preload">
<div id="page-wrapper">
<!-- Header -->
<header id="header">
<!--
<h1 id="logo"><a href="index.html">Palo Alto Dynamics</a></h1>
-->
<nav id="nav">
<ul>
<li><a href="index.html">Home</a></li>
<li>
<a href="#">Architecture</a>
<ul>
<li><a href="chassis.html">Chassis</a></li>
<li><a href="drive.html">Drive</a></li>
<li><a href="payload.html">Payload</a></li>
<li><a href="sensing.html">Sensing</a></li>
<li><a href="code.html">Control</a></li>
</ul>
</li>
<li><a href="https://www.youtube.com/watch?v=dQw4w9WgXcQ&ab_channel=RickAstley"
class="button primary">Sign Up</a></li>
</ul>
</nav>
</header>
<!-- Main -->
<div id="main" class="wrapper style1">
<div class="container">
<header class="major">
<h2>Sensing Systems</h2>
<p>Sensing and control, design considerations, and components</p>
<!--
<p>Ipsum dolor feugiat aliquam tempus sed magna lorem consequat accumsan</p>
-->
</header>
<div class="row gtr-150">
<div class="col-4 col-12-medium">
<!-- Sidebar -->
<section id="sidebar">
<h3>Sensor Setup and Gameplay</h3>
<hr />
<section>
<h4>Sensor Setup</h4>
<a href="#" class="image fit"><img src="images/sensing1.jpg" alt="" /></a>
<p>The four TF-Luna sensors each communicated with the Arduino via either UART or I2C.
Because we used four identical units, we determined that communication would be
simplest via I2C, and deconflicted our sensor network by modifying the I2C addresses
of each TF-Luna used. </p>
<h4>Gameplay</h4>
<p>Because of our sensor setup, we were able to utilize coordinates alone to navigate
the course and reach landmarks. The robot followed a small set of instructions to
reach each coordinate and complete each task, relying on distance measurements to
identify its position along each component of the trajectory between landmarks. For
simplicity, it was determined that each component would be limited to pure forward,
reverse, left, or right movement, enabled by our usage of mecanum wheels allowing
for rotation-free translation.
</p>
</section>
</section>
</div>
<div class="col-8 col-12-medium imp-medium">
<!-- Content -->
<section id="content">
<a href="#" class="image fit"><img src="images/sensing.jpg" alt="" /></a>
<h3>High-Level and Design Considerations</h3>
<p>Our primary consideration in choosing sensors was to select a sensor set which would
allow us to navigate the board using as few inputs as possible. This meant that,
ideally, our sensor set would use a single method - such as rangefinding - everywhere on
the board for positioning and navigation.
</p>
<hr />
<section>
<h4>Sensor Choice</h4>
<p>Our sensing objective was to approximate the position of the robot based on a minimal
set of distance measurements, taken at a relatively low sampling rate (whose lower
bound would be determined from the precise speed measurements afforded by our
stepper motors). We determined quickly that IR rangefinders and short/medium
distance LiDAR rangefinders would allow us sufficiently accurate distance measuring,
while also requiring minimal compute.
</p>
<a href="#" class="image fit"><img src="images/chart.jpg" alt="" /></a>
<p>Anticipating significant vibrations from the rough-surface mecanum wheels, we removed
the relatively noisy IR sensors from consideration. Our final sensor decision was
determined by the relative performance of our two LiDAR sensors, the VL53L0X and
TF-Luna, shown above. As our maximal required distance measurement on the board was
above the VL53L0X’s measurement threshold, causing significant error at larger
distances, we opted to use TF-Luna LiDAR sensors on the robot, with corrections for
low-distance error incorporated into sensor-chassis integration and code.
</p>
</section>
<section>
<h4>Sensor Configuration</h4>
<p>With accurate distance measurements as our only mode of positioning and control, our
robot required a sensor configuration capable of resolving both 1. Coordinate point
position on the board, and 2. Robot orientation on the board. Coordinate point
position resolution was simple, as the TF-Luna LiDAR sensors were accurate at almost
all distances on the board to approximately 3cm. </p>
<p>Orientation was slightly more complex. Initially, we determined that our minimal
sensing configuration would require six sensors, such that orientation on the board
could be resolved by comparing readings from forward and rear sensors on either the
port or the starboard side of the robot. This way, when the port or starboard
readings were equivalent at front and rear, the robot would determine that it is
oriented wall-normal, which we could use for navigation.
</p>
<a href="#" class="image fit"><img src="images/sensing8.jpg" alt="" /></a>
<p>However, we later determined that we could resolve robot orientation more accurately
through the more rudimentary method of coordinate estimation on a known map followed
by wall collision. This required just four sensors, as, assuming that each sensor
was accurate to a minute tolerance with appropriate calibration and low-range
handling, our minimal coordinate system required four distance measurements: front,
rear, left, and right. Ultimately, each sensor was placed at the center of each side
of the robot, and inset by approximately 5cm to mitigate TF-Luna inaccuracy at short
distances. </p>
<a href="#" class="image fit"><img src="images/sensing9.jpg" alt="" /></a>
</section>
</div>
</div>
</div>
</div>
<!-- Footer -->
<footer id="footer">
<ul class="icons">
<li><a href="https://www.youtube.com/watch?v=dQw4w9WgXcQ&ab_channel=RickAstley"
class="icon brands alt fa-twitter"><span class="label">Twitter</span></a></li>
<li><a href="https://www.youtube.com/watch?v=dQw4w9WgXcQ&ab_channel=RickAstley"
class="icon brands alt fa-facebook-f"><span class="label">Facebook</span></a></li>
<li><a href="https://www.youtube.com/watch?v=dQw4w9WgXcQ&ab_channel=RickAstley"
class="icon brands alt fa-linkedin-in"><span class="label">LinkedIn</span></a></li>
<li><a href="https://www.youtube.com/watch?v=dQw4w9WgXcQ&ab_channel=RickAstley"
class="icon brands alt fa-instagram"><span class="label">Instagram</span></a></li>
<li><a href="https://github.com/karpathy" class="icon brands alt fa-github"><span
class="label">GitHub</span></a></li>
<li><a href="#" class="icon solid alt fa-envelope"><span class="label">Email</span></a></li>
</ul>
<ul class="copyright">
<li>© Palo Alto Dynamics. All rights reserved.</li>
</ul>
</footer>
</div>
<!-- Scripts -->
<script src="assets/js/jquery.min.js"></script>
<script src="assets/js/jquery.scrolly.min.js"></script>
<script src="assets/js/jquery.dropotron.min.js"></script>
<script src="assets/js/jquery.scrollex.min.js"></script>
<script src="assets/js/browser.min.js"></script>
<script src="assets/js/breakpoints.min.js"></script>
<script src="assets/js/util.js"></script>
<script src="assets/js/main.js"></script>
</body>
</html>