协作头脑风暴
brainstorming
在实现前澄清需求、探索设计选择,并形成清晰的开发方向。
sensing-and-mapping【开发与工程】This skill guides users through IR-SIM LiDAR, FMCW sensing, field-of-view fog, and occupancy-map workflows.
独立 GitHub 快照 · 自动分类 · 以原作者文档为准
Use this route when a task involves lidar2d, fmcw_lidar2d, scan payloads,
radial velocity, FOV sensing, fog-of-map exploration, image/Perlin occupancy
grids, or a map passed to a planner. The package target is ir-sim==2.10.2
with Python 3.10 or newer.
env.get_lidar_scan(id), arrays,
offsets, noise, or update timing.resolve_obstacle_map, build_grid_from_generator, World.get_map,
resolution, downsampling, collision, or planner handoff.python scripts/scan_smoke.py --help, then
python scripts/scan_smoke.py --sensor-type lidar2d (or fmcw_lidar2d),
and python scripts/map_smoke.py. They create only temporary tiny fixtures.A scan belongs to a robot index, not a sensor index: env.get_lidar_scan(id)
selects env.robot_list[id]. If one object has both sensor classes, inspect
env.robot_list[id].sensors and call the selected sensor's get_scan() rather
than assuming the convenience getter selected the desired class. The first
LiDAR-like sensor is also exposed as obj.lidar by the object layer.
Scene/object YAML and shapes belong to scene-configuration; environment lifecycle, headless rendering, and external stepping belong to simulation-environments; planner selection and path algorithms belong to navigation-and-planning. The package must be installed/importable before using any route; do not depend on an original checkout, source example, private environment path, or bundled large map asset at runtime.
env.get_lidar_scan(id=0) takes a robot-list index, not a
sensor index. If one robot carries both classes, select the instance from
env.robot_list[id].sensors by sensor.sensor_type and call its get_scan().lidar2d returns ranges plus Cartesian
velocity and no valid/radial_velocity; fmcw_lidar2d returns
ranges, boolean valid, and scalar radial_velocity, and removes
velocity. Both keep the scalar angle/timing metadata and
intensities=None.env.get_map(resolution=...) once for a planner and
inspect grid, grid_resolution, and world_offset before choosing planner
parameters. The planner constructor and planning() contract belong to
navigation-and-planning, not this
route.scan = env.get_lidar_scan(id=0)
ranges = scan["ranges"]
points = env.robot_list[0].get_lidar_points() # local 2 x N, or None
Use scan["valid"] and scan["radial_velocity"] only for an FMCW scan. A
standard scan instead exposes a Cartesian velocity array (usually zeros)
and has no validity mask or radial-velocity key. Full keys, timing semantics,
map construction, and collision details are in the linked references.