Skip to content
Back to skills

Sensing And Mapping

ASecurity

"This skill guides users through IR-SIM LiDAR, FMCW sensing,

  • 247 stars
  • 0 votes
  • 0 copies
  • 5 views
  • Added September 8, 2026
documentationpythongoapibackend

Works with

  • api

Security analysis

A100/100

Pro scans all 6 files and shows the line behind each finding

Scanned September 8, 2026

npx -y skills add VectorSpaceLab/AREX-Skill --skill sensing-and-mapping --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Sensing And Mapping?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Sensing And Mapping
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/vectorspacelab-sensing-and-mapping/badge)](https://www.skillsdirectory.com/skills/vectorspacelab-sensing-and-mapping)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: sensing-and-mapping
description: "This skill guides users through IR-SIM LiDAR, FMCW sensing,
  field-of-view fog, and occupancy-map workflows."
disable-model-invocation: true
metadata:
  disco-role: operating
license: MIT
---

# Sensing and mapping

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.

## Route the task

1. Start with the sensor contract in [sensor-api.md](references/sensor-api.md)
   when the question is about YAML fields, `env.get_lidar_scan(id)`, arrays,
   offsets, noise, or update timing.
2. Start with [map-api.md](references/map-api.md) for image/Perlin generators,
   `resolve_obstacle_map`, `build_grid_from_generator`, `World.get_map`,
   resolution, downsampling, collision, or planner handoff.
3. Use [troubleshooting.md](references/troubleshooting.md) for installation,
   optional backends, missing map data, malformed sensor/map configuration, and
   stale readings after manual state changes.
4. Run the bundled deterministic checks from arbitrary working directories:
   `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](../scene-configuration/SKILL.md); environment lifecycle,
headless rendering, and external stepping belong to
[simulation-environments](../simulation-environments/SKILL.md); planner
selection and path algorithms belong to
[navigation-and-planning](../navigation-and-planning/SKILL.md). 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.

## Operating contracts

- **Sensor lookup:** `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()`.
- **Payload branching:** standard `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`.
- **Map handoff:** use `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](../navigation-and-planning/SKILL.md), not this
  route.

## Minimal access pattern

```python
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.

Files in this skill

  • SKILL.md3.6 KB
  • references/map-api.md8.4 KB
  • references/sensor-api.md7.9 KB
  • references/troubleshooting.md6.6 KB
  • scripts/map_smoke.py3.9 KB
  • scripts/scan_smoke.py4.2 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.