220 likes | 343 Views
Motion Planning for Retrieval Agents. Relevant Papers Better Group Behaviors using Rule-Based Roadmaps O. Burchan Bayazit, Jyh-Ming Lien, and Nancy M. Amato Steering Behaviors for Autonomous Characters Craig W. Reynolds. Motion Planning for Agents.
E N D
Motion Planning for Retrieval Agents • Relevant Papers • Better Group Behaviors using Rule-Based Roadmaps • O. Burchan Bayazit, Jyh-Ming Lien, and Nancy M. Amato • Steering Behaviors for Autonomous Characters • Craig W. Reynolds
Motion Planning for Agents • Objective: Given a known workspace and a pre-computed roadmap that ‘covers’ the space • Visit every node and edge at least once • Retrieve all scattered particles
Assumptions • Agents have no prior knowledge of particle locations • Agents have omni-directional line of sight vision capabilities (not constrained by distance or angle) • There is no direct communication between agents but they communicate indirectly by encoding information in the roadmap • Global information • Node Positions • Geometry and location of obstacles
Roadmap • Roadmap contains a set of nodes from which entire polygonal workspace is visible • Nodes represent feasible agent configurations • Edges represent feasible sub-paths • Roadmap is adaptive; edge weights are updated by agents
Agent Strategies • Exploring • Objective is to traverse the roadmap until it finds a particle • Homing • Objective is to carry a discovered particle to a drop-off location
Algorithms • Exploring Strategy • Each agent moves independently • All edges have equal weights to start with • At each node, an agent chooses an edge to follow based on the weights of the node’s attached edges. Similar to ant colony optimization, guarantees all nodes eventually get visited • The weight of the chosen edge is increased
Algorithms • Exploring Strategy • AgentVar Node nextNode; • AgentVar Edge edge; • edge = node.probMinEdge(); • nextNode = edge.end; • agent.goal = nextNode.position; • edge.weight = edge.weight+1;
Algorithms • Homing Strategy • Agent accesses global data to retrieve a path from its current position to the drop-off location
Algorithms • Homing Strategy • AgentVar LinkedList path; • AgentVar Node nextNode; • AgentVar Node currentNode; • AgentVar Edge edge; • Path = global.getPath(thisPoint, dropOff) • while(!path.empty()) { • nextNode = path.getNextNode(); • edge = currentNode.getEdge(nextNode); • agent.goal = nextNode.position;
Velocity-Aligned Local Coordinate Space Side Vector Forward Vector
Agent: Physical Model • Based on a point mass approximation • Model Properties: • mass scalar • position vector • velocity vector • max_force scalar • max_speed scalar • orientation 2 basis vectors
Agent Dynamics • Based on forward Euler integration method • At each time step behaviorally determined steering forces (limited by max_force) are applied to model
Agent Dynamics • steering_force = truncate (steering_direction, max_force) • acceleration = steering_force / mass • velocity = truncate (velocity + acceleration, max_speed) • position = position + velocity • newForward = normalize(velocity) • newSide.x = newForward.y • newSide.y = newForward.x;
Steering Behaviors • Seeking (targeting a goal) • Separation (from other agents) • Obstacle Avoidance
Seeking Steering Behavior • desired_velocity = normalize (target - position) * max_speed • steering = desired_velocity - velocity
Separation Steering Behavior • Agents considers agents in its neighborhood • Neighborhood is characterized by distance (defines when two agents are nearby) and angle (defines agent’s field of view) • Agents outside neighborhood are not considered
Separation Steering Behavior • Compute repulsion force for each agent in neighborhood • repulsionForce = (-1/r)*normalize (neighborPosition – position) • Sum up repulsion forces from all neighbors • steeringForce += repulstionForce
Obstacle Avoidance Steering • Implemented when an obstacle lies in the path of an agent (range specified by a ‘safe_distance’ parameter) • Goal is to maintain an imaginary rectangular free space in front of the agent • On encountering an obstacle, agent steers to the nearest visible node that lies in its general direction
Combining Behaviors • At each time step, select (in pre-determined sequence) one steering component to apply • Apply relevant weighting factors, max_force and max_speed, to each steering component