This project develops software for a person-sized, full body DIY Raspberry Pi based 3D scanner. The scanner stands at the Textile Faculty of the Reutlingen University. There, Katerina Rose researches novel approaches for digitization in the textil industry including textile technology and sewing pattern using CAD. The scanner is an enabling technology and an instrument a for her research. The picture below shows the current 3DScanner installation.
I support Katerina on the embedded software part for the scanner. This software controls the distributed camera system.
Investigators:
Ressources:
- Trello board to organize dev tasks
The project builds on the instructions from a previous project. There are several similar DIY projects of this type available on the Internet. Commercial products exist as well.
The DIY project uses COTS available Raspberry Pis embedded computers to implement a distributed camera system. The available documentation is limited and the setup as well as the software operation of the camera hardware require substantial software skills.
However, researchers in this project are not software experts. The project goals are therefore
- enable non-software experts to reproduce the software setup of the scanner
- transparentizing the scanner's software operation state for a successful application use
As an example of the goal implementation have look at the flow chart to setup Raspberry Pi. Note the user's low effort as shown by the minimum interaction with the Raspberry Pi for the setup of the scanner software.
From a computer science perspective the project proposes a couple of distributed system challenges. Since all software parts run on approx. 50 Raspberry Pi computers, a primary activity focuses on infrastructure support. Each software change applies to 50 Raspberry Pis. Automation of deployment is crucial. Some fundamental functions to support are
- Automate deployment of software directly from github
- Secure access to Raspberry Pis
- Distributed management and control via web browser
- Infrastructure unit testing
- Debugging and maintenance support
In all cases, we are aware of non-expert end-users who operate the scanner. Therefore, the end-user is always at the center of our development efforts.
Technically, the camera Raspberry Pis connect to a centralnode via MQTT publish/subscribe message queues. The centralnode collects all images and logging information. The user accesses the image files and operates the scanner through a web browser. The following UML diagram depicts the system design.
We utilize the MQTT Homie convention which defines a standardized way of how IoT devices and services announce themselves and their data on the MQTT broker. The camnodes and centralnode implement the Homie convention to publishe data and provides interaction possibilities.
Please see docs
folder for full documentation
We setup a docker image to support the development on a desktop computer. It helps us to reproduce script operations on the Raspberry Pi. The dev system bases on the Debian Buster distro. The motivation is that Raspberry Pi OS bases on the same one. Currently, the version of the dev system is:
$ uname -a
Linux ec72378ae28c 4.19.76-linuxkit #1 SMP Tue May 26 11:42:35 UTC 2020 x86_64 GNU/Linux
Setup: Start in project's root dir and create a .env
file with the content shown below.
# .env file
# In the container, this is the directory where the code is found
# Example:
APP_ROOT=/3DScanner
# the HOST directory containing directories to be mounted into containers
# Example:
VOL_DIR=/dev/3DScanner
Create docker image. Please see Dockerfiles/Dockerfile.3dsdev for details.
docker-compose build 3dsdev
Spin up the container and get a shell from the container
docker-compose up -d 3dsdev
docker exec -it 3dsdev /bin/bash
Information provided in the LICENSE file.