跳转到内容

SLAM定位建图模块

本页面包含了SLAM定位建图模块(Simultaneous Localization and Mapping, SLAM)包含的话题和服务的相关文档协议,以支持系统的定位建图功能。

本模块位于 orin 开发板上,http 后端监听的端口为 53175。

话题名话题描述订阅 or 发布消息类型备注通信后端
/body_drive/imu/dataimu订阅sensor_msgs::msg::Imuimuros2
/body_drive/wheel_joint_state关节状态订阅joint_msg_interface::msg::JointState关节状态ros2
/aima/hal/lidar/top/pointcloud头部激光雷达点云订阅sensor_msgs::msg::PointCloud2头部激光雷达点云ros2
/aima/hal/lidar/top/imu头部imu订阅sensor_msgs::msg::Imu头部imuros2
/ranger_base_node/odom里程计发布nav_msgs::msg::Odometry里程计ros2
/slam/mapping/odometrySLAM建图前端里程计发布nav_msgs::msg::OdometrySLAM建图前端里程计ros2
/slam/mapping/realtime_2d_map实时2D地图发布aimdk::protocol::SLAMRealtimeMappingChannel实时2D地图ros2
/slam/localization/odometrySLAM定位结果发布nav_msgs::msg::OdometrySLAM定位结果ros2
接口名接口描述请求消息类型答复消息类型备注通信后端
pb:/aimdk.protocol.SLAMMappingService/SLAMStartMapping开始建图aimdk::protocol::SLAMStartMappingRequestaimdk::protocol::SLAMStartMappingResponse启动SLAM建图模式http
pb:/aimdk.protocol.SLAMMappingService/SLAMStopMapping停止建图aimdk::protocol::SLAMStopMappingRequestaimdk::protocol::SLAMStopMappingResponse停止建图http
pb:/aimdk.protocol.SLAMMappingService/SLAMGetCurrentMappingState获取当前SLAM算法状态的接口aimdk::protocol::SLAMGetCurrentStateRequestaimdk::protocol::SLAMGetCurrentStateResponse用于支持MM状态同步http
pb:/aimdk.protocol.SLAMMappingService/SLAMStartIncrementalMapping开始增量建图aimdk::protocol::SLAMStartIncrementalMappingRequestaimdk::protocol::SLAMStartIncrementalMappingResponse开始增量建图http
pb:/aimdk.protocol.SLAMRelocalizationService/SLAMStartNormalRelocalization启动常规重定位aimdk::protocol::SLAMStartNormalRelocRequestaimdk::protocol::SLAMStartNormalRelocResponse启动常规重定位http
pb:/aimdk.protocol.SLAMRelocalizationService/SLAMStopNormalRelocalization停止常规重定位aimdk::protocol::SLAMStopNormalRelocRequestaimdk::protocol::SLAMStopNormalRelocResponse停止常规重定位http
pb:/aimdk.protocol.SLAMRelocalizationService/SLAMGetCurrentRelocalizationState获取当前SLAM算法状态的接口aimdk::protocol::SLAMGetCurrentStateRequestaimdk::protocol::SLAMGetCurrentStateResponse获取当前SLAM算法状态的接口http
pb:/aimdk.protocol.SLAMQRRecordService/SLAMGetCurrentQRRecordState获取当前SLAM算法状态的接口aimdk::protocol::SLAMGetCurrentStateRequestaimdk::protocol::SLAMGetCurrentStateResponse获取当前SLAM算法状态的接口http
pb:/aimdk.protocol.SLAMLocalizationService/SLAMStartLocalization启动定位请求aimdk::protocol::SLAMStartLocalizationRequestaimdk::protocol::SLAMStartLocalizationResponse启动定位请求http
pb:/aimdk.protocol.SLAMLocalizationService/SLAMStopLocalization停止定位请求aimdk::protocol::SLAMStopLocalizationRequestaimdk::protocol::SLAMStopLocalizationResponse停止定位请求http
pb:/aimdk.protocol.SLAMLocalizationService/SLAMGetCurrentLocalizationState获取当前SLAM算法状态的接口aimdk::protocol::SLAMGetCurrentStateRequestaimdk::protocol::SLAMGetCurrentStateResponse获取当前SLAM算法状态的接口http
pb:/aimdk.protocol.SLAMLocalizationService/SLAMUpdateOccupancyMap发起更新栅格地图请求aimdk::protocol::SLAMUpdateOccupancyMapRequestaimdk::protocol::SLAMUpdateOccupancyMapResponse发起更新栅格地图请求http
pb:/aimdk.protocol.SLAMLocalizationService/SLAMToogleUpdateOccupancyMap开启或关闭实时更新栅格地图功能aimdk::protocol::SLAMToggleUpdateOccupancyMapRequestaimdk::protocol::SLAMToggleUpdateOccupancyMapResponse开启或关闭实时更新栅格地图功能http
pb:/aimdk.protocol.SLAMLocalizationService/SLAMCheckUpdateOccupancyMapState查询实时更新栅格地图功能的状态是开启还是关闭aimdk::protocol::SLAMOccupancyMapStateRequestaimdk::protocol::SLAMOccupancyMapStateResponse查询实时更新栅格地图功能的状态是开启还是关闭http

