Soft Wheel Robot

The Soft Wheel Robot is a project designed and built by a team of two undergraduate students and one graduate student from Cornell University, advised by professors Hadass Kress-Gazit and Robert Shepard. The goal of the project was to make an untethered, cylindrical soft robot, which is propelled in a rolling motion by pneumatically actuated channels. The robot is designed to be capable of rolling forward, backward, and turning to either side. All components, including a pneumatic source, are contained inside the soft wheel so that it can move freely without being connected to any external equipment.  After four months of of designing, prototyping, and testing, they developed the following prototype:

Final Prototype of Robot

The preliminary design section details the steps they took to make this final prototype. Before they started prototyping, the team did extensive research on any existing designs for a pneumatically driven rolling robot. They discovered a cylindrical rolling robot used in the Distributed Robotics Laboratory at MIT, with a published speed of 1.2 ft/min. While similar in nature due to its cylindrical shape, this robot does not utilize the full potential of a rolling wheel. Its actuators are positioned along the outer perimeter, so its profile is not completely round. Actuators tip it over in short rolls, but it is stopped when it hits the next non-round actuator. The team envisioned a wheel which would be completely circular in profile, with channels embedded such that when actuated, they cause the cylinder to roll, but in their relaxed state, they do not stop the wheel from rolling freely rolling. By conserving the momentum gained from each channel actuation, the students believed they could build a robot that will achieve much higher speeds. They also wanted the robot to have the added capability of turning.

Initial Ideas for Rolling Motion

The team plans on continuing their work this coming school year (2015-16) to work on developing a second gait. If the robot was composed of a hollow cylindrical body, they thought that could be sealed on either end and then could be held in a cylindrical shape by pressurizing the central chamber. Then, in its deflated state, it would resemble a tank tread, shorter in height, which could be moved forward by actuating the same channels but in a different pattern to cause a worm-like undulating motion. This second gait might be useful for going under low-hanging structures.

Initial Ideas for Undulating Motion

Some of the information contained in this web site includes intellectual property covered by both issued and pending patent applications. It is intended solely for research, educational and scholarly purposes by not-for-profit research organizations. If you have interest in specific technologies for commercial applications, please contact us here.


The final robot is comprised of a cast silicone body and a control system. The cylindrical silicone body contains empty channels which get inflated by the control system to propel the robot forward in a rolling motion. Flow to different channels is directed by 3-way valves, which are controlled by an Arduino Uno. One valve connection goes to a manifold connected to the pressurized source. Another connects to the channel in the silicone body, and the third is left open to exhaust the gas inside the channels when deflating. The valves are mounted on a PCB with all other electrical components. The pneumatic source for the untethered robot is a 16g CO2 cartridge (typically used for bicycle tire refills) connected to a miniature regulator. All of the control components are housed in acrylic rings which are set inside the silicone cast to hold its cylindrical shape. To move the robot forward, valves are actuated to inflate channels in succession around the perimeter of the robot. As the channel closest to the ground inflates, it pushes the robot over, causing the whole body to roll. The gait is currently open-loop, so the timing of channel actuation is not perfect. A future consideration would be adding a sensor for position feedback of the cylinder. This would allow for more accurate actuation of channels.

Robot mid-roll.

Overall Dimensions

Preliminary Body Designs

To quickly test the feasibility of a rolling robot, the team constructed an initial prototype out of a large PVC tube, with smaller silicone tubes fixed around the outside of the PVC, oriented along the axis of the large tube.

Initial PVC prototype with silicone tubing to test rolling

This test showed that expanding tubes set around the outside of a cylinder would be capable of producing motion. It also highlighted the fact that a completely round external profile would allow for smoother rolling, which would eliminate the losses in momentum seen above when the robot gets caught between silicone tubes. A smooth profile would be more efficient and accommodate faster rolling.

The second initial prototype, incorporated several new features to test, which are listed and described below.

