Upload
junior-gordon
View
213
Download
0
Embed Size (px)
Citation preview
Behaviour-Based Controlin Mobile Robotics
Behaviour-Based Controlin Mobile Robotics
Paul Fitzpatrick
Definition of RoboticsDefinition of Robotics
Robotics is:
“the Intelligent Connection of
Perception to Action”
Robotics is:
“the Intelligent Connection of
Perception to Action”
Reality Robot
Actuators
Sensors Perception
Action
Sensors
“Pipelined” approach
Classical Robotic ControlClassical Robotic Control
Perce
ptio
n
Mod
ellin
g
Pla
nn
ing
Task E
xecu
tion
Moto
r Con
trol
Actuators
Practical Problems with Classical ControlPractical Problems with Classical Control
SlowSlowto respondto respond
Perceptio
n
Modelling
Pla
nnin
g
Task Execution
Motor ControlSensorsActuators
Delayed reaction to stop robot
Pla
nnin
g
Task E
xecu
tion
Research Problems with Classical ControlResearch Problems with Classical Control
Reality
L 20R 00F 00B 10EXEC
Perce
ptio
n
Modellin
g
Moto
r Contro
l
Temptation to focus on model rather than reality
Other influence
s
Classical Control: SummaryClassical Control: Summary
Assumes a complete internal world model can be built, then manipulated
Slow. Modelling must occur before robot can react to changes in environment
Emphasis on using model is misleading- Makes complex tasks seem solvable by
directing attention away from perception Makes potentially simple tasks complicated
Requires crippling simplications
Alternatives to Classical ControlAlternatives to Classical Control
TraditionalAI
behaviour-based systems
Environmental complexity
Cog
nit
ive c
om
ple
xit
y
reactive systems
complex cognitionsimple environment simpler cognition
complex environment
Rather than functional decomposition, use “Behaviours”
As much as possible, behaviours interact with each other through the environment, not the system
The world is its own best model, so consult it directly whenever practical
Use distributed representations tailored to the particular behaviours using them
Behaviour-Based ControlBehaviour-Based Control
Modules act in parallel, in layers of increasing priority
Behaviour-Based Control:Subsumption Architecture
Behaviour-Based Control:Subsumption Architecture
Sensors
Work usefully
Use maps
Explore
Wander
Avoid obstacles
Actuators
All modules have access to sensors
All modules have access to actuators
Higher layers can view and modify the data flow in
lower layers
Reacts immediately to stop robot
Fast!Fast!
Work usefully
Use maps
Explore
Wander
Avoidance
Advantages of SubsumptionAdvantages of Subsumption
Disadvantages of SubsumptionDisadvantages of Subsumption
Rigid priority scheme and strict layering are limiting - Priorities must be evaluated and
hardwired at design time Requires behaviours to fit into a
simple single-inheritance hierarchy Behaviours cannot be combined, only
enhanced linearly
Alternatives?Alternatives?
TraditionalAI
behaviour-based systems
Environmental complexity
Cog
nit
ive c
om
ple
xit
y
reactive systems
Extend scope of behaviour-based systems by improving behaviour “glue”
“Lateral” Architecture“Lateral” Architecture
Work usefully
Use maps
Explore
Wander
Sensors
Avoid obstacles
Actuators
All modules All modules have access have access to sensorsto sensors
All modules All modules have access have access to actuatorsto actuators
Features of LateralFeatures of Lateral
Lateral has a dynamic priority system designed to make it easy to build behaviours using other behaviours
A behaviour is given the priority its highest priority user at a given time thinks it should have (“sponsorship”)
Behaviours expose a limited public interface to users, rather than allowing access to their internal data flows.
Example Behaviour: Edge FollowingExample Behaviour: Edge Following
Compensate
Stroll
WaddleFace
Start
Capture
Turn
iSide
LogicalSensors
oNudge
oMotor
EdgeMan
Prowling BehaviourProwling Behaviour
Start Grab
Circle
Circlesync
Exploreseek
Explorefly
LeapLeapsync
LeapReturn
iSelect
LogicalSensors
oEdge
oPatrol
oExplore
ProwlMan
Prowling uses edge following in its implementation
Prowling - Behaviours usedProwling - Behaviours used
ProwlMan
Priority Control
PatrolMan
Priority Control
ExploreMan
Priority Control
SeekMan
Priority Control
EdgeMan
Priority Control
AngleMan
Priority Control
NudgeMan
Priority Control
MotorMan
Priority Control
Prowling behaviour is built from a hierarchy of simpler behaviours.
Prowling - Edge FollowingProwling - Edge Following
ProwlMan
Priority Control
PatrolMan
Priority Control
ExploreMan
Priority Control
SeekMan
Priority Control
EdgeMan
Priority Control
AngleMan
Priority Control
NudgeMan
Priority Control
MotorMan
Priority Control
NudgeMan beats SeekMan because, even though it is lower level, it has more sponsorship
ProwlMan active, and sponsoring edge following (EdgeMan)
Prowling - ExploringProwling - Exploring
ProwlMan
Priority Control
PatrolMan
Priority Control
ExploreMan
Priority Control
SeekMan
Priority Control
EdgeMan
Priority Control
AngleMan
Priority Control
NudgeMan
Priority Control
MotorMan
Priority Control
ProwlMan active, and sponsoring exploration (ExploreMan)
More BehavioursMore Behaviours
ProwlMan
Priority Control
PatrolMan
Priority Control
ExploreMan
Priority Control
SeekMan
Priority Control
EdgeMan
Priority Control
AngleMan
Priority Control
NudgeMan
Priority Control
MotorMan
Priority Control
RegionMan
Priority Control
ManualMan
Priority Control
New behaviours fit in transparently to the ones already present
CompetitionCompetition
ProwlMan
Priority Control
PatrolMan
Priority Control
ExploreMan
Priority Control
SeekMan
Priority Control
EdgeMan
Priority Control
AngleMan
Priority Control
NudgeMan
Priority Control
MotorMan
Priority Control
RegionMan
Priority Control
ManualMan
Priority Control
Competition between behaviours is resolved by the “sponsor”
class ModuleA : public ZACProcess{private:
int localVariable;public:
ZACInput<int> boredom;ZACInput<Point> distance;ZACOutput<MotorCtrl> motor;ZACOutput<Message> msg;
int ZAC_Run ( int ZAC_state );...
};
...
class ModuleA : public ZACProcess{private:
int localVariable;public:
ZACInput<int> boredom;ZACInput<Point> distance;ZACOutput<MotorCtrl> motor;ZACOutput<Message> msg;
int ZAC_Run ( int ZAC_state );...
};
...
Lateral - ImplementationLateral - Implementation
Module A
Priority Control
PROCESS ModuleA{
int localVariable;INPUT(int, boredom);INPUT(Point, distance);OUTPUT(MotorCtrl, motor);OUTPUT(Message, msg);
@CONTROL// Priority control
@state1DoSomething();NEXT state2;
@state2DoSomethingElse();NEXT @;
};
PROCESS ModuleA{
int localVariable;INPUT(int, boredom);INPUT(Point, distance);OUTPUT(MotorCtrl, motor);OUTPUT(Message, msg);
@CONTROL// Priority control
@state1DoSomething();NEXT state2;
@state2DoSomethingElse();NEXT @;
};
LateralC++
Simulator
Robot
RuntimeSupport
Extended syntax for expressing parallel processes (as state machines) and data flow between them
“ Khepera ”Hardware:Hardware:
Khepera miniature robot
Processor: 68332 Proximity sensors Light sensors Stepper motors
Khepera miniature robot
Processor: 68332 Proximity sensors Light sensors Stepper motors
Khepera Simulator
Robot path tracer
Robot Control Panel
A
B
C
A, B or Cdepending on
priority
Compete/Subsume
Priority Implementation: ConnectionsPriority Implementation: Connections
Copy
A A
A
Compete/SubsumeA
B
C
A, B or Cdepending on
priority
A
B A or Bdepending on
priority
Compete/Subsume