Difference between revisions of "Conservation of Angular Momentum Locomotion Robot (Fluffbot)"

From Mech
Jump to navigationJump to search
Line 52: Line 52:
== Mechanical Design ==
== Mechanical Design ==
[[image:Uncovered_Bot.jpg|thumb|right|Inside Fluff Bot]]
[[image:Uncovered_Bot.jpg|thumb|right|Inside Fluff Bot]]
The Fluffbot has all of its circuitry and mechanical components confined to a single chassis. The chassis is an arrow shape and is mounted on three wheels attached to the bottom of the chassis. The two rear wheels are fixed, while the front wheel is free to rotate and is mounted on a fork and coupled to a servo, which controls its turning angle. A momentum wheel is fixed underneath the center of the chassis to a motor which is mounted on top. All circuitry and power sources are mounted on the top of the chassis as well.
The robotic snake consists of a head segment and several body segments. The head segment houses the onboard microcontroller and xBee radio. The body segments house the servo motors and the batteries required to power each motor. As the snake is designed to be modular, there is no limit to the number of body segments. More segments will allow it to move more smoothly, while fewer segments will be easier to control. For this design, seven body segments were used due to material limitations.

Mechanically, the Fluffbot is designed for minimum chassis weight and maximum torque generated by the momentum wheel. The momentum wheel is mounted directly in the center of the three wheels so that the torque is distributed evenly. The wheels use press-fit ball bearings mounted on fixed axles to achieve minimum friction when rolling. The front-wheel fork is mounted to the chassis by a ball bearing to reduce frictional force on the servo motor.



Mechanically, the snake is designed to move in a serpentine motion, imitating the motion of a real snake. As discussed above, real snakes move with anisotropic coefficients of friction. It is difficult to locate materials with this property, but passive wheels satisfy the friction requirements. The friction will be lower in the direction of rolling, thus providing the required difference in friction. The only problem with this approach is that the wheel may slide in the normal direction if the weight applied to the wheel is not sufficient.


===Parts List===
===Parts List===

Revision as of 01:06, 16 March 2010

Fluff Bot 1.jpg

Overview

Flufbot uses conservation of angular momentum to move forward or backward, by controlling the acceleration of a momentum wheel and the angle of a steering wheel.

Team Members

//insert team picture

Johnson - Pentelovitch - Yu
  • Tyler Johnson - Mechanical Engineer - Class 2011
  • Noah Pentelovitch - Mechanical Engineer - Class 2010
  • Ren Chung (RC) Yu - Electrical Engineer - Class 2010


Concept Overview

Serpentine Curves

Real snake motion does not follow specified equations. However, research has proven that the serpentine motion of a snake can be modeled with the following equations (Saito etal, 72-73):

where the parameters a, b, and c determine the shape of the serpentine motion. The graph shows how the parameters influence the serpentine curve. Basically, a changes the appearance of the curve, b changes the number of phases, and c changes the direction.


The serpentine curve can be modeled with a snake like robot by changing the relative angles between the snake robot segments using the following formula with the number of segments (n):


where α , β , and γ are parameters used to characterize the serpentine curve and are dependent on a, b, and c as shown below:



The equations above for φi,α,β, and γ were used in this snake like robot as shown in the code section.


Mechanical Design

Inside Fluff Bot

The Fluffbot has all of its circuitry and mechanical components confined to a single chassis. The chassis is an arrow shape and is mounted on three wheels attached to the bottom of the chassis. The two rear wheels are fixed, while the front wheel is free to rotate and is mounted on a fork and coupled to a servo, which controls its turning angle. A momentum wheel is fixed underneath the center of the chassis to a motor which is mounted on top. All circuitry and power sources are mounted on the top of the chassis as well.

Mechanically, the Fluffbot is designed for minimum chassis weight and maximum torque generated by the momentum wheel. The momentum wheel is mounted directly in the center of the three wheels so that the torque is distributed evenly. The wheels use press-fit ball bearings mounted on fixed axles to achieve minimum friction when rolling. The front-wheel fork is mounted to the chassis by a ball bearing to reduce frictional force on the servo motor.


Parts List

  • Motors: Futaba S3004 standard ball bearing RC servo motor, Tower Hobbies LXZV41 $12.99
  • Wheels: McMasterCarr Acetal Pulley for Fibrous Rope for 1/4" Rope Diameter, 3/4" OD McMasterCarr 8901T11 $1.66
  • O-Rings (Tires): McMasterCarr Silicone O-Ring AS568A Dash Number 207, Packs of 50 McMasterCarr 9396K209 $7.60/50
  • PVC Pipe: McMasterCarr Sewer & Drain Thin-Wall PVC Pipe Non-Perforated, 3" X 4-1/2' L, Light Green McMasterCarr 2426K24 $7.06
  • 1/8th inch plastic for chassis: (Shop Stock) or McMasterCarr Polycarbonate Sheet 1/8" Thick, 12" X 12", Clear, McMasterCarr, 8574K26 $6.32
  • Dowel Pins: 1" long, 1/4" diameter
  • Sheet Metal: For the connecting segments
  • Fasteners: Screws for the servos and chassis, washers for the standoffs
  • Standoffs: Used 1" and 1/2" to achieve a level snake
  • Velcro: To attach battery packs and housing to the chasis
  • Ball caster: For the head

