-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.html
507 lines (441 loc) · 32.4 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
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="description" content="">
<meta name="author" content="">
<title>Ajaay's Personal Page</title>
<!-- Bootstrap core CSS -->
<link href="vendor/bootstrap/css/bootstrap.min.css" rel="stylesheet">
<!-- Custom fonts for this template -->
<link href="https://fonts.googleapis.com/css?family=Saira+Extra+Condensed:100,200,300,400,500,600,700,800,900" rel="stylesheet">
<link href="https://fonts.googleapis.com/css?family=Open+Sans:300,300i,400,400i,600,600i,700,700i,800,800i" rel="stylesheet">
<link href="vendor/font-awesome/css/font-awesome.min.css" rel="stylesheet">
<link href="vendor/devicons/css/devicons.min.css" rel="stylesheet">
<link href="vendor/simple-line-icons/css/simple-line-icons.css" rel="stylesheet">
<!-- MDL -->
<link rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons">
<link rel="stylesheet" href="https://code.getmdl.io/1.3.0/material.green-orange.min.css" />
<script defer src="https://code.getmdl.io/1.3.0/material.min.js"></script>
<!-- Custom styles for this template -->
<link href="css/resume.min.css" rel="stylesheet">
<link rel="stylesheet" type="text/css" href="css/custom.css">
</head>
<body id="page-top">
<nav class="navbar navbar-expand-lg navbar-dark bg-primary fixed-top" id="sideNav">
<a class="navbar-brand js-scroll-trigger" href="#page-top">
<span class="d-block d-lg-none">Ajaay's Personal Page</span>
<span class="d-none d-lg-block">
<!-- had img-profile -->
<img class="img-fluid rounded-circle mx-auto mb-2" src="img/guardian_cropped.jpg" alt="">
</span>
</a>
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarSupportedContent">
<ul class="navbar-nav">
<li class="nav-item">
<a class="nav-link js-scroll-trigger" href="#about">About Me</a>
</li>
<li class="nav-item">
<a class="nav-link js-scroll-trigger" href="#professional">Professional</a>
</li>
<li class="nav-item">
<a class="nav-link js-scroll-trigger" href="#projects">Projects</a>
</li>
<li class="nav-item">
<a class="nav-link js-scroll-trigger" href="#other">Other Work</a>
</li>
<li class="nav-item">
<a class="nav-link js-scroll-trigger" href="#personal">Personal</a>
</li>
</ul>
</div>
</nav>
<div class="container-fluid p-0">
<section class="resume-section p-3 p-lg-5 d-flex d-column" id="about">
<div class="my-auto">
<h1 class="mb-0">Ajaay (AJ)
<span class="text-primary">Chandrasekaran</span>
</h1>
<div class="subheading mb-5">
<a href="mailto:[email protected]">ajaay [at] umich.edu</a>
</div>
<p class="mb-5">
Greetings! Welcome to my personal site.
<br>
<br>
I am an engineer and an aspiring roboticist with a background in software development and mathematics. I pursued my bachelors in computer science and my masters in electrical and computer engineering at the University of Michigan in Ann Arbor, MI. Professional Hobbies include tinkering with all kinds of software and hardware systems, architecting robust software (especially for autonomous systems), and playing with the language of mathematics.
<br>
<br>
My first name <i>Ajaay</i> is a modification of the Indian name <a href="https://en.wikipedia.org/wiki/Ajay_(given_name)"><i>Ajay</i></a>. I tell everyone to just call me AJ (Ay-Jay)! <br><br>
My last name <i>Chandrasekaran</i> is based on the Indian name <a href="https://en.wikipedia.org/wiki/Chandrasekhar"> <i> Chandrasekhar</i></a>. I pronounce it as Chan-dra-say-ker-in.
<br>
<br>
This site serves primarily as a personal portfolio of various projects that I have worked on.
<br>
<br>
</p>
<ul class="list-inline list-social-icons mb-0">
<li class="list-inline-item">
<a href="https://www.linkedin.com/in/ajaayc/">
<span class="fa-stack fa-lg">
<i class="fa fa-circle fa-stack-2x"></i>
<i class="fa fa-linkedin fa-stack-1x fa-inverse"></i>
</span>
</a>
</li>
<li class="list-inline-item">
<a href="https://github.com/ajaayc">
<span class="fa-stack fa-lg">
<i class="fa fa-circle fa-stack-2x"></i>
<i class="fa fa-github fa-stack-1x fa-inverse"></i>
</span>
</a>
</li>
<li class="list-inline-item">
<a href="https://www.youtube.com/channel/UC9jhtzfx7DT13GaAtRYHtLg">
<span class="fa-stack fa-lg">
<i class="fa fa-circle fa-stack-2x"></i>
<i class="fa fa-youtube-play fa-stack-1x fa-inverse"></i>
</span>
</a>
</li>
</ul>
<br>
</div>
</section>
<section class="resume-section p-3 p-lg-5 d-flex flex-column" id="professional">
<div class="my-auto">
<h2 class="mb-5">Professional Experience</h2>
<!-- Stellantis -->
<div class="card-item">
<div class="demo-card-square mdl-card mdl-shadow--8dp">
<div class="mdl-card__title mdl-card--expand" style="background-image: url('img/stla_brain.jpg');">
<div class="mdl-card__title-text"><img class="logo" style="background-color: rgba(255, 255, 255, 0.8);" src="img/stellantis.svg" alt="Stellantis logo"></img></div>
</div>
<div class="mdl-card__supporting-text">
AI Motion Planning Software Engineer working on STLA AutoDrive platform.
</div>
<div class="mdl-card__actions mdl-card--border">
<a href="https://www.stellantis.com/en" class="mdl-button mdl-button--colored mdl-js-button mdl-js-ripple-effect">
Stellantis
</a>
<a href="https://europe.autonews.com/automakers/stellantis-launches-23-billion-software-push"
class="mdl-button mdl-button--colored mdl-js-button mdl-js-ripple-effect">
STLA AutoDrive
</a>
</div>
</div>
</div>
<!-- Epic -->
<div class="card-item">
<div class="demo-card-square mdl-card mdl-shadow--8dp">
<div class="mdl-card__title mdl-card--expand" style="background-image: url('img/epic_hyperspace.jpg');">
<div class="mdl-card__title-text"><img class="logo" style="background-color: rgba(255, 255, 255, 0.8);" src="img/epic_logo.png" alt="Xwing logo"></img></div>
</div>
<div class="mdl-card__supporting-text">
Software Developer for Epic ASAP electronic medical record software.
</div>
<div class="mdl-card__actions mdl-card--border">
<a href="https://www.epic.com/" class="mdl-button mdl-button--colored mdl-js-button mdl-js-ripple-effect">
Epic
</a>
<a href="https://www.epic.com/software/specialty-care"
class="mdl-button mdl-button--colored mdl-js-button mdl-js-ripple-effect">
Epic ASAP
</a>
</div>
</div>
</div>
<!-- UMTRI -->
<div class="card-item">
<div class="demo-card-square mdl-card mdl-shadow--8dp">
<div class="mdl-card__title mdl-card--expand" style="background-image: url('img/mcity.jpg');">
<div class="mdl-card__title-text"><img class="logo" style="background-color: rgba(255, 255, 255, 0.8);" src="img/umtri_logo.png" alt="Xwing logo"></img></div>
</div>
<div class="mdl-card__supporting-text">
Graduate Student working on software/hardware system that interfaces with Lidar, camera, GPS, and Mobileye.
</div>
<div class="mdl-card__actions mdl-card--border">
<a href="https://www.umtri.umich.edu/" class="mdl-button mdl-button--colored mdl-js-button mdl-js-ripple-effect">
UMTRI
</a>
</div>
</div>
</div>
</div>
</section>
<section class="resume-section p-3 p-lg-5 d-flex flex-column" id="projects">
<div class="my-auto">
<h2 class="mb-5">Projects</h2>
<p>
<p><strong>Plybot Testbed</strong></p>
Project in progress as of Sept 2023<br><br>
[Code and schematics to be available soon]<br>
<br>
<center>
<div class="vid">
<!-- <img src="img/plybot1.jpg" width="400;"> !-->
<img src="img/plybot2.jpg" width="400;"><br><br>
</div>
</center>
<br>
I am working on an autonomous robotic platform that will eventually serve as my own personal testbed for implementing and evaluating algorithms for:
<ul>
<li>Localization and mapping</li>
<li>Motion planning</li>
<li>Reinforcement learning (After training models via simulation)</li>
<li>Control</li>
<li>Computer vision</li>
</ul>
This is a side project which I am personally directing in order to further expand my practical knowledge of electrical circuitry and embedded systems as well as implementations of algorithms for autonomous robotics.
<br><br>
The images above depict an initial prototype (work in progress) that will be controlled by the <a href="https://www.ti.com/store/ti/en/p/product/?p=MSP-EXP430FR6989">MSP-EXP430FR6989</a> microcontroller board.
<br><br>
I have plans to eventually migrate to a prototype that would use one of the <a href="https://www.nvidia.com/en-us/autonomous-machines/embedded-systems/">NVIDIA Jetson</a> products and the Robot Operating System (ROS) framework.
I received inspiration for this project from the <a href="https://www.amazon.com/Robot-Builders-Bonanza-Gordon-McComb/dp/1260135012">Robot Builder's Bonanza</a>, authored by the late roboticist Gordan McComb. <a href="https://www.amazon.com/Practical-Electronics-Inventors-Fourth-Scherz/dp/1259587541">Practical Electronics for Inventors</a> has also been a very useful resource.
<br><br>
I look forward to linking interesting videos of the Plybot Testbed in the near future as I make more progress on it. I plan to make the code and schematics publically available on Github for anyone who desires to replicate it.
<br><br>
<p><strong>MDOT Lane Marking Evaluation</strong></p>
May 2017 - Jun 2018 <br><br>
[<a href="https://github.com/ajaayc/Velodyne-HDL-64E-Packet-Parser">Code</a>]<br>
<br>
<center>
<div class="vid">
<img src="img/velodyne.png" width="400;">
<img src="img/mobileye.JPG" width="400;"><br><br>
</div>
</center>
<br>
As a research assistant at the University of Michigan Transportation Research Institute in Ann Arbor, MI, I worked under Dr. <a href="https://sites.google.com/view/danielpark/home">Daniel Park</a> on a project to evaluate the effectiveness of various road lanemarking materials. The project was funded by the Michigan Department of Transportation (MDOT).<br><br>
In 2017, a section of the US-23 highway between Ann Arbor, MI and Brighton, MI was paved with different lanemarking materials along different stretches. We planned to perform a study over a 2-year period to determine how well each lanemarking material on the highway lasted over time; we expected that the different stretches of the highway would be impacted similarly by various environmental factors, such as temperature and precipitation.
<br><br>
To achieve our goal we required a method to take measurements of the lanemarkings' conditions on the US-23 highway once during each month so that after the 2-year period we could retrospectively analyze how the lanemarkings' conditions changed over time. Our solution to this problem was to equip a Honda Accord car with various sensors, including:
<ul>
<li>Novatel GPS</li>
<li><a href="https://quanergy.com/m8/">Quanergy M-8 Lidar</a></li>
<li><a href="https://www.mobileye.com/en-us/">Mobileye unit</a></li>
<li>Camera</li>
</ul>
We proceeded to then engineer a software system that would be executed on the car to collect data of the road conditions from each of these sensors while a human operator drove the car along the US-23 highway once each month.
<br><br>
<center>
<img src="img/ajaayCar.JPG" width="400;">
</center>
<br><br>
For this project, I developed multi-threaded C++ code utilizing the VTK and PCL libraries to extract, interpret, and visualize data collected from our Lidar. We experimented with two Lidar's: The Quanergy M-8 and the Velodyne HDL-64E. Each of these Lidars outputs [x,y,z] point clouds of their surroundings as well as point <a href="http://desktop.arcgis.com/en/arcmap/10.3/manage-data/las-dataset/what-is-intensity-data-.htm">intensities</a>. We were mostly interested in examining the point intensity measurements of the landmarkings. In theory, we could see how the intensity values of the points representing lanemarkings changed over time. The degradation of the highway pavement by the Michigan weather would result in lower intensity points returned by the Lidar for various lanemarking materials.
<br><br>
I also developed C++ code to interface with our car's Mobileye unit via the vehicle's CAN message network. The Mobileye communicated data regarding the status of the left and right lanemarkings on the road in front of the driver. Its data arrived in real time as a sequence of bytes that needed to be converted into a human readable format.
<br><br>
Finally, I facilated the collection of data from all four of our sensors simultaneously by helping to create a single module that would run all four sensor collection programs together as individual threads of a single CPU process. The module ran on a single HP i7 laptop during each of the car's monthly drives.
<br><br>
I was very proud of our final software system. This project necessitated a wonderful combination of both robotics and computer science knowledge.<br><br>
<center>
<iframe width="560" height="315" src="https://www.youtube.com/embed/agMfXfZdug4" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
</center>
<br><br>
<p><strong>Collision Estimation for Safe Planning</strong></p>
Mar 2018 - Apr 2018 <br><br>
[<a href="resources/ajaay_paper.pdf">Paper</a>]<br>
[<a href="https://github.com/ajaayc/Probability-of-Collision-for-Safe-Planning">Code</a>]
<center>
<img src="img/env_setup.png" width="400px;">
<img src="img/motion_pic.PNG" width="400px;">
</center>
<br>
For my Motion Planning course, I devised and implemented a Gaussian Mixture Model-based algorithm in C++ to expand upon existing methods to estimate the probability that a robot following a pre-generated motion plan would collide with an obstacle.
<br><br>
The motivation for this work is that a robot can benefit from quantifying the approximate safety of a motion plan before executing it. While a motion planner should generate a collision-free path, collisions may be possible as the robot follows the path due to natural uncertainty in the data it receives from its sensors and random noise in how it makes movements. Given a probability of collision before executing a motion plan, a robot can either execute it or revise the plan until it can find a "safer" plan.<br><br>
Existing methods to compute the exact probability of collision for a motion plan rely on running thousands of Monte-Carlo simulations of the robot following the motion plan, which is computationally expensive. The goal of this work is to accurately estimate the probability of collision in a shorter amount of time.
<br><br>
For this work, I utilized the OpenRAVE simulation framework and Armadillo C++ linear algebra library to simulate a linear feedback controller and an Extended Kalman Filter estimate for the position of a PR2 robot as it attempted to follow a pre-generated motion plan. I performed experiments to examine my algorithm's performance and presented my research in a paper and a conference talk.
<br>
<br>
Unfortunately, my algorithm did not perform as well as I had hoped, but I learned much from the experience in regards to conducting independent research. I plan to work more on my algorithm in the future to improve its accuracy in estimating a probability of collision for a motion plan.
<br><br>
<p><strong>Deep Neural Network Vehicle Detection System</strong></p>
Nov 2017 - Dec 2017<br><br>
[<a href="https://github.com/ajaayc/Car_Detection/blob/master/Perception%20Final%20Report.pdf">Report</a>]<br>
[<a href="https://github.com/ajaayc/Car_Detection">Code</a>]<br>
<br>
<center>
<img src="img/carBox.jpg" width="400px;">
<img src="img/graph.png" width="400px;">
</center><br>
For my Self-Driving Cars course, I worked in a team to implement a classifier to count the number of cars in an arbitrary image generated from Grand Theft Auto (GTA) simulation. We utilized the TensorFlow Python Object Detector API on AWS EC2 GPU instances to train a fast-RCNN with 50 layers. We trained the RCNN on ~ 6,000 training images with known bounding box locations of cars and we specified two classifications for a detected object: {Car, Not Car}.
<br><br>
Using our model, my team ranked 5th place among 35 teams in the class competition by achieving a 63% mean absolute error on the instructor's test set of GTA images with unknown car counts.
<br><br>
<p><strong>Mobile Robotics iSAM Implementation</strong></p>
Mar 2018 - Apr 2018<br><br>
[<a href="https://github.com/Scarabrine/EECS568Project_Team2_iSAM">Code</a>]<br><br>
<center>
<div class="vid">
<img src="img/victoriaPark.png" width="400">
<img src="img/JCBB.png" width="400">
</div>
</center>
<br><br>
For my Mobile Robotics course, I worked in a team to implement the <a href="https://www.cc.gatech.edu/~kaess/pub/Kaess08tro.pdf">incremental smoothing and mapping</a> approach to the Simultaneous Localization and Mapping (SLAM) problem. <br><br>Prior to working on this project, I had implemented various state estimation algorithms in Matlab for localization, including the <a href="https://www.youtube.com/watch?v=AM1hES5_WQ4">Extended Kalman Filter</a>, the <a href="https://www.youtube.com/watch?v=xWZ333vlYUE">Unscented Kalman Filter</a>, and the <a href="https://www.youtube.com/watch?v=46N7dpGq4Uw">Particle Filter</a>. This project was unique for me in that it was the first smoothing algorithm I worked with to tackle the SLAM problem. Filtering approaches to SLAM generally estimate the current state of a robot given a sequence of past measurements and actions. However, smoothing approaches improve upon the estimates of the entire sequence of the current and past states of the robot, considering the sequence as an overarching model to be smoothened.
<br><br>
My main contribution to this project was in the implementation of the <a href="http://webdiis.unizar.es/~jdtardos/papers/Neira_TRA_2001.pdf">joint compatibility branch and bound (JCBB) algorithm</a> for data association. At a single point in time, given a set of N robot sensor measurements and M landmarks, the JCBB algorithm examines various combinations of sensor-landmark mappings and uses the Mahalanobis Distance metric to determine which measurements are most likely to be associated with which landmarks.
<br><br>
We applied the iSAM algorithm on the <a href="http://www-personal.acfr.usyd.edu.au/nebot/victoria_park.htm">Victoria Park dataset</a>. The JCBB algorithm proved to be more effective than standard data association methods when we applied it within the iSAM algorithm on the dataset.
<br>
<br>
<p><strong>Trashbot</strong></p>
Mar 2017 - Apr 2017<br><br>
[<a href="https://github.com/bonsairobo/trashbot">Code</a>]<br>
<br>
<center>
<div class="vid">
<iframe width="560" height="315" src="https://www.youtube.com/embed/a6qHyMERqR0?start=29" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
</div>
</center>
<br>
For my Autonomous Robotics Laboratory senior design course, I collaborated with a team to build a robot that autonomously navigates and detects and removes trash in its environment. The motivation for this project stemmed from noticing the plethora of trash across the UofM campus during football Saturdays. In theory, we could deploy a fleet of these trash collecting robots after a football game to pick up and dispose of various pieces of trash.<br><br>
We built the robot over a span of 2 months, and it was comprised of various hardware subsystems, including:
<ul>
<li>A <a href="https://april.eecs.umich.edu/updates/2015/07/01/magic2.html">MagicBot</a> base</li>
<li>An Arduino and motor controllers</li>
<li>A robotic arm</li>
<li>A Microsoft Kinect</li>
<li>A PS2 Controller</li>
</ul>
My major contribution to this project was in engineering the TrashBot's robotic arm to pick up various objects. My teammate programmatically analyzed point clouds of data from the Microsoft Kinect attached to the robot, and he provided data to the robotic arm representing the centroids of various objects.
<br><br>
Given the [x,y,z] position of an object centroid in the frame of the Kinect coordinate system, I used Python to apply homogeneous matrix transformations to convert the coordinates to the frame of the robotic arm's coordinate system. Following that, I implemented a trignometry-based inverse kinematics algorithm to determine the joint angles that the arm would need in order to position its endeffector (claw) over that object's centroid point. Finally, I implemented a state machine to facilate the movement of the arm to pick up and dispose of an object into the TrashBot's onboard trash receptable without collisions. <br><br>
This experience gave me the opportunity to work with various physical components and it made me very comfortable with getting my hands dirty. We enjoyed many trips to the local hardware store to piece this robot together. It was very rewarding to see the final product!<br><br>
<center>
<div class="vid">
<img src="img/trashbot.jpg" width="400;">
<img src="img/insideTrashbot.jpg" width="400;"><br><br>
</div>
</center>
<p><strong>BotLab Challenge</strong></p>
Jan 2017 - Feb 2017
<br>
<center>
<div class="vid">
<iframe width="560" height="315" src="https://www.youtube.com/embed/B0mL6WQhMzk" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
</div>
</center>
<br>
For my Autonomous Robotics Laboratory course, I worked in a team to compete in the course's Bot Escape Challenge competition. We were given the UofM April Lab's <a href="https://april.eecs.umich.edu/maebot/">MAEbot</a> platform, and we were tasked with building algorithms to help the MaeBot explore and escape from a wooden maze enclosure.
<br><br>
Using C++, we implemented various algorithms on the MAEbot, including:
<ul>
<li>A* Path Planning</li>
<li>Occupancy Grid Mapping</li>
<li>MonteCarlo Localization</li>
<li>PID Control</li>
</ul>
The experience of implementing the algorithms on the MAEbot and competing in the class competition was very rewarding. There were many robotics concepts that I had learned from simulation and theory, but we found that implementing these algorithms on a real robot would actually be significantly more difficult.
<br>
<br>
<p><strong>Kinveval Robot Simulator</strong></p>
Sept 2016 - Dec 2016<br><br>
<br>
<center>
<div class="vid">
<img src="img/RRT_Planner.png" width="400">
<a href="https://www.youtube.com/watch?v=5dlWKZdV9mo"><img src="img/RRTConnect_2D_Kineval.png" width="400"></a>
</div>
</center>
<br>
For my Robot Kinematics and Dynamics course, I implemented various robotics algorithms in the <a href="https://github.com/autorob/kineval-stencil">Kineval</a> simulation framework, a Three.js-based platform made by Professor <a href="http://ohseejay.org/">Chad Jenkins</a>.
<br><br>
In order to better understand the modeling and control of autonomous agents, I implemented the following features in the framework:<br>
<ul>
<li>Path planning via A* algorithm</li>
<li>Euler and velocity verlet integrator and a PID controller for an inverted pendulum</li>
<li><a href="https://www.youtube.com/watch?v=7wcBHTCha5o">Finite state machine "dance controller"</a></li>
<li>Forward kinematics via quaternions and homogeneous matrix transformations</li>
<li><a href="https://www.youtube.com/watch?v=1tOVkg2UzNM">Inverse kinematics</a> via the Jacobian transpose and Jacobian pseudo-inverse methods</li>
<li>Motion planning via RRT and <a href="https://www.youtube.com/watch?v=5dlWKZdV9mo">RRT-Connect algorithms in 2D</a> and 3D workspaces</li>
</ul>
<center>
<div class="vid">
<iframe width="560" height="315" src="https://www.youtube.com/embed/1tOVkg2UzNM" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
</div>
</center>
<br>
<p><strong>PID Controller for Magnetically Levitated Ball</strong></p>
Nov 2017 - Dec 2017 <br><br>
<center>
<div class="vid">
<iframe width="560" height="315" src="https://www.youtube.com/embed/BY0sY5yXz3I" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
</div>
</center><br>
For my Control Systems Design course, I worked in a team to build a PID controller in Simulink to control the position of a magnetically levitated ball. Building the controller required first deriving a physical model consisting of the magnetic and gravitational forces acting upon the ball. Aftering deriving the physical model, we linearized the model about the input current required to cause the magnetic force to keep the ball at a constant height. Following that, we tuned our PID controller to meet specifications for steady-state error, settling time, and overshoot.
<br><br>
</div>
</section>
<section class="resume-section p-3 p-lg-5 d-flex flex-column" id="other">
<div class="my-auto">
<h2 class="mb-5">Other Work</h2>
<ul>
<li>
I wrote this <a href="resources/ethicspaper1.pdf">paper</a> examining the impact of robots and automation on jobs as an assignment for my Robot Ethics course. I find the "Will Robots take Our Jobs?" debate pretty interesting. Here's another <a href="resources/ethicspaper2.pdf">paper</a> I wrote about the ethical concerns for incorporating robots in care for the elderly.
</li>
<br>
<li>
I made this <a href="https://www.youtube.com/watch?v=yfyMJWaG7Yg">video</a> when I was applying to become an instructional aide for EECS203 Discrete Mathematics at UofM. I am very interested in pedagogy, and I dream of teaching my own class of students someday.
</li>
<br>
<li>
Here's a <a href="https://www.youtube.com/watch?v=b2tw21Ra3BU">video</a> of me describing a simulation I helped develop in C++ of the phlebotomy clinic at the UofM Comprehensive Cancer Center. Before I pursued my interest in robotics, I worked on healthcare-related projects for 2 years at the UofM Center for Healthcare Engineering and Patient Safety as a research assistant for Professor <a href="https://amycohn.engin.umich.edu/">Amy Cohn</a>.
</li>
<br>
<li>
I worked on a year-long team software development project for the UofM Kellogg Eye Center (KEC). Under the guidance of Professor <a href="http://www.andrewdeorio.com/"> Andrew DeOrio </a>, we built a web-based machine learning tool to help ophthalmologists around the world determine the specific gene causing a patient's genetic retinal dystrophy. Here's a <a href="resources/KECPoster.pdf">poster</a> that presents the project.<br><br> For a different project, I made this <a href="https://github.com/ajaayc/kec-class">prototype</a> of a website for KEC to use to distribute educational resources to its residents in ophthalmology.
</li>
</ul>
</div>
</section>
<section class="resume-section p-3 p-lg-5 d-flex flex-column" id="personal">
<div class="my-auto">
<h2 class="mb-5">Personal</h2>
I grew up in Novi, MI and I am almost a lifelong Michigander. Go Blue and Go Lions! I pursued both my Bachelors and Masters studies at the University of Michigan in Ann Arbor, MI. I consider myself very fortunate for the opportunities I've had and for the support of many amazing people as I pursue my work. My parents always supported me, my growth, and my interests. I have also been blessed to have many incredible teachers and friends who have always encouraged me to be the best that I can be.<br><br>
I dabble in several hobbies and pastimes and am usually not focused on all of them at once during a single period of time. Here are some things I like doing.
<br>
<br>
<ul>
<li>
I am a practicing salsa and bachata dancer. I credit the Ann Arbor Movimiento Latino (A2ML) group for sparking my interest in Latin dance.
</li>
<br>
<li>
I occasionally watch Japanese anime. Some of my favorite shows include Steins; Gate, Code Geass, Attack on Titan, Clannad, and Monster.
</li>
<br>
<!-- <li> -->
<!-- I am learning how to play the guitar. I am gradually improving in this area as I learn how to play various chords and songs. -->
<!-- </li> -->
<!-- <br> -->
<li>
I occasionally read works of both fiction and non-fiction. At the time of this writing, I am reading <i>I'm Glad My Mom Died</i> by Jennette McCurdy.
</li>
<br>
<li>
I enjoy playing various board and card games with friends, such as Settlers of Catan, Betrayal, Coup, and StarRealms.
</li>
</ul>
<br>
</div>
</section>
</div>
<!-- Bootstrap core JavaScript -->
<script src="vendor/jquery/jquery.min.js"></script>
<script src="vendor/bootstrap/js/bootstrap.bundle.min.js"></script>
<!-- Plugin JavaScript -->
<script src="vendor/jquery-easing/jquery.easing.min.js"></script>
<!-- Custom scripts for this template -->
<script src="js/resume.min.js"></script>
<link rel="stylesheet" type="text/css" href="css/custom.css">
</body>
</html>