The SHULDR Device
Modified U-Joint (MUJ)
Separate Joint (SJ)
The mechanical design process of the project was guided by two main constraints: replicating accurate human shoulder movement by achieving the full range of motion (ROM) necessary to perform upper arm repositioning (UAR) and ensuring anatomically precise shoulder movements. Specifically, having a singular center of rotation (COR) and reaching the full ROM of a human shoulder were difficult features to find in the same design.
Initially, a Pugh chart was created to evaluate various shoulder joint design ideas based on criteria such as cost, familiarity, mass, range of motion, and others. This evaluation led to the selection of two designs for prototyping. Initial prototyping information can be seen here in greater detail.
Both prototypes were developed and tested, and the final design emerged as a combination of the best elements from each. This hybrid and novel design, however, still required important modifications to optimize its functionality. The main two changes applied were:
Inverted the small basket orientation to create an inverted u-joint
This enabled the shoulder joint to achieve better weight counterbalance
Added a wedge to the separate joint (SJ) base
This enabled the shoulder joint to access a greater range of motion to accurately replicate the specific motion of upper arm repositioning
These refinements were crucial in ensuring that the final design not only met the project's original constraints but also provided a robust and accurate replication of human shoulder motion. The iterative process of prototyping and refining enabled us to achieve a high-performing mechanical component for advanced physical human robot interaction applications.
The software component of the project can be broken down into two separate functions: sensing position and applying torque feedback. To reduce risk and ensure the function of each feature, an incremental approach to software complexity was utilized. For example, before proceeding with torque feedback, it was important to verify that reliable position data could be obtained from the encoders. Similarly, software was first programmed and tested in a 1DOF system before being implemented onto a 3DOF system to better isolate any potential issues.
Electronic components were chosen based on project needs and budget constraints. Cheap electronics were initially used to demonstrate functionality and eliminate purchase paralysis to the detriment of hardware performance. This proved successful in helping keep costs low by avoiding over-engineering of components and gaining a better understanding of hardware limitations through rigorous testing.
The code implemented on the haptic shoulder project is built using C++ for its ease of implementation with the Arduino IDE framework and its ability to do object-oriented programming. Each motor is initialized with a motor identity, encoder pins, motor pins, range-of-motion limits, and dynamic parameters (stiffness constant and damper ratio). The scripts are stored at this repository.
To simulate the resistive forces of a shoulder, a virtual spring and damper were modeled in software based on the position of the upper arm.
No Torque Feedback Enabled: Peaks at 1.32 Nm
Torque Feedback Enabled: Peaks at 1.37 Nm
Difficult to see a difference when torque feedback is enabled
No Torque Feedback Enabled: Peaks at 10.17 N
Torque Feedback Enabled: Peaks at 10.84 N
Can see a measurable difference when torque feedback is enabled
Human Shoulder ROM v. SHULDR Device ROM Comparison
Shoulder Movements Nomenclature
The SHULDR Device is capable of accessing the full ROM necessary to accurately perform upper arm repositioning (UAR), as shown above.
For the SHULDRD to be used in a wide range of applications, however, it is compelling to have it access the full ROM a human shoulder is capable of achieving.
The table on the top left compares the ROM accessed by an average human shoulder with the ROM accessed by the SHULDR Device for different shoulder movements.
For reference, each shoulder movement is illustrated in the figure on the bottom left.
The only movement for which the SHULDRD does not access the same ROM as the human shoulder is flexion. To perform UAR, however, flexion is not executed while the extension motion is. Therefore, a trade-off between losing flexion ROM and gaining extension ROM was necessary to fulfill the project's objective.
Wiring diagram focused on power distribution
Position sensing is an important function of the haptic shoulder project.
It is necessary to determine when to apply a resistive torque. When in a region hazardous to the safety of the human shoulder (the "end range of motion"), a virtual spring and damper is simulated and then converted into inputs to be given to the motor.
The software state machine is described from system start-up to end of operation.
Position data will always be logging to a CSV file during normal operation. Due to the use of incremental encoders, a calibration step is necessary to ensure accurate and consistent position data.
For this project, C++ was used for ease of use with the Arduino framework and for object-oriented programming.
Each motor is initialized with relevant hardware information and can be customized to simulate various dynamic parameters. ROM limits, stiffness, and damping can be specified to the operator's specifications.
Relevant code can be viewed in this repository.