diff --git a/nav2_behavior_tree/plugins/control/persistent_sequence.cpp b/nav2_behavior_tree/plugins/control/persistent_sequence.cpp
index 1886deb3d5c..f38b78dc85d 100644
--- a/nav2_behavior_tree/plugins/control/persistent_sequence.cpp
+++ b/nav2_behavior_tree/plugins/control/persistent_sequence.cpp
@@ -29,7 +29,11 @@ BT::NodeStatus PersistentSequenceNode::tick()
const int children_count = children_nodes_.size();
int current_child_idx;
- getInput("current_child_idx", current_child_idx);
+ if (!getInput("current_child_idx", current_child_idx)) {
+ throw BT::RuntimeError(
+ "Missing required input [current_child_idx] in PersistentSequenceNode. "
+ "Set via ");
+ }
setStatus(BT::NodeStatus::RUNNING);
diff --git a/nav2_behavior_tree/test/plugins/control/test_persistent_sequence.cpp b/nav2_behavior_tree/test/plugins/control/test_persistent_sequence.cpp
index ebf6aa0d6b8..8eaedadc8c3 100644
--- a/nav2_behavior_tree/test/plugins/control/test_persistent_sequence.cpp
+++ b/nav2_behavior_tree/test/plugins/control/test_persistent_sequence.cpp
@@ -62,6 +62,23 @@ std::shared_ptr
PersistentSequenceTestFixture::factory_ = nullptr;
std::shared_ptr PersistentSequenceTestFixture::tree_ = nullptr;
+TEST_F(PersistentSequenceTestFixture, test_empty_fails)
+{
+ // create tree
+ std::string xml_txt =
+ R"(
+
+
+
+
+
+
+ )";
+ tree_ = std::make_shared(factory_->createTreeFromText(xml_txt, config_->blackboard));
+
+ EXPECT_THROW(tree_->rootNode()->executeTick(), BT::RuntimeError);
+}
+
TEST_F(PersistentSequenceTestFixture, test_tick)
{
// create tree