Advanced robot control
1 / 34

Advanced Robot Control - PowerPoint PPT Presentation

  • Uploaded on

Advanced Robot Control. Programming for Robustness with RoboLab. Positioning. Absolute Uses features or ‘landmarks’ of the course Relative Robot keeps track of its moves Relies on Odometry. Positioning Problems. Absolute May have difficult time finding small landmarks

I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
Download Presentation

PowerPoint Slideshow about ' Advanced Robot Control' - elliot

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.

- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
Advanced robot control

Advanced Robot Control

Programming for Robustness with RoboLab

FLL Team 16


  • Absolute

    • Uses features or ‘landmarks’ of the course

  • Relative

    • Robot keeps track of its moves

    • Relies on Odometry

FLL Team 16

Positioning problems
Positioning Problems

  • Absolute

    • May have difficult time finding small landmarks

    • Some landmarks & robots are easily damaged

  • Relative

    • Error accumulates with every move

    • If too many errors, robot maybe too far off course to find landmark later

FLL Team 16

Common sources of error
Common Sources of Error

  • Rotation Sensor Resolution

  • Gear Backlash

  • Program Execution Speed

  • Wheel Spin/Skidding

  • Inside Turn Wheel

FLL Team 16

Rotation sensor resolution
Rotation Sensor Resolution

  • Robot only knows position with plus or minus one count (at best)

  • Gear backlash increases error beyond one count

  • Use finer resolution to reduce error (Minimize Distance per Count)

  • Rotation sensor should be at same speed as motor (or up to 1-1/2 times higher)

FLL Team 16

Program execution speed
Program Execution Speed

  • Rotation sensor not read continuously

  • RCX may not ‘see’ a target

  • RCX will not react instantly

FLL Team 16

Wheel spin at startup
Wheel Spin at Startup

  • Caused by sudden application of motor torque, not enough weight on drive wheels

  • Wheels and rotation sensor turn before robot starts

  • Skip or changes direction due to “jump” from start

FLL Team 16


  • Caused by rapid application of motor braking and not enough weight on drive wheels

  • Robot told to stop but continues to move

    • Rotation sensor doesn’t ‘see’ move

    • Sends robot off position, affecting next move by robot

FLL Team 16


  • Errors are magnified in turns

    • Any slight direction error can cause larger side-to-side error

  • Braking of inside wheel

    • Any movement of the inside wheel lessens the overall turn; true angle is shorter than with a locked wheel

  • Turns made with two counter-rotating wheels doubles rotation sensor resolution errors

    • Additional errors if wheels don’t turn at same speeds

FLL Team 16

Non programming solutions

Set a reasonable speed-Try gearing robot for 10 to 15 inches per second

Allows one wheel to be ‘locked’ in turn

Gear rotation sensor for 1/8” of travel per count or less

Measures position as precisely as practical

Minimize backlash by avoiding multi-stage gearing

Avoid loose gear meshes

Keep weight on driving wheels

Gain traction

Minimize slipping and skidding

Weight shifts with accel/decel

Match motors – use two motors with same output speeds

Use motor test jig

Non-Programming Solutions

FLL Team 16

Motor test jig
Motor Test Jig per second

  • Build a motor test jig using:

    • Load motor with worm geartrain

  • Test and record motor data

    • Run for turn, record counts

    • Forward and reverse

    • Different power levels

Picture of Motor Test Jig

FLL Team 16

Programming solutions
Programming Solutions per second

  • ‘Creeping’

  • ‘Precise’ Forward/Reverse/Turns

  • ‘Square Up’ to Lines

  • Line Following using ‘shades of gray’

  • Experimentation

FLL Team 16

‘Creeping’ per second

  • Moves Robot Slowly by providing a series of taps to the robot

    • Overcome static friction

    • Provides braking and speed control

  • Offers these Advantages

    • Go slowly to minimize wheel slippage

    • Minimize distance error due to polling error

    • Better chance of sensing narrow lines

    • Bump up against landmark with much less force

FLL Team 16

Why not use low power levels
Why Not Use Low Power Levels? per second

  • Often don’t provide enough power to overcome static friction

  • Robot still rolls easily enough that speed is still too high

