The Row-Bot

by Dan Odell and Dan Stevens

final solid model completed device
The Row-Bot was a course project for Professor Kazerooni's "Control of Robotic Manipulators" course. Our concept was to create a toy vehicle that propelled itself through a more interesting means than simply turning a wheel with a motor. The concept was to generate a "land-canoe" that propelled itself with a paddling or rowing motion. Eventually, this vehicle could be made to be buoyant, and therefore able to propel itself on land or water. This page will take you through the design steps we took in designing and building this device.

See a video of the Row-Bot in action here! (17 MB)

Click thumbnails to enlarge graphics, hold cursor over thumbnail for description.

The Design - Linkages

The first step in the design process was developing a mechanism that would provide
our desired rowing motion. These avi files show early ADAMS simulations as we attempted this.
The first shows an underconstrained four-bar linkage. The second, a linkage that is properly
constrained by adding a gimble, and very close to the linkage we would ultimately use.
failed four-bar linkage simulation properlyt constrained linkage simulation

The Design - Solid Modeling

The next step was to track down all of the necessary components and generate a solid model
of the system using SolidWorks. Our design called for two universal joints to anchor the arms, and four gimbels to
move them. We were given two motors for propulsion, but without any data sheets. Additionally, we would require
batteries, two H-bridges, a DSP board, and sensors to complete the system. An isometric view
of the solid model is shown in the header, and a video showing the model in action is given through the link below.
After the solid model was completed, the device was constructed using traditional machining and Fused Deposition Modeling.
In addition, the final solid model was imported into ADAMS to ensure proper function. The video of this simulation
is also available below. Notice the nice airfoil path that the paddle foot follows.
video of solid model in action video of completed ADAMS simulation


We quickly found that the row-bot got the best push forward when both arms hit the ground at the same time.
This meant that we needed to know the absolute position of the arms, and synchronize their motion.
To do this, we used two reflective sensors that signaled a high voltage when they sensed a slot in the motor wheels.
These slots were then adjusted so they corresponded to when the arms first hit the ground.

The easiest way to control the motors would be to drive one motor at a constant speed and adjust the speed of
the other one. For example, the left motor could be set at 100 RPM. Now if the right paddle hits the ground after
the left, you could speed it up a bit. The problem with this scheme is that if the right motor is being held up
for any reason, there is no feedback control on the left motor.
We found that the best approach was to set a desired speed for the two motors, and then adjust
the speeds with gains (Kp & Kv) on the position and velocity errors:

Left_RPM [0] = 100
Right_RPM [0] = 100
Left_RPM [k+1] = Left_RPM [k] + Kp * Position_Error [k] + Kv * Velocity_Error [k]
Right_RPM [k+1] = Right_RPM [k] + Kp * Position_Error [k] + Kv * Velocity_Error [k]

For a more detailed schematic of the control structure, click here.

One of the problems we had to deal with was the poor resolution of our position sensor measurements.
We only got updates on the position and velocity once every paddling cycle. Even with these coarse measurements,
the paddles synchronized quite nicely. We also used one of the reflective sensors with the rear wheel to give us
a measurement of the distance traveled.

The Row-Bot completed

After completing the build, and the software, the row-bot was ready to go. A couple of last minute changes
were required to improve the functionality. First, the paddle feet were changed from "super bouncy balls" to
custom cut polyurethane to give them a little more compliance. This allowed them to get a good grip on the ground
without binding up. Second, the wheels were taped to make them more slippery, and facilitate turning.
Finally, a clean, smooth surface (such as a tabletop) was required for good operation. The floor was found to
be too dusty (and therefore the paddles couldn't get a good grip), and the carpet was too difficult to turn on.
Shown below are pictures of the completed Row-Bot, along with a short video of it in action. The video demonstrates
foward propulsion as well as turning. The result - it goes straight and turns - therefore meeting our initial goals.
front view of finished row-bot front isometric view of finished row-bot top view of finished row-bot rear isometric view of finished row-bot
video of finished row-bot in action