Autonomous Submarine Update

I just realized I do this about once a month. An interesting observation of my own inadvertent-behavior…

Name and “Logo”

I enlisted some help to pick out a cool name for the submarine and we decided on Guillemot (gill-a-mot) which is a family of seabird that dives underwater for fish1 Ha ha and of course since I’m starting work on the companion Android app, I had to make an Android icon (a.k.a. procrastinate from actually coding) which I think turned out pretty alright - it’s attached.

Android Open Accessory Bridge (AOAB)

I’ve finished the sub-project I mentioned last time which facilitates communication between an Android device and any regular PC using Android Open Accessory Protocol2 over USB. It’s pretty rudimentary but does what I need: launch a companion app on the device when told to from the PC, and close the companion app on the device when told to from the PC. While the connection is open both the companion app and PC can send messages up to 2^16-1 bytes in length. You can find this sub-project here.

Guillemot Sensor

I’ve started working on the companion app which will run on the Nexus 4 and communicate with the Raspberry Pi using AOAB. So far I’m just learning about which sensors are available and what everything means - there’s a lot to take in4

I’ve also been looking into how I want to marshal messages going over AOAB and right now am decided upon MessagePack5 Once I have sensor messages arriving on the RasPi using this format then I just need a simple ROS node there to receive them and re-publish the data as ROS messages. Later, additional messages for vision-related stuff will be really easy to add.

As a side note, I’m using Android Studio7 for this app and it’s a nice change from Eclipse. I especially liked adding MessagePack as a Gradle dependency and seeing everything Just Work(tm).

Acrylic Happenings

I’ve been able to plan out which shapes are needed inside the submarine to hold everything in place - even during barrel rolls. Basically there’s a “bottom half” that the batteries and phone sit in and a “top half” that fits over the top of all that and provides a lot of flat space for electronics. I got the pieces needed for this internal framing and threw in the two end caps needed for the pressure vessel to plan out a big cut on the laser cutter in Mountain View.

Then later I got a chance to look at the laser cutter and it’s not quite as large as I had wanted. It’s large enough for each individual cut but not everything at once as I was planning. I’ve attached my initial layout but will probably need to use two boards now that I’m aware of this limitation.

Misc

The reed switches showed up… I haven’t played with them at all yet but one of these days I’ll get bored of Android coding and do that.

Figured out what kind of O-ring to get - it’s a doozy - AS568-443 N70. Now the fun part is finding a vendor online that lets me buy less than 50 at a reasonable price. I’m thinking I only need three or so.

Those tri-state buffer ICs showed up! And then I learned about pull-up resistors6 so… I’m not going to use them now. Ah well.

I’ve completely given up on 3D printing propellers… once I figure out which direction the motors like to spin I’ll go looking online for some molded ones to buy.

Note: 2 images originally included in this post have been lost. Details here.

Comments:

  • Gabriel: Wow, sounds like you’re well on your way. Do you have a solidworks/sketchup rendering of the sub design? I’m excted to see what you’ve come up with. Are the top and bottom “halves” inside of a single pressurized hull? Or are they separate? I still worry that the raspi will have trouble doing vision along with all of the ROS overhead. Are you using a 512MB model or..?

    Exciting stuff. :)

  • Christopher: All I have are top/front/right projections in AutoCad. Ha ha I used to use AutoCad a lot back in the day so that was easier to put together…