CS 455: Advanced Robotics

From Wikibooks, the open-content textbooks collection

Jump to: navigation, search

Contents

[edit] The Future of Robots

The great success of robots so far has been in automating repetitive tasks in process control and assembly, yielding dramatic cuts in production, but the next step towards cognition and more human-like behaviour has proved elusive. It has been difficult to make robots that can truly learn and adapt to unexpected situations in the way humans can, while it has been equally challenging trying to develop a machine capable of moving smoothly like any animal. There is still no robot capable of walking properly without jerky slightly unbalanced movements. Today's robot designers will have to solve some fundamental problems before robots can become as versatile, independent and useful as the ones we've seen for years in the movies.

There is a slowly increasing interest in robotics outside the traditional military, industrial and entertainment markets, moving into markets such as home service and healthcare.

The future of robotics is emerged in four main categories:

Telepresence: The ability to see and manipulate objects in remote locations, particularly hostile ones ("dull, dirty and dangerous jobs"), remains a key application for mobile robots. In the military, this translates into a multitude of applications. For example, iRobot's PackBots are deployed in Iraq and Afghanistan to scope out who is in a building, ahead of soldiers entering it. Healthcare is also taking advantage of telepresence applications, such as InTouch Health's mobile videoconferencing robots, which let physicians interact remotely with patients in the hospital.

Rescue and lifting: The U.S. Army is developing robots that can retrieve and carry a wounded solder from a battle site, a very risky task for human soldiers. Vecna Technologies' Battlefield Extraction-Assist Robot (BEAR) is a prototype robot that can detect people through the use of infrared, pick them up and carry them to safety. The technology could also be used for healthcare and home care applications in the longer term.

Navigation: Aethon's Tug robots offer a sophisticated navigation capability that lets them download a map of a building (such as a hospital) and use dead reckoning to find their way from one location to another. They can sense objects and obstructions and create a new route on the fly if necessary. Tugs are being used in a number of hospitals to deliver drugs, meals or other supplies.

Humanoid robots: There is very little U.S. activity in humanoid robots, or androids, a field which is dominated by Japan and Korea (such as Honda's Asimo and Kokoro's Actroid). However, one U.S. company, Hanson Robotics, is pioneering lifelike heads with realistic-looking skin and features. The heads can talk when someone approaches and maintain eye contact during the conversation. Hanson featured its newest addition at the show, "rock star" Joey Chaos, complete with facial piercings and goatee.

[edit] Programming Concepts

Robot systems have special demands related to their complex interactions in real environments, and their complex sensors and actuators. We focus on robot programming in a laboratory research environment where robots, operating systems, hardware platforms, programming languages, and researchers all differ and change.

Robot programming systems must provide appropriate human–robot programming interaction, programming languages and tools, and distributed infrastructures.

There are 3 important compontents in robot programming systems:

  • Programming/Design Component; enable programmer to describe robot behavior
  • Underlying infrastructure including designs for architecture that supports and executes robot behavior
  • Design of interactive systems that will allow the programmer to interact with the programming component; to create, modify, and examine programs during execution


2 main programming methods:

Manual
Text based or Graphical
Automatic
Programming by Demonstration
Used for training specific tasks



See section robot programming languages below for examples of the manual programming method.

[edit] Robot Control

The task of robot control can be solved by introducing three different robot behaviors:

  • Pushing an object
  • Avoiding the black line
  • Wandering around


The robot has no way of checking that the area is free of objects that must be removed and new objects may be dropped in the area; this means that it may look as if the robot is patrolling, searching eagerly for unwanted objects to throw out.

The behaviors should be implemented by a kind of servo-mechanism, which we can consider as a principle of performing a selected behavior only in a very short time interval before the sensors are checked again.

You will need firstly to describe these behaviors in more detail and for each specify under which conditions of trigger readings they are relevant to perform. Specify also an order of importance in which the different behaviors should be activated, when more than one is possible.

[edit] Robot Hardware

