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.