trajectory_optimization v1.3.1
Loading...
Searching...
No Matches
dummy_input_generation_node.hpp
Go to the documentation of this file.
1// Copyright Institute for Automotive Engineering (ika), RWTH Aachen University
2// SPDX-License-Identifier: Apache-2.0
3
4#pragma once
5
6#include <rclcpp/rclcpp.hpp>
7
8#include <perception_msgs/msg/ego_data.hpp>
9#include <perception_msgs/msg/object_list.hpp>
10#include <perception_msgs_utils/object_access.hpp>
11#include <trajectory_planning_msgs/msg/trajectory.hpp>
12#include <trajectory_planning_msgs_utils/trajectory_access.hpp>
13
15
16template <typename C>
17struct is_vector : std::false_type {};
18template <typename T, typename A>
19struct is_vector<std::vector<T, A>> : std::true_type {};
20template <typename C>
21inline constexpr bool is_vector_v = is_vector<C>::value;
22
29class DummyInputGenerationNode : public rclcpp::Node {
30 public:
34 explicit DummyInputGenerationNode(const rclcpp::NodeOptions& options);
35
37 static constexpr double EGO_LENGTH = 5.173;
39 static constexpr double EGO_WIDTH = 1.94;
41 static constexpr double OBJECT_HEIGHT = 2.0;
42
43 private:
58 template <typename T>
59 void declareAndLoadParameter(const std::string& name,
60 T& param,
61 const std::string& description,
62 const bool add_to_auto_reconfigurable_params = true,
63 const bool is_required = false,
64 const bool read_only = false,
65 const std::optional<double>& from_value = std::nullopt,
66 const std::optional<double>& to_value = std::nullopt,
67 const std::optional<double>& step_value = std::nullopt,
68 const std::string& additional_constraints = "");
75 rcl_interfaces::msg::SetParametersResult parametersCallback(const std::vector<rclcpp::Parameter>& parameters);
76
78 void setup();
82 void publish();
83
84 rclcpp::Publisher<trajectory_planning_msgs::msg::Trajectory>::SharedPtr trajectory_pub_;
85 rclcpp::Publisher<perception_msgs::msg::EgoData>::SharedPtr egodata_pub_;
86 rclcpp::Publisher<perception_msgs::msg::ObjectList>::SharedPtr object_list_pub_;
87 rclcpp::TimerBase::SharedPtr planning_timer_;
88 OnSetParametersCallbackHandle::SharedPtr parameters_callback_;
89
90 // parameters
91 std::vector<std::tuple<std::string, std::function<void(const rclcpp::Parameter&)>>> auto_reconfigurable_params_;
92
93 // 1) general params
94 double publish_frequency_ = 10.0;
95 std::string message_frame_id_ = "map";
96
97 // 2) ego data params
98 std::string ego_state_model_ = "ackermann";
99 double ego_vel_lon_ = 0.0;
100 double ego_acc_lon_ = 0.0;
104 std::vector<double> ego_translation_to_geometric_center_ = {1.4895, 0.0, 0.420};
105
106 // 3) reference trajectory params
110 double reference_x0_ = 0.0;
111 double reference_y0_ = 0.0;
112 double reference_v0_ = 0.0;
113 double reference_a_ = 1.0;
114 double reference_theta0_ = 0.0;
115 double reference_omega_ = 0.0;
116
117 // 4) object params
119 double object_delta_x_ = 10.0;
120 double object_delta_y_ = 0.0;
121 double object_length_ = 4.0;
122 double object_width_ = 2.0;
123 double object_yaw_ = 0.0;
124};
125
126} // namespace dummy_input_generation
Publishes configurable dummy ego, object, and reference trajectory inputs.
void setup()
Sets up subscribers, publishers, etc. to configure the node.
OnSetParametersCallbackHandle::SharedPtr parameters_callback_
void publish()
Publish the current dummy ego state, object list, and reference trajectory.
static constexpr double EGO_WIDTH
Default ego vehicle width used for published EgoData messages in meters.
std::vector< std::tuple< std::string, std::function< void(const rclcpp::Parameter &)> > > auto_reconfigurable_params_
rclcpp::Publisher< trajectory_planning_msgs::msg::Trajectory >::SharedPtr trajectory_pub_
static constexpr double EGO_LENGTH
Default ego vehicle length used for published EgoData messages in meters.
rcl_interfaces::msg::SetParametersResult parametersCallback(const std::vector< rclcpp::Parameter > &parameters)
Handles reconfiguration when a parameter value is changed.
static constexpr double OBJECT_HEIGHT
Default object and ego vehicle height used for published messages in meters.
rclcpp::Publisher< perception_msgs::msg::ObjectList >::SharedPtr object_list_pub_
DummyInputGenerationNode(const rclcpp::NodeOptions &options)
Constructor.
void declareAndLoadParameter(const std::string &name, T &param, const std::string &description, const bool add_to_auto_reconfigurable_params=true, const bool is_required=false, const bool read_only=false, const std::optional< double > &from_value=std::nullopt, const std::optional< double > &to_value=std::nullopt, const std::optional< double > &step_value=std::nullopt, const std::string &additional_constraints="")
Declares and loads a ROS parameter.
void createPlanningTimer()
Recreate the periodic publish timer based on the configured frequency.
rclcpp::Publisher< perception_msgs::msg::EgoData >::SharedPtr egodata_pub_
Namespace for dummy_input_generation package.