ManageLifecycleNodes Service
Package: nav2_msgs
Category: Lifecycle Services
Control lifecycle states of Nav2 nodes (startup, shutdown, pause, etc.)
Message Definitions
Request Message
Field | Type | Description |
---|---|---|
STARTUP = 0 |
uint8 |
Service parameter - see Nav2 documentation for specific usage details |
PAUSE = 1 |
uint8 |
Service parameter - see Nav2 documentation for specific usage details |
RESUME = 2 |
uint8 |
Service parameter - see Nav2 documentation for specific usage details |
RESET = 3 |
uint8 |
Service parameter - see Nav2 documentation for specific usage details |
SHUTDOWN = 4 |
uint8 |
Service parameter - see Nav2 documentation for specific usage details |
CONFIGURE = 5 |
uint8 |
Service parameter - see Nav2 documentation for specific usage details |
CLEANUP = 6 |
uint8 |
Service parameter - see Nav2 documentation for specific usage details |
command |
uint8 |
Lifecycle command to execute |
Response Message
Field | Type | Description |
---|---|---|
success |
bool |
Whether the operation completed successfully |
Usage Examples
Python
import rclpy
from rclpy.node import Node
from nav2_msgs.srv import ManageLifecycleNodes
class ManageLifecycleNodesClient(Node):
def __init__(self):
super().__init__('manage_lifecycle_nodes_client')
self.client = self.create_client(ManageLifecycleNodes, 'manage_lifecycle_nodes')
def send_request(self):
request = ManageLifecycleNodes.Request()
# Set request.command as needed
self.client.wait_for_service()
future = self.client.call_async(request)
return future
def main():
rclpy.init()
client = ManageLifecycleNodesClient()
future = client.send_request()
rclpy.spin_until_future_complete(client, future)
if future.result():
client.get_logger().info('Service call completed')
else:
client.get_logger().error('Service call failed')
client.destroy_node()
rclpy.shutdown()
C++
#include "rclcpp/rclcpp.hpp"
#include "nav2_msgs/srv/manage_lifecycle_nodes.hpp"
class ManageLifecycleNodesClient : public rclcpp::Node
{
public:
ManageLifecycleNodesClient() : Node("manage_lifecycle_nodes_client")
{
client_ = create_client<nav2_msgs::srv::ManageLifecycleNodes>("manage_lifecycle_nodes");
}
void send_request()
{
auto request = std::make_shared<nav2_msgs::srv::ManageLifecycleNodes::Request>();
// Set request->command as needed
client_->wait_for_service();
auto result_future = client_->async_send_request(request);
if (rclcpp::spin_until_future_complete(shared_from_this(), result_future) ==
rclcpp::FutureReturnCode::SUCCESS)
{
RCLCPP_INFO(get_logger(), "Service call completed");
}
else
{
RCLCPP_ERROR(get_logger(), "Service call failed");
}
}
private:
rclcpp::Client<nav2_msgs::srv::ManageLifecycleNodes>::SharedPtr client_;
};