Yo Fish, We Pimped Your Tank


[Studio Diip] a machine vision company based in The Netherlands has created fish on wheels, a robotic car controlled by a goldfish. The idea of giving fish mobility on land is nothing new, but this definitely is a novel implementation. A Logitech 9X0 series camera captures overhead images of the fish tank. The images are then fed into a BeagleBoard XM, where they are processed. The image is thresholded, then a centroid of the fish-blob is determined. With the current and previous blob locations known, the BeagleBoard can determine the fish’s swim direction. It then and commands the chassis to drive accordingly.

The system appears to work pretty well on the video, however we’re not sure how much of the input is due to the fish swimming, and how much is due to the water sloshing and pushing the fish around. We definitely like the chrome rims and knobby tires on the fishes’ pimped out ride.  This could become a trend. Just make sure no animals or humans are hurt, and send your animal powered hacks to our tip line!

[Thanks Parker]

31 thoughts on “Yo Fish, We Pimped Your Tank

  1. Wonder what the fish actually sees? And how far can it see? Seems unlikely there’s enough info for the fish to connect the dots and understand it’s “steering” the boat. Wouldn’t be all that hard to test – some type of reward system for avoiding an obstacle, once the fish is trained, move the obstacle and see if it still avoids it.

  2. Suggestions for improvement:

    Anti-reflective coating inside the tank so that the vision system works better. When the fish near the edge, there are cases where it sees an entire fish moving in the opposite direction.

    Anti-splash mechanism. Something to absorb the movement of the water. Like a heavy bouy or a spring retained plate above the water (with air holes obviously) to provide some resistance. Or possibly even an enclosed, slightly pressurized tank with an aerator system. I suppose even a platform below it could absorb the movement of the water.

    Essentially you want the forces to vertical instead of against the walls in horizontal.

    And of course a reward/punishment system in order to train them. For punishment, you could fashion something to look like a predator approaching when obstacles are detected.

    1. A globe tank or wheel-shaped tank that can roll slightly independent of the frame might also absorb some of the sloshing or at least allow it to be transferred to right direction to either help propel or even add some electrical energy back into the system which could increase torque in the opposing direction to compensate for the sloshing.

    2. A Kalman filter can predict where the centre of mass will be from one acquired frame to the next. This allows you to follow the right blob.

      We do this with maggots. Under the right (wrong) illumination, the maggot’s reflection on the sides of the Petri dish is as big as the maggot itself. Not a problem with a Kalman filter, we can calculate the centre of mass for all the detected blobs and pick / follow the one closest to the predicted position.

      It’s a shame that Studio Diip didn’t give any details on the project. For instance, the segmentation they used to detect the fish looks really good.

        1. As justice099 suggested, KISS. Our method is to start the analysis from a good position. i.e. positioning the maggot in the centre of the dish rather than near one of the edges. Works reasonably well that way.

          You could also determine a region of interest (for example the bottom of your dish / tank) and mask out any blob outside the region.

          There are much more robust methods out there but our problem was fairly well constrained, so we had no need to look into anything more complicated than Kalman.


Leave a Reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

This site uses Akismet to reduce spam. Learn how your comment data is processed.