/iron-dome

A robotic projectile defense system with style

Primary LanguageC++GNU General Public License v3.0GPL-3.0

iron-dome

The Iron Dome is a projectile defense system using the Kuka LBR iiwa robot. The system dynamically identifies incoming projectiles headed toward a target, estimates their trajectories, and intercepts them in a fraction of a second.

Iron Dome Image

Our vision system uses an off-the-shelf Kinect V2 to detect and label incoming projectiles. The measurements are sent through a Kalman filter and trajectory predictor to determine the intersecting time, position and orientation with the robot defensive zone. The robot is then commanded to move to the desired configuration in advance of the projectile(s), preventing them from hitting the target. To improve robustness, stability, and reliablity of the control of the robot, we run our task space position and orientation controller in software, adding a tangent potential field to push each joint away from reaching joint limit, and clamping position and orientation errors to avoid large motions. We then feed joint angles directly from our simulated result to the physical robot, which runs a very fast joint position controller. The result is a system which can dynamically respond to thrown projectiles from a distance of as little as three meters.

Creators:

Videos:

Full documentation can be found in website/ or online here.

NOTE: The specifications of Kuka robots are not public, so we are not able to include them in this repository. We have included the specification for a Puma robot, so change to this robot in src/IronDomeApp.cpp if you'd like to compile the project.