当前代码快照:pln-02-snapshot-2026.09.09。
3D-V1 默认为 3D-V1-r2-stable;2A-V1-r3 与语义 2A-V3 仍是研究版,
具体准入边界、依赖还原方式和未随 Git 分发的数据见版本说明。
独立研究主线 STL-V0:语义规则、可行空间集合与路线轨迹联合求解 已建立,当前为离线研究原型。 最新 r2 实验报告 记录构图降耗与曲线细分结果。
中文启动、停止和功能说明见 USAGE.md。 2026-09-14 的 源码交付清单 新增 r3 静态服务、STL-V0-r2 与 3YD-V1 语义双地图静态研究版;研究版不替代生产默认,私有地图与实验缓存不随 Git 分发。 Arena4 单次录制、指标计算和绘图见 docs/ARENA4_EVALUATION_USAGE.md。 超大地图 A2B 课题的 P0 冻结口径见 docs/P0_EVALUATION_DEFINITION.md。
Product workspace for PUDU-specific robot description, Nav2 integration,
plugins, coverage planning, cleaning behavior trees and navigation tests.
Related third-party workspaces are grouped under external/ while remaining
separate colcon overlays.
external/nav2_reference_ws: upstream Nav2 and TurtleBot3 simulation.external/linorobot_sim_ws: Linorobot2 Gazebo/SLAM/Nav2 integration.external/exploration_reference_ws: pinned ROS 2 frontier exploration.external/scurm_sentry_ws: pinned optional SCURM/FAST-LIO/ICP underlay.external/arena4_ws: optional Arena simulation/evaluation environment; independently built and runtime-isolated from the PUDU overlay.src: PUDU-owned packages.
stack_paths.bash is the single path registry. Legacy /home/robot/*_ws
locations remain compatibility symlinks, so existing commands and old colcon
artifacts continue to work. external/COLCON_IGNORE keeps the PUDU top-level
build from discovering external packages twice.
cd /home/robot/pudu_robot_ws
./build_all.bashFor a relocation or a full CMake reconfigure, run
PUDU_CLEAN_CMAKE_CACHE=true ./build_all.bash. For PUDU-only incremental
changes, source setup_underlays.bash && colcon build --symlink-install
remains available.
If Gazebo is not installed system-wide, install the required simulator and ROS plugins into the existing local dependency root (no sudo required):
./install_gazebo_local.shStart Gazebo, Nav2 with the existing playground map, and the navigation RViz
view in the background:
./start_linorobot.shStart Gazebo, online SLAM, and the mapping RViz view instead:
./start_linorobot.sh --slamStart Gazebo, SLAM/Nav2/RViz, and autonomous frontier exploration:
./start_linorobot.sh --exploreThe simulation uses ROS domain 42 by default to avoid interference from
unrelated ROS nodes. In every additional terminal, load the matching runtime
environment before using ros2 commands:
source /home/robot/pudu_robot_ws/setup_linorobot_runtime.bashStop all processes started by that command:
./stop_linorobot.shThe default base is 2wd. Override it or pass Gazebo launch arguments when
needed, for example:
LINOROBOT2_BASE=4wd ./start_linorobot.sh spawn_x:=1.0 spawn_y:=2.0Build or reproduce the pinned upstream workspace:
./build_scurm_reference.shRun the SCURM-inspired PUDU navigation profile in the existing simulation:
./start_linorobot.sh --scurm-navRun the full 3D SCURM localization path in Gazebo (ICP + FAST-LIO, no AMCL):
./start_linorobot.sh --scurm-lioRun the same SCURM pipeline with an isolated 1.5x Gazebo time profile:
./start_linorobot.sh --scurm-lio --fast-simThe normal command remains at the source world's default speed and 360x16 lidar sampling. The fast profile changes only the running Gazebo process to a 2 ms physics step, a 750 Hz update target, and a 120x16 lidar profile; ROS nodes continue to use simulation time.
Optionally add known-map full-area coverage without changing the normal SCURM startup path:
./start_linorobot.sh --scurm-lio --coverage
# Or combine both independent options:
./start_linorobot.sh --scurm-lio --coverage --fast-simThe coverage option now builds a plan from the robot-reachable known-free
component of /map automatically. After inspecting the full-map route, run:
source ./setup_linorobot_runtime.bash
ros2 service call /coverage/start std_srvs/srv/Trigger '{}'Using RViz Publish Point plus /coverage/close_area remains available when
only a manually selected sub-area should be covered.
The optional planner decomposes free space around obstacles, follows continuous
boustrophedon lanes through Nav2, records actual covered cells from TF, and
replans residual missed regions. See
src/pudu_coverage_planner/README.md for
controls, topics, and tuning.
Run FAST-LIO 3D mapping and save the PCD through /map_save:
./start_linorobot.sh --scurm-lio-map \
map_output_path:=/tmp/scurm_playground_map.pcdThis selects Theta*, Constrained Smoother, differential-drive MPPI, and the
PUDU adaptive backup behavior. The normal ./start_linorobot.sh path is
unchanged. Check or start the optional FAST-LIO/Livox hardware pipeline with:
./start_scurm.sh --check
./start_scurm.sh --mapping
./start_scurm.sh --localization map_path:=/absolute/path/map.pcdSee SCURM_INTEGRATION.md for boundaries, verified features, and hardware prerequisites.
Arena4 remains an independent ROS overlay because it carries 498 source
packages, its own Python environment, Gazebo Harmonic, Fast DDS, and ROS domain
1. It is nevertheless managed from this project root:
./start_arena4.sh --check
./start_arena4.sh # standard GUI
./start_arena4.sh --scenario # reproducible task setup
./start_arena4.sh --headless --scenario
./stop_arena4.shUse ./build_arena4.bash for an isolated Arena rebuild and source
setup_arena4_runtime.bash in an additional terminal for Arena ROS commands.
The existing PUDU build and Linorobot/SCURM startup paths are unchanged.