The mechanical design incorporates three major parts: a rigid nose to provide a streamlined front edge, inspired by the relative lack of undulation in stingrays’ anterior discs ; a waterproofed body segment to contain the electronics; and soft fins that extend from the nose to a fixed tail and are attached by eight rigid rays individually actuated by motors.
The circuit consisted of an Arduino Mega, an IMU 6050, Bluetooth chip HC-06 and 8 SG92R micro servos.
The motion of the stingray inspired robot relies on creating harmonic wave-forms across the fins . This is achieved using the following equation for motor control:
θi = θmax * sin(2πft + φi) where, θi is the angle of the i-th motor (and fin)
θmax is the maximum amplitude in degrees that the ray can move
f is the frequency
φi is the phase at each motor
As per the Shannon sampling theorem, the maximum phase difference between adjacent fins to create a harmonic wave is π/2 . This is set as a hard constraint in the code. The four moving rays along with the fixed nose and fixed tail mountings create five fin sections. Assuming a basic standing wave configuration owing to the fixed ends, we can achieve a wave number of 1. The outer control architecture deals with setting the value of the parameters (amplitude, frequency and phase) of the individual motors based on commands from the application. Owing to the complexity in relation between different parameters and their effects on the motion of the robot, testing was essential to determine optimal parameters for a particular motion. The forward motion is achieved by feed-forward control changing the frequency to achieve higher speeds. Turns would be achieved by a feedback loop mapping the turn command to variation in frequency or phase difference (as determined by tests) and referencing it with the actual yaw achieved using IMU sensor for further correction.
We created an application using the MIT App Inventor that allows the user to vary the amplitude, frequency and phase difference of the motors on each side over a Bluetooth connection. It also receives parameter values, raw accelerometer and gyroscope data from the robot. It stores these values on the phone for post processing and verification and displays them in real time on the application.