PVC Prototype with Balloon Channels

  1. Long party balloons

    The silicone tubes were replaced with party balloons to increase the amplitude of inflation of the driving channels. The silicone tubes only expanded about 1.5 times their original diameter, while the balloons increased over 8 times. Larger amplitude inflation of the driving channels will result in a larger force applied to the ground, and therefore more rolling.

  2. Acrylic rings to simulate smooth exterior rolling surface

    To simulate a completely circular exterior rolling surface, we fixed the acrylic rings to the ends of the PVC. These rings held the ends of the balloons within the diameter of the rolling cylinder. In this position, the balloons did not interfere with rolling while they were deflated, but would expand enough upon inflation to breach the outer diameter of the cylinder, and cause rolling.

  3. Two rows of balloons along length of PVC

    Two rows of driving channels were attached, each row with 9 balloons going around the perimeter. This was the first test in turning the cylinder left and right while rolling. The theory was that with one row of 9 channels all inflated, the cylinder would be tilted at an angle to one end. Then, when actuating the other side of channels in the forward rolling motion, it would be rolling on a curve away from the entirely inflated side.

  4. Multiple balloons attached to a single valve

    The team also started experimenting with a single solenoid valve actuating multiple channels at a time. Valves were one of the more costly items in this project, and they would take up space inside the robot. To reduce cost and save space, we tried splitting the output of a single valve to three balloons. The three balloons were 120° apart, so that the ones opposite the one touching the ground would not interfere. Here we encountered an issue with inconsistencies from one balloon to the next. With pressure from one valve being distributed to three different balloons, only the balloon with the least resistance would inflate, while the other two remained virtually unchanged. Balloons had different resistances to inflating for a number of reasons. Different colors and variation from manufacturing accounted for some differences. Also, after a balloon is inflated once, it stretches out, and then becomes easier to inflate. This caused a compounding problem, because once a balloon inflated more than its other two partners, it became less resilient, and the difference between the three would get worse with every actuation. They attempted to calibrate each balloon by inflating them individually to stretch them evenly, but this was unsuccessful.

The team built a very simple deflated version of the robot to test undulating capability. After this quick test, they focused all energy on rolling, and planned to come back to this should there be time at the end of the semester.

Silicone Prototypes

When designing the robot, the team wanted to come up with a design that would allow the robot to move forwards, backwards, and turn.  Additionally, they had to keep in mind that there were a limited number of solenoid valves that could be used in the manifold in order to power the robot.  While other soft robots used herringbones to allow for more uniform inflation, they were not too concerned that this would be a problem for their robot because the channels would be much wider than in other soft robots.  For the first prototype, the team decided to go with a very straightforward design.  The robot had two columns with nine channels a piece.  The idea behind making two columns of channels was that if both sides were inflated at once, the robot would move forward and if only one side was inflated, the robot would turn to the opposite side.  Because there were more channels than valves, it was necessary to connect multiple channels to the same valve.  Therefore, on each side of the robot, every third channel was connected to the same valve (six different valves were used).  The idea behind this was that all three channels could inflate at the same time, and since only one of them would ever be in contact with the ground at one time, the robot would be able to roll.

Original Prototype

The mold for the original prototype with the long, skinny rectangular channels is shown along with the portion of the robot that was cast using this mold.

The major problem that the team encountered with this design was that the channels were not very consistent.  This caused one of the three channels to inflate a lot and the other two to barely inflate.  Additionally, the channels in this robot were small compared to the size of the robot, causing the robot’s body to be very heavy.

To attempt to address these problems a second robot was made.  The channels were the same shape and size as the previous robot; however large “dummy” channels were added to the robot to reduce the weight.  In order to attempt to make the channels more consistent, new manufacturing methods were introduced which added silicone to adhere the two sides of the robot together on the side of the robot with carbon fiber and the side of the robot with the channels was placed so the channels were face down on top of the carbon fiber side.  This made the channels slightly more consistent; however, there were still a lot of issues getting all three channels to inflate.

Mold with Dummy Channels

Dummy channels were added to the original mold.

In order to solve this problem, the team decided it was best to only inflate one channel with a valve.  Since there were only eight valves total, it was now impossible to have two rows of channels, because there were not enough valves to inflate them all.  Therefore we decided to make one single row of driving channels.  However, we still wanted the robot to have the ability to turn, so we created two turning channels that spanned the length of the rectangle and placed one on each side of the robot.  The idea behind the turning channel was that if it was inflated, the robot would be higher off of the ground on that side, causing it to turn in the opposite direction.

In order to make the most use of time and materials, when casting the next few prototypes, we decided to cast a robot with a wide variety of channels.  After testing, it was determined that channels with really thick blocky herring bones had greater amplitude but were more inconsistent, whereas the channels with smaller herringbones were more uniform but had lower amplitude.  It was determined that for the driving channels, it was better to have a channel with more amplitude, as the channels with the smaller herringbones did not have enough amplitude to propel the robot far enough forward.  However, for the turning channels, it was better to have more consistent amplitude, since if it bubbled more in some places than others, it would make it more difficult for the robot to roll.