The Body Segments

Angular Momentum Wheel

Each of the body segments are identical and includes a chassis, a servo, a connector, standoffs and two passive wheels as can be seen in the picture.

Video of 3 body segments moving

Chassis

The base of the chassis is made from a thin (approx. 1/8th inch) piece of polycarbonate. The chassis must be wide enough to hold a servo motor with a AAA battery pack on each side and long enough for the servo and a standoff (the connection for the previous segment). The polycarbonate was cut into a rectangle to meet the specifications for our servo motor. Five holes were then drilled in the rectangle, four to mount the servo and one for the standoff. The holes are drilled to allow the servo to be located in the center of the chassis.

Connector

A connector was machined to attach to the servo horn of one body segment and to attach to the next segment's standoff. The length of this connector is about 3 inches and is just long enough to prevent collision between segments. A shorter beam allows for greater torque. This connection needs to be as tight as possible and the beam must be mounted perpendicular to the chassis.

The Underside of a Chassis

Standoffs

Standoffs were used to attach the servo to the chassis and to attach the connector to the chassis. Two standoffs (1 in and 1/2 in) and several washers were used to make the connector parallel to the ground.

Passive Wheels

A Passive Wheel on the Dowel Pin

Passive wheels were mounted to the bottom of the chassis. Each wheel was made of a 3/4 inch pulley and an o-ring. The o-ring was used to increase friction with the ground. The wheels have been set on polished metal dowel pins which allow the wheels to rotate more freely than when placed on wooden dowels. The dowel pin axles were mounted (hot glue works but is not very strong) in the center of the segment. The center of the segment is not the center of the polycarbonate rectangle. Instead, the entire segment length is the distance from the standoff on one chassis to the center of the servo horn on the other. In this project, the length of the connector was made to be about half the length of the segment. Therefore, the wheels were placed at the same location as the stand off as can be seen in the image. The wheels are held in place with zip ties.

Fully Assembled Body Segment

A Chassis Built Showing a Standoff and Batteries
Chassis with Batteries Removed

A fully assembled chassis has a mounted servo and is connected to a segment on either side. AAA batteries packs were attached to the sides of the motor with velcro to allow easy removal. The small electronic circuit board for each segment was mounted on the front of the motor to allow easy access to the switch. (See Electronic Design for more information on the circuit board and batteries)

The Head Segment

The Ball Caster Under the Front Segment

The head segment is similar to the body segments except that it contains a PCB board with a PIC instead of a servo motor. The head segment is the same width but slightly longer than the body segment. A ball caster was added to the front of the segment to help support the extra length and help the wheels stay on the ground.

Protection and Visual Appeal

One Segment of the Housing

As a final step, housing for each segment was created from 3" PVC pipe. The pipe was cut into segments the same length as the chassis. The bottom of the pipe was cut off, allowing it to sit flat on the chassis. The housing provides a protective covering for the servo, batteries and electronics. The pipe was attached with velcro straps which mounted under the chassis. This housing can be easily removed to debug and to change batteries.

Mechanical Debugging

Wheels come off the ground: Add washers to the standoffs to force the chassis to be parallel to the ground.

Wheels slide, but do not roll: Increase frictionby either adding weight to the segment or changing the "tires" (the o-ring).

The segments slip when the servo rotates: Tighten the screws for the connector standoffs, both above the beam and below the chassis.

Electronics

Parts List

  • PIC32 NU32 Board + PIC USB cable
  • XBee Interface Board (2)
  • RS232 cable
  • LM7805C 5V regulator (2)
  • 0.33uF capacitor
  • 0.01uF capacitor
  • LM338T adjustable voltage regulator (2)
  • 5k potentiometer (2)
  • 120 ohm resistor (2)
  • 0.1uF capacitor (6)
  • 1uF capacitor (2)
  • L298N H-bridge
  • 14N002 diodes (4)
  • LS7083 decoder
  • 100k ohm resistor
  • Pittman GM8712G708-R3 24V motor
  • Futaba S3004 RCservo motor
  • Protoboard/breadboard

Electronics On Fluffbot

Electronics Block Diagram

A 24V DC motor is used to control the momentum wheel. A RCservo motor is used to control the steering angle. An XBee Board is used to communicate between the Fluffbot and a PC.

The electronics block diagram (right picture) shows how each circuitry block connects to each other. The following links illustrate how each individual circuitry block is built:


