Overview (Project In Progress)
Overview (Project In Progress)
At TUHH, a technical university in Hamburg, Germany, in the MUM lab, I am researching applying soft robots for underwater applications. I was tasked to retrofit the design and the inverse kinematics to work underwater. This system is run off a Raspberry Pi controlling four servo motors.
My first step was to redesign the actuation method. Since this soft robot is tendon driven I reoriented the spools that drive the robot to be inline with the tendons. The previous design had the tendons bend 90 degrees before attaching to the spools. Keeping the tendon inline with the spool reduces friction, and thus model mismatch, and reduces the footprint the robot takes which makes deployment easier. Reducing model mismatch ensures the neural network that will be used to control the robot will be more accurate.
Waterproof servos are used to drive the spools that then apply tension to the tendons to bend the robot. The servo accuating the claw (not shown in CAD) still requires a 90 degree bend of the tendons but since the claw only needs to open and close, friction does not impact this function greatly.
The forward kinematics of the robot, determined using geometry, can be used to generate simulated points that can be feed into a neural network to determine the inverse kinematics. The forward kinematics determine the end effector positioned based on the distance each tendon is pulled.
A neural network is trained to determine the inverse kinematics so then desired end effector position can be given to the NN and the required tendon lengths can be mapped to PWM signals for the servos.
Underwater soft robot grabbing ball and moving through 4 given end effector positions.
Trajectory Control
Implementing the inverse kinematics neutral network to move between desired waypoints proved to introduce large oscillations. In order to reduce these oscillations and improve control, I generated an exponential trajectory between the desired and current coordinate. This proved very computationally expensive for the Raspberry Pi since the neural network needed to solve for many intermediary points. To work around this I decided to use the NN to compute the PWM values of the servos for the current and desired point then generate an exponential trajectory from the current PWM values to the desired PWM values. The results can be seen below.
Without trajectory generation
With exponential trajectory generation