Included in our Lego Mindstorms kit:

  • 519 LEGO Technic parts
  • NXT Intelligent Brick
  • Three servo motors
  • Ultrasonic distance and movement sensor
  • Sound sensor, with sound pattern
  • Light sensor, detecting light intensity
  • Touch sensor (press/release/bump detection)
  • USB 2.0 port
  • Four input ports, six-wire digital platform
  • Three output ports, six-wire digital platform
  • Loudspeaker, 8 KHz sound quality
  • Power source: six AA Batteries

[edit] Mathematics of Robot Control

There are three sequential math sections in robot programming:

  • Averages
  • Interpolation
  • Hysteresis


Averages are a useful instrument to soften the differences between single readings and to ignore temporary peaks. They allow you to group a set of readings and consider it as a single value. When you are dealing with a flow of data coming from a sensor, the moving average is the right tool to process the last n readings.

This is how to use a moving average for three values in a program:

int avg, v1, v2, v3;

v2 = Sensor_1;
v3 = Sensor_1;
while(true)
{
v1 = v2;
v2 = v3;
v3 = Sensor_1;
avg = (v1+v2+v3) / 3;
}


Interpolation is a class of mathematical tools designed to estimate values from known data. The interpolation technique proves useful when you want to estimate the value of a quantity that falls between two known limits. Linear interpolation draws a straight line across two points in a graph. You then can use that line to calculate any value in the interval.

Hysteresis will help you in reducing the number of corrections your robot has to make to keep within a required behavior. By adding some hysteresis to your alogrithms, your robot will be less reactive to changes. Hysteresis can also increase the efficiency of your system.

This sample program demostrates hysteresis. The program plays tones to ask you to turn left or right.

#define GRAY 50
#define H 3

task main()
{
SetSensor(Sensor_1, Sensor_Light);
while(true)
{
If (Sensor_1>GRAY+H)
PlayTone(440,20);
Else If (Sensor_1<GRAY+H)
PlayTone(1760, 20);
Wait(20);
}
}

[edit] Robot Programming Languages

There are many options available for programming the Mindstorms bricks. The standard NXT kits may be purchased with either the NXT-G or Robolab programming software. Both Labview based visual programming languages – Robolab allows more advanced programming, and NXT-G is a bit more beginner-friendly. There are also many other programming languages available.
NXT-G (Windows, Mac)
• Pros

  • Easy to quickly create simple programs
  • Programming flow is easy to see
  • Included in standard kit

• Cons

  • Somewhat limited capabilities
  • Integers only – floating point numbers not supported
  • Each basic math operation (addition, subtraction, multiplication, division) requires a separate block
  • Comparatively slow execution speeds
  • High memory usage.

Robolab (Windows, Mac)
• Pros

  • Fairly easy to use
  • Fairly advanced programming possible
  • Very similar to LabVIEW environment
  • Included in standard educational kit

• Cons

  • Block connections can become confusing
  • No good method for creating block set functions for reuse

RobotC (Windows)
• Pros

  • Fast execution
  • Advanced programming

• Cons

  • Text based language is harder for beginners
  • Must be bought separately from kit

LabVIEW Toolkit (Windows, Mac)
• Pros

  • Free
  • Can create blocks for use with NXT-G programming
  • Advanced data analysis
  • Common industry programming environment

• Cons

  • Intermediate
  • Advanced programming more limited than text based languages

BricxCC (Windows)
• Free Windows IDE that supports many programming languages

  • NQC (C-based language for the RCX)
  • NXC/NBC (C-based and assembly code for the NXT)
  • C/C++
  • Pascal
  • Java

[edit] Obstacle Avoidance

Obstacle avoidance refers to the methodologies of shaping the robot’s path to overcome unexpected obstacles. The resulting motion depends on the robot actual location and on the sensor readings. There are a rich variety of algorithms for obstacle avoidance from basic re-planning to reactive changes in the control strategy. Proposed techniques differ on the use of sensorial data and on the motion control strategies to overcome obstacles.


[edit] Task Planning and Navigation

