-
Notifications
You must be signed in to change notification settings - Fork 2
Getting started
The Alite TrajectoryTools (abbreviated as tt or TT) is a Java toolkit (a bundle of loosely-coupled classes) that has been created as a side-effect of research of a few researches with Agent Technology Center, CTU in Prague. It was meant as a platform for sharing potentially reusable code between us so that we do not have to reimplement the most dubious task such as finding shortest paths, checking collisions between two trajectories, checking collisions between two polygons, visualizing polygonal environments and so on. Since development of TT is not what we are paid for, there has never been much effort put in cleaning the API, writing the documentation etc. On the other hand, we always wanted to keep the code self-explaining and intuitive even when it could be at the expenses of slightly worse performance. This document explains the main philosophy of the toolkit and should help the reader with orientation in the code.
The TT toolkit contains utility classes that are meant to be used in different context. E.g. a class Point may represent a point in Euclidean 2-d space or a point in a space-time. To distinguish different types of concepts according to the context (usually the type of space) in which they are meant to be used, we put them to different packages. To make mixing of identically named classes from different packages easier, we use short package names such as tt.euclid2d or tt.euclidtime3i even though they do not fully respect Java naming conventions. The following table summarizes the content of individual packages:
-
tt.continous-- utility classes relevant for arbitrary continuous space -
tt.discrete-- utility classes relevant for arbitrary discrete space -
tt.euclid2d-- utility classes relevant for 2-d Euclidean space, where a point is represented by pair of doubles -
tt.euclid2i-- utility classes relevant for 2-d Euclidean space, where a point is represented by pair of integers -
tt.euclidtime3i-- utility classes relevant for space-time with 2 spatial dimensional and one time dimensions, where a point is represented by triplet of integers -
tt.euclidyaw3d-- utility classes relevenat for planning in space where heading (yaw) of an agent is modelled, e.g. Dubins curve implementation -
tt.util-- general-purpose support classes -
tt.planner-- general planners, e.g. RRT* implementation -
tt.vis-- general visualization layers for Alite visio -
org.jgrapht-- classes applicable to general JGraphT graphs and following JGraphtT conventions, but developed within TT. e.g. A* implementation for JGraphT graphs
Representing points in 2-d Euclidean space can suffer from numerical instability and thus most of the functionality is implemented for integer variants, i.e. euclid2i rather than for floating-point double variants, i.e. euclid2d)
There are a few demos that illustrate how to combine the individual components in TT:
-
tt.euclid2i.demo.PathfindingDemo-- illustrates how to find a shortest path on a graph -
tt.euclidtime3i.demo.PathfindingDemo--- illustrates how to find a space-time trajectory avoiding moving obstacles, press 'q'/'a' key to simulate the execution of the trajectory and move forward/backwards in time -
tt.euclidyaw3d.dubins.DubinsDemo-- illustrates how to create a Dubbin's curve