Electronics At Computer

The second XBee Interface Board is connected to a computer using the RS232 cable. This enables the user to communicate wirelessly in real-time to the Fluffbot.

Code

There is a PIC32 code, compiled using MPLAB, as well as a Processing code. Download them: PIC code, Processing code.

The code does three things:

1) Sets motion parameters.

2) Controls acceleration and direction of the momentum wheel.

3) Controls angle of the steering wheel.

1) Sets motion parameters

Depending on the "type" of seal chosen, Fluffbot exhibits different styles of motion. The styles of motion are changed by changing the maximum angle of the steering wheel (amplitude) and by changing the rate at which the momentum wheel and steering wheel change direction (frequency).

There are three motion styles to choose from:

  • Seal on land (medium amplitude, high frequency)
  • Seal in water (low amplitude, medium frequency)
  • Seal on ice (high amplitude, medium frequency)

Steps to change motion parameters:

  • From a computer, using a Processing GUI, the user chooses between seal on land, in water, and on ice. The users choices are transmitted wirelessly to the Fluffbot.
  • In the PIC code: the UART 2 interrupt handler receives the instructions, and changes amplitude and frequency.
  • The function setAnimalParameters() takes this new information, and changes Fluffbot's motion accordingly.

2) Controls acceleration and direction of the momentum wheel

The momentum wheel accelerates in a sinusoidal motion. The PIC controls uses PD control to control the acceleration. (You'll see in the code that we use speed control, but controlling speed will effectively control acceleration.)

The code controls acceleration with four steps:

  • Sets a target speed "set_speed", based on a sinusoid generated in the setAnimalParameters() function.
  • Gets actual speed data from encoders on the momentum wheel motor, with the getActualSpeed() function.
  • Calculates the error between set speed and actual speed, with the calculateError() function.
  • Sets PWM to help decrease the error, with the setPWM() function.

3) Controls angle of the steering wheel

The angle of the steering wheel determines whether the Fluffbot is going forward or reverse, and turning left or right.

There are four motion directions to choose from:

  • Forward. Momentum wheel acceleration and steering wheel angle out of phase by 180 degrees. Equivalently (and as in the code), the steering wheel angle leads the momentum wheel speed by pi/2.
  • Reverse. Momentum wheel acceleration and steering wheel angle in phase phase. Equivalently (and as in the code), the steering wheel angle leads the momentum wheel speed by 3*pi/2.
  • Left, and 4) right. The variable middle_servo changes, so that the steering wheel angle changes about an angle leftwards or rightwards.

Steps to change direction parameters:

  • From a computer, using a Processing GUI, the user chooses between forward, reverse, left, or right. The users choices are transmitted wirelessly to the Fluffbot.
  • In the PIC code: the UART 2 interrupt handler receives the instructions, and changes the phase and middle_servo.
  • The function setAnimalParameters() takes this new information, and changes Fluffbot's direction accordingly.

Results

Overall, the robotic snake was successful.

Initially, the mechanical design included a single wheel mounted in the center of the pvc pipe. However, the motion of the snake was very difficult to control because the robotic snake became unstable very easily. As a result, the chassis was built to include two wheels, as discussed in the mechanical design section, in order to provide stability which made the robot easier to control.

Wireless control from a laptop allowed easy demonstration of the snakes capabilities, and allowed others to easily control its movement.

The final robotic snake can be seen in action here.

Video of the robot snake without housing

Video of the robot snake with housing

Next Steps

The robotic snake was developed within five weeks, and proved to be a very successful demo. There are many options that could be researched and developed to add to this robot and discussed below.

Position Sensors

Sensors could be added to the robot to allow it to know its position. This could be accomplished with a combination of encoders on a segment. Most likely, the middle segment should be used since it would be the approximate center of gravity. Knowledge of the position of the center of gravity would potentially the robotic snake to be sent to different locations or navigate (using dead reckoning) through a pre-determined obstacle course or maze. The information from encoders could be sent to a computer to observe different snakelike motions with different parameters.

Obstacle Avoidance

With optical sensors on the head of the snake, the robot would be able to sense an obstacle and either overide the wireless command and avoid it, or stop completely, and wait for further commands.

Power Supply

Currently, 5 AAA batteries are required for each servo, meaning that this robot requires many batteries. As a result, a different power supply could be investigated.

High Torque Servos

The servos in the snake have a large load but do not need to move very quickly, so high torque servos could be used instead of standard servos. This would also prolong the battery life because the servos would be operating in a more efficient range.

References

Ma, Shugen. "Analysis of creeping locomotion of a snake-like robot." Advanced Robotics Vol 15, No 2 (2001): 205-6.

Saito, Fukaya, Iwasaki. "Serpentine Locomotion with Robotic Snakes". IEEE Control Systems Magazine (Feb 2002): 66, 72-73.