Advanced Control for Soft Robotics
Active Stiffness Control: Adding a Dimension to Robotic Arms
About the Project
For this project, I explored a control methodology for a "soft" robotic arm. Soft robotics have gained attention in recent years for applications requiring close human contact. For example, a rigid robot might injure someone if it hits them, even at speeds we wouldn't consider dangerous. Soft robots, however, have some form of mechanical compliance to reduce shock loads to both themselves and their surroundings.
This allows soft robots to operate in close proximity to people, an imperative for rehabilitation tasks. Research like this is a precursor to safer and more ubiquitous rehab, factory, and household robots.
Skills Involved
- C++
- Large project architecture
- ROS Control
- Action servers/clients and actionlib
- High-dimension control spaces
- Inverse Kinematics
- MoveIt!
- Soft robotics
- Matlab
- Human-robot interaction, shared control
- Rehabilitation robotics
- Teleoperation & joystick control
Procedure
In order to use the hardware, I first had to flash updated firmware, set up the underlying hardware interface, and integrate the robot with ROS. This was relatively straightforward, but only allowed for simple control tasks, such as sending individual motor positions or stiffnesses from a command line. In order to make it more useful, this basic functionality was incorporated into a ROS node, providing a basic API for full arm state control, including all six degrees-of-freedom for joint position, stiffness, and Cartesian position. Handy safety features (e.g. position and stiffness rate control, to prevent jerking) were also incorporated at this level.
From these primitives, higher level behaviors could be built. Joystick control, for example, is extremely useful for experiments investigating human intent for reaching and grasping tasks. Integrating MoveIt also enables easy integration of planning software and workspace simulation. With this suite of tools in place, we now have a useful development platform ready for advanced projects!
The special aspect of this project lies in the somewhat odd-looking motors, which are cube-shaped and relatively large for the amount of torque they provide. Inside, there are actually 2 motors attached to a single output shaft - the manufacturer has a helpful animation of the internals about halfway down on their homepage.
These motors are attached to the output shaft in series using elastic belts. If the motors aren't spun in unison, the elastic bands are stretched, producing opposing forces and raising the effective stiffness of the output. Essentially, this grants full control of both position and stiffness at each joint.
Today's "normal" robots don't have this extra element, and thus employ a very different control strategy from soft robots. In fact, contemporary strategies typically eliminate the desired softness altogether in pursuit of high accuracy. An emerging and promising strategy to resolve this conflict is called Iterative Learning Control (ILC). ILC uses machine learning to learn intrinsic system properties that may be hard to model. For this project, we hoped to learn how the unmodelable and inconsistent behaviours of the arm (think friction) might affect the dynamics of the system, allowing an optimized, minimal-stiffness trajectory to be found and utilized for subsequent motions.
Learn More
Nested in the Assistive & Rehabilitation Robotics Lab at Shirley Ryan, research like this is helping advance the future independence and quality of life for those affected by physical impairments. This work was completed in collaboration with the University of Pisa's Centro E. Piaggio and qb robotics. The software is not entirely open-source, so please contact me if you have questions.