Posts

Showing posts from November, 2017

I've never seen a more beautiful line of code

Image
Remember when I said fine acq. was going to be easier to build than coarse acq.? That was a lie. Fine acq. is hands down the most challenging module of code I've ever written, and I have a feeling I'm going to have a hell of a time debugging this beast, which is why I'm saving that bit of fun for future-Jacob to do after Thanksgiving.  Fine acq. took a lot longer to develop than I anticipated, which is fine because ult. acq. was folded into it which opens up some space on my schedule. After fine acq. gets the thumbs-up, the image file no longer matters, which makes the work much easier and more predictable.  Attitude determination is next on my plate, which is the process by which I extract actual attitude readings from the results of fine acq., which if I remember correctly is the whole purpose of this system.  After that I will have officially done all the things I set out to do, and I may begin to experiment with computational optimization, though that functio...

Good News, Bad news, and More Good News

Moving into fine acquisition, I realized that I had to fix the broken component of Coarse acquisition so that I could reuse a bit of that algorithm in fine acquisition.  As a result, coarse acquisition now happens in around 100ms, with many runs coming in even faster. The bad news is that as distance from the target surface increases, the attached LEDs that are meant to sterilize any noisy light from the target surface have a weaker effect on the target, to the point where whites are coming in with far more color saturation than MARCO is expecting them.  I could set up auxiliary lights closer to the target, but that leaves a bad taste in my mouth: there will be no auxiliary lights in the field.   Still, this is just a proof of concept and if I need to set up some closer lights I will.  I am certain there are ways to vastly improve my color recognition database as well using Fourier Transforms and the like to characterize the lighting environment, but if i...

Coarse Acquisition

Image
As you may have (but probably haven't) read in the pages I wrote a few months ago, coarse acquisition is MARCO's first stab at identifying the target surface in its field of view.  The single purpose of coarse acq. is to find the colored targets on the target surface using input from the machine-learned color database.  With this information, MARCO can verify its target's identity based on the position of each target.  Furthermore, coarse acq. passes the rough location of each target on the image to the fine acquisition process, which is currently under development. Coarse Acquisition visualization Without divesting too much detail, coarse acquisition uses a unique algorithm to comb the target surface for pixels meeting the color bounds specified in the polo file and retrieved from the color database.  If coarse acquisition fails, it's usually because the color bounds are too strict and MARCO fails to recognize the targets, but if this happens MARCO recursively...