Mantis - Stopping the Next School Shooting

Using AI and robotics to deliver an instant response to school shootings

Public Chat
Similar projects worth following
This last spring I was shocked with the news of the death of a high school friend and FIRST Robotics teammate during a mass school shooting.

Soon after that day I started working towards a goal of making these events impossible, not just improbable. This project, a proof-of-concept for a school security system, is a part of that effort. The system would be built into a school's infrastructure. It would deploy itself if audio sensors detect gunshots in the school or if a panic alarm is activated. A human operator with the assistance of computer vision would identify the threat. The threat would then be inhibited by a barrage of "sticky" paintballs launched with the intent of blocking the threat's vision.

The goal of this project is to demonstrate with open source technology that building such a system is achievable.

The Problem

We have all seen the headlines. 

Fundamentally, students are not safe. There is little in place, whether legislation or school security, to protect them from these types of events.  Teens know it.  Surveys show over half of them are worried about events like these happening at their school (source).

Losing a friend in a mass school shooting launched me into this project. I want students to know they are safe from these events while in school.

Project Goals

Mantis's design objective is to provide an instant response to stop a school shooting within seconds of its start.  This response needs to be powerful enough to deter would-be shooters from attempting an attack in the first place due to the presence of the system.  The goal of this project is to demonstrate that the technology for such a system certainly exists today.

And the project is getting closer to reaching that goal.

Mantis Prototype 1 Design

Goal of initial prototype is to demonstrate proof-of-concept capabilities of the system.

  • Audio detection
  • Vision recognition and tracking
  • Aiming at target
  • Effectiveness of molten wax spray

Wax Spray

Going into the project I knew the single most difficult problem I would face in the design was finding a method of actually stopping or impeding the assailant.  It should be obvious that lethal weaponry would be wildly inappropriate for an automated system like this in a school.  Other options such as tasers and kinetic energy (rubber bullets) “less-lethal” weapons are still off the table.

I realized method of stopping the assailant needed to conform to the following criteria:

  • Cannot cause serious injury
  • Precise, only affects the assailant, doesn’t impede people trying to escape
  • Has a range approaching 30ft
  • Is inexpensive
  • Stops or seriously impairs the assailants despite their knowledge that the system is in place

Pepper spray fails the 2nd and 5th requirement as it would affect nearly everyone in a room and pepper spray resistant masks exist. 

The concept behind a wax spray being used to blind an assailant is simple.  A wax would be stored as a liquid at a temperature above its melting point (waxes exist that have melting points of ~110F).  The wax would be fired at the assailant's face using pressurized air.  The liquid wax spray would solidify on the the assailant's face, making it difficult to remove.  The spray would remain effective regardless of weather the assailant wears googles or a helmet.  

Mechanical Design

