Skip to content

Commit e73a495

Browse files
committed
chain can get from parameters
1 parent 3d9569f commit e73a495

File tree

2 files changed

+146
-113
lines changed

2 files changed

+146
-113
lines changed

tools/reaction_analyzer/include/reaction_analyzer_node.hpp

+26-26
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@
3939
#include <memory>
4040
#include <mutex>
4141
#include <utility>
42+
#include <variant>
4243

4344
namespace reaction_analyzer
4445
{
@@ -54,12 +55,24 @@ using autoware_auto_planning_msgs::msg::Trajectory;
5455
using geometry_msgs::msg::Pose;
5556
using nav_msgs::msg::Odometry;
5657
using sensor_msgs::msg::PointCloud2;
58+
using ControlBuffer = std::pair<std::vector<AckermannControlCommand>, std::optional<AckermannControlCommand>>;
59+
60+
using BufferVariant = std::variant<
61+
ControlBuffer
62+
// , std::vector<OtherMessageType> // Add other message types here
63+
>;
64+
65+
enum class MessageType
66+
{
67+
Unknown = 0,
68+
AckermannControlCommand = 1,
69+
};
5770

5871
struct TopicConfig
5972
{
6073
std::string node_name;
6174
std::string topic_address;
62-
std::string message_type;
75+
MessageType message_type;
6376
};
6477

6578
using ChainModules = std::vector<TopicConfig>;
@@ -96,24 +109,19 @@ struct NodeParams
96109
int min_number_descending_order_control_cmd;
97110
};
98111

99-
struct ControlCommandWithSeenTime
100-
{
101-
explicit ControlCommandWithSeenTime(
102-
const rclcpp::Time & time, const AckermannControlCommand & cmd)
103-
: seen_time(time), control_cmd(cmd)
104-
{
105-
}
106-
rclcpp::Time seen_time;
107-
AckermannControlCommand control_cmd;
108-
};
109-
110112
class ReactionAnalyzerNode : public rclcpp::Node
111113
{
112114
public:
113115
explicit ReactionAnalyzerNode(rclcpp::NodeOptions options);
114116
~ReactionAnalyzerNode() = default;
115117

116118
private:
119+
void initObservers(const ChainModules & modules);
120+
std::vector<rclcpp::SubscriptionBase::SharedPtr> subscribers_;
121+
void controlCommandOutputCallback(const std::string & node_name, const AckermannControlCommand::ConstSharedPtr msg_ptr);
122+
123+
std::unordered_map<std::string, BufferVariant> messageBuffers_;
124+
117125
std::mutex mutex_;
118126
// Module list in chain
119127
ChainModules chain_modules;
@@ -135,10 +143,6 @@ class ReactionAnalyzerNode : public rclcpp::Node
135143
rclcpp::Subscription<LocalizationInitializationState>::SharedPtr sub_localization_init_state_;
136144
rclcpp::Subscription<OperationModeState>::SharedPtr sub_operation_mode_;
137145

138-
// Observer Subscribers
139-
rclcpp::Subscription<AckermannControlCommand>::SharedPtr sub_trajectory_follower_output;
140-
rclcpp::Subscription<AckermannControlCommand>::SharedPtr sub_vehicle_cmd_gate_output;
141-
142146
// Publishers
143147
rclcpp::Publisher<PointCloud2>::SharedPtr pub_pointcloud_;
144148
rclcpp::Publisher<PredictedObjects>::SharedPtr pub_predicted_objects_;
@@ -159,32 +163,28 @@ class ReactionAnalyzerNode : public rclcpp::Node
159163
RouteState::ConstSharedPtr route_state_ptr);
160164
void onTimer();
161165
void setControlCommandToBuffer(
162-
std::vector<ControlCommandWithSeenTime> & buffer, const AckermannControlCommand & cmd);
166+
std::vector<AckermannControlCommand> & buffer, const AckermannControlCommand & cmd);
163167
std::optional<size_t> findFirstBrakeIdx(
164-
const std::vector<ControlCommandWithSeenTime> & cmd_array);
168+
const std::vector<AckermannControlCommand> & cmd_array);
165169

166170
// Callbacks
167171
void vehiclePoseCallback(const Odometry::ConstSharedPtr msg_ptr);
168172
void initializationStateCallback(const LocalizationInitializationState::ConstSharedPtr msg_ptr);
169173
void routeStateCallback(const RouteState::ConstSharedPtr msg);
170174
void operationModeCallback(const OperationModeState::ConstSharedPtr msg_ptr);
171175

172-
// Observer Callbacks
173-
void trajectoryFollowerOutputCallback(const AckermannControlCommand::ConstSharedPtr msg_ptr);
174-
void vehicleCmdGateOutputCallback(const AckermannControlCommand::ConstSharedPtr msg_ptr);
175-
176176
// Variables
177177
std::optional<rclcpp::Time> spawn_cmd_time;
178178
bool is_test_environment_created_{false};
179179
bool is_ego_initialized_{false};
180180
bool is_route_set_{false};
181181
bool is_output_printed{false};
182+
bool all_topics_reacted_{false};
182183
std::optional<rclcpp::Time> last_initialize_test_time_;
184+
183185
// measurement for control cmd
184-
std::vector<ControlCommandWithSeenTime> trajectory_follower_output_buffer_;
185-
std::vector<ControlCommandWithSeenTime> vehicle_cmd_gate_output_buffer_;
186-
std::optional<ControlCommandWithSeenTime> trajectory_follower_brake_cmd;
187-
std::optional<ControlCommandWithSeenTime> vehicle_cmd_gate_brake_cmd;
186+
// std::optional<ControlCommandWithSeenTime> trajectory_follower_brake_cmd;
187+
// std::optional<ControlCommandWithSeenTime> vehicle_cmd_gate_brake_cmd;
188188

189189
// Timer
190190
rclcpp::TimerBase::SharedPtr timer_;

0 commit comments

Comments
 (0)