113 std::size_t numPoints = 0;
114 Eigen::Vector3f firstTranslation = Eigen::Vector3f::Zero();
115 Eigen::Vector3f lastTranslation = Eigen::Vector3f::Zero();
117 bool operator==(
const TrajectoryId& other)
const
119 return numPoints == other.numPoints &&
120 firstTranslation == other.firstTranslation &&
121 lastTranslation == other.lastTranslation;
123 bool operator!=(
const TrajectoryId& other)
const
125 return !(*
this == other);
129 std::optional<TrajectoryId> lastTrajectoryId_;
130 std::size_t lastProjectionIndex_ = 0;
142 bool zeroLengthSegment =
false;
144 bool nonFiniteTwist =
false;
146 bool noUsableProjection =
false;
148 bool angularFeedforwardSaturated =
false;
151 std::size_t angularSaturatedCycles = 0;
TrajectoryController()=default
TrajectoryFollowingControllerParams Params
~TrajectoryFollowingController() override=default
void updateParams(const Params ¶ms)
core::Twist applyTwistLimits(core::Twist twist)
TrajectoryFollowingController(const Params ¶ms)
core::Twist applyVelocityFactor(core::Twist twist)
std::shared_ptr< Dict > DictPtr
This file is part of ArmarX.
@ TrajectoryFollowingController
std::shared_ptr< TrajectoryFollowingController > TrajectoryFollowingControllerPtr
bool operator==(const RemoteHandle< PrxTA > &fst, const RemoteHandle< PrxTB > &snd)
bool operator!=(const RemoteHandle< PrxTA > &fst, const RemoteHandle< PrxTB > &snd)
This file is part of ArmarX.
float maxLinearAcceleration
Rate at which the RT thread walks the commanded twist towards this controller's output.
float minFeedforwardVelocityFraction
Floor on the capped linear feed-forward, as a fraction of the requested velocity.
bool enableAngularFeedforward
bool coupleLinearAndAngularLimits
float maxAngularAcceleration
aron::data::DictPtr toAron() const override
float angularFeedforwardFraction
Fraction of limits.angular the angular feed-forward may use. 1 lets it saturate.
Algorithms algorithm() const override
static TrajectoryFollowingControllerParams FromAron(const aron::data::DictPtr &dict)
float lookaheadDistance
Lookahead as a distance [mm]. 0 keeps the pure maxSegmentsAhead behaviour.