aimdk::protocol::SLAMRealtimeMappingChannel

Section titled “aimdk::protocol::SLAMRealtimeMappingChannel”
FieldTypeDescription
headeraimdk::protocol::Header消息头
occupancy_gridaimdk::protocol::OccupancyGrid实时占用栅格地图数据
map_update_timeaimdk::protocol::Timestamp地图更新时间
FieldTypeDescription
headeraimdk::protocol::Header消息头
poseaimdk::protocol::SE3Pose机器人在地图坐标系下的位姿
covariancedouble[]位姿协方差矩阵(6x6)
qualityfloat定位质量评分,范围[0,1]
FieldTypeDescription
headeraimdk::protocol::Header消息头
mapaimdk::protocol::OccupancyGrid占用栅格地图数据
map_iduint64地图唯一标识
FieldTypeDescription
headeraimdk::protocol::Header消息头
modeaimdk::protocol::SlamModeSLAM运行模式
statusaimdk::protocol::SlamStatusSLAM运行状态
map_iduint64当前使用的地图ID
localization_qualityfloat定位质量,范围[0,1]
NameNumberDescription
SlamMode_UNKNOWN0未知模式
SlamMode_MAPPING1建图模式
SlamMode_LOCALIZATION2定位模式
SlamMode_IDLE3空闲模式
NameNumberDescription
SlamStatus_UNKNOWN0未知状态
SlamStatus_INITIALIZING1初始化中
SlamStatus_RUNNING2正常运行
SlamStatus_LOST3定位丢失
SlamStatus_ERROR4错误状态
FieldTypeDescription
headeraimdk::protocol::RequestHeaderRPC 请求的 header
map_namestring新建地图的名称
resolutionfloat地图分辨率,单位:米/像素,默认0.05
FieldTypeDescription
headeraimdk::protocol::ResponseHeaderRPC 响应的 header
resultbool操作结果
messagestring结果描述信息
FieldTypeDescription
headeraimdk::protocol::RequestHeaderRPC 请求的 header
save_mapbool是否保存当前地图
FieldTypeDescription
headeraimdk::protocol::ResponseHeaderRPC 响应的 header
resultbool操作结果
messagestring结果描述信息

aimdk::protocol::SLAMGetCurrentStateRequest

Section titled “aimdk::protocol::SLAMGetCurrentStateRequest”
FieldTypeDescription
headeraimdk::protocol::RequestHeaderRPC 请求的 header

aimdk::protocol::SLAMGetCurrentStateResponse

Section titled “aimdk::protocol::SLAMGetCurrentStateResponse”
FieldTypeDescription
headeraimdk::protocol::ResponseHeaderRPC 响应的 header
stateaimdk::protocol::SlamStatus当前SLAM状态
messagestring状态描述信息

aimdk::protocol::SLAMStartIncrementalMappingRequest

Section titled “aimdk::protocol::SLAMStartIncrementalMappingRequest”
FieldTypeDescription
headeraimdk::protocol::RequestHeaderRPC 请求的 header
base_map_iduint64基础地图ID
new_map_namestring新增量地图名称

aimdk::protocol::SLAMStartIncrementalMappingResponse

Section titled “aimdk::protocol::SLAMStartIncrementalMappingResponse”
FieldTypeDescription
headeraimdk::protocol::ResponseHeaderRPC 响应的 header
resultbool操作结果
messagestring结果描述信息

aimdk::protocol::SLAMStartNormalRelocRequest

Section titled “aimdk::protocol::SLAMStartNormalRelocRequest”
FieldTypeDescription
headeraimdk::protocol::RequestHeaderRPC 请求的 header
map_iduint64用于重定位的地图ID

aimdk::protocol::SLAMStartNormalRelocResponse

