syntax = "proto3"; package rbk.protocol; // 仙工 SEER Robokit 3D 地图文件 0.3dsmap 的最小解析结构。 // 这里只保留转换统一地图所需字段,未声明字段由 protobuf 作为未知字段跳过。 // 地图坐标系下的三维位置,单位:米。 message Message_MapPos { // X 坐标,单位:米。 double x = 1; // Y 坐标,单位:米。 double y = 2; // Z 坐标,单位:米。 double z = 3; } // 仙工地图头信息。 message Message_MapHeader { // 地图类型,例如 2D-Map 或 3D-Map。 string map_type = 1; // 地图名称,通常对应地图文件名。 string map_name = 2; // 地图最小边界点,单位:米。 Message_MapPos min_pos = 3; // 地图最大边界点,单位:米。 Message_MapPos max_pos = 4; // 地图分辨率,单位:米。 double resolution = 5; // 地图格式版本号。 string version = 8; } // 三维浮点向量。 message Vec3f { // X 分量。 float x = 1; // Y 分量。 float y = 2; // Z 分量。 float z = 3; } // 三维整数向量。 message Vec3i { // X 分量。 int32 x = 1; // Y 分量。 int32 y = 2; // Z 分量。 int32 z = 3; } // 仙工 3D 特征地图参数。 message FeatureMapParams { // 激光测距标准差,单位:米。 float ranging_sigma = 1; // 激光测角标准差,单位:度。 float angle_sigma = 2; // 最大体素边长,单位:米。 float max_voxel_size = 3; // 八叉树最大层数。 uint32 max_layer = 4; // 平面协方差停止更新的点数阈值。 uint32 cov_fixed_pts_num = 5; // 平面停止更新的点数阈值。 uint32 plane_fixed_pts_num = 6; // 有效平面协方差最小特征值阈值。 float plane_min_eigen_value = 7; // 每层评估平面所需的最少点数。 repeated int32 each_layer_least_pts_num = 8; } // 仙工 3D 平面特征。 message FeatureMapPlane { // 平面中心点,单位:米。 Vec3f center = 1; // 平面法向量。 Vec3f normal = 2; // 平面方程 Ax + By + Cz + D = 0 中的 D。 float d = 3; // 平面特征近似半径,单位:米。 float radius = 4; // 平面协方差矩阵,按 6x6 展平。 repeated float plane_cov = 5; } // 仙工特征地图中的八叉树节点。 message OctoTree { // 对应的平面 ID。 uint32 plane_id = 1; // 子节点序列,-1 表示当前层无其他子节点。 repeated int32 child_id_list = 2; } // 同一外层体素位置下的八叉树节点集合。 message OctoTrees { // 八叉树节点列表。 repeated OctoTree octo_tree = 1; } // 仙工 3D 特征地图。 message FeatureMap3D { // 特征地图参数。 FeatureMapParams params = 1; // 平面特征列表。 repeated FeatureMapPlane planes = 2; // 每个外层体素对应的八叉树节点集合。 repeated OctoTrees octo_trees = 3; // 最外层八叉树体素坐标。 repeated Vec3i voxel_locs = 4; } // 0.3dsmap 顶层消息。 message Message_Map3D { // 地图目录或地图包内部目录名。 string map_directory = 1; // 地图头信息。 Message_MapHeader header = 2; // 普通 3D 点云点。 repeated Message_MapPos normal_pos3d_list = 3; // 3D 特征地图。 FeatureMap3D feature_map_3d = 4; }