Compilation

Compile the solution using Visual Studio 2005. It should work without problems. I have tested it on various machines in the lab.

Program Execution

The program should be run with one command line parameter, "filename.xml", specifying the input environment.
Example: RVO.exe filename.xml

Make sure that the files callisto.dll and libmaverik.dll are in the same directory as the executable RVO.exe, or in the \Windows\System32 directory. MSXML needs to be installed in order for the program to function correctly (this is the case on the lab machines).

Input XML Structure

The XML input file has the following general structure:

<Experiment attribs>
  <Agent attribs />
  <Agent attribs />
     :
     :

  <Obstacle attribs>
    <Vertex attribs />
    <Vertex attribs />
       :
       :

  </Obstacle>
  <Obstacle attribs>
    <Vertex attribs />
    <Vertex attribs />
       :
       :

  </Obstacle>
     :
     :

</Experiment>

An <Experiment> may contain any number of <Agent>'s and <Obstacle>'s. Each obstacle may contain any number of <Vertex>'s. The vertices must be listed either in clockwise, or in counterclockwise order.

XML Attributes

The attributes each tag allows are listed here:

Tag Attribute Type Meaning Default value
<Experiment> time_step float The time step of the simulation. "0.25"
  num_samples int The number of candidate velocities each agent samples in each time step of the simulation. The running time of the simulation increases linearly with this number. "250"
  neighbor_dist float The distance within which other agents and obstacles are taken into account in selecting a velocity. The larger this number, the larger the running time of the simulation. If the number is too low, the simulation will not be safe. "15"
  obstacle_sampling_dist float In the current implementation, polygonal obstacles are approximated by a set of point obstacles sampled evenly on the boundary of the polygons. This value sets the distance between the samples. The larger this number, the faster the simulation. If the number is too low, the agents might go through walls. "2"
  visualization int Set to "1" to turn on visualization. Set to "0" to turn off visualization. The simulation runs faster without visualization. "1"
         
<Agent> p_x float The x-coordinate of the initial position of the agent. "0"
  p_y float The y-coordinate of the initial position of the agent. "0"
  g_x float The x-coordinate of the goal position of the agent. "0"
  g_y float The y-coordinate of the goal position of the agent. "0"
  g_r float The radius of the goal region around the goal position of the agent "2"
  r float The radius of the agent "2"
  V_pref float The preferred speed of the agent "1"
  V_max float The maximum speed of the agent "1.5"
  A_max float The maximum acceleration of the agent "1"
  v_x float The x-component of the initial velocity of the agent. "0"
  v_y float The y-component of the initial velocity of the agent. "0"
  safety_factor float The weight that is given to the "time to collision" when penalizing a candidate velocity for the agent (vs. the distance to the preferred velocity). The higher this value, the "safer" or the "shyer" the agent is. The lower this value, the more "aggressive" and "reckless" the agent is. "7.5"
  offset float The difference between the actual radius of the agent and the radius shown in the visualization. "0"
  cylinder_height float The height of the cylinder modeling the agent in the visualization. "4"
  red float The red-component of the color of the agent in the visualization. Must be in [0, 1]. "0"
  green float The green-component of the color of the agent in the visualization. Must be in [0, 1]. "0"
  blue float The blue-component of the color of the agent in the visualization. Must be in [0, 1]. "1"
         
<Obstacle> p_x float The x-coordinate of the initial position of the polygonal obstacle. "0"
  p_y float The y-coordinate of the initial position of the polygonal obstacle. "0"
  or float The initial orientation of the polygonal obstacle (in radians). "0"
  v_x float The x-component of the velocity of the polygonal obstacle. "0"
  v_y float The y-component of the velocity of the polygonal obstacle. "0"
  w float The angular velocity of the polygonal obstacle (in radians per unit of time). "0"
  red float The red-component of the color of the obstacle in the visualization. Must be in [0, 1]. "1"
  green float The green-component of the color of the agent in the visualization. Must be in [0, 1]. "0"
  blue float The blue-component of the color of the agent in the visualization. Must be in [0, 1]. "0"
         
<Vertex> p_x float The x-coordinate of the vertex relative to position (0, 0) and orientation 0 of the polygonal obstacle. "0"
  p_y float The y-coordinate of the vertex relative to position (0, 0) and orientation 0 of the polygonal obstacle. "0"

Examples

Three example files are included: circle250.xml, 4blocks.xml, carstreet.xml, and revolvingdoor.xml.

Output

The running times of the simulation are given on the standard output. The simulation, containing all motions of all agents and obstacles, are output via the visualization tool Callisto. Visualization must be turned on for this. (see www.cs.uu.nl/~dennis/callisto/callisto.html for online documentation of Callisto).

To terminate the program, enter a character into the console and press enter.