Section titled “aimdk::protocol::SLAMStartNormalRelocResponse”
FieldTypeDescription
headeraimdk::protocol::ResponseHeaderRPC 响应的 header
resultbool操作结果
messagestring结果描述信息

aimdk::protocol::SLAMStopNormalRelocRequest

Section titled “aimdk::protocol::SLAMStopNormalRelocRequest”
FieldTypeDescription
headeraimdk::protocol::RequestHeaderRPC 请求的 header

aimdk::protocol::SLAMStopNormalRelocResponse

Section titled “aimdk::protocol::SLAMStopNormalRelocResponse”
FieldTypeDescription
headeraimdk::protocol::ResponseHeaderRPC 响应的 header
resultbool操作结果
messagestring结果描述信息

aimdk::protocol::SLAMStartLocalizationRequest

Section titled “aimdk::protocol::SLAMStartLocalizationRequest”
FieldTypeDescription
headeraimdk::protocol::RequestHeaderRPC 请求的 header
map_iduint64用于定位的地图ID
initial_poseaimdk::protocol::SE3Pose可选的初始位姿

aimdk::protocol::SLAMStartLocalizationResponse

Section titled “aimdk::protocol::SLAMStartLocalizationResponse”
FieldTypeDescription
headeraimdk::protocol::ResponseHeaderRPC 响应的 header
resultbool操作结果
messagestring结果描述信息

aimdk::protocol::SLAMStopLocalizationRequest

Section titled “aimdk::protocol::SLAMStopLocalizationRequest”
FieldTypeDescription
headeraimdk::protocol::RequestHeaderRPC 请求的 header

aimdk::protocol::SLAMStopLocalizationResponse

Section titled “aimdk::protocol::SLAMStopLocalizationResponse”
FieldTypeDescription
headeraimdk::protocol::ResponseHeaderRPC 响应的 header
resultbool操作结果
messagestring结果描述信息

aimdk::protocol::SLAMUpdateOccupancyMapRequest

Section titled “aimdk::protocol::SLAMUpdateOccupancyMapRequest”
FieldTypeDescription
headeraimdk::protocol::RequestHeaderRPC 请求的 header
map_iduint64要更新的地图ID

aimdk::protocol::SLAMUpdateOccupancyMapResponse

Section titled “aimdk::protocol::SLAMUpdateOccupancyMapResponse”
FieldTypeDescription
headeraimdk::protocol::ResponseHeaderRPC 响应的 header
resultbool操作结果
messagestring结果描述信息

aimdk::protocol::SLAMToggleUpdateOccupancyMapRequest

Section titled “aimdk::protocol::SLAMToggleUpdateOccupancyMapRequest”
FieldTypeDescription
headeraimdk::protocol::RequestHeaderRPC 请求的 header
enablebool是否开启实时更新

aimdk::protocol::SLAMToggleUpdateOccupancyMapResponse

Section titled “aimdk::protocol::SLAMToggleUpdateOccupancyMapResponse”
FieldTypeDescription
headeraimdk::protocol::ResponseHeaderRPC 响应的 header
resultbool操作结果
messagestring结果描述信息

aimdk::protocol::SLAMOccupancyMapStateRequest

Section titled “aimdk::protocol::SLAMOccupancyMapStateRequest”
FieldTypeDescription
headeraimdk::protocol::RequestHeaderRPC 请求的 header

aimdk::protocol::SLAMOccupancyMapStateResponse

