#Settings
All five settings exist on both the web app and the VS Code extension, backed by different stores.
| Setting | Default | Effect |
|---|---|---|
| Default render mode | visual |
Initial geometry layer on every load. visual, collision, or both. |
| Up axis | +Z |
World up axis used by the camera and ground grid. +X / +Y / +Z. |
| Default xacro args | {} |
JSON object merged into every xacro file's xacro:arg values before expansion. Useful for permanently flipping a project-wide flag. |
| Extra package roots | [] |
Additional directories scanned for package.xml, in addition to the folder you opened. Each entry may be absolute or relative to the folder root. |
| Semantic files | [] |
SRDF or YAML files providing joint groups and named states. If empty, URDF Studio scans each discovered package's config/ directory for .srdf and initial_positions.yaml. |
#Where they live
| Host | Storage | Scope |
|---|---|---|
| Web | localStorage key urdf-studio:settings:v1 |
Per-browser-profile. |
| VS Code | urdfStudio.* keys in settings.json |
Per-workspace (or user, if you prefer). |
The web app exposes them through the ⚙ button in the topbar. Save applies on the next load — current robot is not re-rendered automatically.
#Per-robot vs. global
Settings are global (applied to every robot in the current browser-profile / workspace). Pose and bookmarks are per-document.
#Examples
Treat every xacro file as if arm_id=fp3 is set:
// VS Code settings.json
"urdfStudio.defaultXacroArgs": { "arm_id": "fp3" }
// Web — Settings → Default xacro args
{
"arm_id": "fp3"
}
Always start in collision view (useful when authoring collision meshes):
"urdfStudio.defaultRenderMode": "collision"
Add a workspace outside the current folder:
"urdfStudio.packageRoots": [
"/opt/ros/humble/share",
"~/ros2_ws/src"
]