Choosing our Sensors

While designing the second version of RoboGoby we needed to decide what sensors were necessary to have incorporated into the basic design. If you have been following our blog you'll remember when we posted this in October 2013. That post had ideas for sensor we had gotten from different research institutions. After spending the past year and a half working on the sub, we created an updated list of sensors we want to have incorporated on the most basic version of RoboGoby. We decide that these environmental sensors are key to a well functioning submersible and are necessary if we want to have a well working product.

The updated list of sensors we chose is below. There is also a short description with each saying why it is important for our design. While choosing the new sensors we also made sure that they all interface with an I2C bus. This allows us to communicate with multiple different sensors while only using a minimal amount of wiring and only a single micro-controller. 

Breakout board w/ MS5803
We chose to use this sensor because it is waterproof and it can withstand up to 14 Bars of pressure, which is around 200 psi or 450 feet underwater. It allows us to determine the depth of the submersible.

We chose to use current sensors on this version of RoboGoby because we wanted the ability to have current control over the thrusters. As are unable to accurately measure the speed of the ROV in all directions, we will be using current to limit the thrust on each of the motors. This will make it easier to implement autonomous capabilities in the submersible. We are using the ADC in order to use multiple analog current sensors without having to use more analog pins. 

This version of RoboGoby has a watertight compartment. Although this design is useful in many ways, we need to make sure that the compartment gets neither wet or too hot.

We chose to use a LIDAR instead of a ultrasonic sensor for ranging underwater. This sensor is very easy to integrate in an underwater environment and has an extremely large range. We will have to calibrate this for the reflectivity of water, but this sensor works for bathymetry, meaning it should also work for our purpose. Its had two advantages over a sonar sensor. The first is that it doesn't have a minimum range, which is important if we end up having to navigate without a camera or with limited vision. Second, it is easier to waterproof as we don't have to find a substance which provides waterproofing without having any sound dampening properties. 

This sensor is very similar to the Razor 9DOF IMU we used last year. The only difference between the two sensors is that this one doesn't have a micro-controller built in. Similar to last year, we will be using this sensor to get a better understanding of the submersible's position in the water. This will not only be useful for human drivers, but also useful in implementing autonomous station-keeping and driving. 


Choosing a Camera – Update

The search for a camera to use in our robot has been long and involved. Throughout the process, we have worked toward finding a camera that satisfied a basic set of requirements. Our camera needs to be capable of outputting high quality video, interfacing with C++ or Java through the Beaglebone black, and be capable of stereoscopic imaging. We believe we have finally found a camera that can satisfy all of those requirements: the DUO MLX.
This camera, while expensive, boasts an impressive array of features and capabilities. It stereoscopic and infrared, allowing it to judge depth in low light environments. It comes equipped with a small array of programmable infrared LEDs and an on-board 9-DOF freedom IMU, allowing it to sense its orientation with a high degree of accuracy. Finally, it comes with a SDK which, just recently, allows it to interface with ARM based micro-controllers like the Beaglebone - although access to this capability requires subscription to DUO's developer program. This SDK is compatible with C++ and C, as well as Java through the Java Native Interface. Another distinct advantage of this camera is its form factor. It is very small, being only 52mm long. This will allow us to fit many more design features into the front portion of the submersible.


Small Thrusters 2.0 – CAD Model

We recently finished the final CAD model for the small thrusters we're using in our submersible. Four of these thrusters, two vertical and two horizontal, helps our submersible attain 4 of our submersibles 5 degrees of freedom.

The design of the small thrusters was focused around designs that were both easy to build and easy to install. We decided to work off of last years design, keeping the same idea, but tweaking it to fit in the new form factor of the sub. Each thruster assembly has only 5 total parts (excluding the motor and prop) making it an easy part to build and assemble. An image of the finished thruster is below:

Thruster Assembly

This design consists of four main parts: the thruster grill, motor mount, PVC mount, and the PVC piping. In the image above the PVC is transparent, the grills are black and both the motor and PVC mounts are green. The thruster is assembled by sliding the PVC mount into the three slots cut in the PVC pipe and then epoxying it place. The motor and motor mount are then able to slide freely into the six slots cut on the opposite side of the PVC pipe. This side is not epoxied and allows us to easily remove the motor by removing three bolts on either side of the thruster and sliding out the PVC pipe, PCV mount, and motor mount all together.

