3 months ago

3D Body Scanner: 27 Pi Zero W boards used in full body scanning project

While learning to make her own clothes, Poppy Mosbacher wanted to visualise how they would look before she made them, and she began to think about how digital technology tools could help.

At first, she considered using a body scanner, but after talking to a friend, she learned that high-end 3D scanners using DSLR cameras can cost as much as £40,000. Just as bad, the cheapest alternative – of simply walking around an object or person and taking lots of photos with a single camera – proved slow and frustrating.

3D Body Scanner

When everything is set up, the 3D Scanner Camera Coordinator software allows the user to access the dashboard and click the Take Photo button

3D Body Scanner with Raspberry Pi

It was then that her friend and member of the not-for-profit makerspace Build Brighton, Paul Hayes, suggested that it might be easier to make a DIY version of a 3D scanner using Raspberry Pis. Before long, Poppy had secured a £1,000 grant from Santander, which she used to buy 27 Pi Zero Ws (each snapped up by a different Build Brighton member to get around the one-per-customer rule). She also bought 27 Camera Modules, 27 Pi Zero camera cables, and 27 USB to micro USB cables, as well as an assortment of battery packs, power regulators, wire connectors and other electrical items.

Cardboard engineering

Inspired by Richard Garsthagen, Poppy then looked at making the scanner affordable and portable. “The idea of having a portable rig that people could step into and take a picture in a few seconds was appealing,” she says. By using Zero Ws, she hoped the scanner could be replicated in the future for less than £1,000. To keep costs low, and to make the build easier for Poppy and the Build Brighton team, twelve 3 mm–thick cardboard tubes were used, on which the Pis and their cameras were mounted.

Poppy says the cardboard proved to be “a great material to cut and make holes in.” As well as the cardboard frame, a cardboard case was designed for the Pi Zero Ws. “It also helps hide the wires,” she adds. Created to work within the smallest possible diameter so that it can remain portable, the idea was to connect the Pis to a laptop to trigger the photos, so that all the cameras would take a snap simultaneously.

Coding challenges in 3D body scanning

“The photos are sent wirelessly to the laptop and they are automatically saved in a new folder,” Poppy explains. Raspbian Jessie Lite is installed on the Pis, and the main server runs a node application. Another friend, Arthur Guy, wrote the code for the scanner in JavaScript, building it up week by week, and adding features such as getting the Pis to look for updates on startup so that they all use the latest version of the software.
There were still some issues along the way, and a fair bit of trial and error, especially in positioning the cameras so that the photogrammetry software could digitally stitch the images together. There was also a problem with Poppy’s shiny long hair, which became apparent when she stood inside the structure. “I looked online, and it suggests putting powder on anything shiny, but I haven’t tried it yet.”

Some problems proved easy to overcome. Figuring out which cameras weren’t working was solved by assigning them names, and Arthur also learned to change the white balance on the cameras to improve the image quality. Yet there are problems with time lag. “Some Pis take a photo instantly, and others take a few seconds, so we have to stay still until all the photos have been taken,” Poppy says.

Nevertheless, she is excited about future applications for the project. “It opens up new possibilities, such as of scans of children who won’t stay still long enough for the single camera method; building a personal database of scans taken at regular intervals to see the effects of aging; and making avatars for VR environments.”

Preparing the Pi Zero W devices for 3D body scanning

Step-01: Code the Pi 

Prior to her project, Poppy had only used the Raspberry Pi once, at a workshop at the Mozilla Festival in 2015. Arthur Guy wrote the actual code, which needs to run constantly.

Step1: 3D Body Scanner

Step-02: Connect the camera

After setting up the server so that the cameras know which fixed IP address to send the photos to, a computer is connected. The cameras are then hooked up to the Pi Zero Ws.

Step2: 3D Body Scanner

Step-03: House the Pis

The Pi Zero Ws and the cameras are housed in these cardboard cases, which are then placed around the structure. A 5 V power regulator can be connected to up to three Pis.

Step3: 3D body scanner