delete_map_archive
服务类型: map_manager/srv/SaveCompositeMap
服务名: /delete_map_archive
描述
删除 map_path 指定的已保存地图归档。该服务复用 SaveCompositeMap 的 请求和响应类型,仅删除归档目录,不清空当前运行时地图。
map_path 只能指向配置的 archive root 的直接子目录,不能指定任意文件系统路径、archive root 本身或更深层级的目录。默认 archive root 为 /opt/fftai/nav/nav-map,因此默认路径格式为 /opt/fftai/nav/nav-map/<map-id>。服务校验路径后只删除该归档目录及其内容,不删除运行时地图。
请求 (Request)
| 字段 | 类型 | 描述 |
|---|---|---|
| map_path | string | 要删除的归档目录路径;必须是配置的 archive root 的直接子目录,默认格式为 /opt/fftai/nav/nav-map/<map-id> |
| compress | bool | 复用服务类型中的接口字段;删除操作不读取其值 |
响应 (Response)
| 字段 | 类型 | 描述 |
|---|---|---|
| success | bool | 操作是否成功 |
| message | string | 结果消息或错误信息 |
| saved_path | string | 请求中的 map_path |
使用示例
以下示例使用默认 archive root /opt/fftai/nav/nav-map。部署修改 archive root 后,应将示例中的根目录替换为配置值,但 map_path 仍必须是该根目录的直接子目录。
命令行调用
Bash
ros2 service call /delete_map_archive map_manager/srv/SaveCompositeMap \
"{map_path: '/opt/fftai/nav/nav-map/office', compress: false}"
Python 示例
Python
import rclpy
from rclpy.node import Node
from map_manager.srv import SaveCompositeMap
rclpy.init()
node = Node('map_archive_deleter')
client = node.create_client(SaveCompositeMap, '/delete_map_archive')
client.wait_for_service()
request = SaveCompositeMap.Request()
request.map_path = '/opt/fftai/nav/nav-map/office'
request.compress = False
future = client.call_async(request)
rclpy.spin_until_future_complete(node, future)
print(future.result().message)
node.destroy_node()
rclpy.shutdown()
C++ 示例
C++
#include <memory>
#include <rclcpp/rclcpp.hpp>
#include <map_manager/srv/save_composite_map.hpp>
auto node = std::make_shared<rclcpp::Node>("map_archive_deleter");
auto client = node->create_client<map_manager::srv::SaveCompositeMap>(
"/delete_map_archive");
client->wait_for_service();
auto request = std::make_shared<map_manager::srv::SaveCompositeMap::Request>();
request->map_path = "/opt/fftai/nav/nav-map/office";
request->compress = false;
auto future = client->async_send_request(request);
if (rclcpp::spin_until_future_complete(node, future) ==
rclcpp::FutureReturnCode::SUCCESS) {
RCLCPP_INFO(node->get_logger(), "%s", future.get()->message.c_str());
}
相关接口
- SaveCompositeMap - 保存归档
- ClearCompositeMap - 清空运行时地图