*Note: Beware that this post contains strange past and present tense grammar as I wrote some of it before and after the launch.
LoCARB was launched again July 31, 2020. The first launch went well until the magnetic coupling connecting the propeller shaft to the motor decoupled after hitting a jellyfish (very likely the issue). I could have just restarted the motor and the boat would have resumed its journey, but I was looking at the problem in the wrong way and the launch was a failure (see this post). Since then, I have been hard at work programming some additional functions into the boat to automatically account for a decoupling event, as well as some other nifty features.
LoCARB waiting to be loaded onto Bare Bones
New software features:
- Normalizing Underwater Throttle System or N.U.T.S.
- Satellite control to handle N.U.T.S.
- Manual control of throttle via satellite
- Replaced some stats sent via satellite message
Normalizing Underwater Throttle System or N.U.T.S.
When the battery is fully charged, yet still being charged at 14.5 – 15 volts by the charge controller (happens when the motor is consuming current despite the battery being at float voltage), that higher voltage is also powering the motor. This effectively bumps my motor RPM enough that any harsh cavitation or object which happens to come into contact with the propeller will effectively decouple the motor from the propeller. I knew that the increased RPM would be an effect from the increase of voltage, but I never encountered conditions which caused it to slip (that’s what I get for testing in a protected lake). I’m just thankful I got a second chance to fix the problem before the boat was too far away. Because of the dynamic environment LoCARB will operate, I needed a way to adjust the throttle according to the varying charge and environmental conditions which it encountered – Enter the Normalizing Underwater Throttle System, or N.U.T.S.
N.U.T.S. too hot
N.U.T.S. is essentially an automatic throttle management system with two nifty features. The first feature will detect for a slip condition (when the coupling slips and motor runs at an RPM of greater than 1800), and once that condition is met, will turn off the motor and allow the coupling to re-sync before starting it again. This is allowed to happen three times before the system will lower the throttle speed. Each iteration of three slip detection’s will continue to lower the throttle setting until the minimum allowable throttle speed is met.
N.U.T.S. too cold
N.U.T.S. also works the other way, by testing for non-slip conditions. Every minute, the system will log if the motor experiences any slip conditions. If it does not detect any decoupling events after 40 minutes, N.U.T.S. will deem the throttle and conditions stable to increase the throttle to the next fastest setting.
N.U.T.S. just right
N.U.T.S. will constantly monitor RPM to dynamically adjust the throttle faster or slower adapting to fluctuations in voltage and environment.
The only time it will probably fail to function correctly is if the propeller blades break off. In that case, there’s nothing that can really be done anyways except watch it drift to Antarctica. Then I guess N.U.T.S. will be permanently cold heh heh.
LoCARB’s N.U.T.S. isn’t perfect however, it requires 3 decoupling events (3 minutes of no thrust) to lower its throttle and takes 40 minutes to increase its throttle. It’s not perfect, but it should show its usefulness around twilight and night-time hours when the sun begins to set and when the battery is not receiving a charge. The decrease in voltage will correspond with a decrease in motor RPM, which in turn will slow the boat down. If LoCARB’s N.U.T.S. compensates and increases the throttle, it should theoretically match the motor RPM with maximum thrust level the propeller can handle despite the lowered voltage. Whether or not this is detrimental to the battery state of charge will need to be determined.
Cant Launch without a shameless selfie
Satellite control to disable or enable N.U.T.S.
There are a few conditions where N.U.T.S. needs to be handled manually, such as when physical damage occurs changing the range of RPM the motor experiences (such as a propeller blade breaks off, or the prop shaft is bent somehow). In this event, I can disable N.U.T.S. via satellite command.
Manual control of throttle via satellite
In the event N.U.T.S. gets confused, and doesn’t work as planned, Ill be able to turn it off and force a throttle setting for diagnostics and/or desired power level conditions.
Replaced some stats sent via satellite message
I also took the time to replace the speed and battery capacity readings which were sent by the boat with two useful ones as the speed reading wasn’t actually working correctly. I am now able to see how many magnetic decouplings have occurred and what throttle setting the motor is currently running at. This data is far more useful than what I had before, and will give me an idea of what kind of operating conditions the boat is experiencing.
The second launch
With the second launch of LoCARB, I honestly hoped to never see the boat again. But I had never in my wildest dreams believed it would come to an end so quickly. The markers circled in blue were the first 6 updates from the launch. The first update was at the top left corner, with north being the top of the image, and south being the bottom of the image. If you saw the first launch, you would realize that the boat is actually going the wrong way…its heading south east instead of west towards Hawaii. There are a couple of reasons I believe this is so.
If you notice the first 4 way-points, they are all coupled together. I believe the boat is trying to maintain its position at the home location. The waves and weather were a bit rougher this time than in our first launch. I believe that when initializing the autopilot on the boat, the compass and other sensor initializations were thrown off because of the large rocking motion compared to the first launch. The larger waves also seem to throw the sensors out of bounds which seems to confuse the autopilot and kick it out of the autonomous mode which is required to navigate to its desired position. This is so despite having disabled all fail-safes which would cause this. All this added into one big mess of an autopilot.
I believe just after the 4th update marker, the boat gets snagged by some seaweed which produces enough resistance to overcome any propulsion and any course correction…Its at the 5th marker that you see it following the drift pattern which it will then follow till its demise. It starts to head towards the southeast reef. Stats from the first five markers show everything working pretty normally, and N.U.T.S was doing it’s job as the throttle was now at it’s max speed without any decoupling events.
At this point, I was not as concerned as I believed a simple reboot of both the computers would fix the navigation problem, at least temporarily.
The marker circled in yellow highlights where the boat propeller finally becomes fouled with whatever sort of kelp/seaweed was wrapped around the front of the boat (I believe), which mucked up the propeller and kept it from re-initializing. This is unfortunately the exact same time I sent a message to do a complete reset of both the Arduino and autopilot. This would have effectively mimicked a physical power cycle of both computers to start anew (which I hoped would have reset the compass calibration and navigation). It was a little too late however, as the propeller had already become fouled.
If you notice, there are now 11 magnetic decoupling events and the throttle setting is now 1 (the lowest speed N.U.T.S. can set), which is correct. You will also see that the # of motor resets is now 2. This means the motor is unable to spin the propeller on re-initialization. This is strange, being that for stalls AND decoupling to occur, it would need to be encountering an environment which allows the motor to spin, but then abruptly stop, and also be experiencing a force which stops the motor from moving during motor initialization. This can be explained by thinking about each update as time spanned over 30 minutes (the update interval). The boat probably drifted into a kelp patch and hit a few things or kelp wrapped itself around the front of the boat and eventually wrapped around to get to the propeller…whatever the case, once the prop was seized, it stopped any further forward movement and effectively rendered any rudder movement useless for steering. LoCARB then begins to drift towards the shore with no propulsion.
The propeller fouling continues and I try to reboot the Arduino and autopilot at the marker before the large gap…I chose to do this as the autopilot was exiting out of autonomous navigation mode and not reporting its GPS coordinates in a precise manner. When it finally rebooted, its location was right next to the Ritz Carlton in HMB.
We then drove to the area closest to the red marker and after a 15 minute search from the top of the cliffs, we finally spotted LoCARB. I noticed it had not sent any status updates for about an hour…and upon closer inspection I realized why. It was missing its motor pod which housed the battery and motor. It was officially dead.
Strangely, I was not upset by the idea that LoCARB was laying castrated on the beach and now done for. It was a great project, but I was growing weary of its demands. Just for kicks, say I did get the boat back in good condition and needed to fix the autopilot, my first thought would be to replace the compass with a more reliable tilt compensated external module, and also add a line of code to set the flight mode switch to auto every 30 to 60 seconds or so. These changes should stabilize the autopilot and ensure the pixhawk would remain in the auto mode required for navigation. I would also have initialized the pixhawk on land and powered on the Arduino at sea instead, minimizing any strange startup calibration issues for the autopilot.
As you can see, a project like this could potentially go on for quite a while.
The end of the project
Ill leave the tracker of LoCARB’s last journey intact for any who wish to follow along on its very short voyage. Its actually pretty tragic if I think about it. I don’t know how else to characterize it anyway.
I’ve spent 1 year and 5 months constantly thinking about the ins and outs of an autonomous boat project from hull design to programming its brains. Its taught me countless lessons which are sure to come in handy in my future tinkerings, so in that regard i’m grateful. It’s pushed me to learn about so many fields where I had no experience, and stretched me in ways I’ve really come to appreciate. It’s bittersweet, but I think i’m going to enjoy the peace from not having to think about the boat other than recovering what remains of it for use in other projects (MedCARB? HA!).
Some honorable mentions
Credit is due where credit is due:
I wanted to thank Damon the person behind the Seacharger project and founder of Blue Trail Engineering. Despite being someone who I’ve never met in person, Damon has provided me tons of encouragement and support throughout this entire process. In fact, when I was staring at the screen stressing about the boat going off course during the first launch, I received an email from him asking what went wrong! It was like he was right there with me! Without him I would have felt I was at it all alone, and for a project this complex, that’s a really sucky feeling to have.
Kerry (and friends!)
Many thanks go to Kerry and his boat Bare Bones for taking us out on many more occasions than I would have thought was necessary. From recon of the launch area the day after we first met, to the 3 hour search and rescue party mission with his awesome friends the same day after we launched it, he cheerfully accepted the task and not once asked for any compensation. Couldn’t have done it without you man!
Gary a.k.a “Gary the machinist”
I wanted to thank “Gary the machinist” as he is now called, for helping me get a suitable part machined with super quick turnaround! Not only did he help me gain a new appreciation for machinists, but also for helping me keep as close to budget as much as possible. Really appreciate you!
Last but definitely not least, I wanted to thank my wife who has always “supported” this project, albeit sometimes with a smirk on her face. Shes always let me work on LoCARB the times I needed to, and willingly kept the kids busy so I could do it. You’re the best wife in the world. Love you lots.
I consider this project completed. Thanks for following along!