I use OpenSCAD and Rhino to generate the basic elements for a multirotor in a parametric fashion.

Updated: September 15, 2015

## Personal Project Goals

My current idea for the final project is to be able to quickly 3D print a swarm of robots which can, out of the box, collaborate in some way. The goal is to do this with as little addition of electronics as possible - this means probably having to come up with a way to integrate some exotic materials. This means my final project will probably actually involve a second component, which is making an exotic 3D printer of some sort to allow me to have this functionality. The exact technologies are still something I'm brainstorming, so check back on this page for details later. In the meanwhile, since quadcopters are en vogue, I decided it would be fun to design a caged quadcopter which could act as a testbed for this technology.

In terms of personal growth, I also wanted to learn Rhino, as several people have told me that it's an incredibly powerful tool. I played around with it a little, but I still want to do this in a programmatic way. Check back on this page eventually for Pythonic versions of this assignment. In the meanwhile, OpenSCAD is serving as my bread-and-butter, with Rhino just being used by hand to create pretty propellers.

## Methodology

I used Rhino to create the propellers by hand, and OpenSCAD to create all the remaining geometry. Half-cylinders are used for the base in a radial fashion; holllowed out cyllinders and full cylinders are used for the propellers, and tori are used for the cage. The propellers are articulable; there's space between the outer rotational bit and an inner cylinder. Obviously, this exact design will have to be reworked once I start thinking about how to actuate it.

The propeller was created in Rhino and was actually very easy to make. It was just four operations: make a figure-8 polycurve, extrude it, rotate each half by 30 degrees, and then cap it.

Most of the design is parametric, meaning it will be easy to alter the design just by changing the input values. Discrete variables include the number of cages and the number of rotors. Continuous variables include the propeller heights, the rotor bars' dimensions, and the propeller scale. It would be nice to somehow add assertions to prevent certain bad parameter configurations that cause self-intersections, but unfortunately OpenSCAD doesn't have that functionality :-(. Hopefully when I move it to Pythonic Rhino...