2D initial tests before 3D implementation
Using our in lab underwater simulator, HoloOcean a project partner and I
designed and implemented a real time receding horizon path planner algorithm. Mounting virtual
stereo
cameras on our simulated under water vehicle, we extracted the 3D information from detected feature
points and inserted them into our path planner algorithm that would optimize the best path
moving forward. We used Scipy’s minimize function with the objective being the distance towards
the min goal, with objective constraints limiting our motion per time step and not allowing our
current location to be within a given safety radius of any detected feature point. Our main
assumption for this project is that features will only be detected in feature rich environments,
like obstacles, and not in areas like open water, the actual safe place to travel.
To give ourselves a safety radius, we decided that we wanted our implementation to have 99%
accuracy. Given that our cameras had simulated noise of 0.1 meters, we multiplied the z score for
99% probability with 0.1m + 0.55m. 0.55m is the distance from the center of the robot to the
furthest edge. To test our implementation, we ran our simulator for 300 times and finished with 2
failed runs where a collision occurred, a 99.33% success rate which was desired. Typically, you
would run more than 300 iterations, but our deadline was approaching, and each iteration took a
while to run.
For this project I wrote the program to extract the 3D information of each detected feature point and prepare it to be inserted into the optimization algorithm. My project partner Chad, took point on writing the optimization objective function and constraints, with some assistance from me. Together we wrote the safety radius and reliability handling.
Vehicle point of view and features detected from cameras
3D results and trajectory
This project was the semester project of our Techniques in Optimization graduate class. This was the culmination of a course where we covered constrained and unconstrained optimization, and gradient vs gradient free optimization techniques and methods. The approach we used for this project was a constrained gradient-based optimizer by SciPy.