6 ms·
Show HN: 3dasd – open-source DIY room-scale 3D scanner
- dvoros 5y agoTaking a break from my software developer job, I've started to work on my first ever hardware project and with too much free time on my hands it quickly turned into something bigger than I've anticipated. Working with a friend, we wanted to explore the use of 3D scanners on construction sites but quickly got stuck as no cheap hardware was available to fool around with. How hard can it be to build one I thought? I've already programmed Arduinos to blink LEDs before, this isn't that different... Then a few months into the project I've realized that I've spent way too much time on this to let it go to waste and started turning this into a community project. At this point I've reached the first milestone of having a working 3D scanner with (hopefully) enough documentation to help others get started with building their own. I'm sharing this with you now to spread the word, get feedback and to invite you to contribute if you feel like it! (: Kind Regards, Daniel
- nerform 5y agoThank you for sharing and making in open. Awesome work.
- fxtentacle 5y agoA great idea :) I see that you've been using EasyEda. I myself are also doing a hardware project to get some more variation than the daily software grind. After trying out Altium and then being shocked by their recent price increase, I'm now using KiCAD. But KiCAD doesn't have any autorouter. And the one in Altium failed for my FPGA board. I also tried ELECTRA and it failed, too. Did you route things by hand? If not, what tool did you use? How did that work for you?
- dvoros 5y agoThanks for the kind words! I've started with EasyEDA and stuck with it as it worked okay so unfortunately I can't help with a comparison. I've tried the autorouter and it worked (=didn't fail) for earlier prototypes when the board wasn't so packed, but it couldn't do it (was hanging indefinitely) for the current layout so I did it manually. It wasn't that painful... (: Good luck with your project! (;
- TaylorAlexander 5y agoGreat project Daniel! Really cool that you're venturing out of software land. Looks like you would have learned a lot about Arduino from this! I've recently been playing around with 3D scanning, but using photogrammetry. You could record high res video or take high res photographs of a scene, and then use the program Meshroom or colmap to convert those photos (cut video in to 1fps stills) in to a 3D model. If you want to play around with dense scans that may be worth a try. Doing it with a LIDAR is nice though because it is the correct scale, something photogrammetry inherently fails at without additional sensors. I'm a very project oriented learner, and I'm always making things and learning stuff and then pivoting with my projects. I've been doing that for 20 years and it's great because I learn whatever the hell I want and after I get good at it I can get a job in that area. So keep up the hardware projects! This one looks great.
- secretsatan 5y agoWe've been working on using the new iOS devices and integrating their LiDAR data into our photogrammetry pipeline. We've also developed an app that gets good scale using only photogrammetry and AR functionality
- dvoros 5y agoThank you very much for the kind words and the recommendation! Adding a camera is probably the next step I'll take. Adding color information to the point cloud would be a huge plus. I haven't tried photogrammetry before but I assume it works best if things are captured from multiple angles so my current setup of taking measurements from a single point isn't the best fit. But maybe combining scans from different standpoints...
- TaylorAlexander 5y agoYes probably best to experiment with photogrammetry separately and then think about how to integrate it. But it can be difficult to ensure you got 100% coverage so programming a full scan with your gimbal could be useful. You would want to do it from multiple locations. But I’ve found just handheld 4k video from a phone is a great place to start. You can extract frames from video easily with this script I wrote: https://github.com/tlalexander/rover_video_scripts/blob/master/extract_frames.py https://github.com/tlalexander/rover_video_scripts/blob/mast...
- utopcell 5y agoCool project! You could also have used a 2 Axis Brushless Gimbal Stabilizer for most of the mechanics stuff, coupled with either your Garmin Lidar Lite module, or a 360 degrees Lidar module.
- miahi 5y agoNice project! I did almost the same (Garmin v3 Lidar + steppers), but based on an ESP32 instead of raspi + arduino. The problem I have is the scanning speed vs resolution. The sensor is quite slow, so it takes a really long time to scan anything (hundred of hertz seems fast, but when you do the math you realize it's not fast at all).
- encypruon 5y agoGreat project and excellent presentation! I've been trying to build something similar for tracking birds / panoramas / photogrammetry while avoiding using non-printed parts as much as possible but haven't been very successful so far. Because of that I'm particularly interested in the printed gears you are using. Maybe you could help me with some of my questions and concerns. It looks like the whole thing is designed to be stiff, which means that the gears are pretty much at a fixed distance from each other. Doesn't that lead to backlash / play if the gears are a little bit too far apart or vibrations if there is too much pressure pushing them against each other? I've been worried about this and experimented with mounting the stepper motors on flexing parts to keep the pressure consistent and allow for more imprecision in the prints but I never really tried whether I can get away without that, so I'd be interested about how well this is working for you. Pictures on the flexible motor mount idea: https://imgur.com/a/mM1Uql9 https://imgur.com/a/mM1Uql9 I would also like to know if there are any signs of wear after using the thing for a few days and what materials were used. I couldn't find anything on the type of filament on your website (did I overlook something?). I've only ever printed PLA so far and found that the gears would turn more smoothly after being used for a while. I imagine that the effect of wear might be different on the design without flexing parts. Is it correct that the upper part is resting / sliding on "base-2"? Or is the bearing doing most of the work? Does it wobble at all? That was another one of the problems I had.
- dekhn 5y agoif you really care about backlash, just measure it and then add a correction in your motor controller. Another way to do this is to always move back to endstop zero, and only move forward. THis is very limiting. The biggest problem I had was all my PLA prints melted in the direct sun!
- encypruon 5y ago> if you really care about backlash At 1200 mm equivalent a picture is only about 1.15° high, so accuracy is important :) > just measure it and then add a correction in your motor controller. I think your first idea doesn't really work for tilting because there is little friction and the camera isn't going to be perfectly balanced (the center of gravity also changes with the focal length and even the focus). When gravity pulls the camera towards one direction backlash is less of a problem, but when it's near the tipping point it becomes really shaky and sensitive to disturbances. Past the tipping point it is biased towards the other direction. Preloading might be an easy fix but at the cost of acceleration. > Another way to do this is to always move back to endstop zero, and only move forward. THis is very limiting. At least for panning in panoramas this isn't a bad solution at all. I think both your ideas are good for panning with planned paths. > The biggest problem I had was all my PLA prints melted in the direct sun! Was it white PLA? So far I've only had stuff bend out of shape in the car.
- sbayeta 5y agoCongrats! Seems like a neat project. I just skimmed through the article and saw "it tries to be cheap". Maybe you can evaluate whether ultra-cheap steppers can give you acceptable results. They cost around 1/10 compared to the kind you're using. They are a lot slower and have less torque, but probably could give similar results. Good luck and thanks for sharing this!
- sbayeta 5y agoSorry forgot to mention I'm thinking specifically of the 28byj-48 motors. I had an (unfinished) project making a motorized water sprinkler for watering lawns in non circular shapes, and these motors were up to the task. If you can achieve your goal with them, you'll probably shave a nice chunk of the cost (not only on the motors but also on the drivers). Cheers
- okamiueru 5y agoCool project, and as an amateur tinkerer, I love to see these things open sourced and documented as there is so much to learn. I'm a little surprised by the nema motors, as they look overdimensioned for the task. Is there a good reason? Stability/precision?
- dvoros 5y agoI could justify that with being so standard that it's available everywhere but TBH that's just what my local electronics store had. (: I've also realized that it's probably overkill for the job and added a note in the documentation.
- okamiueru 5y agoI think that's a good enough justification :) I was more curious if it came as a result of actually needing it. Btw, great job on the website and examples.
- rambojazz 5y agoI'm not familiar with the 3d scanning tech, but my first thought when looking at the examples is that they do not look really detailed. What is the max "resolution" of the machine? Can it scan objects with a higher number of particles?
- dvoros 5y agoYes, you're right, this is extremely low resolution, compared to commercial scanners. This is mostly the result of using a point-by-point scanner. One thing I have on my plate is exchanging that for a field-of-view scanner (probably a Livox Mid-40). One interesting feature of the current setup is the ability to "zoom in" on details. With the microstepping mode of the stepper motors, one can take 2/4/8 times as dense measurements of an area if necessary. The limiting factor here is time. A single scan takes around 40 minutes with the current resolution (1800*300).
- PicassoCTs 5y agoYou could half it with a double header (one forward, one backward scanning at the same time)
- bruce343434 5y agoquart it with a quadruple header!
- PicassoCTs 5y agoMax resolution are the steps of the stepper motor per activation. (1.8° step-angle) https://datasheetspdf.com/pdf/1260602/Schneider/NEMA17/1 https://datasheetspdf.com/pdf/1260602/Schneider/NEMA17/1 It could be increased by adding multiple distance measurement sensors in parallel per scan direction. It could also be made more precise by adding a "sub-gear" that only turns within the frame of the step. But this would lengthen the scan process considerably. To shorten that again, one could add the same scan head into the opposite direction. At the moment the resolution is depending on the distance from the scanning device. Meaning the larger the distance, the more the angling distributes the points on a surface. There are no real ways to mitigate that with a stationary device. Density can be improved though with rescans, using the noise to increase, although there the noise blurs the points along the line to the degree.
- koolhaas 5y agoAwesome work! How long does it take to scan a room? And when scanning something like an apartment with multiple scans, how do you piece them together / automatically offset the points collected in the next scan?
- dvoros 5y agoThanks for the feedback! A single scan takes around 40 minutes. The multi-scan example took me an afternoon to take. (: I've tried Meshlab but then ended up using CloudCompare for combining the point clouds. That was done completely manually.
- behindai 5y agoHi! Nice job! How much time does it take to perform a full scan?
- dvoros 5y agoAround 40 minutes.
- bruce343434 5y agoThis is really cool. I'm looking to build a body scanner so I can import a 3d model of my body. I can then use this model in Marvelous Designer to make shirts and pants and other clothes that will literally fit perfectly to my body. I'm thinking of a platform on which you stand, with a rotating arm under it which holds the arduino which then scans up and down, the arduino relays the distance and both angles to a processor which turns the data into a point cloud and then into a 3d model.
- dannyw 5y agoAsk HN: If I have a budget of maybe ~$1000, what would be the best body scanner I can get? Happy with either DIY or for-purchase. Keen to try some ML projects with a body-sized scanner.
- ur-whale 5y agoHow does this improve on taking a video with your phone and feeding it to one of the OpenSource 3D reconstruction packages (such as e.g. MeshRoom [1])? [1] https://alicevision.org/#meshroom https://alicevision.org/#meshroom
- serf 5y agofrom my experience photogrammetry suites tend to produce results that are a lot more 'delusional' than measuring with an actual sensor, especially if you're photographing reflective/metallic/transparent surfaces. Yeah, LIDAR is sensitive too, but usually the data is missing rather than random/delusional. Missing points tend to be less labor-intensive to clean up on the results than erroneous points that totally deform whatever mesh they're a member of.
- dekhn 5y agoI don't think it helps meshroom much because (afaict) there's no easy way to tell meshroom the angular information that's known from the stepper controller (I couldn't find anything obvious in the docs). If that worked, you could avoid the expensive and error prone initial orientation-determining step, which is absurdly slow. I've done similar to this article but using Hugin as a panorama constructor. It speeds up the process signnificantly (because again you don't have to search for image orientations if you "know" them).
- IshKebab 5y agoMeshroom definitely can't do 3D reconstruction from monocular video. But there are other algorithms that can. Just Google "3D reconstruction monocular" and you get loads of demos. E.g. https://youtu.be/TZ1eToXQwN0 https://youtu.be/TZ1eToXQwN0 Unfortunately I don't know of any that are open source and not research-project style code (i.e. weeks of work to maybe get working). Matterport are the market leaders in this sort of thing but it's commercial. https://matterport.com/ https://matterport.com/
- ur-whale 5y ago> Meshroom definitely can't do 3D reconstruction from monocular video. It's quite possible we're not talking about the same thing here, but for my understanding of what "3D reconstruction from monocular video" means, Meshroom most certainly can do that. To wit, I recently shot a video of a house with my drone, which happens to have just one camera. I then proceeded to extract the frames of the video and fed them to Meshroom. I am now in possession of a full 3D textured model of said house. [EDIT]: now that I've watched the video you posted, I see they do the reconstruction in real time, which is cool and which Meshroom can't do. However, if you aren't in a rush, the end result is the same.
- OnACoffeeBreak 5y agoNeat! Looks like the project uses the same LIDAR module (Garmin LIDAR-Lite v3) that's on the Ingenuity helicopter presently on Mars.
- xchip 5y agoHmm no gallery of scans?
- AlexAltea 5y agoAvailable at https://examples.3dasd.com/ https://examples.3dasd.com/
- compweblaren 5y agoThis is really cool. I'm looking to build something similar
- searchconwestdu 5y agoAwesome work! How long does it take to finish this project?
- dvoros 5y agoHere's a very rough estimate. This is how long it'd take for someone who's familiar with the steps. E.g. if you've never tried soldering, it could take much longer. - Days/weeks of waiting for components to arrive. (: - ~20 hours of 3d printing - 1 hour of soldering - 4 hours of cable assembly (worst part) (: - 4 hours of assembly - 4 hours of installing software
- holoduke 5y agoWill this work with small 5cm objects? For ages I am trying to find a good (and cheap) scanner able to scan small objects mostly used in cars. Had mixed results with tools like meshroom. I would immediately bi It a scanner when less than 1000usd.
- sprite 5y agoBookmarked. Looks like a great project. A bit off topic but semi related as this requires 3D printed parts. What’s a HN recommended 3d printer?
- dwild 5y agoThe Creality Ender 3 is probably the best entry-level 3D printer you can get. It does need a tiny bit of tinkering in some case, but it can print incredibly well, for a pretty low price. If you just want to print as well but without any risk, a Prusa i3 pre-assembled is the best bet, but it does cost 4x+ the price of an Ender 3.
- hblnt 5y agoI've started with a Creality CR-10S, and later on get a Prusa MK3S, meanwhile my brother took the old CR-10S, and get two Ender 3s. I have to admit, that the CR-10S, and the Ender 3 is a lot of printer for the amount of money they sell them for - though, of course, you need to be prepared to fiddle with the printer more. But if you dial it in, and you gain experience, there aren't a lot of things you couldn't do. I built my own Prusa, I think it's a fun experience, if you like building. My CR-10S came in two parts, I needed to screw them together... my MK3S came like a car after a crash test. But since put together, I haven't had to touch it, it operates like a wonder. Of course a Prusa's price tag is much steeper compared to an Ender's. Prusa is an European product, the construction in my opinion is better, and they take a lot of care of the hardware and software. I don't want to go into nationalistic battles, but I was happy that I could buy a local product. Our Ender 3 didn't have a bootloader installed, so when we wanted to update the firmware to a more up-to-date Marlin, we had to take apart the machine, and flash a bootloader on the AVR, which is... troublesome for somebody who doesn't know about microcontroller flashing too much. Regardless, I think for a beginner, the Ender has an extremely good value, and perfect to get into 3D printing, as it opens so many possibilities. I could print parts for the household, which I wouldn't ever find anywhere else. I've fixed multiple household appliances. The freedom that if I need something special, I can make it.
- _carbyau_ 5y agoRegards your specific question, many start with an Ender 3 series. I did, no regrets. It performs well out of the box while you become aware of what the possibilities are. Some expensive printers will have features costing more than an Ender 3, so this is worthwhile learning. If you have the $$$ to skip this step then you can. But I don't know what bigger/better printer to go for as I have not the budget/space for one. Other thoughts: 1. 3D model considerations take significant time. Even trying to minimise effort in modelling, many models are not printable without at least some tweak. 2. There is much to be gained from using less material. Reduced cost/wastage and increased speed for end results. Software does support this of course but the details will take time. 3. Different printing techs need different approaches to the model. IE Resin printing may need drainage to let unhardened resin leak out. FDM printing may need supports. TL;DR there is plenty to learn, budget time accordingly whatever $ you have. Would I do it again? Absolutely. Edit: concision, realisation may not desire a budget approach.
- snickmy 5y agoI wonder if it would be possible to use the same module or moving and interface with with the lidar/camera of the iphone 12. The project could be even cheeper and probably the accuracy increase.
- moritonal 5y agoOn Android if you have a powerful enough phone (or better, built in Lidar) then the "3D Live Scanner" app by Lubos Vonasek Programmierung is something to checkout.
- amelius 5y agoAuthor should look into surface reconstruction algorithms. E.g. https://people.eecs.berkeley.edu/~jrs/papers/eigentalk.pdf https://people.eecs.berkeley.edu/~jrs/papers/eigentalk.pdf
- dvoros 5y agoThank you for the recommendation!
- tetrahedon 5y agoSweet work! If you are interested in 3D reconstruction, have a look at http://www.open3d.org http://www.open3d.org.