top of page

Mechanical-Software Integration Difficulties

We had a number of difficulties with integration. As these issues became apparent, we began to use standards for communication between different processing units. These standards allowed the software subteam to develop txt files independently of the hardware team that described how the system should move, while the mechanical team could test the system's ability to execute txt files independent of the software subteam. There were some challenges, such as the fact that software required the camera mount constructed before they knew what the images were actually going to look like. There were also some issues with unit conversions. The standards were slightly ambiguous, and as a result, the two subteams expected the txt files to be output in different units.

Final Results

The machine is capable of accurately moving puzzle pieces with four degrees of freedom. The software is capable of taking an image, extracting edges, running a solver to find potential matches, and exporting a list of coordinates to move. We had some difficulty with the accuracy of calibrating the conversion between pixels and steps, as well as the computational time required to solve larger puzzles. There was also some difficulty with the ambiguity of puzzle pieces. For larger puzzles, there would be multiple pieces that might match any given edge, and as a result multi-hundred piece puzzles would often find incorrect solutions. Because of this, no successful test on a full jigsaw puzzle was ever preformed. Proof of concept was completed using first a pair of black square pieces, and then tests were run on a small handful of jigsaw pieces.

The Future

We believe the system has the potential to be scaled up to run on a full jigsaw puzzle. the algorithm used to extract edges rounds the edges slightly to help the solver. This rounding accounts for much of the piece ambiguity. By better tuning the parameters for edge rounding, or finding a different algorithm for filtering noise and softening corners, we can reduce the likelihood of an incorrect solution from the solver. A next iteration of the code could be threaded to better utilize the available processing power, and the potential of running it on a super computer has been considered. This would help to reduce the unreasonable computation time. Future modifications to the mechanical system will include more powerful motors on the short axis, a more rigid frame, and a better method for aligning the axis.

Reflections

One thing that we have all learned is that even when we all have a clear idea of what our various tasks are, we can still have holes in integration. Often, this was the result of two people being unclear of when one task ended and another began. For instance, when writing code, we found that one person had written code that did one function and put out one type of output while another person had written code that did the next function but believed that wasn’t the type of input being handed to them. This sort of problem gave all of us an appreciation for higher levels of communication. The most important thing that we all learned is that integration has to be a very high priority.

bottom of page