New website up
After a long time working with my own custom joomla version, I decided its time to give it a slight overall
(Especially for working with bigger resolutions

Please be aware that some old stuff is still missing until
I shift all stuff to the new server








     


Well since my current main project is a bit of a drag, and my cheap chinese lidar scanner arrived, I thought I tackle this project...to distance from my big project for a few days.  It became a repeating element to cover new grounds at christmas times anyway, and this year was also in that tradition.
And since the lidar arrived, I thought this would be a quick hit and run project I had in my mind since I saw those cheap scanners the first time.
You know: low investment > high reward.

Mechanics
Most parts are 3d printed, the table with the gear sits on a cheap bought aluminium L-bracket wich can be connected to a regular arca swiss plate.
The motor is attached via a 3d printed L shape. All elements have slotted holes for easier adjustment / assembly.
Might need to revisit it, since I'm not 100% satisfied with the construction. Printing time was surprisingly fast: only one day needed, for construction and print.


The hardware setup.. the 3d printed box contains the Arduino + Shield

Electronics
The motor is controlled via an Arduino and a CNC shield. Those are very affordeable. (around 15 bucks). The chipsets overheats due to the high amps needed for the motor in continious mode, But for the small steps and pauses during scan this works just fine.
Those parts, CNC shield and motor I had for another project, wich I doubt I'll will ever start due to the results of this project..(sound level) To get the cnc shield working I had some problems with unstable power supply, wich resulted in some unexpected and incomprehensible results, wich did cost me also a few hours.

The lidar scanner LD19 is designed for robotic navigation, this was the most costy part of the whole build (120 bucks). its a rotating infrared laser wich continiously send out data via usb.


Yes its loud: Initial motor test


Programming
When I started this project, I had no clue on serial port communication in C++. So a lot of research went into it. Controlling the CNC shield was more or less a no brainer. The LD19 on the other hand was harder, since it is a pretty "stupid" device:
You plug it in and it sends out data packages continiuosly. The example wich comes with the laser is written in a linux specific code, and interfaces with ros/ros2 (Robot operating system). A lot of time went into it figuring out how to replicate this in a windows environment...wich was failure after failure. Luckily I found a boost port of it wich I could adapted.
Afterwards it might be just a problem of using the wrong bitrate for serial communication wich tripped me of.


The promising first result of one data package.

Basically the code fetches 10 data packets from the lidar. For each point in each packet (Around 500 points, it calculates the XY coordinates from the angle/range data (Basic SIN/COS) then it rotates the point around Z (also basic SIN/COS) by an specifified angle , wich is a basic counter.  Then it continiously writes those vertex position values to a simple .obj textfile. After that it rotates the plate by a simple G01 command, and adds a value to the Z angle. and starts again.

My problem was that I was lazy, and didn't exported the raw input from the beginning, wich resulted in some time intensive rescans. This and two pesky bugs in the code, took me way longer than it neded to be (loosing around 5 hours). Also those bugs had an impact on the result way into the scan, so I needed around 15 minutes to rescan unti it showed up... I know stupid me.


Starts correcly and then warps. Took me way longer than expected

The pointcloud is then feeded into meshlab and a mesh is generated via the Surface Reconstruction - Ball Pivoting filter.


The scanned room...notice the missing walls...defintive one thing to investigate further.

some render of the detail level to currently expect.

Post mortem...so far
The lidar does well on cloth wood and tinted glass. It does not like the walls of the room (rough texture). It takes around 30 minutes for a complete scan. Wich for certain use case is too much.
I might add additional data packets to increase the resolution. The next thing to do is to capture a room and additionally photograph a 360 HDRI environment at the same pivot. Just to see how well they correlate to each other.
After this I will generate my first 360 depth map out of it.And last but not least, compare it with a traditional photogrammetry method done in the same amount of time. And last but not least, there is room for improvement, like using more data packages, and try to use the reliability value of the lidar device. In short how well the output is if you process the raw data.

Sure its not a Faro / Leica.... but whats the point. I doubt I will ever get the hands on one of those 45k bucks and more machines, nor will I  have the need to use one of those. In fact this low level approach will be imho a better vehicle for learning the in and outs of 3d scanning, more than a machine wich does everything with the press of a button. (metaphorical speaking, I have no idea how those operate). So doing it the hard and unreliable way works actually in my favor.

One thing for sure, this will get another post mortem.

POST MORTEM 2

Still need to do some fine adjustments, this is a view of the mesh, with an captured 360 hdri projected onto it.
Next to do is to increase the amount of captured points and play a bit with the meshing options in meshlab


Still too much holes. but I'm surprised how well the projection fits with the mesh

POST MORTEM 3

Changed the CNC stepper motor controller to use substepping wich results in a much smoother motion. The data uses now more data packages, wich unfortunately does not result in better results in meshlab. I fear I have to implment my own meshing algorythm. As a first step I made an interpolated depth image map


still a bit rough (no interpolation wrapping, but promising results



Overall this was a nice 4 day project, wich covered a lot in areas I wanted to progress anyway.

If you got question feel free to discuss it down below.