14 #ifndef GEOMETRY__SPLINE__CATMULL_ROM_SPLINE_HPP_
15 #define GEOMETRY__SPLINE__CATMULL_ROM_SPLINE_HPP_
21 #include <geometry_msgs/msg/point.hpp>
25 #include <traffic_simulator_msgs/msg/polyline_trajectory.hpp>
40 const std::shared_ptr<traffic_simulator_msgs::msg::PolylineTrajectory> & trajectory);
41 auto getLength() const ->
double override {
return total_length_; }
43 auto
getPoint(const
double s) const -> geometry_msgs::msg::
Point;
44 auto
getPoint(const
double s, const
double offset) const -> geometry_msgs::msg::
Point;
47 auto
getPose(const
double s, const
bool fill_pitch = true) const -> geometry_msgs::msg::
Pose;
49 const
double start_s, const
double end_s, const
double resolution,
50 const
double offset = 0.0) const ->
std::vector<geometry_msgs::msg::
Point>;
51 auto
getTrajectoryPoses(const
double start_s, const
double end_s, const
double resolution) const
52 ->
std::vector<geometry_msgs::msg::
Pose>;
53 auto
getSValue(const geometry_msgs::msg::
Pose & pose,
double threshold_distance = 3.0) const
54 ->
std::optional<
double>;
60 const
std::vector<geometry_msgs::msg::
Point> & polygon, const
bool search_backward = false,
61 const
std::optional<
std::pair<
double,
double>> & s_range =
std::nullopt) const
64 const geometry_msgs::msg::
Point & point0, const geometry_msgs::msg::
Point & point1,
65 const
bool search_backward = false) const ->
std::optional<
double>;
67 const
std::vector<geometry_msgs::msg::
Point> & polygon, const
bool search_backward = false,
68 const
std::optional<
std::pair<
double,
double>> & s_range =
std::nullopt) const
69 ->
std::optional<
double> override;
70 auto
getPolygon(const
double width, const
size_t num_points = 30, const
double z_offset = 0)
71 ->
std::vector<geometry_msgs::msg::
Point>;
76 auto getRightBounds(const
double width, const
size_t num_points = 30, const
double z_offset = 0)
77 const ->
std::vector<geometry_msgs::msg::
Point>;
78 auto getLeftBounds(const
double width, const
size_t num_points = 30, const
double z_offset = 0)
79 const ->
std::vector<geometry_msgs::msg::
Point>;
80 auto getSInSplineCurve(const
size_t curve_index, const
double s) const ->
double;
81 auto getCurveIndexAndS(const
double s) const ->
std::pair<
size_t,
double>;
82 auto checkConnection() const ->
bool;
83 auto equals(const geometry_msgs::msg::
Point & p0, const geometry_msgs::msg::
Point & p1) const
87 std::vector<
double> length_list_;
89 mutable
std::vector<
double> maximum_2d_curvatures_;
Definition: catmull_rom_spline_interface.hpp:30
Definition: catmull_rom_spline.hpp:34
auto getCollisionPointIn2D(const geometry_msgs::msg::Point &point0, const geometry_msgs::msg::Point &point1, const bool search_backward=false) const -> std::optional< double >
Definition: catmull_rom_spline.cpp:464
auto getSquaredDistanceIn2D(const geometry_msgs::msg::Point &point, const double s) const -> double override
Definition: catmull_rom_spline.cpp:532
auto getPoint(const double s) const -> geometry_msgs::msg::Point
Definition: catmull_rom_spline.cpp:606
auto getSValue(const geometry_msgs::msg::Pose &pose, double threshold_distance=3.0) const -> std::optional< double >
Definition: catmull_rom_spline.cpp:489
auto getTrajectoryPoses(const double start_s, const double end_s, const double resolution) const -> std::vector< geometry_msgs::msg::Pose >
Definition: catmull_rom_spline.cpp:131
const std::vector< geometry_msgs::msg::Point > control_points
Definition: catmull_rom_spline.hpp:72
auto getPolygon(const double width, const size_t num_points=30, const double z_offset=0) -> std::vector< geometry_msgs::msg::Point >
Definition: catmull_rom_spline.cpp:29
auto getSquaredDistanceVector(const geometry_msgs::msg::Point &point, const double s) const -> geometry_msgs::msg::Vector3
Definition: catmull_rom_spline.cpp:568
auto getCollisionPointsIn2D(const std::vector< geometry_msgs::msg::Point > &polygon, const bool search_backward=false, const std::optional< std::pair< double, double >> &s_range=std::nullopt) const -> std::set< double >
Definition: catmull_rom_spline.cpp:349
auto getLength() const -> double override
Definition: catmull_rom_spline.hpp:41
CatmullRomSpline()=default
auto getTrajectory(const double start_s, const double end_s, const double resolution, const double offset=0.0) const -> std::vector< geometry_msgs::msg::Point >
Definition: catmull_rom_spline.cpp:100
auto getPose(const double s, const bool fill_pitch=true) const -> geometry_msgs::msg::Pose
Definition: catmull_rom_spline.cpp:749
auto getMaximum2DCurvature() const -> double
Definition: catmull_rom_spline.cpp:653
auto getTangentVector(const double s) const -> geometry_msgs::msg::Vector3
Definition: catmull_rom_spline.cpp:704
auto getNormalVector(const double s) const -> geometry_msgs::msg::Vector3
Definition: catmull_rom_spline.cpp:675
Definition: hermite_curve.hpp:32
Definition: line_segment.hpp:30
Definition: bounding_box.hpp:32
Definition: lanelet_wrapper.hpp:40
geometry_msgs::msg::Pose Pose
Definition: lanelet_wrapper.hpp:66
geometry_msgs::msg::Point Point
Definition: lanelet_wrapper.hpp:65
geometry_msgs::msg::Vector3 Vector3
Definition: lanelet_wrapper.hpp:69