Overview Version History Q & A Rating & Review
ROS 2 Studio
Connect to ROS 2 systems via rosbridge WebSocket protocol directly from VS Code. Visualize topics, call services, and interact with ROS 2 nodes without leaving your development environment.
🚀 Features
Core Functionality
ROS 2 Entity Discovery - Browse nodes, topics, services, publishers, and subscribers in a tree view
Topic Subscriptions - Subscribe/unsubscribe to ROS 2 topics with real-time message display
WebSocket Connection - Connect to ROS 2 systems via rosbridge WebSocket protocol
Entity Inspection - View detailed information about topics, services, and actions with type definitions
Advanced Visualization
Occupancy Grid Maps - 2D map visualization with zoom and pan
Laser Scan Data - Real-time laser scan point cloud display
URDF Robot Models - 3D robot visualization with proper coordinate transformations
Multiple view modes for all visualizations:
Graphical - Interactive visual representation
Raw Data - JSON/XML data with syntax highlighting
Both - Side-by-side graphical and raw data views
Copy to clipboard functionality for raw data
Improved scroll handling for streaming data visualization
Auto-reconnection - Automatic reconnection to rosbridge on disconnect
Configurable Connection - Custom WebSocket URL configuration
Node Parameter Configuration - View and modify ROS 2 node parameters in real-time
Bag Recorder Panel - Select topics and generate ROS 2 bag record commands
Message/Service/Action Inspector - Generate JSON templates for ROS 2 message, service, and action types
📋 Requirements
Visual Studio Code 1.93.0 or higher
ROS 2 system with rosbridge_server running
WebSocket connection to rosbridge (default: ws://localhost:9090
)
🔧 Installation
From VS Code Marketplace
Open VS Code
Go to Extensions (Ctrl+Shift+X)
Search for "ROS 2 Studio"
Click Install
⚙️ Configuration
Extension Settings
Setting
Description
Default
ros2-studio.rosbridgeUrl
Rosbridge WebSocket URL
ws://localhost:9090
Available Commands
Command
Description
Access
Connect to Remote
Connect to rosbridge server
Command Palette / Tree View
Disconnect
Disconnect from rosbridge
Context Menu
Refresh connection
Refresh ROS 2 entities
Tree View Button
Subscribe
Subscribe to topic
Context Menu on Publishers
Call Service
Call a ROS 2 service
Context Menu on Services
Get Parameters
View/edit node parameters
Context Menu on Nodes
Add to Bag Recorder
Add topic to bag recorder
Context Menu on Topics
Open Bag Recorder
Open bag recorder panel
Command Palette
Inspect Type
Generate JSON template
Info icon on hover (Publishers/Subscribers/Services)
📖 Usage
Getting Started
Start rosbridge on your ROS 2 system:
ros2 launch rosbridge_server rosbridge_websocket_launch.xml
Connect to ROS 2 :
Click the robot icon in the activity bar
Click "Connect" or use Command Palette: Connect to Remote
Default connection is ws://localhost:9090
Browse ROS 2 entities :
Expand the tree to see nodes, topics, and services
Right-click for context actions
Visualization Features
Subscribe to a topic - Right-click on a publisher topic in the ROS 2 tree view and select "Subscribe"
View modes - When visualization opens, choose between:
Graphical view for interactive visualization
Raw data view for inspecting message structure
Both mode for side-by-side comparison
Copy raw data - Click the "Copy" button in raw data view to copy the content to clipboard
3D navigation (URDF models):
Mouse drag to rotate
Scroll to zoom
Right-click drag to pan
Supported Visualization Types
Message Type
Visualization
Description
nav_msgs/OccupancyGrid
2D Map
Interactive occupancy grid with zoom/pan
sensor_msgs/LaserScan
Point Cloud
Real-time laser scan visualization
std_msgs/String
(URDF)
3D Model
Robot model with Three.js renderer
Node Parameter Configuration
The extension provides a comprehensive parameter configuration panel for ROS 2 nodes:
Access Parameters - Right-click on any node in the tree view and select "Get Parameters"
Features :
View all node parameters with their current values
Edit parameter values with type validation (bool, int, double, string, arrays)
Real-time parameter updates
Search and filter parameters by name
Manual mode for when rosapi is not available
Support for complex parameter types including arrays
Parameter Types Supported :
Boolean (dropdown selection)
Integer and Double (with automatic type preservation)
String values
Arrays (JSON format with validation)
Read-only display for complex objects
ROS 2 Bag Recorder
The Bag Recorder panel helps you create ROS 2 bag recording commands:
Add Topics - Right-click on any topic and select "Add to Bag Recorder"
Manage Topics :
View all selected topics with their message types
Remove individual topics or clear all
Topics are displayed with full path and message type information
Generate Command :
Click "Generate Command" to create the ros2 bag record
command
Command includes all selected topics
Copy the generated command from the panel
Use the command on your ROS 2 machine to start recording
Access Panel - Use Command Palette: "Open Bag Recorder" or right-click topics
ROS 2 Message/Service/Action Type Inspector
The Message/Service/Action Type Inspector helps developers quickly generate JSON templates for ROS 2 types:
Access Inspector - Hover over any publisher, subscriber, or service in the tree view and click the info (ⓘ) icon
Features :
Automatically fetches type definition from ROS 2
Generates a complete JSON template with all fields
Supports nested message types
Handles arrays with example elements
Provides type information in comments
Includes default values for primitive types
Supported Types :
Messages - Generate templates for any ROS 2 message type (from publishers/subscribers)
Services - Separate templates for request and response
Actions - Templates for goal, result, and feedback (when available)
Usage :
Copy the generated template to use in service calls or message publishing
Modify the values as needed for your use case
The template includes all fields with appropriate default values
📄 License
This project is licensed under the MIT License - see the LICENSE file for details.
🏢 About
This extension is developed and maintained by EightVectors .
🐛 Known Issues
Large message rates may impact performance
📮 Support
For issues and feature requests, please use the GitHub issue tracker .