GTII Bathymetry Demo

Gumption Trap II embarks on her second mission on Town Lake for a proper demonstration of her bathymetric surveying capabilities following some software and hardware improvements after her maiden voyage a few months prior.

Operation Video

In this video, I demonstrate the process of creating a 3D map of the floor of Town Lake using my newly upgraded autonomous boat, Gumption Trap II.

Since her last mission, I replaced the belt driven rudder system with an improved linkage mechanism, and I fixed some critical bugs affecting the GPS data reporting.

I created these 3 dimensional bathymetry plots with MATLAB, as well as all of the blackbox data plots. In the future, I’ll use python to to this instead. The depth axis is in millimeters, with darker colors as the deepest points and lighter yellow as near zero. The deepest point recorded here was about 25ft. The black dots are individual depth sounder measurements, and a smooth surface is extrapolated between them all with MATLAB to approximate the contours of the lakebed.

I made some updates to the rudder system to solve the belt skipping issue from the last time I ran GTII on the water. This linkage mechanism has increasing mechanical advantage towards the extremes of the travel, and stays around 1:1 near the center. This lets the rudder move quickly from center while making fine adjustments, but with inversion points at ±45∘, drag cannot backdrive the servo during a hard turn. The previous rudder was poorly mounted, with a threaded bolt riding on loose holes in the sheet metal as the only bearing surface. Now, the rudder rides on shoulder bolt axles through nylon bushings for rigidity and minimal friction. This eliminated virtually all of the play in the rudder system without over constraining it.

Here’s the power consumption data from this run.I ran the same mission twice back to back, with a large pause in between at around 2200 seconds. The next smaller pause at about 2800 seconds is when I manually stopped the boat to prevent a collision with paddle boarders. The smaller dips in current draw were during sharp turns when the differential thrust kicked in, reducing the speed of one motor. For the rest of the time, power consumption is nearly constant with both motors pegged at full steam ahead.

This mission was in September in less than ideal solar conditions, resulting in a slight deficit in power production.

These graphs show the PWM signals being sent to both propulsion motors and the rudder. The drive motors are almost always at full speed forward (2000 microseconds), only slowing down or reversing briefly during the sharp turns.

The rudder is constantly making fine adjustments near center (1500 microseconds) as the boat travels in long straight lines. It occasionally hits the extremes to either side during the sharp turns.

This data is extremely useful for troubleshooting problems, as I can see exactly what signals each motor was receiving at any point in time.

Gumption Trap II uses a PID loop on the error between measured compass heading and calculated goal heading to point it towards the next way-point. These charts show the real time heading vs goal heading. The goal heading, shown in orange, gradually changes as the bearing to a way-point is recalculated based on the boat’s real time GPS position. The sudden jumps are when a way-point is reached and a completely new goal heading is calculated. This step input to the control system causes the steering to quickly readjust, sometimes overshooting the goal. This data is extremely valuable for determining PID gains. The lower graph shows the steering value (-100 is hard to port, 100 is hard to starboard, 0 is straight ahead). This value is then translated into signals to the motors, with differential thrust only kicking in for extreme steering values beyond the point where the rudder reaches the maximums of its travel.

This graph shows the real GPS position data for the two back to back runs of the same mission. Straight lines between way-points are shown in black, with the two real runs in blue and green. The chaotic squiggles in a few locations are over corrections in the steering due to under-damped PID gains. Before the next mission, I’ll decrease the proportional gain a little.

Just for fun, I 3D printed my depth map. I created this file using a python package called Open3D. After scaling the x, y, and z, I converted the point cloud of depth measurements into an .STL file which could be printed. The point cloud was fairly sparse, which resulted in the low triangle count.

Click the box above to view the code I wrote for this project on Github. All the code running on the boat itself is C++ on a single microcontroller. I also have python scripts and alternate C++ code that allow me to read and write data to between the internal SD card and a laptop without physically disassembling the hull to access the card. Additionally, I include the matlab scripts I use for data processing and all of the CAD for the project.

Anterior
Anterior

N150 Sonar Restoration

Siguiente
Siguiente

Project MOAR