UNPKG

path-generator

Version:
93 lines (92 loc) 3.52 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var errors_1 = require("../motionProfiling/errors"); var segment_1 = require("../motionProfiling/segment"); var Trajectory = /** @class */ (function () { function Trajectory(waypoints, pathConfig) { this._setpoints = []; this._segments = []; this._coords = []; this.setpointTime = 0; this._distance = 0; this.pathConfig = pathConfig; this.waypoints = waypoints; this.checkPathConfig(); } Trajectory.prototype.generateTrajectory = function () { for (var index = 0; index < this.waypoints.length - 1; index++) { try { this.generate(index); } catch (error) { if (error instanceof errors_1.PathGeneratorError) error.addErrorPosition(index); throw error; } } }; Trajectory.prototype.checkPathConfig = function () { if (this.pathConfig.acc === 0) throw new errors_1.PathConfigValueEqualToZero('acc'); else if (this.pathConfig.vMax === 0) throw new errors_1.PathConfigValueEqualToZero('vMax'); else if (this.pathConfig.robotLoopTime === 0) throw new errors_1.PathConfigValueEqualToZero('robot loop time'); }; Trajectory.prototype.generateSegments = function (object) { var speeding2vMax = new segment_1.default(object.V0, object.vMax, object.acc); var slowing2vEnd = new segment_1.default(object.vMax, object.vEnd, object.acc); var speedingAndSlowingDistance = speeding2vMax.distance + slowing2vEnd.distance; var segments = []; segments.push(speeding2vMax); segments.push(new segment_1.default(object.vMax, object.distance - speedingAndSlowingDistance)); segments.push(slowing2vEnd); return segments; }; Trajectory.prototype.generateSetpoints = function (segments, startPosition) { var setpoints = []; var lastPos = startPosition; var robotLoopTime = this.pathConfig.robotLoopTime; for (var i = 0; i < segments.length; i++) { if (segments[i].distance === 0) continue; for (; this.setpointTime <= segments[i].totalTime; this.setpointTime += robotLoopTime) { var setpoint = segments[i].getSetpoint(this.setpointTime, lastPos); setpoints.push(setpoint); } lastPos += segments[i].distance; this.setpointTime -= segments[i].totalTime; } return setpoints; }; Object.defineProperty(Trajectory.prototype, "totalTime", { get: function () { return this.setpoints.length * this.pathConfig.robotLoopTime; }, enumerable: false, configurable: true }); Object.defineProperty(Trajectory.prototype, "setpoints", { get: function () { return this._setpoints; }, enumerable: false, configurable: true }); Object.defineProperty(Trajectory.prototype, "coords", { get: function () { return this._coords; }, enumerable: false, configurable: true }); Object.defineProperty(Trajectory.prototype, "distance", { get: function () { return this._distance; }, enumerable: false, configurable: true }); return Trajectory; }()); exports.default = Trajectory;