Chad Krause

A small blog about my projects




Javelin is an ongoing project that I have been working on for a few years. Javelin is a T-Shirt cannon robot that is going to be used to promote STEM and Waverly Robotics to the Lansing community. Javelin was designed almost entirely by me, with strong influences from General Dynamic's Stryker platform.

Design Considerations

There are tons of decisions that go into every part that is on this robot, and I have highlighted a few below


Javelin's final drivetrain is an 8 wheel, tank-drive drivetrain with 8" pneumatic wheels. The wheels are positioned so that the middle 4 wheels are dropped a tiny bit to allow for easier turning. The back wheel is raised just a bit to help with this. The front wheel is raised just enough to combat curbs.

Javelin's purpose is to recruit and be an all around fun robot to drive. This robot will be driven by anyone in the community, and many parts of the robot are designed with that in mind.

The drivetrain has the front 2 wheels raised up so that it can withstand head on collisions with curbs. Our team loves to demonstrate our robots at fairs, car shows, and other random outdoor events. We are always near curbs, so making the robot curb-proof was a must.

Javelin's drivetrain is a bit toned down from the original plan, which was to have 4x Alien Power System 63mm sized motors that would output a total of 16 horsepower. Now, it's powered with 4x Falcon 500 motors, as we felt it was unnecessary to be able to tow a car (we actually did the math). It's also much easier to use standard FRC components.

The front has plastic rock sliders (modeled in light blue) that will help with curbs and running into things. This is to protect the front, as well as give it some extra styling. The whole drivetrain will be sprayed with Line-X bedliner.

The whole drivetrain is made from 1/8" 5052 aluminum for extra strength (compared to the typical .063" or .08" we use on competition robots)

The drivetrain's main driving components are located within the tube rails. This is to prevent dirt/rocks/carpet from getting sucked into the drivetrain. The gearboxes are AndyMark Toughbox Minis, which are protected by a plastic cover. The drivetrain axles are 1/2" hex, made from 303 stainless steel. I wanted steel to provide extra strength (curb-proof), and water resistance, so 303 stainless was an easy choice.

It's a tight fit inside the tube!


The turret is a 6-barrel revolver style shooter. It has 5x 2.5" and 1x 3" barrels. The 2.5" barrels are perfect for rolled-up t-shirts, while the 3" barrel is perfect for a baseball.

I really am jealous of Frog Force 503's baseball cannon robot, so I thought I'd include a slightly bigger barrel. We already have approval from the Lansing Lugnuts to use this robot to throw out the first pitch, one it's complete

The turret has 2 adjustable axes. The first being a 60deg tilt adjustment, powered by 2x Falcon 500s. The second axis is the revolver for the barrels. The air blast comes out of the top-most barrel when it's at 0 degrees. To get air to all barrels, we simply rotate them.


The barrels rotate on 8 outer bearings. These are custom delrin bearings. They have a deep groove to hold in the plates that attach to the barrels, and have an 608zz bearing pressed in and locked in with a clip ring. Delrin was chosen because aluminum on aluminum contact does not make for a great bearing, and the barrels are going to be powder coated, so I didn't want the paint to scrub off too easily.

The barrels rotate with a belt and a custom 186 tooth pulley. The pulley is made from a laminated polycarbonate stack. Polycarbonate is strong and we had a lot of material left over from the COVID-19 barriers we made for the school district.

How do we know where the barrel is?

As I mentioned before, the shot comes from the 12 o'clock position. Releasing 100psi+ air against a solid plastic object is a recipe for disaster, so I came up with a great way to make it safe.

Around the back plate (gray round disk with several holes in it), there are magnets (CADed in light blue) pressed in. These magnets are positioned 30deg off from the correspoding barrel. The magnets are read with a magnetometer that is also 30deg off from the barrel. To safely shoot, we are going to first check if the magnetometer detects a magnet at the right intensity (to ensure the magnet is spot on, and not just close).

The also helps us reference the barrel. It is not enough to just detect there is a barrel present, but we must also need to know which barrel is lined up. As you may recall, there is a 3" barrel for baseballs, and 5x 2.5" barrels for t-shirts. There are 6 magnets, one for each barrel. Every barrel has their magnet with the magnetic north side facing outwards, except for the 3" barrel, which has the magnetic north side facing in, and the south side facing out. By running a routine, we can reference the barrel by detecting the one magnet that is opposite facing. From there, we know where the barrels are.

This is very cool, and the proof-of-concept model is even cooler in person, but it's not something we want to do every time we power up the robot. To deal with this, I added a 1:1 pulley (purple and gray), which is attached to an absolute encoder (a CTRE CANCoder). Once we reference the barrels, we save the offset on the robot controller and use that to seed the motor for positioning. The main PID loop will actually be ran on the Falcon 500 using the motor's internal encoder, so we can have a cool, 1000Hz loop rate.

Other considerations for the barrels

This robot will (eventually) be water-resistant. We don't want a little rain to cancel any first-pitch or event. If the robot gets rained on, the barrels will fill with water. To combat this, I added holes to drain any water collected in the barrels.

