跳到正文
cccskills
免费在 GitHub 公开

map-waypoints

Explores a CARLA map's road network through the Map/Waypoint API — a natural-language rundown of the whole map ("give me the topology"), drawing the topology to confirm the modelled map matches the visible one, enumerating junctions to resolve phrases like "the 4-way junction in the middle", nearest-waypoint lane facts, and next/previous lane navigation. Use when the user asks about the map's layout, lanes, junctions, topology, or to locate/navigate specific map elements.

中文简介正在准备中。当前显示原文说明。

查看安装方法

包含的文件(5)

  • SKILL.md6.6 KB
  • references/waypoints.md4.1 KB
  • scripts/check_env.sh2.1 KB
  • scripts/env.sh1.1 KB
  • scripts/waypoints.py13.3 KB

SKILL.md(原文)

安装前可以查看交给 AI 代理的指令内容。

Explore a CARLA map

Paths. scripts/… and references/… below are relative to the directory holding this SKILL.md. Your working directory is the user's project, not that directory, so prefix them with its absolute path or the command is not found.

Query and visualise the road network of the loaded map. Three headline uses:

  1. Rundown — summary turns the map into stats and a one-paragraph description ("a dense, city-like map … mostly 2-lane roads … 12 junctions").
  2. Show the topology — topology --draw overlays the modelled road graph so you can confirm it matches the map you see rendered.
  3. Resolve a described element — junctions lists every junction with its centre, arm count, distance-to-map-centre and bearing, so a phrase like "the 4-way junction in the middle" resolves to a specific junction id.

Plus per-point queries: waypoint (lane facts) and navigate (next/previous).

How natural language maps to elements

This skill emits structured data; the agent does the matching (like the weather skill). "The 4-way junction in the middle" → junctions --arms 4, then pick the smallest dist ... of centre. "The northern junction" → the one whose bearing is N. Draw the chosen one with junctions --arms 4 --draw (or by id) to confirm. See references/waypoints.md for the vocabulary (centre/near/far, bearings, "biggest" = size).

Instructions

Progress:
- [ ] Step 1: Check prerequisites (bash scripts/check_env.sh), clear FAILs
- [ ] Step 2: Rundown the map (summary) if asked about layout
- [ ] Step 3: For a described element, enumerate (junctions) then filter to one
- [ ] Step 4: Draw it (--draw) to confirm modelled == visible; navigate if needed

Commands need CARLA_HOST/CARLA_PORT from scripts/env.sh. Negative coordinates: pass --at with an = (e.g. --at=-24,-57,0.6) so the leading minus isn't parsed as a flag; the space form only works for all-positive coords.

Step 1: Check prerequisites

bash scripts/check_env.sh

Step 2-4: Explore

source scripts/env.sh

# a rundown of the map
python3 scripts/waypoints.py summary

# draw the whole road topology to compare with the visible map
python3 scripts/waypoints.py topology --draw --life 180

# every junction; or just the four-way ones, nearest the centre first
python3 scripts/waypoints.py junctions
python3 scripts/waypoints.py junctions --arms 4
python3 scripts/waypoints.py junctions --arms 4 --draw     # highlight + label them

# lane facts at a point, and a forward walk along the lane
python3 scripts/waypoints.py waypoint --at 30,20,0
python3 scripts/waypoints.py navigate --at 30,20,0 --dist 2 --steps 30 --draw

On CARLA 0.10.0 (the UE5 line: 5.5 and 5.8)

Landmark.waypoint is always None on 0.10.0. Measured on Town10HD_Opt: 68 landmarks, 68 of them with waypoint is None. Every other landmark field populates normally (id, name, type, road_id, s, t, distance, orientation, transform, country, unit, value, sub_type, text, h_offset, z_offset, height, width, pitch, roll, is_dynamic, get_lane_validities).

So any code shaped landmark.waypoint.transform or landmark.waypoint.lane_id raises AttributeError: 'NoneType' there. Get the road position from the landmark itself instead — map.get_waypoint_xodr( landmark.road_id, lane_id, landmark.s), or map.get_waypoint( landmark.transform.location) when you only need the nearest lane.

get_all_landmarks, get_all_landmarks_of_type, get_all_landmarks_from_id and get_landmark_group all work on both versions. The rest of the Map/Waypoint API this skill uses — get_topology, generate_waypoints, get_waypoint, get_spawn_points, get_crosswalks — is unchanged.

Examples

Example 1: describe the map

User says: "give me a rundown of the topology"

summary. Relay the RUNDOWN paragraph (extent, road/lane counts, dominant lane count, junction breakdown, density).

Example 2: confirm the model matches what's rendered

User says: "show me the topology so I can check the map"

topology --draw on a rendered server; the green arrows trace every road segment — they should sit on the visible roads.

Example 3: resolve a described junction

User says: "highlight the 4-way junction in the middle"

junctions --arms 4 → pick the row with the smallest "of centre" distance → note its id → junctions --arms 4 --draw (or read its centre and debug-draw box there). Confirm the label lands on the central crossroads.

Example 4: navigate a lane

User says: "follow the lane forward from (30,20) for 60 m"

navigate --at 30,20,0 --dist 2 --steps 30 --draw.

Troubleshooting

