[HN Gopher] Show HN: 3dasd - open-source DIY room-scale 3D scanner
       ___________________________________________________________________
        
       Show HN: 3dasd - open-source DIY room-scale 3D scanner
        
       Author : dvoros
       Score  : 231 points
       Date   : 2021-06-24 07:34 UTC (1 days ago)
        
 (HTM) web link (3dasd.com)
 (TXT) w3m dump (3dasd.com)
        
       | okamiueru wrote:
       | Cool 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 wrote:
         | I 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 wrote:
           | I 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.
        
       | xchip wrote:
       | Hmm no gallery of scans?
        
         | AlexAltea wrote:
         | Available at https://examples.3dasd.com/
        
           | amelius wrote:
           | Doesn't work on (my) mobile phone.
           | 
           | Some static images would be nice.
        
             | dvoros wrote:
             | Yeah, it's weird on mobile. I had to drag a very narrow
             | column from the very left side to the right to make the
             | point cloud visible. Thanks for the feedback, I'll add some
             | images!
        
       | rambojazz wrote:
       | I'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?
        
         | PicassoCTs wrote:
         | Max resolution are the steps of the stepper motor per
         | activation. (1.8deg step-angle)
         | 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.
        
           | dekhn wrote:
           | Stepper motors can be microstepped (typically up to 1/32 or
           | 1/64). In my experience, this works poorly as the microsteps
           | are not evenly spaced. I find gearing works better.
        
         | dvoros wrote:
         | Yes, 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 wrote:
           | You could half it with a double header (one forward, one
           | backward scanning at the same time)
        
             | bruce343434 wrote:
             | quart it with a quadruple header!
        
       | bruce343434 wrote:
       | This 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 wrote:
         | Ask 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.
        
       | sprite wrote:
       | Bookmarked. 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?
        
         | PennRobotics wrote:
         | My boss got me hooked on Markforged. (Caveat, my next home
         | printer is probably a Prusa.)
         | 
         | They are ridiculously expensive compared to alternatives, but
         | the printed parts are on a whole other level, as they are a
         | carbon-reinforced Nylon: They are much more fracture resistant
         | and mechanically stable than PLA or ABS. They're a U.S. company
         | and are very responsive to support requests. The printer build
         | quality is good, I rarely had parts warp or detach, and the
         | ability to print without deformation at a 60 degree overhang
         | and 50 micron layer allowed printing parts pretapped for
         | machine screws. The cloud software keeps a good catalog of your
         | .STLs and allows some degree of slicer tinkering. Also, you can
         | start a print remotely, which is awesome when you want to go
         | home, finish a part, start it at night, and it's already on the
         | build platform when you show up the next day. (The pricier
         | models show photos remotely, so you can abort a failed job from
         | home. The top-of-the-line model can laser scan specific layers
         | and does its calibration automatically.)
         | 
         | At that job, we had printers of wildly different price category
         | and technology---Form 2, uPrint, Carbon 3d, NanoDimension,
         | ProJet MJP 5600, Fortus---and the workhorse for getting decent
         | parts out quickly was overwhelmingly the Markforged.
         | 
         | -----
         | 
         | With all that in mind, I would never buy a Markforged for my
         | home because I don't print enough to justify the cost. If I ran
         | a general purpose printing lab, it would be my absolute first
         | choice. I also wouldn't buy a non-European/non-American printer
         | as a personal, moral preference. So, I'm waiting until the end
         | of November to buy a Prusa, because that seems to be the only
         | time they are discounted.
        
         | _carbyau_ wrote:
         | Regards 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.
        
         | dwild wrote:
         | The 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 wrote:
           | I'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.
        
       | searchconwestdu wrote:
       | Awesome work! How long does it take to finish this project?
        
         | dvoros wrote:
         | Here'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
        
       | ur-whale wrote:
       | How 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
        
         | serf wrote:
         | from 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 wrote:
         | I 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 wrote:
         | Meshroom 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
         | 
         | 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/
        
       | koolhaas wrote:
       | Awesome 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 wrote:
         | Thanks 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.
        
       | tetrahedon wrote:
       | Sweet work! If you are interested in 3D reconstruction, have a
       | look at http://www.open3d.org.
        
       | dvoros wrote:
       | Taking 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
        
         | miahi wrote:
         | Nice 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).
        
         | TaylorAlexander wrote:
         | Great 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.
        
           | dvoros wrote:
           | Thank 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 wrote:
             | Yes 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/mas
             | t...
        
           | fxtentacle wrote:
           | In my experience, photogrammetry had issues with transparent
           | and reflective surfaces, so wooden floor or brushes metal
           | kitchen appliances wouldn't work well.
           | 
           | As for the scale, you can always just bring a measurement
           | stick and place it on the floor so that you have an object
           | with known sizes to use to calibrate the scale after the 3d
           | recognition.
           | 
           | The gold standard in my opinion is a laser pattern protector
           | in combination with photogrammetry. That way, you can project
           | a pattern onto objects that would otherwise be too uniform in
           | color.
        
             | regularfry wrote:
             | Lasers will also have problems with anything reflective, or
             | transparent to the wrong wavelengths.
        
           | secretsatan wrote:
           | We'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
        
         | utopcell wrote:
         | Cool 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.
        
         | encypruon wrote:
         | Great 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
         | 
         | 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.
        
           | dvoros wrote:
           | Hey there, thank you for the feedback!
           | 
           | Yes, this is completely stiff, no flexible parts. I've
           | experimented with a few gears and different distances between
           | them. I've found that this herringbone gear works very well.
           | I don't experience any visible backlash, but the gearing
           | ratio also helps to suppress that.
           | 
           | I've printed everything from Hobbyking Premium PLA. Just as
           | you've described, the rotation gets smoother after some wear.
           | But even after 30-40 hours of use they still don't seem to
           | become loose at all.
           | 
           | Securing everything on the bearing, there's no visible
           | wobbling. I really recommend using a bearing if possible, it
           | makes things so much easier. (:
           | 
           | Good luck with your project! (;
        
             | encypruon wrote:
             | Thanks a lot for the answers. And for everything else, too!
        
           | dekhn wrote:
           | if 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 wrote:
             | > if you really care about backlash
             | 
             | At 1200 mm equivalent a picture is only about 1.15deg 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.
        
               | dekhn wrote:
               | I've built a similar device to this (originally for a
               | solar tracker that keeps the sun at high magnification in
               | the middle of the frame, but it turns out to be ideal for
               | panos as well).
               | 
               | It's a DSLR with crop sensor, 300mm lens, stepper+gear
               | for azimuth and stepper+belt for altitude (with gearing
               | to get more torque for both). I used this system with
               | Hugin to assemble 180 degree x 180 degree, 5 degree
               | azimuth and altitude steps (so, about 5X your resolution,
               | I don't have the same zoom as you). Results are great- I
               | can give this straight to hugin, update a PTO file with
               | my known angles, and it assembles without any futher
               | optimization. I do pan with a planned path.
               | 
               | If the belts are real tight, backlash is neglible (seems
               | to be a lot smaller than any gear I could print). If
               | you're having that much backlash on tilt (that it's shaky
               | and sensitive) I think you might need to re-engineer the
               | frame to be more stiff (which will cause the shakes to
               | dissipate faster) or tune your motors (tuning velocity
               | and acceleration). You might also be able to use a spring
               | to keep the gear in place. I tried to get a 3D-printed
               | worm gear working, but never made it compact enough to be
               | practical for the altitude.
               | 
               | I had white PLA, in direct sunlight/90F ambient for
               | hours, and it warped. I only noticed because I was inside
               | watching the incoming images and the altitude staged
               | started to "melt" causing massive positional losses.
        
               | encypruon wrote:
               | Good results _without optimization_ at 300 mm sounds
               | pretty impressive. Maybe belts are the way to go. Thanks
               | for taking the time to elaborate!
        
         | nerform wrote:
         | Thank you for sharing and making in open. Awesome work.
        
         | fxtentacle wrote:
         | A 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 wrote:
           | Thanks 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! (;
        
         | sbayeta wrote:
         | Congrats! 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 wrote:
           | Sorry 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
        
       | moritonal wrote:
       | On 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.
        
       | behindai wrote:
       | Hi! Nice job! How much time does it take to perform a full scan?
        
         | dvoros wrote:
         | Around 40 minutes.
        
       | amelius wrote:
       | Author should look into surface reconstruction algorithms.
       | 
       | E.g. https://people.eecs.berkeley.edu/~jrs/papers/eigentalk.pdf
        
       | compweblaren wrote:
       | This is really cool. I'm looking to build something similar
        
       | OnACoffeeBreak wrote:
       | Neat! Looks like the project uses the same LIDAR module (Garmin
       | LIDAR-Lite v3) that's on the Ingenuity helicopter presently on
       | Mars.
        
       | snickmy wrote:
       | I 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.
        
       | holoduke wrote:
       | Will 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.
        
         | dvoros wrote:
         | This is for scanning larger things (rooms, buildings). For
         | smaller objects, there's another open-source project that you
         | might find useful: openscan.eu
        
       ___________________________________________________________________
       (page generated 2021-06-25 23:02 UTC)