Stasis Event Tutorial

Tabs - jQuery plugin for accessible, unobtrusive tabs

The problem statement requires you to build a robot capable of carrying a vessel of liquid on rough terrains. The robot has to balance the vessel in order to prevent the liquid from spilling. The problem statement can be approached in two ways:

Balancing the Robot

Balancing the Container

The robot for this event like any other robot needs to have the following systems in place:

  • Locomotion System
  • Sensor System
  • Power Supply
  • Gripping System

Balancing the robot

This mechanism involves building an autonomous or mechanical robot which can balance itself on rough terrain. It would involve changing the orientation of the entire robot with respect to the ground. You may or may not keep the container fixed on the robot.

Balancing the container

This mechanism involves changing orientation of the Gripping Mechanism (and the container) so that it remains horizontal with respect to the ground i.e. the orientation of the Gripping Mechanism will change with respect to the robot's base only.

Autonomous

Though there are various kinds of drive bases, the most common drive mechanism that can be used here is a Differential Drive. For detailed information on constructing a differential drive, you may check the video tutorial Differential Drive.

The Differential Drive however needs to be modified for rough terrain via the addition of simple suspension systems. Addition of suspension makes navigation on terrains like speed breakers possible:

  • Motor Suspension: This example shows how to add a suspension system to a servo motor. This tactic can be applied to other motors as well.

These beams are designed to deflect to be perfectly horizontal under the full weight of the robot. When the terrain under it changes, the deflection changes to conform with it. This is what the finished design looks like:

Description: https://lh4.googleusercontent.com/LbXRGT0RDNQzawFZo6ydmdziq_N8D7Ivb9Otw3hLpW6gJGd2BP7YSAoZAMY5HgGG0Q2p6KZwpPP5j3McP-xcE0mqTLNwLgJyPudYU5ecHVwJF8hhGw


  • Tracks: The basic design of track driven robots is simple: two tracks, one on each side of the robot, act as giant wheels. The tracks turn, and the robot lurches forward or backward. For maximum traction, each track is the same length, or somewhat shorter, than the length of the

Robot itself � though many variations are possible. Track drive is practical for many reasons, including the ability to mow through all sorts of obstacles, like rocks, ditches, and potholes. Given the right track material, traction is excellent, even on slippery surfaces like snow, wet concrete, or a clean kitchen floor.

For the most part, constructing and effective track drive is harder than implementing wheels. The reason: the tracks present a large contact area. This larger contact area increases traction when moving forward or backward, but it also restricts turning. Tracked vehicles, like tanks, turn by skidding or slipping around a turning point � hence they are referred to as having skid-steering. If the treads are super-pliable, and the surface is hard (like a kitchen floor), the added friction can greatly impair the ability of the vehicle to turn.

See it in action Here

Mechanical

Rocker-Bogie Mechanism

In case of a manual robot we can use the famous Rocker-Bogie Mechanism. The Rocker-Bogie design has no Axles or springs, and allows the robot to climb over obstacles, such as rocks, that are up to twice the wheel's diameter in size while keeping all six wheels on the ground. �An extensive tutorial on how to build the Rocker-Bogie Mechanism can be found here.

Untitled Document

Glidecam

When a person walks or runs, each footstep sends a sizable jolt through the body. For the most part, you don't register these shocks visually, because the brain automatically adjusts the information coming from the eyes; it smoothes out the disorienting motion when forming the visual image that the conscious mind is actually aware of.

Balancing is an essential requirement not only of our body but also in various activities like photography, transport , construction and various other fields. Out of these many requirements, photography required higher precision balancing and control. This lead to the rise of a new technology which we today know by different names as

GLIDECAM/FLYCAM/STEADICAM.

The very basis behind this technology is simple and can be listed down to two simple points-

1.Balancing any unnecessary torque on the system.

2.Minimizing any kinds of shocks received from the external system.

1.Torque balancing - For any system in space, the for most reason for it to get unbalanced are the several unbalanced torques at at some point due to the weight of the system. If we somehow balance these torques, we will finally have a completely balanced system.

The remedy to the same is -

1.Cancelling the torque due to the weight of the load, by several counterweights.

2.Realizing a point on the system where the anti-torques get correctly balanced.

If we achieve the above appropriately, we obtained a system that is perfectly balanced and is even immune to external shocks.

The two videos below, through the example of a camera, a stand and few counter weights help us to understand, how a proper match of the above three can help us in achieving a purely balanced system-

http://www.youtube.com/watch?v=MnhSOnL6rQs

http://www.youtube.com/watch?v=VLHLf1waJ8E&feature=fvwrel

We observe from the above videos, that the controller has just balanced the different weights and the torques by a combination of the load and the counter-weights. Also, the counter weights at the bottom keep the system steady, imparting the desired vertical orientation to our system.

The same is depicted below-

However, our system though is balanced in itself, but it is still not immune to the shocks from outside. The system can still be unbalanced due to the shocks from the handle or the mount to which the system is clamped.

To overcome the same-

1.Handle design- The handle may be of any types but the science of balancing revolves around the way it is attached to the system. For the system to be in free motion, the attachment of the handle has to be such that it supports the weight of the system, but poses no hindrance to the free motion of the system. A solution to the same is allowing free rotational motions in all directions at the point of attachment. This arrangement is known as the gimbal.

A gimbal is a pivoted support that allows the rotation of an object about a single axis. A set of two gimbals, one mounted on the other with pivot axesorthogonal, may be used to allow an object mounted on the innermost gimbal to remain immobile (i.e., vertical in the animation) regardless of the motion of its support.

http://www.youtube.com/watch?v=0xxGH3jk8UU&feature=related

