Atlas: short introduction

Atlas is a library that can be used to store (dynamic) graphs and query them for shortest paths. A graph consists of vertices connected by edges. In Atlas, edges are implicit i.e. edges exist only as a property of a vertex. In Atlas you have the choice to let Atlas store the graph, or store it yourself. If the only value stored at a vertex is a list of floating point values (as is usually the case), then Atlas can do the storage. If more (complex) data needs to be saved with the vertex, you can do the storage yourself and let Atlas have a pointer to the data.

Usage
Before you can use Atlas, first copy atlas.dll and atlas.lib in your debug/release directory's. Next, copy atlas.h in your working directory. The next step is to add the library to the input list. For version 6 go to project->settings->link and add atlas.lib to the Object/library modules. For version 7 go to the project properties->linker->input and add atlas.lib to the addition dependencies list. Now, you are ready to use Atlas. A (small) example of how to use Atlas can be found below.

#include "stdafx.h"
#include "iostream"
#include "atlas.h"

int _tmain(int argc, _TCHAR* argv[])
{
  CAtlas *atlas = new CAtlas (0, false);

  int id;
  atlas->AddVertex (NULL, &id);
  atlas->AddVertex (NULL, &id);
  atlas->AddVertex (NULL, &id);
  atlas->AddVertex (NULL, &id);
  atlas->AddVertex (NULL, &id);

  atlas->AddEdge (0, 1, 10);
  atlas->AddEdge (1, 2, 10);
  atlas->AddEdge (1, 3, 6);
  atlas->AddEdge (2, 3, 5);
  atlas->AddEdge (3, 4, 7);
  atlas->AddEdge (4, 0, 8);

  atlas->FindShortestPaths (0);
  int size;
  atlas->Query (3, &size);
  
  int vID;
  for (int i = 0; i < size; i++)
  {
    atlas->GetQueryVertex (i, &vID);
    std::cout << vID << std::endl;
  }

  return 0;
}

First an Atlas object is created. The parameters (0, false) indicate that we don't want to store any values with the vertices and that the graph is undirected. Next, 5 vertices are added to the graph. Since these are the first 5 vertices, we know their ID's range from 0 to 4. Then we add edges to the graph. The first two parameters of AddEdge are the vertex numbers, the third parameter is the value (length) of the edge. Now we want to query the graph to find a path between vertices 0 and 4. We run a shortest path algorithm from a certain vertex by using FindShortestPaths. Then we can query the results by providing a goal vertex. The query function provides us with the number of vertices in the query that we can obtain by using GetQueryVertex.

Every function of Atlas returns an integer that indicates whether the call was a success or not. This value can be used when debugging.

Latest changes and additions

(22-09-2015): Callisto 5.2 released

(14-09-2014): Callisto 5.0 released

(04-01-2010): Callisto 4.00b released

(07-08-2009): Created new website

(05-04-2007): Thesis added

(29-03-2007): Callisto 3.05 released

(27-10-2006): WAFR publication added

(30-05-2006): ICRA publication added

(23-11-2005): Callisto 2.20 released

(23-06-2005): Callisto 2.11 released

(17-05-2005): IROS Publications added

(c) 2003-2009 Dennis Nieuwenhuisen