RosTooling_Extension is a Visual Studio Code extension designed to provide a comprehensive, model-driven engineering environment for robotics development using RosTooling domain-specific languages (DSLs): .ros, .ros1, .ros2, and .rossystem.
The extension combines rich language intelligence (powered by an Eclipse Xtext Language Server) with RosTooling Studio—an interactive visual diagramming and system architecture editor built directly into VS Code.
Open any RosTooling model in a graphical studio with dedicated views:
- System View (
.rossystem):- Drag-and-drop system assembly of nodes and hierarchical subsystems.
- Interactive wire routing between interfaces with real-time port compatibility checking (kind and message type matching).
- Collapse and expand subsystem frames to keep large architectures clean.
- Configure launch parameters, set parameter overrides, and remap interface names directly in the inspector panel.
- Import nodes from both the active workspace and external catalogue repositories.
- Component View (
.ros2/.ros1):- Visual node component modeling cards.
- Add, edit, and delete interfaces (Publishers, Subscribers, Service Servers/Clients, Action Servers/Clients) and parameters.
- Full Quality of Service (QoS) configuration: dropdown selectors for Reliability, Durability, History, Depth, Liveliness, Lease Duration, and Deadline with automatic serialization.
- Communication Objects View (
.ros):- UML Type Schema diagrams for Messages, Services, and Actions.
- Visualize and edit cross-type dependencies and package associations.
- Live Bi-directional Synchronization:
- Visual changes instantly update the underlying DSL text files.
- Modifying node definitions dynamically updates companion system views and diagrams.
- Code Completion (
Ctrl+Space): Intelligent content assist for packages, artifacts, interfaces, parameters, and communication types. - Syntax Highlighting & Bracket Matching: Colorized grammar definitions for
.ros,.ros1,.ros2, and.rossystem. - Real-Time Validation & Diagnostics: Semantic validation powered by the Xtext RosLanguageServer with in-editor error and warning markers.
- Built-in integration with the RosModelsCatalog and RosCommonObjects libraries.
- Automatic background indexing of reusable standard robots, drivers, and common message sets.
- Visual badges denoting core catalogue models with read-only protection to prevent unintentional edits.
- Code Generation: Transform
.rossystemmodels into complete, buildable ROS 2 packages (nodes, launch files, CMakeLists.txt, package.xml) via the Command Palette or the Studio toolbar. - Package Build: Trigger a
colcon buildof generated ROS 2 packages directly from VS Code.
Pre-packaged .vsix releases are available on the repository's GitHub Releases page.
-
Download the VSIX: Visit the GitHub Releases page and download the latest
rostooling-languages-<version>.vsixasset. -
Install into VS Code using one of the following methods:
- Open Visual Studio Code.
- Open the Extensions view by clicking the Extensions icon on the Activity Bar on the left or pressing
Ctrl+Shift+X(macOS:Cmd+Shift+X). - Click the Views and More Actions menu (
...) in the top-right corner of the Extensions pane. - Select Install from VSIX....
- Browse to and select your downloaded
rostooling-languages-<version>.vsixfile.
- In VS Code, open the Command Palette by pressing
Ctrl+Shift+P(macOS:Cmd+Shift+P). - Type
Extensions: Install from VSIX...and pressEnter. - Select the downloaded
.vsixfile from the file picker.
Run the following command in your terminal:
code --install-extension rostooling-languages-<version>.vsix
(Note: If you are using VSCodium or Antigravity IDE, replace
codewithcodiumor your respective executable).
To build and package the extension from source:
-
Clone the repository:
git clone https://github.com/ipa-esa/RosTooling_Extension.git cd RosTooling_Extension -
Build the Language Server JAR and package the extension:
./gradlew installExtension
Or manually package using npm and vsce:
./gradlew copyFatJar cd rostooling-languages npm ci npm run compile npx @vscode/vsce package --no-dependencies code --install-extension build/vscode/rostooling-languages-*.vsix
- Open a workspace containing RosTooling files (for an example, open
demo/test_ws). - Open in RosTooling Studio:
- Right-click any
.rossystem,.ros2,.ros1, or.rosfile in the File Explorer or editor tab and select "Open in RosTooling Visual Studio". - Alternatively, click the graph icon (
$(graph)) in the top-right editor title bar, or open the Command Palette (Ctrl+Shift+P) and chooseRosTooling: Open in RosTooling Visual Studio.
- Right-click any
- Generate a ROS 2 Package:
- Open a
.rossystemmodel and click the Generate ROS 2 Package button in the studio toolbar, or runROSSYSTEM: Generate ROS 2 Packagefrom the Command Palette (Ctrl+Shift+P).
- Open a
- Build the Generated Package:
- Run
ROSSDL: Build ROS 2 Packagefrom the Command Palette.
- Run
- Visual Studio Code: version 1.107.0 or higher.
- Java: JDK 21 or later (required by the Language Server).
- Operating System: Linux (Ubuntu 22.04 LTS or later recommended) or macOS.
- ROS 2: Humble, Iron, Jazzy, or Rolling (required for building and executing generated packages).
This extension contributes the following settings:
| Setting | Description | Default |
|---|---|---|
rostooling-languages.java.home |
Absolute path to the JDK 21+ installation directory. Leave empty to use system default Java. | "" |
rostooling-languages.server.trace |
Verbosity of the language server trace output (off, messages, verbose). |
"off" |
The extension contains an automated test suite with unit, integration, and LSP protocol tests:
cd rostooling-languages
npm ci
npm testTo run tests in a headless Linux environment:
cd rostooling-languages
xvfb-run -a npm testOr via Gradle:
./gradlew :rostooling-languages:npm_test- Open the repository in Visual Studio Code.
- Open the Run and Debug view (
Ctrl+Shift+D). - Select Run Extension and press
F5. This launches an Extension Development Host window with the extension loaded.
- Fork the repository.
- Create a feature branch (
git checkout -b feature/my-feature). - Ensure all tests and linting pass (
npm run compile && npm run lint && npm test). - Commit your changes (
git commit -m 'feat: my new feature'). - Push to the branch (
git push origin feature/my-feature). - Open a Pull Request against
mainor the active feature branch.
For bugs, questions, and feature requests, please file an issue on the GitHub Issues page.
Maintained by Fraunhofer IPA (ipa-esa)