The bolts we are using are 16mm long, 4M bolts that are threaded into tapped Delrin plastic (green). These bolts mostly have to deal with torque and therefore are suitable for the size and power of motor and prop combination we're using. This is also nice because it means the thruster is mounted directly to the aluminum body and the PVC acts only to direct the flow of water. Three of the parts are pictured below:

Thruster Mount
PVC Mount

PVC Pipe

Finally we created the grill for our thrusters. The main purpose of these pieces are to keep any large pieces of material from interfering with the performance of our thrusters. They do, however, also help with the aesthetics of the sub. By using these pieces to slide into the holes cut in the aluminum body we are able to keep a relatively smooth form factor which is important in reducing the drag of the sub. There are also three bolts on either side in order to mount the thruster firmly in the sub.


Both the vertical and horizontal thrusters will be mounted close together and as far from the center of the sub as possible. This gives us finer control over the submersible due to mechanical advantage. An image of the two thrusters mounted in the aluminum body is below:

Mounted Thrusters


Rear Thruster 2.0 – CAD Model

We recently finished the CAD model for our large rear thruster. The thruster from our first version actually worked pretty well, so we kept many of the elements from it and changed only what was necessary.

We started by coming up with a cone to guide water-flow from the rear edge of the submersible to the propeller. The first idea was to have the end near the submersible be square (to make it look like a continuous piece) and have only the end near the propeller be a circle.
Square to Circle Thruster Cone

This shape had two advantages over a circle to circle cone. First, it is more streamline with the rest of the submersible - this helps some with the water flow but is mostly for visual appeal. Second, it would allow us to use the flat part of the surface to bolt fins onto for the thruster nozzle. We would probably have used this design if it did not require remaking the nozzle.

Instead we switched to a circle to circle cone so that we could use the same nozzle as last year.

Circle to Circle Thruster Cone

By using a circular cone and last years nozzle we are able to cut down on the number of pieces we need. The fins that connect the cone to the nozzle are 1/8" plastic and will be epoxied into the grooves that can be found in each piece. While the cone itself is circular we did leave a square part on the larger end allowing for an easy connection with the square submersible.

Cone and Nozzle

Once we had the external portion completed we moved on to the inner parts. First cutting a hole for the shaft and motor so that they can be set into the rear cone and not take any space from the submersible. We then created a mounting bracket for the large thruster motor which would suspend it inside of the thruster cone.

Thruster Cutout
Motor and Bracket

When all of the pieces are put together the result is a pretty weird looking, but highly functional piece of our submersible. For information about the coloring see the general CAD post.


RoboGoby II – General CAD

After deciding to continue with Project RoboGoby this summer we decided that having an in-depth CAD, or Computer Aided Design, of the submersible was the best way to plan Version II.  This post, which is about the initial CAD of sub,  allowed us to flush out all of our ideas and not worry about specifics.  This gives us the freedom of designing the submersible how we want to and then thinking more about specifics later on.  The second round of CAD (which will be done for each of the major pieces) will focus on the specifics before machining parts. 

As part of the initial design phase we broke the submersible up into three distinct pieces — the front section, the middle, and the rear section. Each of the sections are important to the overall design yet still describe the general ideas for the finished sub. Below each of the sections are quickly explained and an images of each section is provided.

We also used the coloring scheme in CAD to color different parts in our design to easily tell what material each piece is going to be made out of. This key will help you in understanding all of our CAD designs for RoboGoby II. 

Printed PLA ----------> Black
Delrin -----------------> Green
PVC -------------------> White
Aluminum--------------> Grey
Polyethylene -----------> Pink
Tapped Holes --------> Yellow
Paint----------------------> Red


The front section houses our camera, lights, sensors, and two of the side thrusters. This section was therefore one of the more complicated of the sections to design as it includes many different components. Below is a transparent image of the front section of the submersible. You can see the horizontal and vertical thrusters which are placed behind the variable pitch camera and lighting system.

Front Section


