One of the most important strategies for actually getting complex work accomplished is to break the complex goals down into more tractable, bite-size problems that can be checked off a list in-order, and that build up to the complex finishing point. It can be easy to see designs from an overly-simplified 10,000-foot view and think, "oh yeah, for sure I can accomplish that by then!" And you may well even be right about that - I think that's true for this LIDAR design concept. The very beauty of it is that most of the complexity is available off-the-shelf, and the end-use can be boiled down in features to a fundamentally very basic proof of concept.
But thinking like that still obscures the actual effort that's required to accomplish the end goal, and adds the mental overhead of having to figure out which piece to bite off next. Thus, without further ado, and arguably later than we should have gotten around to it, I present you with a list of LIDAR Compass milestones and scheduled completion dates:
Vertical wall verifier POC.
8/7/2020 (That's today!)
A simple iteration of the device that measures the distance to a vertical wall at 0° then verifies via on-screen feedback that the next few measured points are, indeed, on that same wall (plus shows their error). This is a very simple test case that, more than anything, proves I still know how to do basic trigonometry. If the POC works, it will basically light up a table of values in Python with "OK!" when the device is oriented perpendicular to a nearby wall, and those values will fall out of "OK" if the device angle changes at all. This will also start giving us a good idea of how much distance error there is in the LIDAR points, given that the walls of my house can be verified straight.
This milestone is due today, and isn't actually done YET, but work is going smoothly and at this point I'm spending more time on nice-to-haves and future work than on just knocking out the milestone itself.
Normal room verifier POC
Same as above, but instead of only assuming one infinite wall, takes a model of an actual square room and verifies all points in 360* based on that. Assume a fixed distance from the ground, and fixed observation angle relative to the room. This isn't a huge step on top of the first milestone, which is why it's so close in time. But it is a big step in usefulness of the system, and sets us up nicely for the next milestone.
Laser feedback POC
Builds on the above POCs to include visible-laser projection of go/no go onto wall. This is probably the biggest individual step of the project, and it might be ambitious to get it accomplished in only one calendar week. In theory, it's as simple as anything else, but in practice, it's the one piece of system integration where there's no prior-art, and it's where all the unknowns lie. For instance, the laser pulsing system may need to be independent from the Raspberry Pi running the show for reasons of time-stability, since the Pi processing and GPIO is hardly real-time. It may be possible to get the rotation synchronization signal for the LIDAR rotor directly from the LIDAR itself, but again, real-time constraints may not be sufficient in practice, and we're not even sure if the T0 of rotation is even available in software. This may require adding an external hall sensor to measure and time rotor movement, which isn't fundamentally complicated but IS a significant addition to the project scope. And so on.
All of the above, running independently on a raspberry pi with some kind of remote login. In fact, we'll probably already get to this point by necessity as of the previous milestone. But one thing we haven't talked about yet is ingesting arbitrary geometry to profile in the form of a 2D DXF, and this milestone will contain that deliverable as well. This may well be a zero-effort step in terms of hardware, but once again DXF processing is, in my opinion, where the real software unknowns come in.
A self-contained LIDAR system that can be administered with a phone. In theory, everything will have been "done" by the last milestone. In practice, we have to assume that there will be a level of polish and presentability the previous milestone doesn't yet incorporate, so this is how we capture that in schedule.
Does this seem a bit ambitious? On paper, in my eyes, no. But everyone has a plan until they get punched in the face, and I'm no different :)