Additionally channels were tested where the herringbones on both sides of the channel were not aligned.  Since the thicker channels had performed better in testing, the thicker herringbones were used in this design.  In testing, while these channels expanded the same amount as the thick herringbones that were aligned, these channels had a tendency to bubble in one place on the channel, so this idea was then scrapped.

Different types of channels usedSilicone Robot with Multiple Channel Types

On the left, the mold shows a bunch of different channel types that were tested.  The long channels that run from left to right on both the top and bottom of this mold in this picture are the turning channels.  For each group of turning channels, the top one has really thick herringbones, the middle has thick herringbones that are not aligned, and the bottom has thinner herringbones.  For the driving channels (the ones in the middle of the robot), they alternate between channels with thinner herringbones and channels with thicker herringbones.  On the right, silicone body for the robot that was made from this mold is shown.

The next prototype that was made consisted of a series of dog bone shaped channels to drive the robot.  However, it was discovered that instead the air expanded equally throughout the whole channel, the channel would bubble on one side of the dog bone or the other.  From this, it was determined that in order to get uniform expansion across the driving channels, it was necessary to design a channel that did not have multiple areas that were wider, as this led to the channels bubbling a much larger amount in one of the wider sections than in all of the other sections.

The robot cast with dogbone shaped driving channels.

Removing one side of mold for robot with dog bone shaped channels.

For the next iteration, the turning channels were iterated off of the smaller herringbone design, as this had led to the most consistent inflation (which would be needed to get it to inflate easily so that it could turn smoothly).  We made two types of channels, each with long, skinny herringbones.  Both of the channels had herringbones that were skinnier and longer than all previous iterations.  The only difference between the two channels was the length of the herringbones.  After testing, we determined that the channel with the longest herringbones was the most consistent.  During this iteration, we also decided to test using driving channels with an ovular shape.  We were hoping to purposely control where the channel would bubble in order to get as much as possible in the center of the channel.  Since the middle was the widest section of the channel, it worked as we expected.

Prototype with uniformly inflated turning channel.

Therefore, for the final iteration, we chose to use the oval channels for driving and the long herringbone channels for turning.  This allowed the robot to roll all the way across the room and also gave the robot the ability to turn.

Final Design of Mold

The final prototype for the mold of the robot.  It had ovular driving channels and long, skinning herringbone channels that wrapped around the circumference of the robot for turning.

Control System: Electronics and Pneumatics

The initial testing of the soft robot was tethered and used a breadboard. This allowed for any changes to be made to the circuit before switching to PCB. Although a breadboard could have been used inside the untethered robot, the PCB offered a much cleaner alternative that also saved space which proved to be valuable in layout of the internal components.

Printed Circuit Board with manifold

One of the goals of this project was to create a soft robot that was untethered, containing all components inside the robot. In order to do this, the team designed a printed circuit board (PCB) with all necessary elements soldered on. The purpose of having the robot untethered was to allow more freedom and maneuverability. By printing a custom control board, they were able to reduce the size of the circuit which made it possible to house everything on the robot. The PCB was also attached to an Arduino Uno microcontroller which performed all necessary commands to make the robot roll.

Schematic of the circuit that was printed on the control board.


PCB layout

The circuit designed for the robot was used to actuate the different channels in the mold. Elements on the circuit diagram include N-type MOSFETs, Zener diodes, resistors, and screw terminals to connect solenoid valves. The circuit itself is designed to receive a signal from the Arduino microcontroller that will open and close each valve at different times. The team used MOSFETs in order to improve the response time between each valve and the microcontroller. Zener diodes were used to prevent high voltage spikes in the MOSFETs, reducing the risk of frying a transistor.

Initial testing was done using a breadboard.

The distribution of weight of components housed inside the cylinder was important to the motion of the robot. The team needed a center of mass that was as close to the center of the robot as possible because the robot’s inertia would cause a non-uniform roll. To keep all the internal components intact, they laser cut acrylic rings each with cutouts that would support all necessary elements.

With the first set of acrylic rings, all components were positioned without any adjustability. The team quickly realized that the regulator and CO2 cartridge were by far the heaviest of the internal components. With the positioning of the original rings, the center of mass of the cylinder was drastically off-center. As can be seen in the video below, the inflating channels on the robot were not able to overcome the extra mass. It could roll through most areas, but would get stuck at the point where the heavy components sat at the bottom of the cylinder.

Rings with slider to adjust location of regulator and CO2 cartridge to balance robot.

To accommodate the regulator and CO2 cartridge, the team designed rings with the cutout for the regulator and cartridges on a slider which could be moved closer or further away from the center of the cylinder. This feature allowed for testing those components at different positions, and finding the location along the slider where the robot was best balanced.

