Senior Project Report

The purpose of this post is to bring this project to natural stopping-point so that I can say "Yes, I did my senior project and it's actually pretty neat."  I guess it's important to mention before I begin that I do not intend to just forget about MARCO now and move on with my life, I've poured a great deal of effort and ingenuity into the system and I believe it has demonstrated some great potential, though I am not currently in the best position from an educational or financial perspective to develop it to the greatest extent. 

I am actually going to start this off with the bad news, as many of the things MARCO does well must be taken in context with the things it sucks at:

1: Color Recognition
Despite some of my best efforts, MARCO cannot reliably look at numbers in an array and say "Yep, that's the color I'm looking for."  MARCO struggles under even slightly variable lighting conditions to identify the colors of its targets, frequently resetting the course acq. process and adding seconds to the acquisition procedure.

This issue does not concern me greatly, since lighting environments change in the real world, and solutions to this problem exist.  I don't know them now, and the timetable of my project didn't allow me to research them, but I am certain I can tackle this problem fairly easily now that it's a blip on my radar.

The impact of this issue however is that coarse acq. is very picky about when it works or not, which cascades through the testing process, severely limiting the number of times I can test the other modules. 

2: LiDAR Imprecision
The LiDAR module is part of what allows this project to take a few shortcuts to identifying target range and attitude, but at short ranges (< 30-40 cm) it is a little bit jittery, which isn't great because the LiDAR data is most critical at close range and (due to a color recognition issue discussed in an earlier post) this particular experiment only worked very close to the target.

3: Theta Determination
Perhaps the most disappointing part of this project thus far has been that the system cannot determine the target's theta angle (refer to the last post for angle definitions) I have a number of suspects for the reason that this doesn't work, which range from bad math to LiDAR imprecision to calibration error, but whenever I get good acquisition results, theta always comes back as NaN.

This is not such a big deal, because theta is probably the easiest angle mathematically to determine, which makes debugging the issue relatively straightforward.  I plan on making it work, and I'm sure it will work at some point, but testing is already enough of a pain due to the issues discussed above so I'm leaving it as yet another issue for future me to hammer out.

4: The algorithms are still not quite optimized
Black acq. in particular is something I just had to throw together in just a few hours following the utter, humiliating failure of fine acq.  As such, it's not as good as it could be.  Fixing a few details of black acq. would make it faster and more accurate.

Now lets talk about the things MARCO does well:

1: MARCO is fast
When it works, Coarse acq. finds the targets in ~50ms, black acq. runs even faster on a Raspberry Pi 3B, in Python which is an interpreted language.  This is a huge part of what drove this experiment in the first place, as docking operations in the real world will need to deal with significant disturbances, and having a high attitude sampling rate is quintessential to responding to transient forces.

2: MARCO is both accurate and precise
Let me preface this by saying that the process for determining phi is very convoluted and difficult to follow.  I absolutely expected to run into trouble with phi and was dreading going back through the math to fix it.
That being said, MARCO has been able to identify target roll and phi correctly and to a very fine degree of precision.  This gives me hope that fixing theta determination will be easy, since finding theta is essentially just one more step after finding phi.  

3: MARCO can be reliable
If the color recognition issue is solved, MARCO's acquisitions will be faster and more accurate.  Once theta determination is fixed, MARCO will be able to output numerous high-precision attitude readings per second.

As of January 2018, the system has its problems, but they are problems that are well understood either by the image processing community or by me.  It has been interesting and a little bit exhausting to work through this, and I'm looking forward to shoving the whole rig into a shoebox for a while, but not for long.  Maybe I'll post here again when I get back into it, maybe not.  We'll see.

Comments

Popular posts from this blog

The Future of MARCO

Preliminary Results and higher-order error sources

A Working Filter Actuator