Section titled “aimdk::protocol::SLAMOccupancyMapStateResponse”
FieldTypeDescription
headeraimdk::protocol::ResponseHeaderRPC 响应的 header
is_enabledbool实时更新功能是否开启
messagestring状态描述信息
#!/bin/bash
#curl使用示例(以 ORIN ip: 192.168.100.110 为例):
curl -i -H 'content-type:application/json' \
-H 'timeout: 60000' \
-X POST 'http://192.168.100.110:53175/rpc/aimdk.protocol.SLAMMappingService/SLAMStartMapping' \
-d '{
"header": {
"timestamp": {
"seconds": 0,
"nanos": 0,
"ms_since_epoch": 0
},
"control_source": 0
},
"map_name": "office_map_001",
"resolution": 0.05
}'
#!/bin/bash
#curl使用示例(以 ORIN ip: 192.168.100.110 为例):
curl -i -H 'content-type:application/json' \
-H 'timeout: 60000' \
-X POST 'http://192.168.100.110:53175/rpc/aimdk.protocol.SLAMMappingService/SLAMStopMapping' \
-d '{
"header": {
"timestamp": {
"seconds": 0,
"nanos": 0,
"ms_since_epoch": 0
},
"control_source": 0
},
"save_map": true
}'
#!/bin/bash
#curl使用示例(以 ORIN ip: 192.168.100.110 为例):
curl -i -H 'content-type:application/json' \
-H 'timeout: 60000' \
-X POST 'http://192.168.100.110:53175/rpc/aimdk.protocol.SLAMLocalizationService/SLAMStartLocalization' \
-d '{
"header": {
"timestamp": {
"seconds": 0,
"nanos": 0,
"ms_since_epoch": 0
},
"control_source": 0
},
"map_id": 1,
"initial_pose": {
"position": {
"x": 0.0,
"y": 0.0,
"z": 0.0
},
"orientation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
}
}
}'
#!/bin/bash
#curl使用示例(以 ORIN ip: 192.168.100.110 为例):
curl -i -H 'content-type:application/json' \
-H 'timeout: 60000' \
-X POST 'http://192.168.100.110:53175/rpc/aimdk.protocol.SLAMRelocalizationService/SLAMStartNormalRelocalization' \
-d '{
"header": {
"timestamp": {
"seconds": 0,
"nanos": 0,
"ms_since_epoch": 0
},
"control_source": 0
},
"map_id": 1
}'
#!/bin/bash
#curl使用示例(以 ORIN ip: 192.168.100.110 为例):
curl -i -H 'content-type:application/json' \
-H 'timeout: 60000' \
-X POST 'http://192.168.100.110:53175/rpc/aimdk.protocol.SLAMMappingService/SLAMGetCurrentMappingState' \
-d '{
"header": {
"timestamp": {
"seconds": 0,
"nanos": 0,
"ms_since_epoch": 0
},
"control_source": 0
}
}'
#!/bin/bash
#curl使用示例(以 ORIN ip: 192.168.100.110 为例):
curl -i -H 'content-type:application/json' \
-H 'timeout: 60000' \
-X POST 'http://192.168.100.110:53175/rpc/aimdk.protocol.SLAMLocalizationService/SLAMGetCurrentLocalizationState' \
-d '{
"header": {
"timestamp": {
"seconds": 0,
"nanos": 0,
"ms_since_epoch": 0
},
"control_source": 0
}
}'
#!/bin/bash
#curl使用示例(以 ORIN ip: 192.168.100.110 为例):
curl -i -H 'content-type:application/json' \
-H 'timeout: 60000' \
-X POST 'http://192.168.100.110:53175/rpc/aimdk.protocol.SLAMLocalizationService/SLAMUpdateOccupancyMap' \
-d '{
"header": {
"timestamp": {
"seconds": 0,
"nanos": 0,
"ms_since_epoch": 0
},
"control_source": 0
},
"map_id": 1
}'
#!/bin/bash
#curl使用示例(以 ORIN ip: 192.168.100.110 为例):
curl -i -H 'content-type:application/json' \
-H 'timeout: 60000' \
-X POST 'http://192.168.100.110:53175/rpc/aimdk.protocol.SLAMLocalizationService/SLAMToogleUpdateOccupancyMap' \
-d '{
"header": {
"timestamp": {
"seconds": 0,
"nanos": 0,
"ms_since_epoch": 0
},
"control_source": 0
},
"enable": true
}'
#!/bin/bash
#curl使用示例(以 ORIN ip: 192.168.100.110 为例):
curl -i -H 'content-type:application/json' \
-H 'timeout: 60000' \
-X POST 'http://192.168.100.110:53175/rpc/aimdk.protocol.SLAMLocalizationService/SLAMCheckUpdateOccupancyMapState' \
-d '{
"header": {
"timestamp": {
"seconds": 0,
"nanos": 0,
"ms_since_epoch": 0
},
"control_source": 0
}
}'
#!/bin/bash
#curl使用示例(以 ORIN ip: 192.168.100.110 为例):
curl -i -H 'content-type:application/json' \
-H 'timeout: 60000' \
-X POST 'http://192.168.100.110:53175/rpc/aimdk.protocol.SLAMMappingService/SLAMStartIncrementalMapping' \
-d '{
"header": {
"timestamp": {
"seconds": 0,
"nanos": 0,
"ms_since_epoch": 0
},
"control_source": 0
},
"base_map_id": 1,
"new_map_name": "incremental_map_001"
}'