FLL Team 16

How to creep
How to Creep per second

  • Create a loop to wait for rotation (or time, light level or button press)

    • Start motors at medium power level

    • Wait for a very small time (1/100 sec)

    • Stop the motors

    • Wait for a very small time (1/100 sec)

    • End loop

FLL Team 16

Creep example
Creep Example per second

FLL Team 16

Precise turns forward reverse
Precise Turns/Forward/Reverse per second

  • Power applied gradually

  • Reduce power before target

  • Creep forward/backward until reach target

FLL Team 16

Precise startup
‘Precise’ Startup per second

  • Uses subroutine (to save memory)

    • Position target passed from main task via container

  • Sets up intial target

    • Try using 10 to 20 counts short of actual target

  • Loops until initial rotation target

    • Branches to different power levels based on timer to provide smoother acceleration

    • Avoids wheel slip at startup

FLL Team 16

FLL Team 16 per second

At initial target
At Initial Target per second

  • Coast or Creep

    • If coasting, coast until time

    • Could possibly coast past target

  • Creeping applies pulsed braking

    • No skidding

  • Self correcting using closed loop positioning

    • Moves forward or reverse to final target count

    • Too far – creeps in reverse

    • Too short – creeps forward

FLL Team 16

FLL Team 16 per second

Routine details

One subroutine can be used for left turns and forward per second

Container 7 is set to 0 or 1 to choose left or forward

Reverse or right turns are done similarly

Stored as subroutines to save memory

Target counts are passed using blue container

Set container for forward/reverse or left/right

Routine Details

FLL Team 16

Square up
Square Up per second

  • Line up robot to edge of line

    • Uses two Light Sensors

    • Moves robot so each sensor seeks dark/light edge

  • Know exact spot when parked

    • Accuracy in direction

    • Accuracy in position (1 axis)

FLL Team 16

Square up setup
Square Up ‘Setup’ per second

  • Square up to dark line

    • Each sensor is different

    • Needs to be set before running

  • Separate sub-vi that calibrates light levels

    • Grabs light values

    • Calculates and stores threshold values

FLL Team 16

How it works
How it works per second

  • For each sensor:

  • If sensor sees:

    • Light: Creep one pulse forward, Reset Container to 0

    • Dark: Add 1 to container

  • Do until container is set to 2 which means both sensors made it to the dark line

  • Robot “waddles” to the line

  • Repeat process with motors set for reverse and looking for light instead of dark

  • Repeat loop two times to assure exact placement

FLL Team 16

FLL Team 16 per second

Line following
Line Following per second

  • Follow line edge using light sensor

    • Reads average value of light within a circle

    • Seeking halfway between light and dark

  • Based upon Light level sensed Motor ‘Behavior’ will set motors to creep to steer robot toward line edge

    • Can be separated into the 7 zones (‘shades of grey’)

    • Can go straight or turn depending on value

    • Go faster and straighter near middle zones

    • Go slower and turn sharper in zones away from middle

FLL Team 16

FLL Team 16 per second

Program example
Program Example per second

  • Create an outer loop

    • rotation sensor target

  • Create a decision tree within the loop

    • Made with container forks for branching for different response to each light level range

    • Use Creeping within each branch

  • Each of the 7 conditions can be setup and tested individually

FLL Team 16

Experimentation is key
Experimentation is Key per second

  • Alter creep speed and turn radius

  • Watch robot to see how it behaves

  • Adjusting height of light sensor

    • Changes size of circle being read

    • Changes sensitivity

  • Adjust location of light sensor

  • Change weight distribution

FLL Team 16

Memory management
Memory Management per second

  • Use Subroutines(‘Subs’) for routines called repeatedly

    • Pass parameters to ‘Subs’ using Containers

    • Use Containers as flags (for program forks) to get multiple functions per Sub.

  • Use utility programs to show memory usage and clear out slots.

    • Get to know memory usage of program elements

FLL Team 16

Show memory vi example
Show Memory vi example per second

FLL Team 16

Erase slot vi example
Erase Slot vi example per second

FLL Team 16

One final thought
One Final Thought: per second

“The lesson is in the struggle and not in the victory”

FLL Team 16