Acrylic rings holding the internal components

The internal components of the soft robot include one Arduino Uno microcontroller, one printed control board, an 8-valve manifold, a regulator, a 16 gram air cartridge, a 9V battery, 1 switch, 4 acrylic rings to support everything, and several tubes to inflate the soft robot. The air cartridge served as the robot’s air supply. The size of the cartridge was small enough to fit inside the robot, allowing for the robot to be untethered. The air cartridge was connected to a regulator, which helped maintain a certain pressure in the robot and kept the air cartridge from exhausting quickly. The air cartridge/regulator combination was the heaviest part inside the robot. In order to adjust for the weight, the team laser cut the acrylic rings to hold a slider that attached to the cartridge/regulator. This made for an easy solution to adjusting the center of mass of the robot. The regulator connected to the 8-valve manifold, with each valve connected to the PCB. This allowed for equal pressure to be distributed in each channel of the robot. The manifold was the largest component of the robot; therefore it was important that other components such as the PCB be located opposite of the manifold. The microcontroller and PCB controlled the timing of when each valve opened and closed, allowing for proper inflation and deflation time in each channel. The 9V battery and switch were made accessible by attaching them to an acrylic ring at the edge of the robot.-

Soft Robot with all internal components inside


Building this robot consists of separate manufacturing processes for the silicone cylinder, the control system, and a final assembly of the two subsystems. A Bill of Materials of purchased components and files for laser cut components are attached here.

Equipment Needed:

  • Soldering iron
  • Laser cutter
  • Clamps


Bill of Materials12 KB
Mold Pieces Drawings47 KB
Internal Ring Drawings54 KB

Fabrication of Robot Body

In order to cast a soft robot, the team needed to come up with a way to manufacture molds.  Previous molds had been built by either 3-D printing them or assembling laser cut pieces of acrylic.  We decided to go with laser cutting because while 3-D printing provided the advantage that the molds would not have to be assembled, it was slower and more expensive to use than laser cutting acrylic would be.  Additionally, the 3-D printers available to us were slightly too small to print the size molds that we wanted, and by laser cutting and adhering pieces of acrylic together, it made making changes to the mold as needed easier.  This was important to the team, because their design approach involved making a lot of iterations to the robot based on how previous versions had performed during testing.

For each robot that was made, two molds had to be designed.  For this project, a mold was comprised of a flat piece of acrylic with a rectangular boarder adhered on top.  For the first mold, additional pieces of acrylic were the same size and shape as the channels in the robot.  For this mold, the dimensions of the rectangle were the exact dimensions of the robot.  For the second mold, the dimensions of the rectangle were slightly bigger than the dimensions of the robot.  This made it easier to fasten the two pieces of the robot together after the silicone had been cured.

Creating the MoldAssembled Mold

On the left, pieces of the mold have been laser cut and are waiting to be assembled.  On the right, the mold has been assembled and the robot is ready to be cast.  This mold will be used to cast the outer layer of the robot.

In order to cast a robot, the Ecoflex® 00-30 silicone had to be mixed and cured.  Equal parts of Part A and Part B were mixed together and then put in a vacuum to allow air bubbles to escape.  The silicone was then poured into two different molds.  It was poured into the first mold directly; however, a thin sheet of inextensible carbon fiber fabric was placed on the bottom of the second mold and the silicone was poured on top of that.  The inextensible carbon fiber fabric made it so that when a channel of the robot was expanded, the channel would only expand on the outside of the cylinder.  After pouring the silicone onto the carbon fiber, any air bubbles under the carbon fiber were smoothed out.

Cast Robot

The robot has been cast and has cured and is just about ready to be taken out of the mold.

After both sides of the robot had cured in the mold for at least four hours, more of the Ecoflex® 00-30 silicone was mixed in the same way as described before and the two sides of the robot were attached together using this silicone.  One problem that was encountered when adhering the two sides of the robot together was that the silicon would occasionally drip into the channels if it was added to the side of the mold with the channels. This affected the size of the channels and made it so that the channels would not expand the same amount, which created problems when trying to get the robot to roll.  To solve this problem, the silicone was added to the side of the robot with the carbon fiber and the side of the robot with the channels was placed on top so that the channels were face down.  Another problem that was encountered was that when adding the silicone to the robot with a popsicle stick, often times the whole robot would not get covered in silicone, which meant that sometimes when air was added into one of the channels, it would leak into other channels or escape the robot entirely.  In order to fix this problem, silicone was added with a gloved hand, which made it easier to spread the silicone and make the layer more even.

