• Limb Volume Estimation using a Low-Cost Repeatable Scanner Apparatus

    Walker Arce01/19/2020 at 00:32 0 comments

    Volumetric comparison of scans obtained at varied speeds (2, 4, 6, 8, 10, 20, 30, 40 and 50 RPM) at a fixed distance revealed consistency in the quality and relative accuracy of the produced meshes. In general, no measure differed from the mean volume (434.16 ± 19.61 cm3) by more than 6.13%, which occurred only at the highest speed of 50 RPM. This indicates that the apparatus is both repeatable and accurate in its model creation.



    % Difference




























  • Ideal Scanning Speed to Optimize Low Cost Scanner Use

    Walker Arce01/19/2020 at 00:28 0 comments


    The goal of this study is to find the optimal scanning speed for the best scan accuracy when using a low-cost scanner.  This will be accomplished by using a Sense™ 3D Scanner as the low-cost scanner in this pilot study.  Each iteration of the tests increases the RPM of the stepper motor driving the 3D scanner arm and the resultant mesh is post-processed in the scanner’s software and exported to an OBJ format for the comparison metrics.  The result of these tests showed that a scanning speed of eight RPM at a distance of six inches was an optimal scanning speed and distance when using a Sense™ 3D Scanner.  These results can be used for inference when creating a new three-dimensional scanning unit.


    The digitization of an amputee’s residual limb has become a crucial step to prosthetic and orthotic socket design, which leads to investigations into where the resolution of the scan versus of the cost of the scanner can be maximized [1], [5], [7].  In addition, stable platforms for the creation of the scan need to be implemented that are repeatable and reliable to ensure the same scan quality every time as this will allow for repeatable socket quality [4], [6].  To fabricate a comfortable socket that will cause less discomfort for a patient, an accurate scan is required to closely fit the socket [2], [3]. 

    Common techniques to do this include using devices such as the Microsoft Kinect, the Creaform HandyScan, and the Sense™ 3D Scanner [5].  In addition to these devices, a protocol and apparatus is most likely needed to accurately and reliably perform the scan [6].  To this end, a custom 3D printed scanning apparatus is used along with a custom electronic control system so the scanning speed and the movement of the arm can be controlled [cite]. 

    The purpose of this investigation is to experimentally find an optimal scanning speed that will create the best scan quality using a low-cost 3D scanner.  In this study, a Sense™ 3D Scanner is used to this end along with a custom 3D scanner apparatus that can reliably move about the central axis of the scanned limb.


    Low Cost Scanner Implementation

    The low-cost scanner being implemented in this study will be a Sense™ 3D Scanner, which prices at 499 USD as of the date of writing.  This scanner, according to its specification sheet, is able to create scans with an accuracy of around 1mm with a resolution of 1mm [10].  The scan range covers between seven and seventy-two inches, but from our previous studies utilizing this scanner we have noticed that a distance of around twelve inches is ideal for limbs [cite].  Finally, the associated software for the scanner can output the scan into four formats: OBJ, WRL, STL, and PLY [10]. 

    The scanning apparatus used for this study was a custom design that rotates about the limb’s central axis using a stepper motor and custom driving circuitry.  This was shown in a previous study to create reproducible quality of scans and can complete a scan in only thirty seconds.

    Simple Arduino Test Code

     * Simple test code to perform scanning speed experiments
     * Original Copyright (C)2015-2017 Laurentiu Badea
     * This file may be redistributed under the terms of the MIT license.
     * A copy of this license has been included with this distribution in the file LICENSE.
    #include <Arduino.h>
    #include "BasicStepperDriver.h"
    #define MOTOR_STEPS 200
    #define RPM 10
    #define MICROSTEPS 8
    #define DIR 12
    #define STEP 6
    #define ENABLE 4
    #define MS1 13
    #define MS2 5
    #define MS3 10
    BasicStepperDriver stepper(MOTOR_STEPS, DIR, STEP, ENABLE);
    void setup() {
      pinMode(MS1, OUTPUT);
      pinMode(MS2, OUTPUT);
      pinMode(MS3, OUTPUT);
      digitalWrite(MS1, HIGH);
      digitalWrite(MS2, HIGH);
      digitalWrite(MS3, LOW);
      pinMode(8, OUTPUT); //RST
      pinMode(9, OUTPUT); //SLP
      digitalWrite(8, HIGH);
      digitalWrite(9, HIGH);
    Read more »

  • Previous Iterations and Lessons

    Walker Arce01/18/2020 at 05:14 0 comments

    This project went through two years of work and ended up with a few previous iterations that each brought its own lesson.  When I started this project I was a Sophomore in Electrical Engineering and had essentially started my dive into embedded electronic design.

    From left to right is the timeline of iterations.  

    By the time it was over, I demonstrated a workable knowledge of electronic design, had learned lessons in thermal dissipation, and learned how to layout components with at least a general understanding of how it would fit into the final enclosure.  

    For instance, when debugging the board to the far right, I could not get the motor driver to operate unless I was putting pressure on it with my finger.  Come to find out, it was immediately going into thermal runaway and shutting down.  So, I sat down and spent time designing the thermal dissipation for the motor driver.  I researched other designs, the physics of heat transfer in PCBs, and correctly utilized the suggested layout in the datasheet for the A4988.  The result was an operational board that ran with low heat and was able to drive a NEMA 23 stepper motor around a circular path with very rare slippage all while having a 590 gram Sense 3D scanner on the end of the apparatus.

    This project was put up to document this work since it was just sitting on my hard drive, so hopefully someone can make good use of it.

  • Implementation of a 3D Scanner Arm

    Walker Arce01/18/2020 at 05:01 0 comments


    Three-dimensional scanning technology has reduced dramatically in price and ease of implementation.  Unfortunately, these low-cost, three-dimensional scanning systems lack intuitive tracking during the scanning of a part.  This leads to issues with mesh alignment during scanning, inaccuracies in the completed mesh and additional time to scan completion.  This is problematic, especially when dealing with human subjects, where fatigue and impatience become a problem for the completion of a stationary scan.  To address this, we have developed a low-cost, simple to use, and repeatable apparatus which rotates any scanner or camera about the central axis of the part being scanned.


    Historically, the production of sockets for prostheses and orthoses has been an involved process that requires clinician intervention in the molding, casting, and fitting to the residual limb [1].  The consequence of this process is high expense and long turnaround time, resulting in ineffective prosthesis prescription especially in recent amputees whose training with a prosthesis is crucial immediately after injury [2].  To address these issues, the implementation of recently emergent technologies, such as 3D scanning and additive manufacturing, has been experimentally and clinically applied to stream line this process [1], [3].  In general, these studies have either relied on complex, expensive, and difficult-to-implement scanning and manufacturing technologies which limited their applicability in the clinic or used extremely low cost and low-quality equipment which led to questionable applicability [4-6]. 

    The purpose of this present investigation is to create a stable platform for low-cost 3D scanners which eliminates reliability concerns in the production of accurate additively manufactured sockets for use in prosthetic and orthotics. 


    Creation of a Custom Control System

    To fulfill the requirements of this study, a custom printed circuit board will be designed in the EAGLE EDA package from Autodesk.  This system will need to be able to control the NEMA 23 stepper motor that drives the gearing of the arm as well as accept input from the user’s computer in order to configure the system.  Possible configuration changes would be altering the rotations per minute (RPM) of the motor to accommodate scanner quality.  For instance, a lower quality scanner may need a slower RPM to capture a similar mesh density to a higher quality scanner. 

    In addition, the integrated motor driver will require thermal relief and careful design to ensure that the high current of the motor will not overheat the driver chip, causing the motor to stop in its rotation and the system failing.  This behavior is mainly characterized by the current limiting of the chip, which is where careful consideration of the calculations is necessary [7].  To calculate the maximum current of the motor coils the following equation is used:

    And when solved for the reference voltage (Vref), becomes:

    By incorporating a trim potentiometer into the voltage reference pin of the motor driver, we can dynamically change this and tune it to suit our motor.  The only dependent parameter is Rcs which is the current sensing resistor used in the design of the motor driver.  This will normally be in the range of milli-Ohms.

    The implemented power supply should be capable of supplying both the motor driver and motor, but also the supporting microcontroller circuitry and active cooling elements.  Motor drivers and motors can normally operate on voltages in the range of 12V – 24V if not higher, so a wall plug power supply is suitable if it can deliver the currents necessary, which can be in the range of 1A – 3A.  The microcontroller implemented should have a USB interface to allow for the configuration changes to be applied, as well as enough input/output pins to...

    Read more »