The middle section of the submersible houses most of our electronics and all of our electronic controllers. This section has been designed to be waterproof in pressure exceeding 150  PSI. Much of the complicated work in this section will be done when mounting our electronics and connectors on the inside. For now the main part of this section is the double o-ring plug you can see in the transparent part of the image below. This plug ensures that everything stays waterproofed while still giving is easy access to the electronics inside.

Middle Section


The rear section is almost completely thrusters (in the future it will have a power connector). Currently it contains side thrusters symmetric to those in the front (vertical and horizontal), but also has our large rear thruster, cone, and nozzle which are extremely important to the submersible. 

Rear Section

Stay tuned for future posts with more detail explanations about the design of the components of each of the sections. 


RoboGoby Version 1 and the Plan for Version 2

It has been quite a summer for Project RoboGoby. Near the deadline for most of the Limbeck crew's college departures, we held an official launch for the first generation of the RoboGoby submersible. The design outperformed our hopes for the alpha version, bringing a favorable close to the first chapter of the Limbeck Engineering story. Below is some footage of the launch event, edited together from the various videos taken:

Full Promotion:

Just Footage of the Robot at Work

However, Project RoboGoby is not over. This year, the project will be moved to Baxter Academy in Portland, where Limbeck Engineering will work to both create a production-ready beta type of the robot and to teach and manage a group of students at Baxter as they help work on the project. Of course, this means that Limbeck Engineering will again be reaching into their own pockets and out into the community for support.

On Friday, Josef - the member of our team still at Freeport High School - attended the Envision Maine Summit in Freeport. The summit's purpose was to help build an innovative and entrepreneurial community in Maine. We at Limbeck Engineering would like to thank everyone at the summit for showing enormous support for our project. Specifically, we would like to thank Coffee by Design for their generous support and sponsorship in kicking off the fundraising for gen 2 of RoboGoby. Here is a video of our Josef's speech at the event:


In the coming months, we will continue to update the blog on our progress with the students at Baxter Academy - though we won't begin working with the students until their second trimester starts. In the meantime, we will begin building a business plan for the second phase of the project, including our technical goals, our financial requirements and our fundraising plans.


Camera and Embedded Linux Pots (and shelves)

For the last could of days we have been working on fitting the LEDs, their heat-sinks, and all three cameras into the dome port. This was a very tedious process but it is now complete.

In the process of fitting the cameras into the front of the sub we had to take into account that they would be in boxes that we 3D print. The boxes will hold the cameras' control boards and will then be filled with epoxy. Putting them in epoxy makes them waterproof and thus allows us to flood the whole submersible. We created a box that had three separate compartments, two for the Raspberry Pi cameras and one for the webcam. On the back of the box there is a mount for the rod on the servo to attach to. It is impossible for this part to be printed in one piece so we broke it up into three separate pieces for printing. An image of the final potted camera setup is below:

We then moved on to printing the boxes for the embedded Linux microcomputers. We have two boxes, two for our Raspberry Pi's and one for the BeagleBone Black. Both containers are going to be filled with thermally conductive epoxy in order to keep out electronics cool. We decided to place the BeagleBone/shield combination face-up in the container while we put Raspberry Pi's upside down. This made the 3D printing a lot easier although it did add to the amount of epoxy we needed to use. An image of all three potted computers is below:

After creating the boxes we also needed to make a way to hold them in place. In the end we created three shelves we put the two RPi's on the top and bottom of the middle section and put the BeagleBone in the middle of the front section. We are also going to put the IMU on top of the BeagleBone so it doesn't need its own space.


BeagleBone Capes

After choosing the sensors and getting the software complete, we needed to create the sensor Capes for both BeagleBone Blacks (one on the float and one in the sub). For the BeagleBone Black on the float we attached the connectors for the stepper motors, the GPS module, a compass, a temperature probe, and a battery measurement circuit. The actual making of this cape took an unexpectedly long time, although it turned out very nicely:

The BeagleBone on the float has to be supplied with 5v. To do this we decided to use voltage dividers. This task took longer than expected as dropping the 25.6v from the battery had a few different issues. Originally we were going to use the LM317. This variable voltage regulator should have given us a constant voltage supply by choosing the right resistors (based on the formula). Sadly as the voltage supply to the LM317 dropped, so did the voltage output.

