26 #ifndef MPBLOCKS_DUBINS_CURVES_EIGEN_SOLUTION_RSL_HPP_
27 #define MPBLOCKS_DUBINS_CURVES_EIGEN_SOLUTION_RSL_HPP_
35 namespace curves_eigen {
38 template <
typename Scalar>
69 Scalar
a = std::acos(2 * r / d);
72 s[1] = d * std::sin(a);
75 Scalar
b = std::atan2(v[1], v[0]);
96 #endif // MPBLOCKS_DUBINS_CURVES_EIGEN_SOLUTION_RSL_HPP_
__host__ __device__ Format_t cwArc(Format_t a, Format_t b)
returns the clockwise (right) distance from a to b
Scalar leftAngleOf(const Scalar q_theta)
return the angle of the vector from the center of the counter clockwise (left) circle coincident to q...
empty struct used to template "variant" of three arc primitives
__host__ __device__ Format_t ccwArc(Format_t a, Format_t b)
returns the counter clockwise (left) distance from a to b
empty struct used to template "variant" of three arc primitives
static Path< Scalar > solve(const Vector3d &q0, const Vector3d &q1, const Scalar r)
Scalar rightAngleOf(const Scalar q_theta)
return the angle of the vector from the center of the clockwise (right) circle coincident to q...
__host__ __device__ Format_t clampRadian(Format_t a)
wraps the input onto [-pi,pi]
interface for different solutions, this is specialized for each Id in the SolutionId enum ...
Eigen::Matrix< Scalar, 2, 1 > Vector2d
Eigen::Matrix< Scalar, 2, 1 > rightCenter(const Eigen::Matrix< Scalar, 3, 1 > &q, Scalar r)
return the center of a clockwise (right) circle coincident to q with radius r
Encodes a dubins path primitive, which is three connected arc segments.
Eigen::Matrix< Scalar, 3, 1 > Vector3d
Eigen::Matrix< Scalar, 2, 1 > leftCenter(const Eigen::Matrix< Scalar, 3, 1 > &q, Scalar r)
return the center of a counter clockwise (left) circle coincident to q with radius r ...