Skip to content

Repository files navigation

map-studio · 地图可视化编辑工具

Tauri v2 + React + Vite + bun 的地图编辑器,双模式:

2D 栅格模式

  • 可视化 map.yaml / map.pgm(黑白灰占用栅格,滚轮缩放 / 右键拖拽平移)
  • 调整地图:擦除/补画格点,一键清除连通噪块(建图残留的临时元素)
  • 打标签:在地图上标记货架位、目标点、充电位等,拖动/改字/变色,存成 labels.json
  • 保存回导航兼容的 map.pgm + map.yaml(保持 origin/resolution 不变)

3D 点云模式(PCD)

  • 加载 .pcd 点云(支持 ascii / binary / binary_compressed,含强度字段),Three.js/WebGL 渲染,按 Z 高度/强度/白色着色,旋转缩放平移(右键平移,滚轮缩放)。 若点云朝向不对(部分数据源坐标轴方向不同),点工具栏 X反转 / Y反转 / Z反转 一键镜像对应轴(Z 反转即高度反向),保存时写回修正后的数据
  • 编辑
    • 擦除/恢复:笔刷刷掉或恢复笔刷球内的点(支持撤销重做 Ctrl+Z / Ctrl+Y)
    • 删除蒙版:工具栏「蒙版」展开后,勾选 X/Y/Z 轴并填 min~max 范围,场景中出现半透明蓝色限制盒;蒙版开启时擦除/恢复变为竖直擦除柱(只删盒内、光标水平半径内的点),配合「删除蒙版内」可一键删除盒内所有点(例如:圈住建图时走动的人、车身边缘水平噪层等)
    • Z 过滤:只显示指定高度范围的点(显示层过滤,不删点)
    • 框删:屏幕拉框删除框内所有点(从当前视角投影选取)
    • 标签:点击点云放置 3D 标签(精灵文本,可拖动/双击改字/Delete 删除/换色,存成 pcd_labels.json
  • 保存:写回 .pcd,保留原始编码格式(ascii/binary/binary_compressed)和强度字段

环境准备(一次性)

Ubuntu 需要 WebKit2GTK 等系统库:

sudo apt update
sudo apt install -y libwebkit2gtk-4.1-dev build-essential curl wget file \
  libxdo-dev libssl-dev libayatana-appindicator3-dev librsvg2-dev

Rust(≥1.77)、bun 已装则跳过。装 tauri-cli(可选,用于 tauri dev):

cargo install tauri-cli --locked

运行(开发模式)

bun run tauri dev

首次会编译 Rust 后端(几分钟)。弹窗打开后:

  1. 顶部切换 2D栅格 / 3D点云 模式。

2D 栅格模式

  1. 打开地图… → 系统文件对话框选 map.yaml,地图显示在画布(黑=占用/白=空闲/灰=未知)
  2. 选工具编辑:
    • 橡皮:把占用格刷成空闲(左键拖动)
    • 画笔:把空闲格刷成占用
    • 清噪块:点击一个黑色连通块,整个连通区域清成空闲(去掉建图残留的临时元素)
    • 标签:点击地图加标签(弹窗输入文字)
    • 选择:点标签可拖动,双击改文字,Delete 删除,右下角色块改颜色
  3. 笔刷滑块调橡皮/画笔粗细
  4. 保存:写回当前路径(map.pgm+map.yaml);另存地图为… 选新路径。 标签用 打开标签…/另存标签为…/保存labels.json

快捷键:Ctrl+Z 撤销,Ctrl+Y 重做;滚轮缩放,右键/Shift 拖拽平移。

3D 点云模式

  1. 打开PCD….pcd 文件,点云自动居中显示(按 Z 高度着色,左下网格为地面参考)
  2. 选工具编辑:
    • 浏览:左键旋转,右键平移,滚轮缩放
    • 擦除:左键拖动,把笔刷圆内的点删掉(笔刷大小滑块调节)
    • 恢复:左键拖动,把之前擦除的点按圆内区域补回来
    • 删除蒙版:点「蒙版」→ 勾选轴填范围(蓝色半透明盒实时预览)→ 擦除/恢复自动变为竖直柱状(只作用于盒内)→ 或点「删除蒙版内」一键清空盒内点(删除走动的人、车体边缘噪层很好用),Ctrl+Z 可撤销
    • 框删:左键拉框,删除框内所有点(从当前视角投影)
    • 测量:点击点云依次取点(自动吸附到点),显示相邻点间 3D 距离与水平距离,Esc 或「清除测量」清空
    • 建图过程动画:点「动画」→ 打开Bag… 直接加载 ROS1 bag(纯文件解析,无需 ROS):自动列出点云话题(支持 sensor_msgs/PointCloud2livox_ros_driver2/CustomMsg),按 bag 真实时间戳回放——MID-360 逐点时间戳驱动的花瓣扫描、倍速/进度条/暂停。
      • 位姿来源(机器人标记 + 地图累积):bag 内的 /tfGPS+航向(NavSatFix+Float64 自动推轨迹,带尖峰过滤)、或外部 FAST-LIO2 位姿日志Log/mat_out.txt,按时间对齐,最准确)
      • PCD 模式可加载 PCD 位姿日志做索引/轨迹回放;打开 PCD 时会自动探测同目录的 mat_out.txt
    • 标签:点击点云上的点添加 3D 标签(自动贴在点上)
    • 选择:点标签可拖动(吸附到点云),Delete 删除;右侧列表双击改字、色块改颜色
  3. Z过滤:填 min/max 高度后点 过滤,只显示该范围内的点(不删点,随时可调回)
  4. 点大小滑块调点云渲染尺寸
  5. 保存:写回当前路径(保留原编码格式);另存PCD为… 选新路径。 标签用 打开标签…/另存标签为…/保存pcd_labels.json,含 x/y/z)

快捷键:Ctrl+Z 撤销/Ctrl+Y 重做(仅擦除/恢复/框删),Delete 删选中标签,Esc 取消框选。

生成发布版

bun run tauri build

产物在 src-tauri/target/release/bundle/

与 nav 联动(可选)

标签存成 labels.json[{id,x,y,text,color}],坐标为地图世界系米),后续可以让 nav 读取标签作为目标点,或导出点位做抓取/巡检。

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages