Skip to content

Commit 995bab5

Browse files
author
Berkay Karaman
committed
fix: container die problem
Signed-off-by: Berkay Karaman <berkay@leodrive.ai>
1 parent 69ffa20 commit 995bab5

File tree

4 files changed

+13
-3
lines changed

4 files changed

+13
-3
lines changed

tools/reaction_analyzer/include/reaction_analyzer_node.hpp

+1
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,7 @@ class ReactionAnalyzerNode : public rclcpp::Node
100100
std::optional<rclcpp::Time> test_environment_init_time_;
101101
std::optional<rclcpp::Time> spawn_cmd_time_;
102102
std::atomic<bool> spawn_object_cmd_{false};
103+
std::atomic<bool> ego_initialized_{false};
103104
bool is_initialization_requested{false};
104105
bool is_route_set_{false};
105106
size_t test_iteration_count_{0};

tools/reaction_analyzer/include/topic_publisher.hpp

+3-1
Original file line numberDiff line numberDiff line change
@@ -179,7 +179,7 @@ class TopicPublisher
179179
{
180180
public:
181181
explicit TopicPublisher(
182-
rclcpp::Node * node, std::atomic<bool> & spawn_object_cmd,
182+
rclcpp::Node * node, std::atomic<bool> & spawn_object_cmd, std::atomic<bool> & ego_initialized,
183183
std::optional<rclcpp::Time> & spawn_cmd_time, const RunningMode & node_running_mode,
184184
const EntityParams & entity_params);
185185

@@ -192,6 +192,8 @@ class TopicPublisher
192192
rclcpp::Node * node_;
193193
RunningMode node_running_mode_;
194194
std::atomic<bool> & spawn_object_cmd_;
195+
std::atomic<bool> & ego_initialized_; // used for planning_control mode because if pointcloud is
196+
// published before ego is initialized, it causes crash
195197
EntityParams entity_params_;
196198
std::optional<rclcpp::Time> & spawn_cmd_time_; // Set by a publisher function when the
197199
// spawn_object_cmd_ is true

tools/reaction_analyzer/src/reaction_analyzer_node.cpp

+4-1
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,8 @@ ReactionAnalyzerNode::ReactionAnalyzerNode(rclcpp::NodeOptions node_options)
133133
}
134134

135135
topic_publisher_ptr_ = std::make_unique<topic_publisher::TopicPublisher>(
136-
this, spawn_object_cmd_, spawn_cmd_time_, node_running_mode_, node_params_.entity_params);
136+
this, spawn_object_cmd_, ego_initialized_, spawn_cmd_time_, node_running_mode_,
137+
node_params_.entity_params);
137138

138139
// initialize the odometry before init the subscriber
139140
odometry_ptr_ = std::make_shared<Odometry>();
@@ -299,6 +300,7 @@ void ReactionAnalyzerNode::init_test_env(
299300
call_operation_mode_service_without_response();
300301
}
301302
}
303+
ego_initialized_ = true;
302304

303305
const bool is_ready =
304306
(is_initialization_requested && is_route_set_ &&
@@ -419,6 +421,7 @@ void ReactionAnalyzerNode::reset()
419421
std::lock_guard<std::mutex> lock(mutex_);
420422
spawn_cmd_time_ = std::nullopt;
421423
subscriber_ptr_->reset();
424+
ego_initialized_ = false;
422425
RCLCPP_INFO(this->get_logger(), "Test - %zu is done, resetting..", test_iteration_count_);
423426
}
424427
} // namespace reaction_analyzer

tools/reaction_analyzer/src/topic_publisher.cpp

+5-1
Original file line numberDiff line numberDiff line change
@@ -21,12 +21,13 @@ namespace reaction_analyzer::topic_publisher
2121
{
2222

2323
TopicPublisher::TopicPublisher(
24-
rclcpp::Node * node, std::atomic<bool> & spawn_object_cmd,
24+
rclcpp::Node * node, std::atomic<bool> & spawn_object_cmd, std::atomic<bool> & ego_initialized,
2525
std::optional<rclcpp::Time> & spawn_cmd_time, const RunningMode & node_running_mode,
2626
const EntityParams & entity_params)
2727
: node_(node),
2828
node_running_mode_(node_running_mode),
2929
spawn_object_cmd_(spawn_object_cmd),
30+
ego_initialized_(ego_initialized),
3031
entity_params_(entity_params),
3132
spawn_cmd_time_(spawn_cmd_time)
3233
{
@@ -192,6 +193,9 @@ void TopicPublisher::generic_message_publisher(const std::string & topic_name)
192193

193194
void TopicPublisher::dummy_perception_publisher()
194195
{
196+
if (!ego_initialized_) {
197+
return; // do not publish anything if ego is not initialized
198+
}
195199
if (!spawn_object_cmd_) {
196200
// do not spawn it, send empty pointcloud
197201
pcl::PointCloud<pcl::PointXYZ> pcl_empty;

0 commit comments

Comments
 (0)