Two Sides of Robot Molded Together

The two sides of the robot have been adhered together.

The silicone between the two layers of the robot was allowed to cure for at least four hours.  Then any extra silicone or carbon fiber from the inside layer was trimmed.  The last step was to adhere the two ends of the rectangle together with more Ecoflex® 00-30 silicone.  When securing the two ends together, it was important to put a piece of acrylic in the center of the robot so that the robot would not attach itself in any place besides the two ends of the rectangle.  The biggest challenge associated with this part was getting the two ends of the rectangle to remain touching each other while the silicone cured.  In order to do this, two zip ties were placed around the robot.  The silicone was then added between the two sides of the rectangle and another piece of acrylic was clamped down on top of the robot to keep the robot as flat as possible.  After waiting at least four hours for the robot to cure, the robot was ready for testing.

To connect tubes to the channels, a slit was cut in the side of the cast with the inextensible fabric. Tubing was pushed through the slit until it punctured the target channel. This process was repeated for each channel.

The tubing has been added to the robot.

PCB & Code


The printed circuit board was designed to accommodate 8 solenoid valves, with each controlled via a zener diode and MOSFET connected to the Arduino Uno's digital pins. Screw terminals were used to connect the leads from the valves to the PCB. The files to print the board are attached, and the components were soldered on according that schematic. Heat sinks were used when soldering the MOSFETs to reduce the risk of frying them.

PCB with components soldered on.


The code to control the actuation sequence of the solenoid valves is very simple. Each valve is assigned a digital pin number, and then by setting that pin high, the valve opens the port from the manifold to the silicone channel. By setting the pin low, the connection from the silicone channel to the exhaust port is opened. A variable is set for the time to leave a pin high to inflate it, which we found to work best at 250 msec. Another variable is set for the time to allow the channels to deflate, which we set to 500 msec. The driving channels are called in a for loop so that they actuate in sequence around the perimeter of the cylinder.


PCB Layout Files for Printing211 KB
Arduino Code Text1 KB

Final Robot Assembly

Due to to the constrained space inside the robot, and the cumbersome nature of pneumatic tubing, assembling the robot was a careful operation. After putting a few together, the team identified the easiest and most successful method, detailed below.

  1. Insert tubing into channels in silicone body with about 5 inches of excess tubing to reach outside edge of silicone cast.

  2. Connect tubing between manifold and valves on PCB. Connect battery leads on PCB.
    Note the tube connections on the last three valves, corresponding to 5,6,7 in the code. A Y-splitter connects the output from Valve 6 to the inputs of Valves 5 and 7. The exhaust port on Valve 6 is plugged.

  3. Insert the two center acrylic rings into the silicone body and pull tubing out from center area.

  4. Slide PCB and manifold together through the acrylic rings, avoiding tubing from channels.

  5. Connect the channel tubes to the valves using needle nose pliers.

  6. Connect battery leads to battery on the ring with the battery and switch. Insert ring in silicone body.

  7. Connect tube to manifold input on one end, and regulator output on other. Zip-tie both connections.

  8. Connect CO2 cartridge to regulator, and push both through center acrylic rings into body of robot.

  9. Insert last acrylic ring into silicone body.


The final prototype of the robot was successfully able to roll forward and backwards.  It was able to roll for about three minutes on one 16 g cartridge of CO2 and was able to achieve a speed of about 6 m/min.  It was not able to turn due to a manufacturing issue with the turning channel. Due to inconsistencies in the thickness of the long channel, it would bubble at certain points, instead of inflating evenly. There is a different prototype which has a more evenly cast channel. This one inflated uniformly, demonstrating the ability to turn, given proper manufacturing of both turning and driving channels in one mold. The timing of channel actuation was still an issue, as each channel inflated slightly differently than the next, causing non-uniform angular velocities. For future improvements, some sort of position feedback would allow for more accurate timing of channel actuation.

Final Prototype on Test Day

The turning did not work on the final prototype due to manufacturing issues; however, the turning had worked on the previous model shown below, using the same type of channels.  The silicone on the final cast must have had minor inconsistencies in thickness, causing bubbling at certain points, instead of uniform inflation along the length of the channel. Without manufacturing issues, the final robot would be able to turn, drive forward, and backward.

Cast with  uniformly inflated turning channel.

Here are some measured characteristics of the final robot:

Roll Speed Achieved: ~6 m/min

Duration of CO2 Cartridge while Rolling: 3 min

Mass of Silicone Body: 952.9 g

Mass of Internal Components (with full 16g CO2 cartridge): 516.4 g