Robot navigation means its ability to determine its own position in its frame of reference and then to plan a path towards some goal location. In order to navigate in its environment, the robot or any another mobility device requires representation and the ability to interpret that representation. Navigation can be defined as the combination of the Three fundamental competences:

  1. Self-Localisation
  2. Path Planning
  3. Map-Building and Map-Interpretation

Self-Localisation is the ability of an autonomous robot to estimate its position while moving about its environment. Self-Localisation implies measurement with respect to a certain coordinate frame: this can be either pre-determined by some external input or defined by the robot automatically. The coordinate frame itself, though, is not of fundamental importance: what matters is how the robot can estimate the relative positions of features of interest in the world (landmarks, obstacles, targets, etc.) and its own position with respect to them.

Path Planning is used to determine a route from one coordinate location to another along a set of waypoints. For example, if you had an image of a maze and you needed to determine the best path from where the robot is currently located to where it needs to be you would use Path Planning to determine the shortest or best path to the desired location.

Map-Building is when a robot generates a map of the environment using sensor information, while localizing itself relative to the map. This is especially challenging because for localization the robot needs to know where the features are, whereas for map-building the robot needs to know where it is on the map. In addition, there are inherent uncertainties in discerning the robot's relative movement from its various sensors.

[edit] Robot Vision

One of the most common applications of the use of vision of a robot is the inspection of manufactured goods such as semiconductor chips, automobiles, food and pharmaceuticals using digital cameras, smart cameras and image processing software to perform these inspections.

Robots are programmed to perform narrowly defined tasks such as counting objects on a conveyor, reading serial numbers, and searching for surface defects. Manufacturers favor machine vision systems for visual inspections that require high-speed, high-magnification, 24-hour operation, and/or repeatability of measurements.

Since computers don’t see the same way that a human does, computing devices must see by examining individual pixels of images, processing them and attempting to develop conclusions with the assistance of knowledge bases and features such as pattern recognition engines.

Although there are improvements in the field, the vision of a robot can’t match some of the capabilities of human vision in terms of image comprehension tolerance to lighting variations among other things.

Some of the things that a robot’s vision system may consist of are:

  • One or more digital or analog camera (black-and-white or color) with suitable optics for acquiring images
  • Camera interface for digitizing images (widely known as a "frame grabber")
  • A processor (often a PC or embedded processor, such as a DSP)
  • Input/Output hardware (e.g. digital I/O) or communication links (e.g. network connection or RS-232) to report results
  • Lenses to focus the desired field of view onto the image sensor.
  • Suitable, often very specialized, light sources (LED illuminators, fluorescent or halogen lamps etc.)
  • A program to process images and detect relevant features.
  • A synchronizing sensor for part detection (often an optical or magnetic sensor) to trigger image acquisition and processing.
  • Some form of actuators used to sort or reject defective parts.

[edit] Knowledge Based Vision Systems

There is a challenge called The Semantic Robot Vision Challenge (abbreviated SRVC) that best describes what knowledge based vision systems are.

SRVC is a research competition that is designed to push the state of the art in image understanding and automatic acquisition of knowledge from large unstructured databases of images (such as those generally found on the web).

In this competition, fully autonomous robots receive a text list of objects that they are to find. They use the web to automatically find image examples of those objects in order to learn visual models. These visual models are then used to identify the objects in the robot's cameras.

In general terms:

  • The Vision Sensor must be able to send coordinates to the motion controller.
  • The Motion controller must be able to accept commands.
  • The vision pixel coordinates must be converted to real world coordinates by vision sensor, additional PC, or motion controller.
  • Send data.
  • Make move.

[edit] Robots and Artificial Intelligence

Artificial Intelligence is the area of computer science focusing on creating machines that can engage on behaviors that humans consider intelligent. The ability to create intelligent machines has intrigued humans since ancient times, and today with the advent of the computer and 50 years of research into AI programming techniques, the dream of smart machines is becoming a reality.


[edit] Resources

Created by Catherine Strassman and Lamar Charles.
Saint Peter's College.
CS-455-01: Advanced Robotics.
May 6, 2009.