So, this is about a month after the fact because my blogging work ethic sucks.
Short version: On Oct 18, we put the Hackerboat in the water, drove it around a bit on a tether, and then recovered it. It didn’t leak a drop and the motor ran beautifully. Therefore, we have a solid mechanical and electrical platform but we need to rework the software.
Lots of people showed up to help, which was awesome! Jeremy, Alex, Ratha, Wim, Myles, Volty, Lexie, Mark, Alicia, Ben, Katherine, and Peter Novotnak all showed up to help.
Prior to this launch, we added a ballast bulb to the bottom of the boat and stripped off the solar panels and frame. This, along with proper battery anchoring, appears to have completely solved our previous stability issues.
We started the day by finally squashing an intermittent power bug. The status lights were powered from the 5V rail on the Arduino. This was fine when USB power was plugged into the Arduino, which is the usual condition when testing. When it was powered exclusively through the Vin pin, the extra current draw from the lights was enough to brown out the 5V rail some of the time but not always. Once we figured that out, we switched it over to the high current 5V supply we have to power the Beaglebone and all is well. In future revisions of the electronics, the status lights will have their own power circuit.
Our onboard GPS was not responding. We suspect this is due to a wiring problem, but since this was a manual-only trip, we put that on the squawk list.
With the power bug squashed, we loaded up and headed out to the boat launch. Upon arrival, Alex hauled the tether (500 feet of floating line) out to the end of the dock and tied it off to the dock. We discovered that we needed a power strip (one inverter, two AC loads), so Volty and Mark headed up to his place to get one. We unloaded the boat and once we had the boat down on the ground, we installed the ballast bulb and batteries. Once the power strip arrived, we did a comms check. We had to power cycle it several times to get everything to come up, but once it did, we rolled the boat down to the water on the dollies. The dollies worked fine on smooth pavement, but once we reached the rougher part of the ramp, we had to pick the boat up and carry it the last twenty feet or so. Using a pair of 2x4s made it much easier to carry than last time we did this. We will be adding some proper grab ropes before the next outing.
Ratha brought a recently repaired drysuit along to test, so she got in the water with the boat and was a huge help in keeping it under control. We got the motor deployed and moved the boat out to the end of the dock. We ran through the arming sequence and got ready to send it out and… no throttle response. So we disarmed it, restarted QGroundControl, cast some runes in its general vicinity, etc, etc… and the second time we had throttle control. The boat took off at a very solid clip (estimated 5-6 knots; we need to get the velocity profile off the the tracker before we know for sure).
We had some issues with visual steering control. The boat itself attempts to steer a magnetic course with a PID loop, and holding down the left or right button on the control pad shifts that course left or right at a pre-determined rate. We didn’t have enough feedback to make this work well for control, so the boat ended up wandering a bunch. It also lacks any steering control whatsoever when the prop is not turning… I suspect this caused the integral term in the steering PID hitting the stops when the prop is not turning and it can’t do anything. In the future, I will freeze the loop when the throttle setting is zero. More steering authority would also be nice, so I will be swapping the gears on the steering servo.
You can check out our drunkard’s walk on Google Maps.
The boat wandered out to the point where the concrete structure on the north side of the boat ramp blocked the signal, and we hauled it back to shore with the tether. We pulled it out of the water, carried it back to the truck, and stowed everything.
Despite its steering issues, the boat floated very level and handled the small waves from boat wakes with no problems. The inside of the boat was bone dry, so we are solid there. We will probably need to add more ballast for next time, however. I suspect that a big part of the improved stability was also improved battery mounting.
During the testing and launch, Jeremy noted that the network seemed to occasionally drop for a second or two every so often, confusing both QGroundControl and us. This will require more work to isolate and diagnose.
Also, QGroundControl crashed at the end and dumped all of our motor current data. Jeremy and I are both entirely done with dealing with it. Our plan for the future is to replace QGroundControl with a webapp served from the Beaglebone and use REST for transmitting commands to the boat. This does not seem to be something anyone else has done with mobile robots, so I expect we’ll be writing more about it if it works. You can check out our design documents for it in the restful-refactor branch of our project Github repository.
Since the weather in Seattle is now too cold and rainy for launching, we’ve got a few months for refactoring. We’re aiming for a triumphant return to Toorcamp 2016 at Doe Bay in June.