Problem: summary is slow on a large map Cause: Town11/12/13 have huge road networks; stats sample every 3 m. Solution: expected; it still completes. Increase STAT_STEP in the script for a faster, coarser pass.

Problem: drawn topology/junctions not visible Cause: headless -nullrhi server, or the spectator is far away. Solution: use a rendered server (see debug-draw) and move to the map centre.

Problem: a "junction" has an odd arm count Cause: arms are counted as distinct entry road ids — merges/ramps can skew it. Solution: treat arm count as approximate; confirm visually with --draw.

Problem: waypoint --at says no driving lane Cause: the point is off-road or on a non-driving lane. Solution: move the point onto a road; the query projects to the nearest driving lane within range.

Outputs

Text reports (rundown, junction list, lane facts, navigation path) and optional world.debug overlays. No file, no world change.

Detail (the Map/Waypoint/Junction API, arm counting, bearings/centre semantics, lane topology) in references/waypoints.md.

评价

还没有评价。欢迎分享你的使用感受。

评论

无需登录即可发表。欢迎分享使用感受、提问,或说明在哪些环境下无法运行。

还没有评论。来写第一条吧。

提交后会立即公开。请勿填写邮箱、电话等个人信息。URL 最多 2 个。

0 / 1000 字

此表单受 reCAPTCHA 保护,适用 Google 的隐私权政策和服务条款。

同一仓库的技能

Adds a new ROS 2 message type to CARLA's native ROS 2 interface — the hand-written POD struct under LibCarla/source/carla/ros2/types/msg, its Fast-CDR serialize/deserialize pair, the RIHS01 type hash computed in Docker, the CdrTopicInfo registration and the type-hash test. Use when the user asks to "add a ROS message type", "support sensor_msgs/X in CARLA", "add a carla_msgs type", "why is my type hash warning appearing", or needs a message CARLA does not publish yet. There is no IDL codegen — every step is manual.

中文简介正在准备中。当前显示原文说明。

carla-simulator/carla-agentic-tools42026年9月12日 更新

Adds a new topic to CARLA's native ROS 2 interface — a publisher (BasePublisher + PublisherImpl, topic suffix, QoS, registration in ROS2::GetOrCreateSensor, a ProcessDataFrom* entry point and its call site in the UE4 plugin) or a subscriber that lets ROS drive an actor. Also covers adding a middleware (RMW) behind IPublisherMiddleware. Use when the user asks to "publish X to ROS from CARLA", "add a ROS topic/publisher/subscriber", "make the obstacle/lane-invasion sensor publish", "add odometry to ROS", or "add another RMW".

中文简介正在准备中。当前显示原文说明。

carla-simulator/carla-agentic-tools42026年9月12日 更新

Reads and summarises ScenarioRunner output — the criteria pass/fail tables from --output/--file, the machine-readable --json and --junit result files, and the criteria JSON written alongside a --record recording — and runs the metrics module (metrics_manager.py) to compute custom measurements over a recorded run offline, without the simulator. Use when the user asks "did the scenario pass", "why did it fail", "summarise these results", "compare these runs", or wants distance/speed/lane metrics from a recording.

中文简介正在准备中。当前显示原文说明。

carla-simulator/carla-agentic-tools42026年9月12日 更新

Gets actor and level 3D bounding boxes and projects them into a camera image as 2D boxes — the dataset-annotation workflow. Lists box geometry, draws 3D boxes in the world via debug, or captures one camera frame and writes an annotated PNG plus a JSON of 2D boxes for matching actors. Use when the user asks to "get bounding boxes", "draw boxes around the cars", "project boxes onto the camera", or "generate a detection dataset / annotations".

中文简介正在准备中。当前显示原文说明。

carla-simulator/carla-agentic-tools42026年9月12日 更新

Builds CARLA (branch ue4-dev, Unreal Engine 4.26) from source on Linux end-to-end — UE4 fork, the Carla server (editor C++ modules), the LibCarla Python client wheel, and content — then verifies them against a from-source server. Optionally builds the native ROS 2 interface in (ROS2=1 → --ros2, Fast-DDS/CycloneDDS/Zenoh), which is compile-time only and cannot be enabled later. Use when the user asks to "build CARLA from source", "compile CARLA ue4-dev", "set up CARLA on Ubuntu (incl. 24.04)", "build CARLA with ROS2 support", or "produce a CARLA server + client wheel". Cooking a distributable Dist/ package is a separate skill (package-carla-ue4); running the build is run-carla-server.

中文简介正在准备中。当前显示原文说明。

carla-simulator/carla-agentic-tools42026年9月12日 更新

Builds CARLA on Unreal Engine 5.8 from the ue58-dev branch using its CMake build system — configure a preset, then build the carla-unreal / carla-unreal-editor / carla-python-api-install / launch targets — with ROS 2, DLSS, RSS and cook-scope options, and the engine-side build of the CarlaUnreal UE 5.8 fork. There is no Makefile and no Util/BuildTools in this tree, so every UE4 `make` recipe is invalid here. Use when the user asks to "build CARLA UE5", "build ue58-dev", "compile CARLA with cmake", "rebuild the Python API", or hits a CMake configure or target failure.

中文简介正在准备中。当前显示原文说明。

carla-simulator/carla-agentic-tools42026年9月12日 更新

查看 carla-simulator 的全部技能

报告此技能的问题