Project lab 11 - Wrap up & conclusion

Date: 19/06/2013
Duration of activity: 10:20-11:20 --> 1 hour
Group members participating: Ole Rasmussen and Kasper Føns

1. Goal

The goal of today's lab is to write a conclusion on the project.

2. Plan

Our plan is to go through each of our sub-components and then wrap up with a project conclusion.

3. Feeder

The Feeder is a subsystem we never completed. It was also the only system that was given a messy input, a lot of beams and/or axles in a pile, and its goal was to organize them such that only one was sent on at a time and even that beams should be positioned correctly for the BeamCounter to sense it. These are pretty harsh requirements.

It is also that last subsystem that would make our project really cool. We are therefore a little disappointed that we did not have time to complete it.

4. BeamCounter

The BeamCounter is a solid sub-component. Each time a beam passes (in the correct position with holes to the sides) it always correctly counts the number of holes in it. If we wanted to change something, it should be the conveyor belt, as it currently requires two motors to run because of high friction. We would like to use the Conveyor Belt Links instead. However, since we did not have belt links available and had to use tank threads, we are proud that we are able to handle beams of size two and three as well as the longer beams.

5. AxleSorter

We are also very happy about our AxleSorter. It might be susceptible to changes in battery power, but one can always have it hooked to a power adapter. It is a real hassle to sort axles manually since they are hard to distinguish from one another. The old trays had axles divided not only by length, but also by color. An extension would be also to incorporate a color sensor such that we could also sort by color.

6. Loader

The loader was the fastest subsystem to construct and code. It was simple. If we had more time we would like to incorporate the loader into the Sorter (BeamCounter and AxleSorter). The current bottleneck of our system is the sorter-loader system. One idea coult be to shorten the conveyor belt on the BeamCounter.

7. Distributor

We are very proud of the custom stalling system. It allows us to effectively reset our motor positions without using any external sensors, and thus simplifies both the software and the physical construction of the robot. We are also proud that we can, on-the-fly, change from sorting beams to axles or vice versa simply by exchanging the Lego tray underneath the distributor. Finally we are very happy about the speed of the distributor. It delivers its payload in a very fast and reliable manner.

8. Project Conclusion

We have used a lot of time (370.500 seconds or 102 hours and 55 minutes, not including the time it took to write the report) and calories on this project (See Figure 2). We are able to sort axles and beams as long as a human is feeding them in the correct pace and position. A photograph of the final system can be seen in Figure 1. The full system test with both beams and axles can be seen in the video below.


Figure 1: Complete system overview. The sorter NXT is to the right, in the middle is the loader and to the left is the distributor. In the top left corner is our unfinished feeder subsystem (can barely be seen).

If we had more time we would work on the feeder and optimize the sorter-loader part of our system such that we can sort without a human feeder and sort faster.

Let us restate our initial requirements here:
  1. It should sort at least two types of Lego pieces: axles and beams
  2. It should be easily extensible.
  3. It should be completely decentralized, only running on NXT bricks with no PCs involved.
Our first and third requirements are completely satisfied. However, the second requirement is not completely satisfied. The AxleSorter and BeamCounter have both been incorporated into a single sorter, which is fine, but they are directly connected to a loader, which can only handle very small and long items like beams and axles. If we were to sort gears for example, we could not use the loader or even the distributor, as the distributor cannot contain the large z48 gear. We were, however, able to independently develop the different sub-modules (Loader, AxleSorter, BeamCounter and Distributor), which was what made us able to complete the system in the given time.

Code is available on https://github.com/foens/LegoSorter

Figure 2 - Food goes in, Lego sorting system comes out. If only all projects were like this...