跳到主要内容

空间地图

map 服务是算法无关的同步定位与建图(Simultaneous Localization and Mapping,SLAM)及定位输出面:把占据栅格、地图坐标系位姿、全局点云、融合里程和地图生命周期统一成 robonix/service/map/* 能力约定。导航、Scene 和可视化按能力约定消费这些结果,不依赖具体 SLAM 引擎。

能力约定 TOML 在 capabilities/service/map/;直接使用的接口定义语言(Interface Definition Language,IDL)文件位于 capabilities/lib/{map,lifecycle,common_interfaces}/

新软件包省略 Driver 条目,由框架自动注册共享的 robonix/lifecycle/driver;显式选择共享 Driver 的行为相同。未实现生命周期回调时,框架记录警告并执行空操作。

后向兼容:空间地图命名空间 Driver

robonix/service/map/driverlifecycle/Driverservice/map/driver.v1.toml 只用于仍由软件包自行维护 Driver TOML 的旧实现。目前仍可使用,但计划迁移到共享 Driver;两种 Driver 不能同时注册。详见生命周期兼容流程

接口

能力约定 ID模式参考实现传输载荷(IDL)能力约定 TOML
robonix/service/map/lifecycletopic_outROS 2 话题(瞬态本地)map/MapLifecycleservice/map/lifecycle.v1.toml
robonix/service/map/occupancy_gridtopic_outROS 2 话题nav_msgs/OccupancyGridservice/map/occupancy_grid.v1.toml
robonix/service/map/posetopic_outROS 2 话题geometry_msgs/PoseWithCovarianceStampedservice/map/pose.v1.toml
robonix/service/map/odomtopic_outROS 2 话题(未绑定外部里程计时)nav_msgs/Odometryservice/map/odom.v1.toml
robonix/service/map/pointcloudtopic_outROS 2 话题sensor_msgs/PointCloud2service/map/pointcloud.v1.toml
robonix/service/map/save_maprpcgRPC + 模型上下文协议(Model Context Protocol,MCP)map/SaveMapservice/map/save_map.v1.toml
robonix/service/map/load_maprpcgRPC + MCPmap/LoadMapservice/map/load_map.v1.toml
robonix/service/map/delete_maprpcgRPC + MCP(软件包清单漏列)map/DeleteMapservice/map/delete_map.v1.toml
robonix/service/map/reset_maprpcgRPC + MCP(软件包清单漏列)map/ResetMapservice/map/reset_map.v1.toml
robonix/service/map/switch_moderpcgRPC + MCPmap/SwitchModeservice/map/switch_mode.v1.toml
robonix/service/map/get_moderpcgRPC + MCP(软件包清单漏列)map/GetModeservice/map/get_mode.v1.toml
robonix/service/map/get_poserpcgRPC + MCP(软件包清单漏列)map/GetPoseservice/map/get_pose.v1.toml
robonix/service/map/pose_estimaterpcgRPC + MCPmap/PoseEstimateservice/map/pose_estimate.v1.toml
robonix/service/map/list_mapsrpcgRPC + MCPmap/ListMapsservice/map/list_maps.v1.toml

robonix/service/map/posemap 帧的机器人位姿(融合定位结果),与底盘原语 robonix/primitive/chassis/odom(odom 帧、未消除漂移)分工不同。

robonix/service/map/odom 是建图算法自带里程计的可选输出。部署通过 sensor_providers.odom 绑定外部底盘里程计时,参考实现会刻意跳过这条能力声明,避免同一机器人出现两个 odom 提供方;消费者应改用绑定的底盘原语,而不是等待 Mapping 重发同一数据。

输入侧由 sensor_providers 选择并绑定 lidar2dlidar3drgbdepthimuodom 角色;只解析实际绑定的 Atlas 提供方。默认 RTAB-Map 可使用二维或三维激光雷达、RGB-D 和可选外部里程计;DLIO 路径需要三维激光雷达和 IMU。

外部里程计模式下,底盘原语同时提供 nav_msgs/Odometryodom → base_link TF;当前 RTAB-Map 参考实现在传感器时间戳查询 TF,而不是再同步一份 /odom 订阅。Mapping 负责发布 map → odom。详细配置、参数表和验证命令见建图参数与里程计接入

参考实现为 service-map-rbnxalgo 默认并推荐 rtabmap,也可选择 dliofastlio2。目前只有 RTAB-Map 路径持续维护;DLIO 和 FAST-LIO2 不保证兼容其最新上游版本,当前参考实现还将 fastlio2 标记为漂移故障,仅保留用于诊断和复现。机器人部署保存完整 config/rtabmap_params.yaml,并在建图服务的 config.params_file 中引用。共享仓库模板不会在运行时隐式加载。命名地图持久化目前只支持 RTAB-Map:map_mode: mapping 建图后调用 save_map(map_id)map_mode: localization 配合已有 map_id 加载不可变副本并保持地图坐标系稳定。

输出话题的适配面覆盖各个 algo,但地图数据库、pose_estimate、模式切换和重置的实现直接调用 RTAB-Map 数据库或 ROS 服务。选择 DLIO 或 FAST-LIO2 时不能假设这些管理 RPC 可用,应按响应中的 okdetail 处理失败。

实现文档:README(部署、params_file、传感器绑定与兼容迁移) · config.spec(全部 instance 配置、类型、默认值与约束) · 实现注册

RTAB-Map 参数名、默认值和上游说明以 Parameters.h 为准。以 service 提供的 template 为起点,在 deployment 的 YAML 中增加或修改本体所需参数;运行时只读取这份 deployment 文件,不隐式叠加上游配置。

上游已知缺陷:三份软件包清单都漏列 get_modeget_posedelete_mapreset_map,但实现已同时注册其 gRPC 服务端和 MCP 工具。依赖软件包清单枚举能力的工具看不到这四项;调用方应先从 Atlas 确认实际注册状态。