The core of the mechanical design is a rotating gimbal carrying the spray gun.  The gimbal is powered by two brushless motors via Servocity gears.  The structure of the gimbal was cut from birch plywood with a cnc laser at a local makerspace and painted black.  Part of the original design (see Project Log #3) was a mechanism that loaded paintballs into the barrel of the launcher from the side via a cog rotating around the barrel.  This loads the paintballs regardless of the position of the gimbal.  Two aluminum tubes support the gimbal and electronics.  The CAD is available on Onshape via this link:


The electronics are powered by a 12V DC power supply.  I used an Odrive (a previous Hackaday Prize entry) to control the motors.  Brushless motors controlled by Odrive are mind-blowingly quick, precise, and powerful, perfect for this application.  An Arduino will control power to the the loading system and paintball launching pneumatic solenoid valve.  All computer vision processing is currently being run on a tethered laptop.


This project’s software...

Read more »

  • Prototype Tracking Demo

    David Gedney08/13/2019 at 16:42 0 comments

    Next step is to put a sprayer in place of that barrel.  

    Sorry about the shaky voice and camera; it was after a long day of design work.

  • Saying Goodbye to Sticky, Icky Paintballs

    David Gedney08/11/2019 at 05:08 0 comments

    Reading through the project details, you’ll probably have the impression that the concept of “sticky paintballs” are crucial for this project.  Demonstrating their theoretical ability of precisely covering someone’s vision in a way that's difficult to wipe off would be huge.

    Making the Paintballs

    To start, I knew I needed to make some physical sticky paintballs to experiment with.  Trouble is manufacturing paintballs is a pretty complicated process.

     My go to DIY resource, Google, was useless as for finding a way to make them.  I’m still open to any ideas!

    I decided the only realistic way to do it was to modify normal paintballs and change their filling to be something that’s a little stickier.  I picked up a package of 1000 at Dick’s (which is apparently not a lot as far as paintballs go). 

    Today I made my first attempts at modifying the paintballs.

    My first method was to split one in half, drain out the “paint,” fill both halves with honey, and finally weld the two halves together … with a soldering iron.  Yeah, terrible idea, but it was worth a shot. 

    Honestly, I thought it would turn out way worse.  The outer shell burned instead of welding, leaving a useless "paintball" only held together by the honey inside.

    For my second attempt I poked two holes through either side of the paintball with a needle and then used a syringe to empty the paintball …

    and then fill it with honey.

    The first few attempts ended up as messes but soon I had it down.  It wasn’t long before I had a handful of sticky paintballs.  Minus the pinholes they looked unaltered. 

    My first experiment was to throw a couple of the sticky paintballs at the ground as hard as I could.  I quickly realized something was wrong, the sticky paintballs only cracked (next picture); they did not smash into goo like normal paintballs would after that type of impact (2nd picture).

    Sticky Paintball

    Unaltered paintball

    I initially attributed this to there still being air pockets in the paintballs.  I changed the method of replacing the paint fill with honey by directly injecting the honey while pushing out the fill.  It didn’t help.  I discovered that the real cause of the paintballs not smashing is that the honey is holding them together.  This same stickiness that’s key for blocking an aisalants vision would keep them from exploding and spreading on an assailant’s face.  Not good.

    The number one safety rule for playing paintball is using eye protection.  Standard paintball guns are calibrated to fire just under 300 ft/s.  They are powerful enough to know out an eye.  For the final implementation of sticky paintballs, I was planning on using a larger diameter (of over an inch) to help distribute the impact force and reduce the risk of eye damage.  However, as explained above manufacturing custom paintballs is off the table for now. 

    Now however, I realize that the sticky paintballs will have to be fired with even more force to ensure they burst.  This was something I completely overlooked and it changes things quite a bit.

    Launching Paintballs

    Prototype 1 was designed to launch paintballs

    I duct taped to the back of the barrel a tube that lead to a 12V solenoid valve attached to a 90 psi airtank.  Switching on the valve released pressurized air to launch the paintball.   Unfortunately, with the 8-inch barrel, the paintball just rolled out the front of the barrel.  By extending the barrel length, the system managed to fire shots that were powerful enough that the (unaltered) paintballs burst when they hit a hard surface.  Since a 3-foot barrel isn’t realistic for the prototype, I’ll have to find a more powerful valve than the one I have currently.  It’s only 0.23 CV,...

    Read more »

  • Calibrating the Launcher Aim

    David Gedney08/09/2019 at 22:38 0 comments

    Yesterday, I had the first chance in two weeks to work with the physical prototype.  Since at this point in the project it is important to get feedback from professionals in the field of school safety (school administrators, police officers) I want to be able to show them the prototype as a proof of concept.  For the initial proof of concept what’s most important is the computer vision human recognition code (which I have) and the prototype aiming the launcher.  The aim of the launcher needs to be in reaction to what the computer vision system is seeing and a human user input. 

    Something I feel is completely necessary is that the aim is accurate, the launcher needs to be pointed directly at the target’s face.  Demonstrating that precision would probably be crucial to getting anyone to think that robot launched "sticky paintballs" is a remotely feasible method of stopping a school shooter.  

    To do this, I knew I would have to correlate the position of the motor encoders to the camera feed.  I set up the prototype, oriented the launcher to be pointed at some arbitrary target in the room, and then selected the same target on the camera feed.  A python script I wrote recorded the position of the encoders and the position I of the cursor on the feed.  I repeated the process to get a distribution of points.

    Selecting a target in the feed

    while manually orienting the launcher at point at the target (using“bore sighting” ).

    I originally intended the to have a more systematic and complete distribution of points as I was expecting a complicated relationship between the pan and tilt encoders vs. the x,y position on the screen (as well as that the pan and tilt would both be x, y dependent; 3D scatter plots ftw!)

    But I had the very pleasant surprise of finding the relationships between the x, y positions on the camera feed position and the pan, tilt encoders were almost perfectly linear!  It must be an artifact of the 170-degree fish-eye lens, but this will make my life a whole lot easier!

    While I anticipated this to be one of the larger hurdles for getting this prototype working, I am happy it was an easy process (unlike getting the YOLO algorithm to work :O ). From here, correlating the position of what Mantis is "seeing" to where it aims should be straightforward.  

  • Two Implementation Approaches

    David Gedney08/07/2019 at 20:13 0 comments

    Something I did fail to address in the description and details portion of this project is what it would “look like” in its final form when built into a school. This was partially intentional. I have yet to completely define how I want to approach it. But I do have a couple of ideas 

    Idea #1 Launchers mounted on stationary turrets.

    A system analogous to this approach is the automatic fire sprinkler ubiquitous in any modern building. Distributed on the ceiling in every room, they are activated by the presence of fire. The sprinkler heads release pressurized water onto the fire, hopefully preventing injuries or fire damage. 

    The basic concept for this implementation is the same. Turret mounted sticky paintball launchers would be situated in the ceiling or on the walls of every room and the hallways of a school. In the event of the sensors built into the system detect a gunshot, the launchers would deploy from tamper-proof enclosures and engage with the assailant.

    Render of the current prototype, a stationary turret, in a classroom in a "deployed position."  Deployment would only occur in the event of a shooting; students would hopefully never see the launchers.  I apologize for being really terrible at photo editing!  

    Idea #2 Launchers mounted on mobile robots

    Putting automated paintball launchers into every room would require a lot of automated launchers. Since each of these robotic devices is a significantly expensive unit of hardware, the cost of the entire system would be driven up very quickly as it is implemented everywhere in the school. 

    The main advantage of mobile over stationary launchers is that it requires fewer units per school. Instead of needing say 200 units per school (avg. square footage of a U.S. high school is 173,727 sq. ft, meaning each unit needs to cover ~900 sq ft, a 30x30ft area) along with each of those units wiring and data management, you would only have about 10 mobile units distributed throughout the school. The mobile robots would be largish (fit within a 3x3x3ft cube) and would drive teleoperated along the floor from its base to the room or hallway where the assailant is present. The 10 units within the school would hopefully be able to provide a much faster response than a school resource office (SRO) to any place within the school and would be more immune to gunfire than an SRO. 

    I believe that building teleoperated mobile robots that directly engaging with a shooter in a chaotic scenario are, unfortunately,  unrealistic with today’s technology. The robots would also be susceptible from being barricaded by the shooter to keep them from where they need to be.   Although perhaps faster than an SRO, the robots are slower than turret launchers already placed in a room.  The shockingly short timeline of the Dayton shooting this past weekend showed just how important each and second is in these scenarios.  

    Perhaps there is a third method. I am trying to arrange a meeting with an architect with school design experience so I can start crunching some real numbers and get a better idea of how a school’s infrastructure really works.

View all 4 project logs

Enjoy this project?



John Opsahl wrote 08/11/2019 at 02:27 point

Sorry to hear about your friend. I admire you decision to do something to stop school shootings. Good work on putting the paint ball loader at the center line of the barrel rotational axis. That doesn't look like it was easy. I have had good experience with cheap slip rings for cable management on multi axis heads like this. I am curious on the mechanical connection at the top rotational axis. Thanks for sharing.

  Are you sure? yes | no

David Gedney wrote 16 hours ago point

This section view screenshot might help you understand the top axis.

The top axis turret is floating, sandwiched in a system of 12 ball bearings (the support parts for the bearings are not visible in the screenshot).  The motor rotates the top axis via a shaft mounted gear.  

The Onshape CAD document is publicly available here:

Let me know if you have any other questions!

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates