top of page

SOFTWARE

SpotBot is programmed with a combination of MATLAB and C++. An Arduino microcontroller, programmed in C++, is used as a data acquisition and communication device to read sensor signals and send control signals to the motor. The Arduino communicates with a MATLAB host, running on a USB-connected laptop, via a custom serial communication interface. This interface encodes and decodes 14 byte data packets to transfer data, and is efficient enough to complete over 120 feedback control loops per second. This is over 10 times faster than built-in Matlab to Arduino communication interfaces.
 

The MATLAB control environment is composed of several Graphical User Interface applications and a custom built class/object system. This object-oriented approach allows for flexible system control, extensive user interaction, and accessible data storage. At the center of the control system is a proportional-derivative incremental control algorithm that adjusts motor voltage to reach a target cable tension. This controller is able to maintain a static or dynamic target cable tension despite the random disturbance of the user’s lifting force. To the user, the bar feels like it is only affected by normal gravity at whatever weight have have programmed the machine to achieve. They can accelerate the barbell however they like, as long as it is not so fast as to temporarily lose tension in the cord (due to control loop latency).

SpotBot integrates a complete user account system that allows lifters to create profiles with personal information and pictures. User accounts track and display extremely high resolution performance data from every workout, set, and individual repetition that lifters execute. Another centerpiece of the software is a workout design tool that let users access the cool mechanical functions of the machine, such as dynamic training and automatic spotting. A live workout page plots real time progress, giving the user immediate feedback and guidance on their performance.

LOGIN: Users log into their accounts using a simple email address. Returning lifters are taken to their account page, while new users are taken to a register page. Users can choose to work out as guests.

REGISTER/UPDATE: New users (or existing users who wish to change their settings) use this page to fill in their personal information such as height, weight, and date of birth. They can use the laptop webcam to take a profile picture.

ACCOUNT: View histories of key performance metrics such as calories burned, workout duration and pace, power generated during lifting stroke, right-left balance, repetition rhythm, and more. Past workouts are saved and displayed allowing easy viewing of user’s lifetime performance. Resolution varies from this lifetime view to detailed analysis of an individual repetition. All information is displayed graphically and automatically updates when the user completes a new workout. From this page users can launch new workout designs to start their exercise experience.

WORKOUT DESIGNER: On this page, users build workouts to be executed on the machine. As a starting point users can select from a drop down of their previous workouts or SpotBot suggested workouts. They can also build and name their own from scratch. Users have complete control over their workout, with the ability to adjust the number of sets, number of reps, bar weight, and so on. More importantly, they have access to dynamic exercise and spotting settings. SpotBot’s two dynamic training options are Dynamic Set, where the machine adjusts the weight throughout a set, and Dynamic Rep, where the machine adjusts the weight within a single repetition. Spotting sensitivity can be set to the user’s preferences for how quickly they would like the machine to recognize lifting failure. All workout design information is displayed graphically and the controls are extremely intuitive.

LIVE WORKOUT: View a real-time display of current repetition, weight bar position, and apparent weight of the bar. Also displayed are workout type and indication of dynamic lifting functionality, such as dynamic set and dynamic weight settings. If SpotBot detects a lifting failure, an indicator will appear alerting the lifter of the onset of the spotting sequence.

bottom of page