astar-path is a Javascript library that computes a ballistic flight path between a start and goal nodes. The trajectory computed is subject to position, velocity, and acceleration constraints as well as optional user defined node constraints.
Trajectories are defined by a PathNode
array. Each PathNode
has position, velocity and acceleration vectors (i.e., s,v,a).
Here we define start and goal nodes of a desired trajectory. Both start and goal nodes have zero velocity and acceleration:
var start = new PathNode([200,-299,0]); // x,y,z position
var goal = new PathNode([-200,299,0]); // x,y,z position
Trajectories are created by a PathFactory
.
Here we create a three dimensional PathFactory that forbids x or y axis
movement below a zcruise height
of 15 and also forbids z-movement below zero:
var zcruise = 15;
var pf = new PathFactory({
dimensions: 3,
maxVelocity: [25,25,4], // x,y,z velocity
maxAcceleration: [5,5,1], // x,y,z acceleration
maxIterations: 5000,
isConstrained: (node) => node.s[2] < zcruise,
constrain: (n) => {
if (n.s[2] < 0) {
return null; // only paths above bed
}
if (n.s[2] < zcruise) {
if (n.v[0] || n.v[1] || n.a[0] || n.a[1]) {
return null; // no xy movement below zcruise;
}
}
return n;
},
});
Given a start and goal PathNode
, you can quickly create a trajectory by calling the findPath
method:
var result = pf.findPath(start,goal);
Here is a typical trajectory computed by findPath
in under 20ms:
npm install astar-path