15 #ifndef CONCEALER__PUBLISHER_HPP_
16 #define CONCEALER__PUBLISHER_HPP_
18 #include <autoware_vehicle_msgs/msg/velocity_report.hpp>
19 #include <geometry_msgs/msg/pose_with_covariance_stamped.hpp>
20 #include <get_parameter/get_parameter.hpp>
21 #include <nav_msgs/msg/odometry.hpp>
23 #include <rclcpp/rclcpp.hpp>
24 #include <sensor_msgs/msg/imu.hpp>
32 const rclcpp::node_interfaces::NodeParametersInterface::SharedPtr &,
const std::string &)
37 constexpr
auto operator()(T && x)
const -> decltype(
auto)
39 return std::forward<decltype(x)>(x);
43 template <
typename ValueType>
46 static_assert(std::is_floating_point_v<std::decay_t<ValueType> >,
"Unsupported error type");
51 const rclcpp::node_interfaces::NodeParametersInterface::SharedPtr & node,
55 static_cast<ValueType>(
common::getParameter<double>(node, prefix +
".additive.mean")),
56 static_cast<ValueType>(
common::getParameter<double>(node, prefix +
".additive.standard_deviation"))),
58 static_cast<ValueType>(
common::getParameter<double>(node, prefix +
".multiplicative.mean")),
59 static_cast<ValueType>(
common::getParameter<double>(node, prefix +
".multiplicative.standard_deviation")))
64 auto apply(std::mt19937_64 & engine,
const ValueType value) -> ValueType
80 const std::random_device::result_type
seed;
85 const rclcpp::node_interfaces::NodeParametersInterface::SharedPtr & node,
110 const rclcpp::node_interfaces::NodeParametersInterface::SharedPtr &,
const std::string &);
112 auto operator()(nav_msgs::msg::Odometry odometry) -> nav_msgs::msg::Odometry;
127 const rclcpp::node_interfaces::NodeParametersInterface::SharedPtr &,
const std::string &);
129 auto operator()(autoware_vehicle_msgs::msg::VelocityReport velocity_report)
130 -> autoware_vehicle_msgs::msg::VelocityReport;
152 const rclcpp::node_interfaces::NodeParametersInterface::SharedPtr &,
const std::string &);
154 auto operator()(geometry_msgs::msg::PoseWithCovarianceStamped pose)
155 -> geometry_msgs::msg::PoseWithCovarianceStamped;
186 const rclcpp::node_interfaces::NodeParametersInterface::SharedPtr &,
const std::string &);
188 auto operator()(sensor_msgs::msg::Imu imu) -> sensor_msgs::msg::Imu;
191 template <
typename Message,
template <
typename>
typename Randomizer = Identity>
194 typename rclcpp::Publisher<Message>::SharedPtr publisher;
196 Randomizer<Message> randomize;
199 template <
typename Node>
201 : publisher(node.template create_publisher<Message>(topic, rclcpp::QoS(1).reliable())),
202 randomize(node.get_node_parameters_interface(), topic)
206 template <
typename... Ts>
209 return publisher->publish(randomize(std::forward<decltype(
xs)>(
xs)...));
212 auto getRandomizer() const noexcept -> const Randomizer<Message> & {
return randomize; }
213 auto getRandomizer() noexcept -> Randomizer<Message> & {
return randomize; }
Definition: publisher.hpp:193
auto operator()(Ts &&... xs) -> decltype(auto)
Definition: publisher.hpp:207
auto getRandomizer() const noexcept -> const Randomizer< Message > &
Definition: publisher.hpp:212
auto getRandomizer() noexcept -> Randomizer< Message > &
Definition: publisher.hpp:213
Publisher(const std::string &topic, Node &node)
Definition: publisher.hpp:200
Definition: concatenate.hpp:24
Definition: autoware_universe.hpp:40
Definition: junit5.hpp:25
std::string string
Definition: junit5.hpp:26
Definition: publisher.hpp:30
constexpr Identity(const rclcpp::node_interfaces::NodeParametersInterface::SharedPtr &, const std::string &)
Definition: publisher.hpp:31
constexpr auto operator()(T &&x) const -> decltype(auto)
Definition: publisher.hpp:37
Definition: publisher.hpp:45
std::normal_distribution< ValueType > multiplicative
Definition: publisher.hpp:48
auto apply(std::mt19937_64 &engine, const ValueType value) -> ValueType
Definition: publisher.hpp:64
NormalDistributionError(const rclcpp::node_interfaces::NodeParametersInterface::SharedPtr &node, const std::string &prefix)
Definition: publisher.hpp:50
std::normal_distribution< ValueType > additive
Definition: publisher.hpp:46
NormalDistributionError< float > heading_rate_error
Definition: publisher.hpp:123
NormalDistributionError< float > longitudinal_velocity_error
Definition: publisher.hpp:121
NormalDistributionError< float > lateral_velocity_error
Definition: publisher.hpp:122
double speed_threshold
Definition: publisher.hpp:118
NormalDistributionError< double > covariance_diagonal_roll_roll_error
Definition: publisher.hpp:146
NormalDistributionError< double > covariance_diagonal_x_x_error
Definition: publisher.hpp:143
NormalDistributionError< double > covariance_diagonal_z_z_error
Definition: publisher.hpp:145
NormalDistributionError< double > position_local_z_error
Definition: publisher.hpp:139
NormalDistributionError< double > covariance_diagonal_pitch_pitch_error
Definition: publisher.hpp:147
NormalDistributionError< double > covariance_diagonal_yaw_yaw_error
Definition: publisher.hpp:148
NormalDistributionError< double > orientation_p_error
Definition: publisher.hpp:141
NormalDistributionError< double > covariance_diagonal_y_y_error
Definition: publisher.hpp:144
NormalDistributionError< double > orientation_y_error
Definition: publisher.hpp:142
NormalDistributionError< double > position_local_x_error
Definition: publisher.hpp:137
NormalDistributionError< double > position_local_y_error
Definition: publisher.hpp:138
NormalDistributionError< double > orientation_r_error
Definition: publisher.hpp:140
NormalDistributionError< double > linear_x_error
Definition: publisher.hpp:101
NormalDistributionError< double > orientation_r_error
Definition: publisher.hpp:98
NormalDistributionError< double > angular_y_error
Definition: publisher.hpp:105
NormalDistributionError< double > linear_z_error
Definition: publisher.hpp:103
NormalDistributionError< double > position_local_z_error
Definition: publisher.hpp:97
NormalDistributionError< double > position_local_x_error
Definition: publisher.hpp:95
NormalDistributionError< double > orientation_y_error
Definition: publisher.hpp:100
NormalDistributionError< double > position_local_y_error
Definition: publisher.hpp:96
double speed_threshold
Definition: publisher.hpp:92
NormalDistributionError< double > linear_y_error
Definition: publisher.hpp:102
NormalDistributionError< double > angular_z_error
Definition: publisher.hpp:106
NormalDistributionError< double > orientation_p_error
Definition: publisher.hpp:99
NormalDistributionError< double > angular_x_error
Definition: publisher.hpp:104
NormalDistributionError< double > orientation_covariance_diagonal_yaw_yaw_error
Definition: publisher.hpp:173
NormalDistributionError< double > linear_acceleration_y_error
Definition: publisher.hpp:169
NormalDistributionError< double > angular_velocity_y_error
Definition: publisher.hpp:166
NormalDistributionError< double > linear_acceleration_x_error
Definition: publisher.hpp:168
NormalDistributionError< double > angular_velocity_z_error
Definition: publisher.hpp:167
NormalDistributionError< double > angular_velocity_covariance_diagonal_y_y_error
Definition: publisher.hpp:175
NormalDistributionError< double > angular_velocity_x_error
Definition: publisher.hpp:165
NormalDistributionError< double > angular_velocity_covariance_diagonal_z_z_error
Definition: publisher.hpp:176
NormalDistributionError< double > orientation_r_error
Definition: publisher.hpp:162
NormalDistributionError< double > linear_acceleration_covariance_diagonal_y_y_error
Definition: publisher.hpp:178
NormalDistributionError< double > angular_velocity_covariance_diagonal_x_x_error
Definition: publisher.hpp:174
NormalDistributionError< double > orientation_covariance_diagonal_pitch_pitch_error
Definition: publisher.hpp:172
NormalDistributionError< double > linear_acceleration_covariance_diagonal_x_x_error
Definition: publisher.hpp:177
NormalDistributionError< double > linear_acceleration_z_error
Definition: publisher.hpp:170
NormalDistributionError< double > orientation_p_error
Definition: publisher.hpp:163
NormalDistributionError< double > linear_acceleration_covariance_diagonal_z_z_error
Definition: publisher.hpp:179
NormalDistributionError< double > orientation_covariance_diagonal_roll_roll_error
Definition: publisher.hpp:171
NormalDistributionError< double > orientation_y_error
Definition: publisher.hpp:164
Definition: publisher.hpp:71
Provides common components for obtaining the seed and initializing the pseudo random number generator...
Definition: publisher.hpp:79
std::mt19937_64 engine
Definition: publisher.hpp:82
const std::random_device::result_type seed
Definition: publisher.hpp:80
RandomNumberEngine(const rclcpp::node_interfaces::NodeParametersInterface::SharedPtr &node, const std::string &topic)
Definition: publisher.cpp:26