Probably the most visible software change to the sub is our new trajectory generator. It uses a non-linear filter to produce trajectories that are 3rd-order continuous, which our non-linear RISE controller then tracks to produce a smooth moving vehicle. This how our vehicle operated last year with our old trajectory generator, but the new generator brings some new capabilities. Here’s the trajectory it produces for our sub when told to move forward 2 meters, then drive backwards to the origin:
One new feature the nonlinear filter approach brings us is the ability to track a moving waypoint. We can issue a waypoint that consists of both an initial position and a velocity, and the sub will speed up to catch the waypoint, then slow down to track the waypoint perfectly. We could use this in the future to implement more sophisticated maneuvers like following a moving convoy. For now, this helps us with visual servoing and hydrophone tracking, or any maneuver where we simply want to cruise at a fixed velocity instead of travel to a known location. Velocity waypoints and fixed waypoints can be mixed arbitrarily and the generator will always generate a continuous trajectory that doesn’t violate any constraints.From left to right, the plots show desired the position, velocity, and acceleration that the sub will follow to perform this forward and backward maneuver. The additional red line on the position graph is the desired position. This move highlights the new trajectory generators ability to support asymmetric trajectories. Our vehicle can comfortably reach 1 m/s and accelerate at .2 m/s2 while traveling forward, but is only good for .15m/s and .05 m/s2 in reverse, due to our VideoRay thrusters being heavily optimized for forward thrust. The first forward move doesn’t even reach its top speed before having to slow down, while the reverse move puts along at a constant velocity before reaching the desired position.
The generator also makes trajectories for all 6 degrees of freedom, which allows us to roll and pitch the sub. We experimented with an inverted configuration when we travel over the edge of the bowl at the Transdec, which would allow the DVL to track the surface of the water. The sub performed the maneuver well and the controller can keep the sub stable while inverted, but the DVL surface tracking was spotty at the relatively shallow depth we were at in our pool. Our state estimator copes well with short DVL drop outs, but given a solid stream of inconsistent and inaccurate data it eventually degraded. Next year we want to revisit the issue and improve state estimation quality in the presence of poor DVL data, but for now it seems the sub will have to stay upright. We are able to perform barrel rolls, however. Check it out if you haven’t seen the video before!