After some non-robot delays (got to pay the bills), intellectual work resumes. Here is a top-level state machine for Nematon, showing the various modes of operation. Driving around occurs during “Surface” mode, while diving operations happen during “Dive” mode. “Remote” mode is intended for real-time control, akin to an RC car or airplane.
More software planning updates to come…
PDF Version: nematon-state-machine-july2015
After some study, a tough decision, filling out of forms, and payment of an application fee, the Federal Communications Commission (FCC) has approved a Ship Radio Station License, Recreational or Voluntarily-Equipped (SA) for Poolbot. Poolbot now has an identifiably-American MMSI (see below) and a callsign: WDH7858.
This was tricky. Poolbot is intended to eventually operate internationally, and US treaties apparently require a special radio license for such craft. However, a lot of the laws and regulations are for “vessels”, which carry passengers or cargo, and are usually of a certain length or gross tonnage far larger than Poolbot will ever get.
A letter was filed with the FCC stating that Poolbot is a “drone”, explaining that passengers and cargo are impossible, and specifying that no search-and-rescue craft would ever be required if Poolbot were to get into trouble.
No questions asked, they took the money and issued the license. Poolbot is now government classified as a “Pleasure Ship”, specifically a “Research or Survey Ship”
What remains unknown is whether Poolbot is operating legally if the Restricted Radiotelephone Operator (required for the radio license) is physically miles away from the craft. The law really hasn’t caught up to the drone age yet.
Why do any of this? To get an MMSI number for an AIS unit – in essence, a unique ID that would allow live tracking of Poolbot via the web (see marinetraffic.com or vesseltracker.com) or using appropriate equipment on other ships and Vessel Traffic Services. This lets Poolbot be “seen” in waterways and prevents it from becoming a hazard to navigation.
One last point: the FCC form requires the craft in question to have either a registration number from the US Coast Guard or the state of California… or a name. US Coast Guard and California state regulations still only apply to cargo- and passenger-carrying vessels “used or capable of being used as a means of transportation on water” or engaged in fishing or towing operations. So Poolbot now has a new name:
An explanation of the name will be the subject for the next post. Thanks for your patience.
Congratulations to the lads at Blue Robotics, who met their Kickstarter funding goal… twice over, with a little help from Poolbot. This means that 3 T100 thrusters, with electronic speed controllers (ESCs), will arrive here within 2-3 months.
With the thrusters being an integral part of the Mk III design, it’s time to consider the actual total costs of Poolbot’s makeover. Presenting the bill of materials (BOM)…
As seen below, the low-cost MIT SeaPerch design is now firmly in the rear-view mirror. Fortunately, many of these items were already on-hand. The costs of the larger PVC and sealing the solar panels against water are not shown.
Poolbot is evolving. The original prototype successfully floated and dove, while the addition of the ComPod credibly turned it into Poolbot Mk II.
Mk III is now taking shape.
The technical details for the Mk III will be posted soon. However, the basics design involves the same core electronics as before plus new physical features:
- separate compartments for the thruster batteries
- solar panel mounts
- new thrusters
- solid frame for the electronics
- hollow posts for communications antennas and the GPS module
The last two can be seen below. Thanks to Open Beam, some standoffs and a sheet of acrylic, the electronics will have a solid mounting and cleaner wiring. The Mega and two separate dummy shields should suffice to connect everything.
Using a blank perfboard, PVC, epoxy, a plastic I-beam, and a Dremel, a pretty smart-looking GPS post has taken shape. The SUP 500 was removed from its old shield and soldered directly, with backup battery, to the perfboard. Tested with SkyTraq, it works like a champ.
The cross-section of the carrier should look similar to the diagram below. Note that the critical dimensions are:
- the distance from the underside of the main hull to the waterline: this prevents Poolbot from dragging in the water
- the width between the pontoons at the water line: this ensures enough room for Poolbot and the “lifting claw”
- the main hull’s height must be sufficient to allow for batteries and control electronics
- the width of the main hull should be sufficient for another solar panel
The actual length of the carrier will be somewhat less, scaled, then its experimental Navy cousin, making It squarish when in the water.
The chief problems now:
- the lifting claw – how to get Poolbot out of the water and how to maneuver the two in close enough proximity to make this happen reliably
- how to charge Poolbot without physical, wired connections
- how to perform data exchange with Poolbot without physical, wired connections
Impractical. Inefficient. Just plain difficult.
A lot of these terms came to mind when staring at the current state of Poolbot, and imagining trying to get it to cross a body of water larger than… well, a pool. The most recent problems with getting long-range communications equipment mounted just compounded the negativity.
Then, an epiphany: why not have Poolbot carried by some other vehicle. It could be simply dropped into position by a surface “carrier”, which needn’t submerge. All the GPS, communications, solar charging, etc. equipment can be kept on the carrier, which would be more visible and more stable, with much more reliable communications.
Having seen recent stories on the late, engineer-lamented Lockheed-designed US Navy experimental ship, Sea Shadow (IX-529, torn up for scrap in 2012), using a SWATH design for the carrier makes good sense. Poolbot could be suspended under the main hull during surface transport, above the waterline.
This idea is brilliant. So brilliant, in fact, that a NATO research group at Italy’s University of Genoa outlined a highly similar design… in 2010.
Nevertheless, despite a total lack of originality, a SWATH-based carrier for Poolbot is the new plan. The NATO ASV design does not cover certain key details about deploying and recovering its AUV. Nor are charging and comms covered. To that end, here are a few specifics for Poolbot’s carrier:
- solar panels mounted to the top and sides
- “claw” under main hull for Poolbot, to keep AUV above the surface during transport
- GPS, XBee, cellular antennas on carrier hull
- at least one main-hull-mounted camera
- batteries in main hull body
- wireless communication (XBee) only with Poolbot – no wires for data!
- wireless charging, if possible, for Poolbot (inductive charging pad under claw?)
All of this should allow both Poolbot and the carrier to carry out operations autonomously, indefinitely, without having to be opened up for anything other than serious drydock maintenance. Even better, almost all of the original Poolbot plans and code can be kept unchanged.
Next post: dimensions and a mock-up…
Returning to the blog after a long stretch of work and personal exertion…
The UK’s Telegraph newspaper reports that Rutgers University has deployed a fleet of 16 autonomous underwater vehicles for ocean mapping.
Technical details are sketchy in the article (what exactly are “sustainable optic sensors”?), but the use of Iridium satellite communications is confirmation that it’s a viable approach for long-range control.
After some weeks of hefty programming (and after being interrupted by having to return to a regular non-robot-related work schedule), a few successes can be noted:
- Poolbot’s control language now includes status reporting
- XBee signal strength is back to normal, after re-soldering the antenna to the right contacts this time
- A Python remote control is now working and can be used to actually drive the robot
- A motor calibration jig has been built to determine settings vs. actual speeds on each motor
Why calibrate the motors? Because Poolbot relies on libraries that set motor speed to a value between 0 and 255 (and Poolbot’s language sets that to a percentage), and “127” on the left motor may not give the same speed as “127” on any other motor. Waxy buildup and motor variations make the speeds hard to predict.
(the port size float has been removed above, to accommodate the calibration sensor)
The calibration jig simply combines a stopwatch function and a button with an interrupt-based counter. The interrupt is tripped by a somewhat expensive Omron reflective sensor. When the propeller passes in front of the sensor (with a white backing taped in-place), it trips and interrupt and adds to the counter. If the clock is running, RPM values are automatically calculated and displayed.
And the controller? It reports GPS location, signal strength (in dB), current Poolbot mode, and last command sent. Buttons set whether to enable a particular motor and the direction to use. Four sliders set the actual speed of each motor, from 0 to 100. All of this is handled through the XBee link, in real time. Put the ‘bot in the water, and you can drive it “digitally” until the signal strength goes to zero.
There are actually two controllers, as having sliders for the drive motors is pointless in the water (if the ‘bot makes it below the surface, GPS and XBee signals will be lost, which will translate into a lost robot).
All told, the project now features ~1000 lines of C code on Poolbot itself, plus ~300 in the Python remote. It’s more than likely these can be reduced by careful use of functions, but that can wait.
Next steps: water test, move to a larger central tube, add new ballast controls, and upgrade the XBees to a longer range using a real external antenna…
A depth sensor has arrived: a Measurement Specialties 5541C, which should be good to 14 bar (at least 450 feet of depth). It’s quite simple, featuring 8 solder points, of which only 6 are needed for normal operation.
It uses the Serial Peripheral Interface, though not by name (the documentation merely mentions a “three-wire interface”). However, a little research shows that removing the device select wire from standard 4-wire SPI gives you the same connections as the sensor uses. Like the camera (next post), the sensor operates with a lower supply voltage than the Arduino, so level-shifting is needed.
This should be relatively easy. Here’s the hard part:
Mounting it to a PCB with some sort of 6-pin connector is going to be a major challenge.