scenario_simulator_v2 C++ API
misc_object_entity.hpp
Go to the documentation of this file.
1 // Copyright 2015 TIER IV, Inc. All rights reserved.
2 //
3 // Licensed under the Apache License, Version 2.0 (the "License");
4 // you may not use this file except in compliance with the License.
5 // You may obtain a copy of the License at
6 //
7 // http://www.apache.org/licenses/LICENSE-2.0
8 //
9 // Unless required by applicable law or agreed to in writing, software
10 // distributed under the License is distributed on an "AS IS" BASIS,
11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 // See the License for the specific language governing permissions and
13 // limitations under the License.
14 
15 #ifndef TRAFFIC_SIMULATOR__ENTITY__MISC_OBJECT_ENTITY_HPP_
16 #define TRAFFIC_SIMULATOR__ENTITY__MISC_OBJECT_ENTITY_HPP_
17 
18 #include <optional>
20 #include <traffic_simulator_msgs/msg/misc_object_parameters.hpp>
21 
22 namespace traffic_simulator
23 {
24 namespace entity
25 {
27 {
28 public:
29  explicit MiscObjectEntity(
31  const std::shared_ptr<hdmap_utils::HdMapUtils> &,
32  const traffic_simulator_msgs::msg::MiscObjectParameters &);
33 
34  void onUpdate(double, double) override;
35 
36  auto getCurrentAction() const -> std::string override;
37 
38  auto getDefaultDynamicConstraints() const
39  -> const traffic_simulator_msgs::msg::DynamicConstraints & override;
40 
41  auto getEntityType() const -> const traffic_simulator_msgs::msg::EntityType & override
42  {
43  static traffic_simulator_msgs::msg::EntityType type;
44  type.type = traffic_simulator_msgs::msg::EntityType::MISC_OBJECT;
45  return type;
46  }
47 
48  auto getEntityTypename() const -> const std::string & override
49  {
50  static const std::string result = "MiscObjectEntity";
51  return result;
52  }
53 
54  ~MiscObjectEntity() override = default;
55 
56  auto getGoalPoses() -> std::vector<CanonicalizedLaneletPose> override { return {}; }
57 
58  std::optional<traffic_simulator_msgs::msg::Obstacle> getObstacle() override
59  {
60  return std::nullopt;
61  }
62 
63  auto getRouteLanelets(double) -> lanelet::Ids override
64  {
65  THROW_SEMANTIC_ERROR("getRouteLanelets function cannot not use in MiscObjectEntity");
66  }
67 
68  auto fillLaneletPose(CanonicalizedEntityStatus &) -> void override;
69 
70  auto getWaypoints() -> const traffic_simulator_msgs::msg::WaypointsArray override
71  {
72  return traffic_simulator_msgs::msg::WaypointsArray();
73  }
74 
75  void requestSpeedChange(double, bool) override;
76 
77  void requestSpeedChange(const speed_change::RelativeTargetSpeed &, bool) override;
78 
79  void requestAssignRoute(const std::vector<CanonicalizedLaneletPose> &) override
80  {
81  THROW_SEMANTIC_ERROR("requestAssignRoute function cannot not use in MiscObjectEntity");
82  }
83 
84  void requestAssignRoute(const std::vector<geometry_msgs::msg::Pose> &) override
85  {
86  THROW_SEMANTIC_ERROR("requestAssignRoute function cannot not use in MiscObjectEntity");
87  }
88 
90  {
91  THROW_SEMANTIC_ERROR("requestAcquirePosition function cannot not use in MiscObjectEntity");
92  }
93 
94  void requestAcquirePosition(const geometry_msgs::msg::Pose &) override
95  {
96  THROW_SEMANTIC_ERROR("requestAcquirePosition function cannot not use in MiscObjectEntity");
97  }
98 
99  void requestSpeedChange(
100  const double, const speed_change::Transition, const speed_change::Constraint,
101  const bool) override;
102 
103  auto getBehaviorParameter() const -> traffic_simulator_msgs::msg::BehaviorParameter override;
104 
105  void setBehaviorParameter(const traffic_simulator_msgs::msg::BehaviorParameter &) override;
106 
107  void setVelocityLimit(double) override{};
108 
109  void setAccelerationLimit(double) override {}
110 
111  void setAccelerationRateLimit(double) override {}
112 
113  void setDecelerationLimit(double) override {}
114 
115  void setDecelerationRateLimit(double) override {}
116 
117  auto getMaxAcceleration() const -> double override
118  {
119  THROW_SEMANTIC_ERROR("getMaxAcceleration function cannot not use in MiscObjectEntity");
120  }
121 
122  auto getMaxDeceleration() const -> double override
123  {
124  THROW_SEMANTIC_ERROR("getMaxDeceleration function cannot not use in MiscObjectEntity");
125  }
126 };
127 } // namespace entity
128 } // namespace traffic_simulator
129 
130 #endif // TRAFFIC_SIMULATOR__ENTITY__MISC_OBJECT_ENTITY_HPP_
Definition: entity_base.hpp:51
const std::string name
Definition: entity_base.hpp:242
Definition: misc_object_entity.hpp:27
void setAccelerationRateLimit(double) override
Definition: misc_object_entity.hpp:111
void requestAcquirePosition(const geometry_msgs::msg::Pose &) override
Definition: misc_object_entity.hpp:94
auto getEntityType() const -> const traffic_simulator_msgs::msg::EntityType &override
Definition: misc_object_entity.hpp:41
void setBehaviorParameter(const traffic_simulator_msgs::msg::BehaviorParameter &) override
Definition: misc_object_entity.cpp:58
void requestAcquirePosition(const CanonicalizedLaneletPose &) override
Definition: misc_object_entity.hpp:89
void requestSpeedChange(double, bool) override
Definition: misc_object_entity.cpp:79
auto getMaxAcceleration() const -> double override
Definition: misc_object_entity.hpp:117
void setAccelerationLimit(double) override
Definition: misc_object_entity.hpp:109
void onUpdate(double, double) override
Definition: misc_object_entity.cpp:29
void setVelocityLimit(double) override
Definition: misc_object_entity.hpp:107
std::optional< traffic_simulator_msgs::msg::Obstacle > getObstacle() override
Definition: misc_object_entity.hpp:58
void setDecelerationLimit(double) override
Definition: misc_object_entity.hpp:113
MiscObjectEntity(const std::string &name, const CanonicalizedEntityStatus &, const std::shared_ptr< hdmap_utils::HdMapUtils > &, const traffic_simulator_msgs::msg::MiscObjectParameters &)
Definition: misc_object_entity.cpp:21
auto getCurrentAction() const -> std::string override
Definition: misc_object_entity.cpp:43
void requestAssignRoute(const std::vector< CanonicalizedLaneletPose > &) override
Definition: misc_object_entity.hpp:79
auto getEntityTypename() const -> const std::string &override
Definition: misc_object_entity.hpp:48
void requestAssignRoute(const std::vector< geometry_msgs::msg::Pose > &) override
Definition: misc_object_entity.hpp:84
auto getBehaviorParameter() const -> traffic_simulator_msgs::msg::BehaviorParameter override
Definition: misc_object_entity.cpp:52
auto getMaxDeceleration() const -> double override
Definition: misc_object_entity.hpp:122
auto getRouteLanelets(double) -> lanelet::Ids override
Definition: misc_object_entity.hpp:63
void setDecelerationRateLimit(double) override
Definition: misc_object_entity.hpp:115
auto getWaypoints() -> const traffic_simulator_msgs::msg::WaypointsArray override
Definition: misc_object_entity.hpp:70
auto getDefaultDynamicConstraints() const -> const traffic_simulator_msgs::msg::DynamicConstraints &override
Definition: misc_object_entity.cpp:63
auto fillLaneletPose(CanonicalizedEntityStatus &) -> void override
Definition: misc_object_entity.cpp:95
auto getGoalPoses() -> std::vector< CanonicalizedLaneletPose > override
Definition: misc_object_entity.hpp:56
Definition: entity_status.hpp:29
Definition: lanelet_pose.hpp:27
#define THROW_SEMANTIC_ERROR(...)
Definition: exception.hpp:59
Definition: cache.hpp:27
Transition
Definition: speed_change.hpp:26
Definition: api.hpp:48
std::string string
Definition: junit5.hpp:26
Definition: speed_change.hpp:35