We then moved on and chose to use the simple UA7805 5v regulator. This chip can talk up to 24v and regulate it to 5v. As the rating on the 7805 was only 24v we decided to first step own the voltage using the LM317s we already had and then using the 7805 to get the exact 5v we required. Our float also needed a second 5v 1A power supply so we decided to create two of these circuits in parallel (as the chips can only handle a certain amperage). An image of the final regulator is below:

The second BeagleBone Cape we made is for the sub. This Cape is also fairly simple. It contains the MOSFET controllers for varying our LED brightness, the IMU, the depth sensors, the temperature sensor, and a few extra pin-outs for any future sensors. An image of the Cape for the submersible is below:


Choosing a Camera

For the last few week we have been trying to make a final decision about what will be in the dome of the submersible, especially which cameras we will use. Originally we just had two pi cameras on a rod so they could be tilted up and down.

We then moved on to have the LEDs inside the submersible, putting them in between the two cameras. This worked well while we were planning on a 6" diameter submersible as the pi cameras were small enough, but once we changed to a 4" it didn't fit well.

Vertical LEDs between cameras

Thirdly we decided to have either two pi camera's or two webcams and no LEDs. The pi cameras fit more easily but didn't stream as nicely, so we thought about using webcams. Because most webcams are fairly long in one dimension they were going to have to stand up and would take most of the room. We then decided to buy a nice webcam and see how it fit. When it arrived we found that it was much bigger than the other (being about 3.25" long).

LED modules with two Pi-Cameras

With the new cameras and the decision to try and move the LEDs back inside the dome with the cameras we changed our plan entirely. We decided to have one nice webcam for streaming video, and having two pi cameras on board to do stereoscopic vision.

3 Cameras with LED strip

Another factor in choosing our cameras has been the video quality. After testing various different streaming methods (all can be found here) we settled on using a combination of cameras. For the live video feed we settled on using MJPG-Streamer on the BeagleBone with Logitech's C920. For the stereoscopic vision we decided to use two Raspi-Cameras. Both can be seen in the CAD images above (RPi are the small square ones, the C920 is the long one). While driving, the user will only be using the C920. The RPi cameras will only be used to take images and record video (and are specifically placed where they are for stereoscopic vision. An image of the C920 out of it's case is below:

MJPG-Streamer was chosen out of the various different streaming methods (GStreamer, Motion, FFMPEG, MPlayer w/ Netcat) because of its speed and compatibility. Not only can it handle 30 fps, but the stream can be picked up by OpenCV running on the OCU.

The last step with the cameras was potting them. We 3-D printed boxes for the cameras to fit inside of, as well as a place for a rod to go through the system so it could be tilted. The picture below is of the cameras epoxied into their boxes, and below that is a CAD model of the entire system in place.


Finishing the LEDs

After spending many hours designing a various different heat-sinks for the LEDs, we settled on putting the LEDs on the outside of the acrylic dome to minimize the reflection and interference with our cameras. Space has also been another huge issue for our LED setup. To minimize the space used by these LEDs, we have decided to put them into a 12mm pipe (10mm ID) attached to a 10mm rod.

The LEDs will be glued onto a copper strip and then onto a 10mm aluminum rod. This unit will then slide into the larger 12mm rod. The lens will be glued into the end of the pipe and the wires will come our via slots in the aluminum piping.

After routing out the aluminum pieces (shown below) we glued the LEDs to the copper strips, soldered on the power and ground wires, and covered the wire leads in order to ensure that electrical jumping did not occur. We then attached the copper to a 10mm rod and were done building the heat-sinks!

In order to have the lights on outside of the water and at variable brightnesses in the water we are using pulse width modulation (PWM) to control them. By wiring the LEDs to our 12v power supply on the sub and then using a MOSFET (metal-oxide-semiconductor field-effect transistor) we were able to translate the variable pulses to variable brightness on the LED.  The MOSFET can be attached by sending DATA to the gate pin, attaching the GROUND of your LED to the drain pin, and finally attaching the GROUND of your power source to the source pin.

After wiring up the MOSFET you can easily control is using the RPi.GPIO library on your Raspberry Pi. Read this post to get a handle on the basic concepts of PWM control. By simply sending varied duty cycles to the gate pin, you will get a variable brightness LED. Below is a small clip of the LED pulsing using the MOSFET and RPi.GPIO: