15 #ifndef CONCEALER__PUBLISHER_HPP_
16 #define CONCEALER__PUBLISHER_HPP_
19 #include <nav_msgs/msg/odometry.hpp>
21 #include <rclcpp/rclcpp.hpp>
29 const rclcpp::node_interfaces::NodeParametersInterface::SharedPtr &,
const std::string &)
34 constexpr
auto operator()(T && x)
const -> decltype(
auto)
36 return std::forward<decltype(x)>(x);
46 std::random_device::result_type
seed;
54 std::normal_distribution<double>
additive, multiplicative;
57 const rclcpp::node_interfaces::NodeParametersInterface::SharedPtr & node,
61 getParameter<double>(node, prefix +
".additive.standard_deviation")),
63 getParameter<double>(node, prefix +
".multiplicative.mean"),
64 getParameter<double>(node, prefix +
".multiplicative.standard_deviation"))
68 auto apply(std::mt19937_64 & engine,
double value) -> decltype(
auto)
70 return value * (multiplicative(engine) + 1.0) + additive(engine);
90 const rclcpp::node_interfaces::NodeParametersInterface::SharedPtr &,
const std::string &);
92 auto operator()(nav_msgs::msg::Odometry odometry) -> nav_msgs::msg::Odometry;
95 template <
typename Message,
template <
typename>
typename Randomizer =
Identity>
98 typename rclcpp::Publisher<Message>::SharedPtr publisher;
100 Randomizer<Message> randomize;
103 template <
typename Node>
105 : publisher(node.template create_publisher<Message>(topic, rclcpp::QoS(1).reliable())),
106 randomize(node.get_node_parameters_interface(), topic)
110 template <
typename... Ts>
113 return publisher->publish(randomize(std::forward<decltype(
xs)>(
xs)...));
Definition: publisher.hpp:97
auto operator()(Ts &&... xs) -> decltype(auto)
Definition: publisher.hpp:111
Publisher(const std::string &topic, Node &node)
Definition: publisher.hpp:104
Definition: autoware_universe.hpp:40
auto getParameter(const rclcpp::node_interfaces::NodeParametersInterface::SharedPtr &node, const std::string &name, T value={})
Definition: get_parameter.hpp:25
Definition: junit5.hpp:25
std::string string
Definition: junit5.hpp:26
Definition: publisher.hpp:27
constexpr Identity(const rclcpp::node_interfaces::NodeParametersInterface::SharedPtr &, const std::string &)
Definition: publisher.hpp:28
constexpr auto operator()(T &&x) const -> decltype(auto)
Definition: publisher.hpp:34
std::normal_distribution< double > additive
Definition: publisher.hpp:54
Error(const rclcpp::node_interfaces::NodeParametersInterface::SharedPtr &node, const std::string &prefix)
Definition: publisher.hpp:56
auto apply(std::mt19937_64 &engine, double value) -> decltype(auto)
Definition: publisher.hpp:68
std::mt19937_64 engine
Definition: publisher.hpp:50
Error linear_z_error
Definition: publisher.hpp:83
Error angular_x_error
Definition: publisher.hpp:84
std::random_device device
Definition: publisher.hpp:48
Error orientation_r_error
Definition: publisher.hpp:78
Error angular_z_error
Definition: publisher.hpp:86
Error linear_y_error
Definition: publisher.hpp:82
Error position_local_x_error
Definition: publisher.hpp:75
std::random_device::result_type seed
Definition: publisher.hpp:46
Error position_local_z_error
Definition: publisher.hpp:77
Error angular_y_error
Definition: publisher.hpp:85
Error orientation_y_error
Definition: publisher.hpp:80
Error orientation_p_error
Definition: publisher.hpp:79
Error linear_x_error
Definition: publisher.hpp:81
Error position_local_y_error
Definition: publisher.hpp:76
Definition: publisher.hpp:41