Download presentation
Presentation is loading. Please wait.
1
Conflict resolution CS 395 Behavior-Based Robotics
2
Naïve behavior-based systems Behavior = policy + trigger System = set of behaviors Assume mutually exclusive triggers Use policy of currently triggered behavior Problem: what happens when triggers aren’t mutually exclusive?
3
Types of conflict resolution Types of activation Binary: on or off Graded (numerical): degrees of activation Types of combination Switching (choose a behavior) Blending (form a composite action)
4
Switched arbitration Fixed priorities Give each behavior a priority Use binary activation Choose policy of highest priority active behavior Dynamic priorities Use graded activation Choose most active behavior
5
Arbitration in GRL Arbitration schemes implemented as functions over behaviors Input A set of behaviors to decide between Output A composite behavior with the output of the selected input behavior
6
Simple switching (Brooks?) Assume binary activation and only two behaviors Operates like or in Scheme or || in C++: Takes the leftmost input that’s “on”. (define-signal (behavior-or b1 b2) (behavior (or (activation-level b1) (activation-level b2)) (if (activation-level b1) (motor-vector b1) (motor-vector b2))))
7
A cleaverer way to code it These compile to exactly the same code since: (or a b) is defined to be: (if a a b) (define-signal (behavior-or b1 b2) (if (activation-level b1) b1 b2))
8
What it looks like as signals b1 b2 or if Motor vectors Activation levels output
9
More than two behaviors Notes: This is a different (and somewhat cleaner) implementation than the one in the notes The compiler knows to perform the outer if at compile time There don’t end up being any linked lists at run time. (define-signal (behavior-or first-behavior. rest-of-behaviors) (if (null? rest-of-behaviors) first-behavior (if (activation-level first-behavior) first-behavior (apply behavior-or rest-of-behaviors)))) Extra args passed as a list calls a procedure with a list of arguments
10
Brooks’ suppress operator Like behavior-or, but stays with the first argument for a while even after it becomes inactive Good for removing chatter (define-signal (suppress suppressor suppressee time) (let ((suppressing? (< (true-time (not (activation-level suppressor))) time))) (behavior (or suppressing? (activation-level b2)) (if suppressing? (motor-vector b1) (motor-vector b2))))
11
Switching with dynamic priorities (Tinbergen) Remember: Behaviors now have graded activation Arg-max returns the position of the maximum argument, not its value List-ref returns the list element with the specified position Again, the compiler in-lines all of this so there aren’t actually any lists at run time (define-signal (behavior-max. behaviors) (list-ref behaviors (apply arg-max (activation-level behaviors))))
12
Computing arg-max using lateral inhibition Biological system often use maximal activation for conflict arbitration using a “winner-take-all network” Each signal inhibits the other signals Less active signals inhibit each other less More active signals are more inhibiting and less inhibited Eventually, the strongest signal wins, and the others are turned off
13
Motor schemas (Arbib, Arkin) (define-signal (weighted-motor-vector behavior) ;; Returns behavior’s motor vector ;; with each element multiplied by the behavior’s activation-level (* (activation-level behavior) (motor-vector behavior))) (define-signal (weighted-sum. behaviors) (apply + weighted-motor-vector behaviors)) (define-signal (behavior-+. behaviors) (behavior (apply + (activation-level behaviors)) (apply weighted-sum behaviors)))
14
Weighted voting (Rosenblatt/CMU) Principle of least commitment Don’t make decisions until you have to Least commitment arbitration Assume behaviors don’t return a single motor vector, but rather a set of preferences on possible motor vectors Sum everyone’s preferences Pick the vector with the most preference
15
Weighted voting for directions Notes Behaviors are now vectors of numbers of rating each of 16 different directions to move in Angle-preferences takes a function from angles to numbers and returns a vector of 16 samples of the function (define-signal avoid-obstacles sonar-readings) (define-signal go-forward (angle-preferences cos)) (define-signal angle-preferences (+ avoid-obstacles go-forward)) (define-signal motor-vector (follow-xy-vector (unit-vector (* (vector-arg-max angle-preferences) radians-per-angle-sample))))
Similar presentations
© 2024 SlidePlayer.com Inc.
All rights reserved.