Kin3ct
Handheld DIY 3D scanner that repurposes an Xbox Kinect and a Raspberry Pi
Kin3ct Creation Journal
Total time spent: 17h
July 20th â Can I even make this? Is this even possible?
Hi hi, this is my devlog/journal for my new idea: a handheld 3D scanner using a Kinect and Raspberry Pi!
The idea is to build something like a portable(ish) 3D scanner that can capture point clouds live while scanning, so you can actually see what youâre scanning in realâtime, instead of just dumping a bunch of photos and waiting hours to process them later. That was the whole point from the start â not just âphotogrammetry from a camera,â but an actual liveâprocessing scanner.
Early research / what I found:
At first I thought about just using photogrammetry: take a video, import it later, and run it through Meshroom or COLMAP. But that doesnât really fit the goal: I want the data to be processed live, so I can immediately see what I captured and clean it up later. So photogrammetry became more of a backup option, but not the main plan.
Then I found Skanect, which sounded promising: it can take data from a Kinect and build a mesh in realâtime. My idea was to run Raspbian on the Pi and install Skanect, using a Kinect driver like libfreenect to get the depth data. But after digging deeper, I realized Skanect (and pretty much every similar program) only runs on x86 processors â not on ARM, which is what Raspberry Pis use. Same story for RecFusion, ReconstructMe, etc.
RTABâMaps! (MY SAVIOUR)
After some more digging, I found RTABâMap, an openâsource SLAM and mapping library that does support ARM, and can work with the Kinect through libfreenect2. Even better, RTABâMap can do live SLAM: it builds a 3D map while you scan. Then I can import the point cloud later on my PC and clean it up properly for CAD or Blender.
So now the idea is:
- Use Kinect + Raspberry Pi 5 + RTABâMap + libfreenect2
- Save maps to SSD or USB drive
- Clean them up later on a real PC
Choosing the Kinect: v1 vs v2
There are two main versions:
- Xbox 360 Kinect (v1)
- Xbox One Kinect (v2)
The Kinect v2 is better because: - Higher resolution depth sensor - Wider field of view - Better depth accuracy and less noise
Downside: both require a special 12V power adapter to run over USB. Itâs not a huge deal since adapters are available online, but it is an extra cost :/
Which RPi?
I decided that the Raspberry Pi 5 would be my best option as, - It has way more processing power than Pi 4 â better for running RTABâMap - USB 3.0 ports â needed to handle Kinect v2âs high bandwidth - Can easily add an SSD for storage, which makes it practical to do lots of scans without swapping SD cards every time
Power challenge:
The Kinect v2 is very power hungry. Making this completely batteryâpowered (with stepâup converters) is possible, but battery life would probably be terrible. Having a cable for power isnât the end of the world, since no oneâs realistically going to use this to scan a whole house (and it obviously wonât be commercial grade anyway).
(This is how the adapter looks)
Basicallyyy
After digging through lots of dead ends, I finally landed on: - Kinect v2 + Raspberry Pi 5 - RTABâMap to do live SLAM - libfreenect2 as the driver - Save to SSD, clean up on PC
Total Time Spent Today: ~5h (Quite tragic that this took this long)
July 21 â BOM and Starting CAD
Hi hi, devlog time again!
Today I spent a bit of time putting together an actual BOM so I could see roughly what this thing will cost and what parts I really need.
The list isnât final (obviously) but it helps me get an idea if itâs even reasonable before I get too carried away designing stuff.
BOM (Unfinished)
Item | Purpose | Source | Price |
---|---|---|---|
Raspberry Pi 5 | Main compute unit | PiShop | $85 |
7 inch LCD Display + Touch | Display & user interface | AliExpress | $40 |
Kinect v2 + Adapter | Depth camera for scanning | Self-Sourced | $60 |
Push Button | Physical controls (start/stop etc.) | AliExpress | $2 |
Custom PCB | Connects buttons, SSD, etc. | JLCPCB | TBD |
3D Printed Case | Holds everything together | Self-Sourced | $0 |
NVMe SSD | Storage for scan data | Owned | $0 |
Total CAD | $187 | ||
Total USD | $138 |
CAD
After I got the BOM together, I started working in Onshape to see how this thing could actually look and come together.
I decided to take some inspiration from the Revopoint Miraco scanner, mainly because I really like that itâs a proper twoâhanded scanner. It just seems way easier to hold steady and move around whatever youâre scanning, instead of trying to grip a box in one hand.
Here's the CAD model, itâs still midway through, but you can already see the vision Iâm going for, kinda inspired by the Miraco scanner, with the twoâhanded grip and the screen right in front. I feel like I have enough room to shove both the adapter and the Pi into the shell without any problems.
Iâve just went with this model and kept refining it, and a couple hours later itâs starting to look quite polished now!!!! :D
Total Time Spent Today: ~6h
July 22nd â more cad
Spent today doing more CAD stuff!
First pic is just me turning the model into a proper shell with a wall thickness of 2.6mm, and I added standoffs for the Raspberry Pi and the screen. Also made sure all the parts actually fit inside (which they very clearly do so far, yay).
Side note: the random yellow block in the model is just the Kinect adapter â I couldnât find a proper CAD model for it, so thatâs what its gonna be lol.
You might be wondering âkavin whereâs the Kinect gonna go?!?!?!â
Itâs actually gonna go right at the bottom of the scanner, which is why i didn't do any fillets or anything down there so then it mates up nicely with the kinect.
Hereâs the model of the mount I made for it :D
Total Time Spent Today: ~3h
July 23rd â even more cad
Today wasnât much, I just decided to finish up this CAD model.
I added ribs inside the shell where the grips are so it feels sturdier in the hand, and also added some buttons to the right side of the screen for easy control of shortcuts.
Itâs nothing huge, but it does make it feel more like a proper handheld scanner and less like just an empty box lol.
(IT'S ACTUALLY LOOKING LIKE A PROPER SCANNER WOOOOOOO)
I also imported the sketch that I used to make the holes in the shell into KiCAD, so that I know where to place the push buttons on the PCB. (I just exported the sketch as a DXF and imported it into KiCAD's PCB editor)
Total Time Spent Today: ~2h
July 28th â pcb and finishing steps
Made a simple 4âbutton PCB today that connects straight to the Pi.
I also imported it into Onshape so I could figure out the final position for the Pi inside the case. As you can see in the screenshot, everything lines up perfectly, but the USB headders on the Pi doesn't allow the Pi to get close enough to the PCB.
I just put a small cutout in the corner of the pcb, which allowed me to move the Pi closer to the PCB by 6.7mm. (Which SHOULDDDD be close enough)
Total Time Spent Today: ~1h