Posts

Showing posts from September, 2017

Pink Floyd's Next Album Cover?

Image
Nope, this is the final blended and threshold-filtered image of all of the infrared images taken of the LiDAR footprint.  The grey line is a trendline I drew across through all of the footprint centroids.  The line runs from pixel 0,1800 to 3280,1000 and it hits all of the centroids about as well as I could have hoped.  It's important to remember that the footprint centroid location on the camera CCD will vary along a line, but it will not vary linearly.  In other words, no matter how far MARCO is from its target, the footprint will be somewhere along that grey line, even if it's not in the field of view.  However the equation that describes exactly how far along that line the footprint will be depends on a mess of trigonometric functions that I worked out in a notebook on a plane 4 months ago and then forgot about until now. At this point you may be thinking to yourself: "Jacob, you dumb idiot, if you can image the LiDAR footprint, why not just do that...

If it's stupid and it works, it's not stupid...

Image
Earlier today I finished my startup diagnostic routine, now I have one last calibration to do before I can begin working on the actual program: the calibration of the LiDAR boresight to the camera.  The purpose of this calibration is to tell MARCO exactly where on the camera CCD the LiDAR beam is striking the target. This lets MARCO put its metaphorical finger down on the exact spot in its field of view where the LiDAR is returning a distance measurement from. The calibration data was gathered by setting up a highly IR-reflective target (multiple strips of reflective tape leaned against some Styrofoam) on the floor of my lab (bedroom) and imaging through the IR filter. Early attempts were fruitless, as the default shutter speed of the camera is too quick, allowing for only a brief exposure and consequently a very small chance of capturing the LiDAR footprint.  After increasing the exposure time, the images were too washed out to use due to ambient IR noise from the sun. ...

LiDAR calibration

Image
Upon further testing of the LiDAR, I noticed that it was not returning any distance unit I am familiar with.  It does, however, (thankfully) output increasing numbers as its target becomes more distant, so I generated the calibration curve below. I thought the numbers might be time measurements in picoseconds, but a quick calculation showed that it takes light a little over 2 nanoseconds to travel to and from the target at 30cm, and the average measurement I got from the LiDAR at 30cm is 41.7. The results are linear enough to make me happy, I'll append calibration data from further out to this set when I need it.

First images

Image
I was going to quit for the day after I got the LiDAR working, then I thought, eh... So I went ahead and built the polo component of the testing apparatus, rigged it up with IR LEDs in each of the corners and took some pictures. Dark Tests Visible Yep, in a dark room looking through the visible light filter, we see nothing.  This may seem like a pointless image to be taking, but it's actually pretty important to take in context with the next picture. Infrared The only difference between the previous image and this one is that the filters are swapped.  The IR LEDs really shine when using the IR-pass filter, pun intended.  You will see the real value of these LEDs in the next series of picutres. MARCO-Lit Images Visible In this image you can clearly see the target surface and its colored targets in each of the four corners.  These pictures are rotated ~90 degrees clockwise because of how the camera is mounted to the array surface.  It's a...

Electrical work on MARCO is complete!

The LiDAR module is electrically integrated and test scripts are returning valid results.  Furthermore the filter actuator is flicking back and forth happily, the camera is taking pictures, the lights are script-operated, and I haven't seen any open flames on the thing since mid-August, meaning that all of the electrical and mechanical assembly of the MARCO experimental optical array is complete! Finally my lab (bedroom) can stop smelling like charred plastic and epoxy. One small note on the LiDAR scripting, the LiDAR Lite v3 using i2c protocol does not currently work with the latest versions of Raspbian (maybe the newer ones do, it's a known issue).  This forced me to roll back to an earlier version, which so far has not been a big deal, but we'll see if it impacts my instalation of OpenCV, which is the python library I will be using to pick apart my images. Moving forward, the script to operate the LiDAR should take all of 3 minutes to write, then I will have script...

A Working Filter Actuator

It may have taken a week and an unwieldy hardware solution, but I now have an operational filter actuator.  hooray The transistors I tried just simply could not supply enough current in series to the solenoid when biased by the 3.3V digital output of a GPIO pin, so I threw together a servo-operated switch that flicks the filters back and forth pretty reliably.  I've been testing the switch and actuator by setting the scripts that operate them on an infinite loop (see video) and after a couple of solder joint breaks and design revisions the assembly finally seems to be straightened out. In the meantime, I have continued working on the startup scripts. Of course I have scripts operating both lights and the actuator, and I am integrating them all into a sort of pre-mission check to verify functionality.  I have managed to take images using both the IR and visible light filters, and the pictures look good.  All that remains before the real hard part of this project i...

Cute little discovery along the way...

Image
So I started work on the startup diagnostic script for MARCO, but when I went to turn the lights on, nothing happened.  Not to be deterred, I ripped out my relay board and tested the simple lighting circuit on a breadboard. What I found is that when the mosfet is placed between the light assembly and the 11V source, nothing happens, but when it is placed between the light and ground, the circuit works as intended. This happens because the load voltage increases when voltage on the gate increases, raising voltage on the source and consequently lowering Vgs which keeps the transistor conducting. This of course doesn't happen when the source is grounded. Hopefully by the end of the week I'll have a rebuilt relay board and gpio-operated peripherals so I can begin LIDAR and camera software integration. 5-hour-later edit:  The LED circuits are all wired up and functional, however I am having difficulty with the filter actuator.  Since the actuator is just a big h...

Where I am so far

As of 9/3/2017, the MARCO experimental platform is complete, take a look at the "MARCO construction" page for details.  This device is an immobile, undockable rig made just to run the MARCO software and acquire a polo surface's attitude.  If this project progresses incredibly quickly, I may have time to build some sort of docking mechanism and vehicle around it, though as great as that would be it's highly unlikely.  The primary purpose of this project is to explore the core functionality of the system, namely its ability to determine target attitude. Also, I have successfully completed the app that constructs a .polo file.  The app is written in Matlab, as it performs some fairly complex trigonometry and calculus.  The app is somewhat limited: it only allows the construction of a square target surface, using exactly four equally-sized targets, and each of those targets is placed in the corners of the surface.  Trust me, the math for this case was difficu...