The above video shows a simple home made gimbal, where the controller is showing the working by moving the central part. We observe that irrespective to the moving part, the external part remains constant in its position but still the system remains together. A simpler construction of the gimbal is shown below.

The above works as follows-

After over-coming the the problem associated with the handle, the next and the final objective is reducing the shocks from outside on the system.

The way out to the same is isolating the system from the exterior surroundings while keeping it still attached. This can be achieved through a simple mechanical arm that connects the body to balanced system as shown below

The above arm may look a bit complex but its construction and working are pretty simple.

1.The arm is a lot like a spring-loaded swing-arm lamp.

2.It consists of two arm segments, connected together with a pivoting hinge. Each arm segment is a sort of parallelogram: It is made up of two metal bars, fastened to two metal end blocks.

3.Just as with any parallelogram, the metal bars will remain parallel with each other (or nearly parallel) no matter how the arm is positioned. Since the end blocks are secured to the ends of the parallel bars, they will remain in the same position as the arm swings up and down, as shown below.

The above working is depicted in the video below-

http://www.youtube.com/watch?v=Il-8M9BYhao&feature=related

With the above we obtained a completely balanced system that is now immune even to the external vibrations no matter how frequent or hard they are.

Assembled properly, every part balances the load well and we obtain a system balanced to almost every bump or shock as shown int he video below.

http://www.youtube.com/watch?v=oXYt-KeG9rE

However, all the above mechanisms can be summed up in one single mechanism, giving a much simpler solution to our problem. This mechanism basically involves merging up both the Gimbal and the mechanical spring arm into one. through an arrangement of springs and free rotation discs and counterweights. What we obtain in return is something depicted in the pic below

The working of the above mechanism and how it balances the weight keeping its position constant is depicted int he video below.(The later part of the video shows some arrangements so that it fits onto a human body so as to balance and mount a cam, but this part holds no relevance in our regard, except giving us an idea to frame a frame for our supporting bot.)  We get a much simpler approach to our problem with the same.

http://www.youtube.com/watch?v=p-FkVgrqfZo

Sensor system of the robot will consist of the following components:

Line Following

Check out our Line Following Module for an extensive tutorial on how to build a line following robot.

Orientation Detection

This is done using an Accelerometer.� An accelerometer measures acceleration (change in speed) of anything that it's mounted on. How does it work? Inside an accelerator MEMS device are tiny micro-structures that bend due to momentum and gravity. When it experiences any form of acceleration, these tiny structures bend by an equivalent amount which can be electrically detected. An analog accelerometer gives voltage which is proportional to acceleration. A digital accelerometer gives output in the form of PWM or binary data. �Check out our tutorial on Accelerometer here.

So what exactly does our gripping mechanism require? Since our aim is to keep the container vertical, the gripping mechanism should be Capable of detecting the containers tilt with respect to ground and Adjust its own angle with respect to it.

To maintain balance of the container, �the bot needs to know the tilt angle and then drive a motor in the direction of the tilt to keep the center of gravity directly over the wheels and the tilt at zero.  It's a feedback loop that drives the wheels to maintain zero tilt.   The key to the whole operation is accurate tilt measurement and that turns out to be difficult.

So, how do you measure tilt?  It can be directly measured with an accelerometer and indirectly with a rate gyro.   An accelerometer can be simply orientated perpendicular to the force of gravity and it will measure zero G unless there is tilt, in which case it will output the sine of the tilt angle.  Unfortunately there is a disadvantage as accelerometers measure acceleration too .  They only output accurate tilt data when not accelerating.  Since the bot accelerates when correcting for tilt errors the tilt data is contaminated with acceleration data.

The other way to measure tilt is with a rate gyro.  The gyro outputs a voltage in proportion to it's rate of rotation.  If you integrate that you get amount of rotation.  Rotation is relative to tilt. The gyro signal is not sensitive to acceleration.

Using Accelerometer

This technique uses an accelerometer to measure the tilt and a servo is controlled using the data obtained. Watch a demonstration here.

Analog data In the form of voltage is obtained as output from the accelerometer which is converted to a digital value using a micro-controller using ADC (read tutorial here). The output is then processed and appropriate command is sent to the servo.

Pseudo-code/Algorithm

  • Get input from Accelerometer
  • Translate x/y input value to servo motion
  • Do math on servo values  from x/y servo motion
  • Send servo command.
  • Go to First Step.

For a tutorial on how to use servos click here.

Using Gyro-meter

Keeping the surface on top of the wheels horizontal is our main objective here. A simple way to do this is by using a gyroscope. Technically, what it knows is the angle between robot's chassis and the direction of gravity. So it simply ensures that� the surface is perpendicular to the direction of gravity.

If it tilts forward, it runs the wheels forward until the bottom of the container placed on the surface is under the top.

Here too there are complications. It has to move the wheels just the right amount forward. Too much and it'll have to move them back, then forth, until the thing is bucking wildly. This is pretty much the default thing that happens until you get it tuned just right.

It needs to know both the angle of the stick and how fast it's changing. Knowing how fast it's changing lets it slow down before it overshoots the mark. Technically this is known as a PD loop. The amount of drive it sends to the wheels is proportional (P) to the error in angle, and also to the derivative (D) of the error.

To know more about implementing PID control click here.

To read more about gyrometers, click here


ALGORITHM

  • Balance the vessel using the angle and angle rate from the gyrometer
  • Limit top speed by tilting back
  • Decrease steering rate at high speed
  • Track current speed
  • Use differential steering

Sounds complicated? It's not as bad as it sounds. In fact, the whole code, including stuff to read ADCs and manage serial communication is about 500 lines.

If ever you face any problem in this tutorial, feel free to post on the technical forum of our website  http://robotix.in/forum

Untitled Document