Northwestern University CS 395 Behavior-Based Robotics Behavior Design
|
|
- Cornelius Stevenson
- 5 years ago
- Views:
Transcription
1 Behavior design In the last chapter, we discussed the design of simple controllers - specifically regulators and tracking systems. In standard feedback control, a single control policy is used all the time. In some cases, such as gain scheduling, you might have a number of similar controllers that you switch between, but more or less you think of there as being a single control system that's trying to do the same thing all the time - follow the set-point. Now we want to think about building systems that, as it were, have a life. Instead of a having a single goal of tracking a set-point, our robots will likely have lots of different goals, some of which can be thought of as tracking a set-point, but others will be more qualitative, like "stay fed," or "avoid predators." To handle multiple tasks, we ll need multiple control policies. The primary topic of this course is how to combine multiple control policies to accomplish multiple tasks or more complicated tasks. The topic of this chapter is how to combine control policies using parallelism, that is, running different pieces of code at the same time, as in a multi-threaded system. We will be using a specific form of parallelism called guarded parallelism, where policies run in parallel but only take control of the motors when specific conditions are met. In the theory of parallel sequential programming, these conditions are called guards, hence the name guarded parallelism. In this course, we ll be calling those conditions triggers or, when we want to consider the possibility of a policy that s half on, activation-levels. We ll call the combination of a policy and an activation level a behavior. This course is on behavior-based systems. Behavior-based systems, roughly, consist of a large number of specialized controllers, each designed to contribute to a specific goal in a specific set of circumstances. In its simplest form, this leads to an architecture consisting of a group of behaviors connected in parallel to the sensors and motors: behavior behavior Sensor data drive-base behavior behavior I ll call this general design the naïve behavior-based architecture because, while it s a useful model, real behavior-based systems tend to have considerably more structure than this. In the coming chapters, we ll discuss the more complicated variants that are used in practice. Most of these will correspond to different ways of combining control policies.
2 In general, the creatures don't act on all their goals at once. It may be that no action is called for; if a creature's just fed, there's no point in feeding again immediately. Or two goals may conflict; if you're being chased by a predator, it's probably a bad time to feed, even if you're hungry. Also, a given goal may be implemented by a number of behaviors. Part of the job of behaviors is to decide when to take action and when to remain quiescent. In general, behaviors don't activate themselves unless they can do something useful. Nonetheless, several behaviors may be in conflict, so researchers have proposed a number of techniques for conflict resolution. We will discuss these in the next chapter. Common robot locomotion behaviors To give a sense of the kinds of things we mean when we talk here about robot behaviors, let s discuss some of the most common kinds of behaviors that people build. Followers There are a number of locomotion behaviors that are referred to as followers of one kind or another. The most common is the freespace follower also called a wanderer or sometimes just collision avoidance system, which steers toward open space and attempts to drive forward. The simplest class of control policies for freespace following is to choose a direction of motion or a rotational velocity that forms a compromise between the different possible directions or velocities based on the amount of free space in different directions. For example, the direction of motion might be a weighted average of the different possible directions of motion with the amount of free space in each direction used as the weights. A variant on freespace following is boundary following, in which the robot tries to trace along the edge of some object or other contour. Line followers sense the presence of lines drawn or otherwise marked on the floor and follow along them. Wall followers attempt to drive along a wall by keeping a constant distance from it and remaining parallel to it. Wall- and boundary followers are sometimes built to have a preference for following the object on one side or the other of the robot, so some robots have separate left- and rightwall followers, which are activated by different triggers. The simplest class of control policies for boundary followers is to steer using a feedback loop on the robot s distance from the boundary. If the robot is too far, it turns toward it; if it s too near, it turns away. Finally, there are object followers, which try to stay close to an object as the object moves. Usually the object is a brightly colored ball or some other kind of object that is easy to sense. Person followers are also common, but are harder to build because it s difficult to build a good person detector. Ballistic actions Most behaviors turn themselves off when their sensors detect that their triggering conditions have ended. However, some behaviors need to keep running until the are done. These kinds of behaviors are called ballistic behaviors or ballistic actions. In biology, they re called fixed action patterns. For example, a ballistic turn behavior is a behavior that always turns a specific angle. Since motors are controlled by torque or velocity and not angle, the ballistic turn must be implemented as a control loop. When activated, the behavior must compute its target orientation and remember it (e.g. with a latch in GRL) so that it can compute the feedback error in its control loop. It must then stay active until that feedback error reaches zero. Another example of a ballistic action is backing up from an obstacle after a collision is sensed. This has to be a ballistic action because collision sensors are usually contact sensors, so as soon as contact is broken, the trigger goes away. Other common locomotion behaviors Control loops often get into stuck states where they haven t accomplished their tasks, but they still generate zero motor output. An example is a freespace follower that has driven into a cul de sac. Many freespace followers will generate a zero turn signal because there is equal freespace on both sides, yet they
3 cannot move forward because there is insufficient freespace ahead. A common solution to the problem is an unwedger which will trigger in a stuck state and forcibly reorient the robot (e.g. using a ballistic turn) to move it out of the stuck state. Another common behavior is to drive to a specified set of Cartesian coordinates based on the robot s estimate of its position. Position estimates are often based on integrating the sensed velocities of each motor. In nautical navigation, this task of computing the integral of velocity to get position is called deduced reckoning, which is usually shortened to DED reckoning, or more commonly, dead reckoning. The behaviors that use this to move to a specified position are often therefore also called dead reckoning behaviors. Homing is a behavior of (somehow) returning to a specified location. Simple homing systems use dead reckoning. More complicated ones can be very complicated indeed. Docking is essentially like object following, except that the object isn t moving and the robot actually needs to touch it. Usually, the idea is to touch it softly and at a specific position and orientation. For example, a robot that recharges itself needs to be able to plug itself in somehow. This can be very hard with today s robots because while they can move forward and backward easily, they can only move side-toside by alternately rotating and translating; so docking can be like trying to parallel park a car. Designing a frog As an example of behavior-based system design, we ll sketch the design of a feeding behavior for a simulated frog. Before we can write code for the behaviors, we will need to formalize what we mean by a behavior. Although behavior means many things to many people, we will take it to mean a combination of some kind of triggering mechanism (usually based on sensory data) and some kind of control loop. We will represent the output of the triggering mechanism as an activation-level signal, which might either be a Boolean value or a real number, depending on whether we want to be able to represent varying degrees of activation. We will represent the output of the control loop with a motor-vector signal (usually a group), suitable for feeding to the low-level drivers for the motors. We can describe these as a data abstraction in GRL: (define-group-type behavior (behavior activation-level motor-vector) (activation-level activation-level) (motor-vector motor-vector)) This says that behaviors have two components, an activation-level, and a motor-vector (the output of the policy). You create behaviors with the behavior procedure, which takes the activationlevel and motor-vector as arguments, and you extract their components with the activation-level and motor-vector procedures. Let's consider a couple of simple behaviors, such as a frog might have. Let's say our robot frog can do three things: turn in place, drive forward, and eat whatever's in front it. We can represent the turning and driving with our rt-vectors, so all we need to do is to add an eat? component to them. Then our motor vectors might look like: (define-group-type frog-motor-vector (frog-motor-vector motion eat?) (motion motion-of) (eat? eat?)) Now suppose our frog has a fly-motion sensor that tells the bearing of any flies that it sees. Then we could describe the frog's feeding behavior as a conjunction of two simpler behaviors:
4 Face-prey When the frog sees a fly, it needs to turn to face it so that it can stick out its tongue and grab it (frog tongues have limited steerability). Eat When the frog sees its prey within tongue range, it shoots out its tongue to eat it We can code each of these as a behavior. The eat behavior is straightforward: (define-signal facing-prey? (< (abs prey-heading) facing-prey-tolerance)) (define-signal sit-still (rt-vector 0 0)) (define-signal eat (behavor (and see-prey? facing-prey?) (frog-motor-vector sit-still #t))) Where we assume that prey-heading is the output of the prey sensor and it tells the frog what direction the prey is in relative to its own body, and where a heading of zero means the frog is perfectly facing the fly. The face-prey behavior is a little more complicated. At first blush, we might expect to use something like: (define-signal face-prey (behavior (and see-prey? (not facing-prey?)) (frog-motor-vector (orientation-p-controller prey-heading 0 face-prey-gain) #f))) which would servo the frog's body until it faced the prey. Unfortunately, most motion sensors go blind as soon as the creature starts moving itself, so the frog has to remember where the prey is and then turn toward it using dead reckoning. We can write this as (changes shown in italics): (define-signal face-prey (behavior (and see-prey? (not facing-prey?)) (frog-motor-vector (orientation-p-controller frog-orientation prey-orientation face-prey-gain) #f))) with the ancillary definitions: (define-signal frog-orientation (modulo (integrate rotational-velocity) 360) (define-signal still? (= rotational-velocity 0)) (define-signal prey-orientation (latch (modulo (+ frog-orientation prey-heading)
5 360) still?)) Note that latch is a transducer that outputs the value of its first input, as long as its second input is true. When the second input goes false, it holds its output until the second input becomes true again. We can now build our frog controller by saying: (define-signal frog-controller (drive-frog eat face-prey)) where we assume that drive-frog is a transducer, like drive-base, that sends a motor vector to the motors, or rather the muscles. However, unlike the previous base controllers we ve used, we will assume here that it takes behaviors as arguments and uses the motor vector of whichever behavior is active. This of course brings up to issues: of how we find the motor vector of the active behavior, and what we do if there are two active behaviors, both of which we ll put off until the next chapter. For now, simply take it for granted that drive-base has a way of handling the situation. Naï ve behavior-based system design To build a naï ve behavior-based system, we need to come up with a set of behaviors that jointly perform the robot s task. In practice, roboticists almost always end up doing this iteratively because there are almost always contingencies that come up in real environments that they didn t think while writing the code. Different people design systems in different ways, but the general outline of how you build a naï ve behavior-based system is basically this: 1. Break the task into a set of motions that, if properly executed at the right times, would allow the robot to solve the task 2. For each motion: Determine the conditions under which it should be performed Design an estimator that can determine whether those conditions occur Design a controller that should implement that motion when used under those conditions Package the controller and estimator together as a behaviors 3. Try the behaviors out as a system 4. Find a failure mode If none of the motions you have implemented could have prevented the failure, implement a new behavior. If the failure was due to firing the wrong behavior, then either Make the activation conditions for the behavior that didn t fire more general Make the activation conditions for the behavior that did fire more specific 5. Repeat until the system works This is an incomplete methodology at best since it s focused only on choosing behaviors and their triggering conditions. It ignores issues like tweaking gains and thresholds, hunting down bugs in device drivers, fixing bugs in sensor code, and so on. These latter tasks often consume much more of a roboticist s time than choosing a set of behaviors and their triggering conditions. Often times, there may be subtle trade-offs between solving these sorts of issues and designing the behaviors. For example, if the orient-to-prey behavior is performing poorly because the fly-motion detector sometimes hallucinates flies, you might try to fix the situation by building a better fly detector. On the other hand, you might instead try to solve the problem by adding another behavior that advances toward an apparent fly to get a better view, then modifying the triggering conditions for the eating behavior to only try to eat flies that are near enough for the fly detector to be trusted.
6 Motor schemas and potential fields Motor schemas are a very powerful method for designing low level behaviors. The term schema is originally due to Kant. In biology it is taken to mean any kind of built-in pattern to an organism s activity. In psychology, it means any kind of structuring or framework that a person uses to understand their world. In robotics, a motor schema is a mapping from positions in the environment to velocity vectors. In other words, it s a vector field over space. Conceptually, the agent just looks up the appropriate velocity vector for its location and sends it to the motors. By arranging for all of the vectors to converge at the agent s goal, you can easily make the agent go to any desired position. In reality, motor schemas are more complicated than this because of two factors. First of all, the agent doesn t necessarily know what its coordinates are in the environment. So in practice, motor schemas are often implemented as mappings from sensor data to velocity, rather than from position to velocity. This also means that the velocity vector will be specified in body-centered or egocentric coordinates, rather than in environment-centered or global coordinates. For example, common obstacle avoidance strategy is to have the velocity vectors point away from the obstacle with magnitude inversely proportional to distance squared. For example: (define-signal (obstacle-force obstacle-vector) (- (/ obstacle-vector (cube (magnitude obstacle-vector))))) (Note that we haven t bothered to write this as a behavior in our formal sense there s no activation level; Don t worry about this for the moment). Of course it s rare that there s a specific obstacle that we know the vector of that we want to avoid. A more common case is when we have an array of depth readings from a ring of sonars pointed in different directions. Then we can generate a vector for each sonar reading and then try to avoid all of them by summing their vectors: ;;; Total number of sonars in the sonar ring (define-signal sonar-count 16) ;;; The direction (in radians) in which the specified sonar faces. (define-signal (sonar-direction sonar-number) (/ (* 2 pi sonar-number) sonar-count)) ;;; The unit vector in a given direction (expressed in radians) (define-signal (unit-vector direction) (xy-vector (cos direction) (sin direction))) ;;; A vector of unit vectors pointing in the directions of ;;; each sonar. (define-signal sonar-unit-vectors (unit-vector ;; The directions of each sonar (sonar-direction ;; This just gives us a vector with the elements ;; sonar-count-1. (index-generator sonar-count))))
7 ;;; A vector of force-vectors for the objects sensed by ;;; each sonar. We assume that the distance readings for the ;;; sonars are in the signal sonar-readings, which is a vector with ;;; one element per sonar (define-signal sonar-forces (/ sonar-unit-vectors (square sonar-readings))) ;;; The final motor vector for avoiding everything (define-signal total-force (vector-reduce + 0 sonar-forces)) This code uses a feature of GRL feature we haven t seen before: vectors. We ve seen xy-vectors and rt-vectors before, but they were implemented as groups with components named x and y, and rotation and translation, respectively. GRL also allows you to use real array-type vectors and to access them using the Scheme primitives vector-ref and vector-set!. Like, groups, primitive procedures automatically map over elements of a vector, so when you add or multiply two vectors, you get a vector back. The vector-reduce procedure is just like the normal reduce procedure it takes a procedure, an initial value, and a vector, and applies the procedure, pairwise, to all elements of the vector, starting from the initial value. In other words, (vector-reduce + 0 v) returns the sum of the elements in v. Between automatic mapping and higher-order functions like vector-reduce, it s very rare to actually have to use the low level procedures vector-ref and vector-set!. Having to compute vectors from sensor data was the first complication in implementing motor schemas. The second complication is that most robot bases can t directly execute x,y velocity vectors, since they can only go forward and backward, and turn in place. Since we re assuming the xy-vectors are in an egocentric (robot-body-centered) coordinate system, that means the robot can only directly execute the xyvector if it happens to be pointing directly forward (or backward). So we need some kind of a wrapper to adapt the xy-vector policy into an rt-vector policy. The simplest, and most common, approach for this is to rotate until the vector is pointing forward, then drive: (define-signal (follow-xy-vector xy) (let ((rotation-error (angle xy))) (rt-vector (* rotate-gain rotation-error) (if (< (abs rotation-error) rotation-tolerance) translate-speed 0)))) where the free variables rotate-gain, rotation-tolerance, and translate-speed are turned for good performance. The function angle returns the angle (in radians) in which the xyvector is pointing relative to the X-axis (which we are taking to be the direction in which the robot is pointing). It can be computed using the familiar 2-argument form of arc tangent: (define-signal (angle xy) (atan (y-of xy) (x-of xy))) Many variants on this policy are possible. For example, the translational and/or rotational velocities could be made to vary with the magnitude of xy (the policy above ignores the magnitude completely). Or the translational velocity could scale smoothly as the orientation shifts toward 0. Another policy that people have obtained good results with is to drive the rotate velocity with the sine of the angle of xy and to drive the translate velocity with its cosine. Since the sine and cosine are the components of the unit vector in xy s direction, we can simply define this as:
8 (define-signal (follow-xy-vector xy) (let ((unit (/ xy (magnitude xy)))) (rt-vector (y-of xy) (x-of xy)))) Obviously, either version of follow-xy-vector would need to be tuned with gains, saturations, dead zones, etc., to suit the needs of the particular robot base being used. Now we can put these together to produce a system that moves into the center of an open space: (define-signal freespace-taxis (base-controller (follow-xy-vector avoid-obstacles)))) or we could write it as a behavior: (define-signal freespace-taxis (behavior want-to-avoid? (follow-xy-vector avoid-obstacles)))) where want-to-avoid? is a placeholder for whatever activation condition you want to use. Potential fields Motor schemas are vector fields that map from positions (or sensor readings) to vectors that point toward better positions. An alternative is to define a field that maps from position to desirability itself. This field is called a potential field after potentials in physics. Low values of potential are typically taken to mean high desirability. The advantage of constructing a potential field is that we can then construct a schema simply by taking the gradient of the field. (Actually, the attentive reader will realize that the motor schema should be minus the gradient. Since gradient vector point toward bigger potentials). All gradient fields are usable as motor schemas (at least in principle), however, not all motor schemas are gradient fields. That is, not all motor schemas are the gradient of some potential. In fact, it is rare for mobile robots to use real potential fields, since most of the motor schemas that are easy to compute from sensor data don t happen to correspond to the gradient of a real potential. In spite of this, motor schemas (and reactive control systems in general) are often referred to informally as potential field methods because they have most of the same advantages, disadvantages, and structure. They are also occasionally referred to as gradient-descent methods because true potential field systems follow the gradient toward lower potentials. Local minima The equilibrium points of a gradient descent system (the points in space where the robot stops, i.e. where the motor vector is zero) are often called local minima because, in a true gradient field, zeros correspond either to local maxima or local minima in the potential function. One of the big advantages of motor schemas and potential fields is that you can combine them just by adding them. If you have one motor schema for approaching a goal, and another for avoiding obstacles, then on a good day, the sum of the two will approach the goal while avoiding the obstacles. Unfortunately, there tend to be unfortunate cases where the two fields cancel each other out. These lead to unwanted local minima, i.e. equilibrium points. This is enough of a problem that when people talk about local minima, they almost always mean unwanted local minima.
9 It s usually impossible to get rid of unwanted local minima entirely. However, there are a number of standard approaches that have been used to help cope with the problem. Most of these involve running another behavior in parallel with the behavior that gets caught in the local minima: Noise Some equilibrium points are stable, meaning that if the robot moves a little bit away from them, the control system moves it right back to the equilibrium point. Other minima, however, are marginally stable or metastable meaning that if the robot moves away from them a little bit, then the control system will naturally move it away from the equilibrium point. If you throw a rock into a valley, it will roll to the bottom, at stay in a stable equilibrium. If you balance it on top of a stick, then it s only in a metastable equilibrium, and probably not for very long. Metastable equilibria can be avoided by adding noise (small random numbers) to the output of the system. If the system ever gets caught in a meta-stable equilibrium, the noise will eventually push it out. Path planning Many researchers have used local minima as an argument for building control systems that compute paths for the robot rather than velocities. Computing the path is called path planning. Once the path is computed, it is executed by a control loop of some kind. Planning has many advantages, but it is expensive. It may also require more information than the robot s sensors can realistically provide. It is also more complicated in dynamic worlds where the obstacles you re trying to avoid are moving. Unwedging A common, simple technique is just to build a separate behavior that takes control whenever the robot is motionless for too long (when it is wedged ). Such an unwedger then moves the robot to a different position or orientation, in hopes that the original behavior will be able to able to achieve its goal. Avoid-recent behavior A very nice technique, due to Tucker Balch, is to keep a simple memory of the last few locations the been and to generate a repulsive field from them. When this repulsive field is added to another field, it will tend to push the robot out of local minima when it gets stuck in them. Exercises 1. Suppose your robot is equipped with a front-mounted gripper that can open and close to grasp objects that are directly in front of the robot. Propose a set of behaviors for grasping and collecting objects. 2. Modify the frog feeding behaviors to handle the case where the frog s tongue has limited range.
Northwestern University -Based Robotics Conflict Resolution
Northwestern University -Based Robotics Conflict Resolution Conflict resolution In the previous chapter, we discussed how to combine control policies using guarded parallelism. The combination of a control
More informationCS 395 Fall 2000 Behavior-Based Robotics Pracitce Quiz 1
CS 395 Fall 2000 Behavior-Based Robotics Pracitce Quiz 1 This is longer than a real quiz would be. Question 1 (30 points) You have a robot equipped with a heat-sensing camera that can track people. You
More informationBasics of Computational Geometry
Basics of Computational Geometry Nadeem Mohsin October 12, 2013 1 Contents This handout covers the basic concepts of computational geometry. Rather than exhaustively covering all the algorithms, it deals
More information6.001 Notes: Section 6.1
6.001 Notes: Section 6.1 Slide 6.1.1 When we first starting talking about Scheme expressions, you may recall we said that (almost) every Scheme expression had three components, a syntax (legal ways of
More informationTable of Laplace Transforms
Table of Laplace Transforms 1 1 2 3 4, p > -1 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 Heaviside Function 27 28. Dirac Delta Function 29 30. 31 32. 1 33 34. 35 36. 37 Laplace Transforms
More informationSpectroscopic Analysis: Peak Detector
Electronics and Instrumentation Laboratory Sacramento State Physics Department Spectroscopic Analysis: Peak Detector Purpose: The purpose of this experiment is a common sort of experiment in spectroscopy.
More informationGetting Started Guide
Getting Started Guide 1860 38th St. Boulder, CO 80301 www.modrobotics.com 1. Make Your First Robot The Dimbot Uses a clear Flashlight Action block, black Distance Sense block, and a blueish-gray Battery
More informationWhat is version control? (discuss) Who has used version control? Favorite VCS? Uses of version control (read)
1 For the remainder of the class today, I want to introduce you to a topic we will spend one or two more classes discussing and that is source code control or version control. What is version control?
More information6.001 Notes: Section 8.1
6.001 Notes: Section 8.1 Slide 8.1.1 In this lecture we are going to introduce a new data type, specifically to deal with symbols. This may sound a bit odd, but if you step back, you may realize that everything
More information1 Lab + Hwk 5: Particle Swarm Optimization
1 Lab + Hwk 5: Particle Swarm Optimization This laboratory requires the following equipment: C programming tools (gcc, make), already installed in GR B001 Webots simulation software Webots User Guide Webots
More information(Refer Slide Time: 1:40)
Computer Architecture Prof. Anshul Kumar Department of Computer Science and Engineering, Indian Institute of Technology, Delhi Lecture - 3 Instruction Set Architecture - 1 Today I will start discussion
More information(Refer Slide Time 6:48)
Digital Circuits and Systems Prof. S. Srinivasan Department of Electrical Engineering Indian Institute of Technology Madras Lecture - 8 Karnaugh Map Minimization using Maxterms We have been taking about
More informationAnimator Friendly Rigging Part 1
Animator Friendly Rigging Part 1 Creating animation rigs which solve problems, are fun to use, and don t cause nervous breakdowns. - http://jasonschleifer.com/ - 1- CONTENTS I. INTRODUCTION... 4 What is
More informationDesign and Analysis of Algorithms Prof. Madhavan Mukund Chennai Mathematical Institute. Week 02 Module 06 Lecture - 14 Merge Sort: Analysis
Design and Analysis of Algorithms Prof. Madhavan Mukund Chennai Mathematical Institute Week 02 Module 06 Lecture - 14 Merge Sort: Analysis So, we have seen how to use a divide and conquer strategy, we
More informationRobotic Behaviors. Potential Field Methods
Robotic Behaviors Potential field techniques - trajectory generation - closed feedback-loop control Design of variety of behaviors - motivated by potential field based approach steering behaviors Closed
More informationArtificial Intelligence Prof. Deepak Khemani Department of Computer Science and Engineering Indian Institute of Technology, Madras
Artificial Intelligence Prof. Deepak Khemani Department of Computer Science and Engineering Indian Institute of Technology, Madras (Refer Slide Time: 00:17) Lecture No - 10 Hill Climbing So, we were looking
More information1 GSW Bridging and Switching
1 Sandwiched between the physical and media access layers of local area networking (such as Ethernet) and the routeing of the Internet layer of the IP protocol, lies the thorny subject of bridges. Bridges
More informationComplex behavior emergent from simpler ones
Reactive Paradigm: Basics Based on ethology Vertical decomposition, as opposed to horizontal decomposition of hierarchical model Primitive behaviors at bottom Higher behaviors at top Each layer has independent
More informationShadows in the graphics pipeline
Shadows in the graphics pipeline Steve Marschner Cornell University CS 569 Spring 2008, 19 February There are a number of visual cues that help let the viewer know about the 3D relationships between objects
More information1 Lab 5: Particle Swarm Optimization
1 Lab 5: Particle Swarm Optimization This laboratory requires the following: (The development tools are installed in GR B0 01 already): C development tools (gcc, make, etc.) Webots simulation software
More informationCS 378: Computer Game Technology
CS 378: Computer Game Technology Dynamic Path Planning, Flocking Spring 2012 University of Texas at Austin CS 378 Game Technology Don Fussell Dynamic Path Planning! What happens when the environment changes
More informationHere are some of the more basic curves that we ll need to know how to do as well as limits on the parameter if they are required.
1 of 10 23/07/2016 05:15 Paul's Online Math Notes Calculus III (Notes) / Line Integrals / Line Integrals - Part I Problems] [Notes] [Practice Problems] [Assignment Calculus III - Notes Line Integrals Part
More informationIntro. Scheme Basics. scm> 5 5. scm>
Intro Let s take some time to talk about LISP. It stands for LISt Processing a way of coding using only lists! It sounds pretty radical, and it is. There are lots of cool things to know about LISP; if
More information3 Nonlocal Exit. Quiz Program Revisited
3 Nonlocal Exit This chapter is about the commands catch and throw. These commands work together as a kind of super-stop command, which you can use to stop several levels of procedure invocation at once.
More information3 Continuous Integration 3. Automated system finding bugs is better than people
This presentation is based upon a 3 day course I took from Jared Richardson. The examples and most of the tools presented are Java-centric, but there are equivalent tools for other languages or you can
More informationNotes on Non-Chronologic Backtracking, Implication Graphs, and Learning
Notes on Non-Chronologic Backtracking, Implication Graphs, and Learning Alan J. Hu for CpSc 5 Univ. of British Columbia 00 February 9 These are supplementary notes on these aspects of a modern DPLL-style
More informationWeek - 01 Lecture - 03 Euclid's Algorithm for gcd. Let us continue with our running example of gcd to explore more issues involved with program.
Programming, Data Structures and Algorithms in Python Prof. Madhavan Mukund Department of Computer Science and Engineering Indian Institute of Technology, Madras Week - 01 Lecture - 03 Euclid's Algorithm
More informationLinear algebra deals with matrixes: two-dimensional arrays of values. Here s a matrix: [ x + 5y + 7z 9x + 3y + 11z
Basic Linear Algebra Linear algebra deals with matrixes: two-dimensional arrays of values. Here s a matrix: [ 1 5 ] 7 9 3 11 Often matrices are used to describe in a simpler way a series of linear equations.
More informationChapter 2.6: Testing and running a solution
Chapter 2.6: Testing and running a solution 2.6 (a) Types of Programming Errors When programs are being written it is not surprising that mistakes are made, after all they are very complicated. There are
More informationImage Registration Lecture 4: First Examples
Image Registration Lecture 4: First Examples Prof. Charlene Tsai Outline Example Intensity-based registration SSD error function Image mapping Function minimization: Gradient descent Derivative calculation
More informationLet s start with occluding contours (or interior and exterior silhouettes), and look at image-space algorithms. A very simple technique is to render
1 There are two major classes of algorithms for extracting most kinds of lines from 3D meshes. First, there are image-space algorithms that render something (such as a depth map or cosine-shaded model),
More informationPolar Coordinates. 2, π and ( )
Polar Coordinates Up to this point we ve dealt exclusively with the Cartesian (or Rectangular, or x-y) coordinate system. However, as we will see, this is not always the easiest coordinate system to work
More information(Refer Slide Time 3:31)
Digital Circuits and Systems Prof. S. Srinivasan Department of Electrical Engineering Indian Institute of Technology Madras Lecture - 5 Logic Simplification In the last lecture we talked about logic functions
More informationCISC-124. Casting. // this would fail because we can t assign a double value to an int // variable
CISC-124 20180122 Today we looked at casting, conditionals and loops. Casting Casting is a simple method for converting one type of number to another, when the original type cannot be simply assigned to
More information6.001 Notes: Section 15.1
6.001 Notes: Section 15.1 Slide 15.1.1 Our goal over the next few lectures is to build an interpreter, which in a very basic sense is the ultimate in programming, since doing so will allow us to define
More informationExam in DD2426 Robotics and Autonomous Systems
Exam in DD2426 Robotics and Autonomous Systems Lecturer: Patric Jensfelt KTH, March 16, 2010, 9-12 No aids are allowed on the exam, i.e. no notes, no books, no calculators, etc. You need a minimum of 20
More informationCMSC 341 Lecture 16/17 Hashing, Parts 1 & 2
CMSC 341 Lecture 16/17 Hashing, Parts 1 & 2 Prof. John Park Based on slides from previous iterations of this course Today s Topics Overview Uses and motivations of hash tables Major concerns with hash
More informationLimits. f(x) and lim. g(x) g(x)
Limits Limit Laws Suppose c is constant, n is a positive integer, and f() and g() both eist. Then,. [f() + g()] = f() + g() 2. [f() g()] = f() g() [ ] 3. [c f()] = c f() [ ] [ ] 4. [f() g()] = f() g()
More informationAn interesting related problem is Buffon s Needle which was first proposed in the mid-1700 s.
Using Monte Carlo to Estimate π using Buffon s Needle Problem An interesting related problem is Buffon s Needle which was first proposed in the mid-1700 s. Here s the problem (in a simplified form). Suppose
More informationIntroductionToRobotics-Lecture02
IntroductionToRobotics-Lecture02 Instructor (Oussama Khatib):Okay. Let's get started. So as always, the lecture starts with a video segment, and today's video segment comes from 1991, and from the group
More informationSimple Graph. General Graph
Graph Theory A graph is a collection of points (also called vertices) and lines (also called edges), with each edge ending at a vertex In general, it is allowed for more than one edge to have the same
More informationIf Statements, For Loops, Functions
Fundamentals of Programming If Statements, For Loops, Functions Table of Contents Hello World Types of Variables Integers and Floats String Boolean Relational Operators Lists Conditionals If and Else Statements
More informationCALCULUS II. Parametric Equations and Polar Coordinates. Paul Dawkins
CALCULUS II Parametric Equations and Polar Coordinates Paul Dawkins Table of Contents Preface... ii Parametric Equations and Polar Coordinates... 3 Introduction... 3 Parametric Equations and Curves...
More information(Refer Slide Time 5:19)
Digital Circuits and Systems Prof. S. Srinivasan Department of Electrical Engineering Indian Institute of Technology, Madras Lecture - 7 Logic Minimization using Karnaugh Maps In the last lecture we introduced
More informationFunctions and Graphs. The METRIC Project, Imperial College. Imperial College of Science Technology and Medicine, 1996.
Functions and Graphs The METRIC Project, Imperial College. Imperial College of Science Technology and Medicine, 1996. Launch Mathematica. Type
More information12 - More Steering. from Milligan, "Artificial Intelligence for Games", Morgan Kaufman, 2006
12 - More Steering from Milligan, "Artificial Intelligence for Games", Morgan Kaufman, 2006 Separation commonly used in crowds, when all characters moving in roughly the same direction (repulsion steering)
More informationLaboratory 1: Eclipse and Karel the Robot
Math 121: Introduction to Computing Handout #2 Laboratory 1: Eclipse and Karel the Robot Your first laboratory task is to use the Eclipse IDE framework ( integrated development environment, and the d also
More information(Refer Slide Time: 1:43)
(Refer Slide Time: 1:43) Digital Circuits and Systems Prof. S. Srinivasan Department of Electrical Engineering Indian Institute of Technology, Madras Lecture - 27 Pattern Detector So, we talked about Moore
More informationEarthwork 3D for Dummies Doing a digitized dirt takeoff calculation the swift and easy way
Introduction Earthwork 3D for Dummies Doing a digitized dirt takeoff calculation the swift and easy way Getting to know you Earthwork has inherited its layout from its ancestors, Sitework 98 and Edge.
More information(Refer Slide Time: 1:27)
Data Structures and Algorithms Dr. Naveen Garg Department of Computer Science and Engineering Indian Institute of Technology, Delhi Lecture 1 Introduction to Data Structures and Algorithms Welcome to data
More informationExcel Basics Rice Digital Media Commons Guide Written for Microsoft Excel 2010 Windows Edition by Eric Miller
Excel Basics Rice Digital Media Commons Guide Written for Microsoft Excel 2010 Windows Edition by Eric Miller Table of Contents Introduction!... 1 Part 1: Entering Data!... 2 1.a: Typing!... 2 1.b: Editing
More informationPong in Unity a basic Intro
This tutorial recreates the classic game Pong, for those unfamiliar with the game, shame on you what have you been doing, living under a rock?! Go google it. Go on. For those that now know the game, this
More informationThe compiler is spewing error messages.
Appendix B Debugging There are a few different kinds of errors that can occur in a program, and it is useful to distinguish between them in order to track them down more quickly. Compile-time errors are
More informationRobotics Project. Final Report. Computer Science University of Minnesota. December 17, 2007
Robotics Project Final Report Computer Science 5551 University of Minnesota December 17, 2007 Peter Bailey, Matt Beckler, Thomas Bishop, and John Saxton Abstract: A solution of the parallel-parking problem
More information(Refer Slide Time: 00:02:00)
Computer Graphics Prof. Sukhendu Das Dept. of Computer Science and Engineering Indian Institute of Technology, Madras Lecture - 18 Polyfill - Scan Conversion of a Polygon Today we will discuss the concepts
More informationChapter 1: Introduction to the Microsoft Excel Spreadsheet
Chapter 1: Introduction to the Microsoft Excel Spreadsheet Objectives This chapter introduces you to the Microsoft Excel spreadsheet. You should gain an understanding of the following topics: The range
More informationOverview. Animation is a big topic We will concentrate on character animation as is used in many games today. humans, animals, monsters, robots, etc.
ANIMATION Overview Animation is a big topic We will concentrate on character animation as is used in many games today humans, animals, monsters, robots, etc. Character Representation A character is represented
More informationLine tracking sensors and algorithms
Line tracking sensors and algorithms Posted on February 28, 2008, by Ibrahim KAMAL, in Robotics, tagged Line tracking is a very important notion in the world of robotics as it give to the robot a precise,
More informationView Frustum Culling with Octree
View Frustum Culling with Octree Raka Mahesa 13508074 Program Studi Teknik Informatika Sekolah Teknik Elektro dan Informatika Institut Teknologi Bandung, Jl. Ganesha 10 Bandung 40132, Indonesia if18074@itb.ac.id
More informationCS61A Notes Week 6: Scheme1, Data Directed Programming You Are Scheme and don t let anyone tell you otherwise
CS61A Notes Week 6: Scheme1, Data Directed Programming You Are Scheme and don t let anyone tell you otherwise If you re not already crazy about Scheme (and I m sure you are), then here s something to get
More informationInverse Kinematics (part 1) CSE169: Computer Animation Instructor: Steve Rotenberg UCSD, Winter 2018
Inverse Kinematics (part 1) CSE169: Computer Animation Instructor: Steve Rotenberg UCSD, Winter 2018 Welman, 1993 Inverse Kinematics and Geometric Constraints for Articulated Figure Manipulation, Chris
More informationFoundations, Reasoning About Algorithms, and Design By Contract CMPSC 122
Foundations, Reasoning About Algorithms, and Design By Contract CMPSC 122 I. Logic 101 In logic, a statement or proposition is a sentence that can either be true or false. A predicate is a sentence in
More informationLeakDAS Version 4 The Complete Guide
LeakDAS Version 4 The Complete Guide SECTION 4 LEAKDAS MOBILE Second Edition - 2014 Copyright InspectionLogic 2 Table of Contents CONNECTING LEAKDAS MOBILE TO AN ANALYZER VIA BLUETOOTH... 3 Bluetooth Devices...
More informationGrade 6 Math Circles November 6 & Relations, Functions, and Morphisms
Faculty of Mathematics Waterloo, Ontario N2L 3G1 Centre for Education in Mathematics and Computing Relations Let s talk about relations! Grade 6 Math Circles November 6 & 7 2018 Relations, Functions, and
More information1 Lab + Hwk 5: Particle Swarm Optimization
1 Lab + Hwk 5: Particle Swarm Optimization This laboratory requires the following equipment: C programming tools (gcc, make). Webots simulation software. Webots User Guide Webots Reference Manual. The
More information1: Introduction to Object (1)
1: Introduction to Object (1) 김동원 2003.01.20 Overview (1) The progress of abstraction Smalltalk Class & Object Interface The hidden implementation Reusing the implementation Inheritance: Reusing the interface
More informationHave the students look at the editor on their computers. Refer to overhead projector as necessary.
Intro to Programming (Time 15 minutes) Open the programming tool of your choice: If you ve installed, DrRacket, double-click the application to launch it. If you are using the online-tool, click here to
More informationThis lesson introduces Blender, covering the tools and concepts necessary to set up a minimal scene in virtual 3D space.
3D Modeling with Blender: 01. Blender Basics Overview This lesson introduces Blender, covering the tools and concepts necessary to set up a minimal scene in virtual 3D space. Concepts Covered Blender s
More information(Refer Slide Time: 02.06)
Data Structures and Algorithms Dr. Naveen Garg Department of Computer Science and Engineering Indian Institute of Technology, Delhi Lecture 27 Depth First Search (DFS) Today we are going to be talking
More informationLagrange Multipliers and Problem Formulation
Lagrange Multipliers and Problem Formulation Steven J. Miller Department of Mathematics and Statistics Williams College Williamstown, MA 01267 Abstract The method of Lagrange Multipliers (and its generalizations)
More information6.001 Notes: Section 17.5
6.001 Notes: Section 17.5 Slide 17.5.1 Now, let's look at one example in which changing the evaluation model allows us to explore a very different kind of computational problem. Our goal is to show how
More information9 R1 Get another piece of paper. We re going to have fun keeping track of (inaudible). Um How much time do you have? Are you getting tired?
Page: 1 of 14 1 R1 And this is tell me what this is? 2 Stephanie x times y plus x times y or hm? 3 R1 What are you thinking? 4 Stephanie I don t know. 5 R1 Tell me what you re thinking. 6 Stephanie Well.
More informationRobots are built to accomplish complex and difficult tasks that require highly non-linear motions.
Path and Trajectory specification Robots are built to accomplish complex and difficult tasks that require highly non-linear motions. Specifying the desired motion to achieve a specified goal is often a
More informationMITOCW watch?v=zm5mw5nkzjg
MITOCW watch?v=zm5mw5nkzjg The following content is provided under a Creative Commons license. Your support will help MIT OpenCourseWare continue to offer high quality educational resources for free. To
More informationA Simple Introduction to Omni Roller Robots (3rd April 2015)
A Simple Introduction to Omni Roller Robots (3rd April 2015) Omni wheels have rollers all the way round the tread so they can slip laterally as well as drive in the direction of a regular wheel. The three-wheeled
More informationMath 2250 Lab #3: Landing on Target
Math 2250 Lab #3: Landing on Target 1. INTRODUCTION TO THE LAB PROGRAM. Here are some general notes and ideas which will help you with the lab. The purpose of the lab program is to expose you to problems
More informationn! = 1 * 2 * 3 * 4 * * (n-1) * n
The Beauty and Joy of Computing 1 Lab Exercise 9: Problem self-similarity and recursion Objectives By completing this lab exercise, you should learn to Recognize simple self-similar problems which are
More informationCS103 Handout 29 Winter 2018 February 9, 2018 Inductive Proofwriting Checklist
CS103 Handout 29 Winter 2018 February 9, 2018 Inductive Proofwriting Checklist In Handout 28, the Guide to Inductive Proofs, we outlined a number of specifc issues and concepts to be mindful about when
More informationPROFESSOR: Last time, we took a look at an explicit control evaluator for Lisp, and that bridged the gap between
MITOCW Lecture 10A [MUSIC PLAYING] PROFESSOR: Last time, we took a look at an explicit control evaluator for Lisp, and that bridged the gap between all these high-level languages like Lisp and the query
More information2SKILL. Variables Lesson 6. Remembering numbers (and other stuff)...
Remembering numbers (and other stuff)... Let s talk about one of the most important things in any programming language. It s called a variable. Don t let the name scare you. What it does is really simple.
More informationConstraint Satisfaction Problems: A Deeper Look
Constraint Satisfaction Problems: A Deeper Look The last problem set covered the topic of constraint satisfaction problems. CSP search and solution algorithms are directly applicable to a number of AI
More information6.001 Notes: Section 7.1
6.001 Notes: Section 7.1 Slide 7.1.1 In the past few lectures, we have seen a series of tools for helping us create procedures to compute a variety of computational processes. Before we move on to more
More informationThe Dynamic Typing Interlude
CHAPTER 6 The Dynamic Typing Interlude In the prior chapter, we began exploring Python s core object types in depth with a look at Python numbers. We ll resume our object type tour in the next chapter,
More informationDirect Variations DIRECT AND INVERSE VARIATIONS 19. Name
DIRECT AND INVERSE VARIATIONS 19 Direct Variations Name Of the many relationships that two variables can have, one category is called a direct variation. Use the description and example of direct variation
More informationFourier Transforms and Signal Analysis
Fourier Transforms and Signal Analysis The Fourier transform analysis is one of the most useful ever developed in Physical and Analytical chemistry. Everyone knows that FTIR is based on it, but did one
More informationSPARTAN ROBOTICS FRC 971
SPARTAN ROBOTICS FRC 971 Controls Documentation 2015 Design Goals Create a reliable and effective system for controlling and debugging robot code that provides greater flexibility and higher performance
More informationTrombone players produce different pitches partly by varying the length of a tube.
Trombone players produce different pitches partly by varying the length of a tube. 7 Variables A variable is a connection between a name and a value.* That sounds simple enough, but some complexities arise
More informationUV Mapping to avoid texture flaws and enable proper shading
UV Mapping to avoid texture flaws and enable proper shading Foreword: Throughout this tutorial I am going to be using Maya s built in UV Mapping utility, which I am going to base my projections on individual
More informationDrawing a Circle. 78 Chapter 5. geometry.pyde. def setup(): size(600,600) def draw(): ellipse(200,100,20,20) Listing 5-1: Drawing a circle
5 Transforming Shapes with Geometry In the teahouse one day Nasrudin announced he was selling his house. When the other patrons asked him to describe it, he brought out a brick. It s just a collection
More informationLecture 15: Segmentation (Edge Based, Hough Transform)
Lecture 15: Segmentation (Edge Based, Hough Transform) c Bryan S. Morse, Brigham Young University, 1998 000 Last modified on February 3, 000 at :00 PM Contents 15.1 Introduction..............................................
More information6.001 Notes: Section 4.1
6.001 Notes: Section 4.1 Slide 4.1.1 In this lecture, we are going to take a careful look at the kinds of procedures we can build. We will first go back to look very carefully at the substitution model,
More informationSynthesis by Example. Connecting Motion Planning and Example based Movement. Michael Gleicher
Synthesis by Example Connecting Motion Planning and Example based Movement Michael Gleicher Dept of Computer Sciences University of Wisconsin Madison Case Study 1 Part I. Michael Gleicher 1 What is Motion
More informationChapter01.fm Page 1 Monday, August 23, :52 PM. Part I of Change. The Mechanics. of Change
Chapter01.fm Page 1 Monday, August 23, 2004 1:52 PM Part I The Mechanics of Change The Mechanics of Change Chapter01.fm Page 2 Monday, August 23, 2004 1:52 PM Chapter01.fm Page 3 Monday, August 23, 2004
More informationHere are a couple of warnings to my students who may be here to get a copy of what happened on a day that you missed.
Preface Here are my online notes for my Algebra course that I teach here at Lamar University, although I have to admit that it s been years since I last taught this course. At this point in my career I
More informationExcerpt from "Art of Problem Solving Volume 1: the Basics" 2014 AoPS Inc.
Chapter 5 Using the Integers In spite of their being a rather restricted class of numbers, the integers have a lot of interesting properties and uses. Math which involves the properties of integers is
More informationMatlab for FMRI Module 1: the basics Instructor: Luis Hernandez-Garcia
Matlab for FMRI Module 1: the basics Instructor: Luis Hernandez-Garcia The goal for this tutorial is to make sure that you understand a few key concepts related to programming, and that you know the basics
More informationPROBLEM SOLVING 11. July 24, 2012
PROBLEM SOLVING 11 COMPUTER SCIENCE 61A July 24, 2012 Today s section will be a kind of Meta-Section, we are going to walk through some medium to hard-ish problems in Scheme, and we will discuss some methods
More informationWeek - 04 Lecture - 01 Merge Sort. (Refer Slide Time: 00:02)
Programming, Data Structures and Algorithms in Python Prof. Madhavan Mukund Department of Computer Science and Engineering Indian Institute of Technology, Madras Week - 04 Lecture - 01 Merge Sort (Refer
More informationMajor Assignment: Pacman Game
Major Assignment: Pacman Game 300580 Programming Fundamentals Week 10 Assignment The major assignment involves producing a Pacman style game with Clara using the Greenfoot files that are given to you.
More informationCSCI 1100L: Topics in Computing Lab Lab 11: Programming with Scratch
CSCI 1100L: Topics in Computing Lab Lab 11: Programming with Scratch Purpose: We will take a look at programming this week using a language called Scratch. Scratch is a programming language that was developed
More information