Simultaneous Localisation and Mapping utilising Consumer Depth Camera Technology
What an absolute arse it's been. Lack of foresight and understanding on my part led to a lot of trouble, particularly in getting it working well enough to be considered real-time.
But, hey ho. It's done now and while the end result is certainly not as good as I was originally hoping, I've still gained a huge amount from this ludicrous undertaking.
Here's a quick rundown of what I've learned, in no particular order:
- Proper research and literature-derived design is KEY. If you neglect that, you're going to pay for it later on when you really can't afford to.
- Robotics is a bloody hard field to get anything working in.
- Agile development can work, but only if you fully embrace its principles in not only your management but also your development.
- Iterative Closest Point is deceptively simple in theory, but very difficult in practice.
- Covariance matrices are really cool.
- C# IS REALLY REALLY NOT GOOD FOR PROCESSING-INTENSIVE REAL-TIME APPLICATIONS.
- Point clouds are cool.
- Depth sensors are cool.
- Modular testing is cool.
- Hofstadter's Law applies to program run-times too.
- Existing implementations are your friends.
- Maths libraries are your friends.
- Git Flow is your friend.
- CARVER matrices are your friends.
- If your project has severe risks that threaten its completion or suitability. RETHINK YOUR PROJECT. IT'S NOT WORTH IT.
- Having a set of sticky notes with tasks above your computer really helps. You can see what there is left to do, and when you're done with a task you get the satisfaction of removing the note and throwing it in the bin.
So, yeah. As you can probably tell, it didn't so as well as I'd hoped, but it still went ok. Hopefully I've somewhat made up for the huge flaws in my project by identifying them and picking them apart in the evaluation.
I'm definitely glad to have this behind me so I can move onto projects new. My creativity has been stagnating as I've been stuck to this one project for so long. Hopefully next year with the stuff I've learned I can draw up a vastly superior plan and strike a much better balance between my uni and personal projects that will allow me to stay sane.
As a parting gift, have perhaps my favourite image from the project's testing: