15 #ifndef SIMPLE_SENSOR_SIMULATOR__SENSOR_SIMULATION__SENSOR_SIMULATION_HPP_
16 #define SIMPLE_SENSOR_SIMULATOR__SENSOR_SIMULATION__SENSOR_SIMULATION_HPP_
18 #include <simulation_api_schema.pb.h>
20 #include <agnocast_wrapper/agnocast_wrapper.hpp>
21 #include <autoware_perception_msgs/msg/detected_objects.hpp>
22 #include <autoware_perception_msgs/msg/tracked_objects.hpp>
25 #include <rclcpp/rclcpp.hpp>
34 #if __has_include(<autoware_perception_msgs/msg/traffic_signal_array.hpp>)
35 #include <autoware_perception_msgs/msg/traffic_signal_array.hpp>
38 #if __has_include(<autoware_perception_msgs/msg/traffic_light_group_array.hpp>)
39 #include <autoware_perception_msgs/msg/traffic_light_group_array.hpp>
48 const double current_simulation_time,
49 const simulation_api_schema::LidarConfiguration & configuration, rclcpp::Node & node) ->
void
51 if (configuration.architecture_type().find(
"awf/universe") != std::string::npos) {
53 current_simulation_time, configuration,
54 agnocast_wrapper::create_publisher<sensor_msgs::msg::PointCloud2>(
55 node,
"/perception/obstacle_segmentation/pointcloud", 1)));
58 ss <<
"Unexpected architecture_type " << std::quoted(configuration.architecture_type())
60 throw std::runtime_error(ss.str());
65 const double current_simulation_time,
66 const simulation_api_schema::DetectionSensorConfiguration & configuration, rclcpp::Node & node)
69 if (configuration.architecture_type().find(
"awf/universe") != std::string::npos) {
70 using Message = autoware_perception_msgs::msg::DetectedObjects;
71 using GroundTruthMessage = autoware_perception_msgs::msg::TrackedObjects;
73 current_simulation_time, configuration,
74 node.create_publisher<Message>(
"/perception/object_recognition/detection/objects", 1),
75 node.create_publisher<GroundTruthMessage>(
76 "/perception/object_recognition/ground_truth/objects", 1)));
79 ss <<
"Unexpected architecture_type " << std::quoted(configuration.architecture_type())
81 throw std::runtime_error(ss.str());
86 const double current_simulation_time,
87 const simulation_api_schema::OccupancyGridSensorConfiguration & configuration,
88 rclcpp::Node & node) ->
void
90 if (configuration.architecture_type().find(
"awf/universe") != std::string::npos) {
91 using Message = nav_msgs::msg::OccupancyGrid;
93 current_simulation_time, configuration,
94 node.create_publisher<Message>(
"/perception/occupancy_grid_map/map", 1)));
97 ss <<
"Unexpected architecture_type " << std::quoted(configuration.architecture_type())
99 throw std::runtime_error(ss.str());
105 const simulation_api_schema::PseudoTrafficLightDetectorConfiguration & configuration,
106 rclcpp::Node & node) ->
void
108 traffic_lights_detectors_.push_back(std::make_unique<traffic_lights::TrafficLightsDetector>(
109 node, configuration.architecture_type()));
114 const simulation_api_schema::ImuSensorConfiguration & configuration, rclcpp::Node & node)
118 configuration, node.create_publisher<sensor_msgs::msg::Imu>(
"/sensing/imu/imu_data", 1)));
122 double current_simulation_time,
const rclcpp::Time & current_ros_time,
123 const std::vector<traffic_simulator_msgs::EntityStatus> &,
124 const simulation_api_schema::UpdateTrafficLightsRequest &) -> void;
127 std::vector<std::unique_ptr<ImuSensorBase>> imu_sensors_;
128 std::vector<std::unique_ptr<LidarSensorBase>> lidar_sensors_;
129 std::vector<std::unique_ptr<DetectionSensorBase>> detection_sensors_;
130 std::vector<std::unique_ptr<OccupancyGridSensorBase>> occupancy_grid_sensors_;
131 std::vector<std::unique_ptr<traffic_lights::TrafficLightsDetector>> traffic_lights_detectors_;
Definition: detection_sensor.hpp:75
Definition: imu_sensor.hpp:76
Definition: lidar_sensor.hpp:61
occupancy grid sensor implementation
Definition: occupancy_grid_sensor.hpp:83
Definition: sensor_simulation.hpp:45
auto attachDetectionSensor(const double current_simulation_time, const simulation_api_schema::DetectionSensorConfiguration &configuration, rclcpp::Node &node) -> void
Definition: sensor_simulation.hpp:64
auto attachImuSensor(const double, const simulation_api_schema::ImuSensorConfiguration &configuration, rclcpp::Node &node) -> void
Definition: sensor_simulation.hpp:112
auto attachOccupancyGridSensor(const double current_simulation_time, const simulation_api_schema::OccupancyGridSensorConfiguration &configuration, rclcpp::Node &node) -> void
Definition: sensor_simulation.hpp:85
auto attachLidarSensor(const double current_simulation_time, const simulation_api_schema::LidarConfiguration &configuration, rclcpp::Node &node) -> void
Definition: sensor_simulation.hpp:47
auto updateSensorFrame(double current_simulation_time, const rclcpp::Time ¤t_ros_time, const std::vector< traffic_simulator_msgs::EntityStatus > &, const simulation_api_schema::UpdateTrafficLightsRequest &) -> void
Definition: sensor_simulation.cpp:22
auto attachPseudoTrafficLightsDetector(const double, const simulation_api_schema::PseudoTrafficLightDetectorConfiguration &configuration, rclcpp::Node &node) -> void
Definition: sensor_simulation.hpp:103
Definition: constants.hpp:19