- Add vision_yolo ROS2 package for YOLOv8n object detection - Add camera sensor to turtlebot3_waffle SDF model - Add ROS-GZ camera bridge to launch file (/camera/image_raw) - Speed up explore_lite: planner_frequency 0.2→1.0, min_frontier_size 0.5→0.3 - Add nav2_params_fast.yaml: max_vel 0.26→0.5 m/s - Add --vision flag to autorun.sh / run_all.sh for auto-start YOLO - Add PYTHONPATH for /workspace/.site-packages pip deps - Add yolov8n.pt auto-download on first run - Add requirements.txt and update_requirements.sh - Update .gitignore for .site-packages, build, yolov8n.pt |
||
|---|---|---|
| build | ||
| docker | ||
| install | ||
| log | ||
| logs | ||
| m-explore-ros2 | ||
| patches | ||
| src/vision_yolo | ||
| turtlebot3_simulations | ||
| .DS_Store | ||
| .env | ||
| .gitattributes | ||
| .gitignore | ||
| README.md | ||
| autorun.sh | ||
| nav2_params_fast.yaml | ||
| requirements.txt | ||
| restart_nav2_explore.sh | ||
| run_ab.sh | ||
| run_all.sh | ||
| run_all_fix.sh | ||
| run_all_stop.sh | ||
| run_office_gzweb.sh | ||
| update_requirements.sh | ||
| websocket.sdf | ||
README.md
office_gzweb
项目说明
本项目用于 Ubuntu + ROS 2 Humble 下的 TurtleBot3 办公室场景自动探索与建图,包含:
- Gazebo Sim 8 (Harmonic) 仿真
- Nav2 导航栈
- SLAM Toolbox 在线建图
- explore_lite 自动探索
- gzweb 网页端 3D 可视化
- 自动保存地图并输出路径
核心目标:一条命令启动,探索结束后自动保存地图并退出。
环境要求
- Ubuntu 22.04
- ROS 2 Humble
- Gazebo Sim Harmonic
- Node.js / npm(用于
gzweb-demo)
关键目录与文件
- 仿真与模型:
turtlebot3_simulations/turtlebot3_gazebo/ - 探索节点:
m-explore-ros2/explore/ - 一键启动脚本:
run_all.sh - 一键停止脚本:
run_all_stop.sh - A+B 启动脚本:
run_ab.sh - WebSocket 配置:
websocket.sdf - gzweb 前端:
gzweb-demo/gzweb-demo/ - 地图输出目录:
turtlebot3_simulations/turtlebot3_gazebo/map/
一键运行(推荐)
1) 启动自动流程
cd /home/xh2204/office_gzweb/vlm_office-main
./run_all.sh mapping --explore --gzweb
执行内容:
- 启动 Gazebo Sim + ROS bridge + SLAM + RViz
- 启动 gzweb websocket 与前端
- 启动 Nav2
- 启动 explore_lite 自动探索
- 自动检测探索结束(带超时)
- 自动保存地图并打印路径
- 自动停止全部进程并退出
2) 停止全部进程
./run_all_stop.sh
端口说明
5173:gzweb 前端(Vite)9002:Gazebo WebSocket
浏览器访问:
地图保存结果
默认保存到:
turtlebot3_simulations/turtlebot3_gazebo/map/office_map.yamlturtlebot3_simulations/turtlebot3_gazebo/map/office_map.pgm
run_all.sh 保存完成后会在终端打印绝对路径。
常用脚本参数
run_all.sh
./run_all.sh mapping [--explore] [--gzweb] [--no-rviz] [--world PATH]
./run_all.sh localization [--gzweb] [--no-rviz] [--map PATH] [--world PATH]
可配置环境变量:
ROBOT_MODEL(默认waffle)GZ_PARTITION(默认tb3_office_gz)SLEEP_NAV2(默认18秒)EXPLORE_WAIT_TIMEOUT(默认420秒)
关键实现(重要代码点)
1) 仿真/导航/探索总控
run_all.sh- 统一启动 A(sim)、B(nav2)、C(explore)、D(websocket)、E(gzweb 前端)
- 自动端口检查与冲突清理(
5173/9002) - 探索阶段终端计时输出(explore elapsed)
- 探索结束自动保存地图并退出
2) Gazebo + ROS 集成启动
turtlebot3_simulations/turtlebot3_gazebo/launch/turtlebot3_office_gz.launch.py- office world 启动
/clock、/scan、/odom、/tf等桥接- SLAM 与 RViz 延迟启动控制
GZ_PARTITION隔离避免串到其他 Gazebo 会话
3) gzweb 纹理与材质修复
gzweb/gzweb/include/ColladaLoader.js- 修复
RGBFormat is not defined问题 - 修复
model://纹理 URI 拼接错误(绝对 URI 不再错误拼接) - 重新构建输出到
gzweb/gzweb/dist/
- 修复
4) 模型颜色兜底
office_desk/model.sdfoffice_chair/model.sdfoffice_couch/model.sdf
为关键家具增加 fallback 材质参数,避免网页端纹理异常时完全黑白。
典型问题与处理
- gzweb 无法连接:检查
9002是否被占用,run_all.sh会自动清理并重启 - 前端打不开:检查
5173,并查看logs/run_all_*/E_gzweb_frontend.log - 纹理丢失/颜色异常:检查
ColladaLoader.js与GZ_SIM_RESOURCE_PATH - 探索长期不结束:
EXPLORE_WAIT_TIMEOUT超时后自动强制收尾并保存地图
日志位置
每次运行会生成:
logs/run_all_YYYYMMDD_HHMMSS/A_sim.logB_nav2.logC_explore.logD_websocket.logE_gzweb_frontend.log
快速命令参考
# 启动(推荐)
./run_all.sh mapping --explore --gzweb
# 强制停止全部
./run_all_stop.sh
# 仅 A+B(不含 explore/gzweb)
./run_ab.sh mapping