The barrel is also designed to rotate continuously, while also having electronics attached inside the barrel assembly. I did this mainly to challenge myself, but also so I can have LED's in center that also continuously rotate. These are powered by a slip ring from Adafruit. I also want to eventually add sensors to detect if the barrel is loaded, however that is for another time.

I wanted clean wiring, so the dark purple parts have secret holes in them to help facilitate this.

Tilting the Turret

The turret has custom machined 98t sprockets. This decision was made because there are no big spockets available on the market, and I also wanted the challenge of making them. The metal one you see pictured was machined by the team's brand new Tormach 770MX. This is actually the second iteration of the design, the first was laminated polycarbonate, just like the barrel pulley.

The first two sprockets that were machined didn't end up working out. I chose to use an HTD profile generator from MKCAD, which imports the final result directly into Onshape. This profile had flat spots in the teeth, so I was not able to drill out the teeth with a drill. I tried machining with a 3mm endmill, however the endmill flex and failed to machine the proper shape. I ended up redesigning the teeth to use a round profile that could be drilled with a 3.1mm drill. This worked out perfectly, and the belt fits beautifully.

I decided to keep the adaptive-clearing finish on the bottom because I really do love looking at that texture. I am really happy with the result and will make more this way if I see fit!

The turret has a +50/-10 tilt range. I have yet to design hard stops for this, but I don't imagine with will be too hard. The tilt is powered by 2x Falcon 500s, and I plan to use the internal encoder to power the PID loop. The encoder will be seeded by a gyroscope to get the initial tilt angle on power up.

Pneumatic system

Most FIRST Robotics T-shirt cannons are powered by a SCUBA tank. I thought this was going to be too heavy and rediculous to carry and drive around. I ended up going with a 4500psi HPA carbonfiber paintball tank with a 100 cubic-inch capacity. I estimate that we can get roughly 30 shots out of each tank, which is more than enough (T-Shirts are too expensive to shoot any more). This has the advantage of being much lighter and more compact. Plus, we can always swap out tanks as needed. We currently have 2 tanks on order, So roughly 60 shots per event. Plus, the paintball shop likes us and will let us refill for free!

Shooting T-shirts is all about flow, not pressure. We have a hose that will act as our high-flow, low pressure accumulator. It's a 1" hose going from inside the chassis to the top of the turret. The plan is to fill that hose with air and dump it into the barrel with a sprinkler valve. This is the sort of thing that we can really only test out in person, so I am excited to see how that goes. I am hoping for over 150ft but I will be happy with 100. Anything less and it's back to the drawing board!

There will be several solenoids in the system. 2 for the shooting system (fill and purge), 2 for the cooling system, and 1 for an air brake for the tilt mechanism. We need a cooling system because the robot will be potentially be driven for hours by the community, and the drivetrain and tilt motors are going to get hot! The Falcon 500s have a pneumatic port for cooling the motors. We plan on making good use of it! We also don't want to waste air, so we will monitor the temperature and have active cooling when the motors heat up.

Other design considerations

This robot is going to be flashy. The cut outs for the logo and name are all going to be LED backlit. The cutouts are going to have plastic infills that are machined out on our router, than sprayed with fog spray to give a nice, diffused look.

The hood is a nice solid, 1/8" thick piece of metal that is gas-shock assisted. This hood is going to protect the batteries. It also helps give the design a more of a Stryker look.


The robot is going to be driven by kids and parents of all ages. There is a safety risk by letting people who don't now how to drive a robot, drive a big, metal robot that shoots things at 100psi. To combat this risk, we are making the robot community-friendly by adding a dead man's switch. This will be in the hands of a trained operator (a student or mentor). Then, the normal driving controller will be given to whoever wants to drive. The trained operator will be able to increase or decrease the spead of the robot, disable the turret, and even completely shut down the robot and apply the brakes. This will be completely safe to drive by even the most devilish little kid.

The Driverstation is going to have a super cool custom dashboard. The goal is to have a virtual, 3d model that is representative of the physical robot. The barrels, wheels, and hood will be all reflected on the 3d model in real time. The dashboard will also give the user many gauges and functions, like referencing the barrels.

Here is a small proof of concept. This is written in Angular and Three.js:

This demo features a rotating barrel and tilting turret. This was a bit difficult to do, as the model had to be extremely simplified and the rotating parts had to have the center of rotation in the middle of an axis. Plus, I am a noob when it comes to 3d computer graphics.

This will communicate in real-time to the robot using sockets and FRC's Network Tables. The robot will (hopefully) be properly shaded and colored in to make it look a lot nicer. I am hoping to mimic a 'vaperwave' background, like in this example:

Student involvement

This project's main purpose is to promote STEM and Waverly Robotics to the community. The majority of the development was done during the COVID lockdowns, when we barely got enough students to complete the at-home robotics challenges. Now that we are meeting in person, the students are designing smaller parts on it, machining, bending, and assembling the robot.

All comments