IK on Bellows Arm

Skilled Used: ROS, RVIZ, CMAKE, PD Control, Motion Capture, simulation, networking, inverse kinematics

GitHub Repo

This was my final project for ME EN 537: Robotics at BYU. The goal was to control a new pneumatic bellows arm (developed in the BYU RaD Lab) using inverse kinematics. The goal position for the end effector was updated from commands sent by an xbox controller.

I create a package in CMAKE, available at the GitHub repo above. This project involved interfacing with many other packages including:

To start this project, I got a basic simulation working in RVIS where the current position (red) and target position (green) for the end effector were visualized. By creating a simulation environment I was able to validate several things:

Once the major components of the project were validated in simulation, I moved to hardware to actually control the robot. The first step here was to tune the low level PD controller on a new robot. This was difficult because soft robots are inherently unstable systems and I had to tune PD gains for 16 outputs. 

After achieving good performance with the PD controller, I ran my IK package on the arm. It didn't work the first time (not surprisingly), but after lowering the max allowable pressure and fixing a few ROS publishing bugs, it worked! The control is still relatively slow, but this is as fast as it can go without going entirely unstable and oscillating (causing damage to the robot and environment). 

You can see in the video below that sharp changes in the goal position resulted in oscillations that eventually settled down. To control the robot well it required a significant reduction in the allowable "step" coming from the IK algorithm. It was extremely exciting for the algorithm to run real time and control a piece of hardware. 

On the left is the error plot in meters for a hardware test. Each peak represents when I sent a new command to the robot, showing the slow response and resulting settling of the actual position into the goal position. A controller that is better than the PID controller could achieve a better transient response, which will be a part of my research.