Foxglove

ROS 1

Foxglove Studio can load local and remote ROS 1 (.bag) files, or connect directly to a running ROS stack using a Rosbridge (WebSockets) or native (TCP) connection.

Files

Open ROS 1 .bag files from your local filesystem or a remote cloud storage solution.

Local file

To load a local ROS 1 .bag file, double-click it from your file manager, drag-and-drop the file directly into the app, or Open local file via the Data source dialog:

local file dialog

Cloud data

Foxglove Data Platform

Use Foxglove Data Platform's web console to upload your ROS 1 .bag files and stream it directly into Foxglove Studio.

Check out the Data Platform docs for more information on how to export and visualize your robotics data.

By URL

To load a remote ROS 1 (.bag) file, select Open file from URL in the Data source dialog, and enter the URL to your remote file.

Check out the Setting up CORS page for more details on loading your remote data files into Foxglove Studio.

Live connection

For live connections, you must be on the same network as the robot. While we support multiple options, we recommend Foxglove WebSocket as the easiest option to get started.

Foxglove WebSocket

Connect directly to your running ROS stack using a Foxglove WebSocket connection. This connection uses a standard protocol to connect Studio to your ROS master over WebSockets. While it does require running an extra ROS node (foxglove_bridge), we recommend this option if you have a network firewall between ROS and Studio, as it requires your ROS host to have only one port open.

Connecting to data

Install ROS 1 and follow the instructions for setting up the Foxglove bridge.

Open connection in the Data source dialog, select Foxglove WebSocket, then enter the URL to your Rosbridge server:

Foxglove WebSocket dialog

Resetting the connection

To reconnect to a Foxglove WebSocket in a different context, you must first clear out your most recently visualized data in Foxglove Studio.

To clear the state and reset your visualizations, resend the serverInfo message with an updated value for its optional sessionID field (string value). This lets the Foxglove WebSocket connection know that you are initiating a new connection, instead of trying to reconnect to a dropped one.

Current limitations

Foxglove WebSocket connections support publishing back to your ROS stack, but not reading or setting ROS parameters.

Rosbridge

NOTE: For performance reasons, we recommend using the Foxglove WebSocket connection instead.

Connect directly to your running ROS stack via WebSockets using a Rosbridge connection. This connection option requires only a single open port between Studio and your robot.

A rosbridge connection uses a standard protocol to connect Studio to your ROS master over WebSockets. While it does require running an extra ROS node (rosbridge_server), we recommend this option if you have a network firewall between ROS and Studio, as it requires your ROS host to have only one port open.

To open a Rosbridge connection, make sure you’ve installed ROS 1, as well as rosbridge-suite:

# For Noetic (ROS 1)
$ sudo apt install ros-noetic-rosbridge-suite

Next, start the WebSocket server, and review the command printout to determine the port it is listening on (e.g. ws://0.0.0.0:9090):

$ roslaunch rosbridge_server rosbridge_websocket.launch

Click Open connection in the Data source dialog, select "Rosbridge (ROS 1 & 2)", then enter the URL to your Rosbridge server:

rosbridge dialog

You are now connected to ROS!

To test your connection, add a Raw Messages panel to your layout, and see a list of available topics populate the dropdown. Check out the /connected_clients topic to see information rosbridge is publishing about your connection.

Current limitations

Rosbridge connections support publishing back to your ROS stack, but not reading or setting ROS parameters.

Native

Desktop app only

NOTE: Docker for Mac unfortunately does not expose all container ports to the macOS host, and so does not support bridge or host networking. When running ROS on a Mac, use the Foxglove WebSocket or the Rosbridge connection instead.

Connect directly to your running ROS stack via a native TCP (Transmission Control Protocol) connection to access your ROS master and/or nodes directly.

Once you have a working ROS 1 setup on your computer, run roscore in your terminal to start your ROS master.

Open connection via the Data source dialog, select "ROS 1", and enter your ROS_MASTER_URI (ROS master's IP and port) and ROS_HOSTNAME:

ros 1 dialog

If you're experiencing any issues, ensure you have unrestricted network connectivity between your ROS stack and Studio, as ROS uses multiple ports to communicate.

If you're running ROS and Studio on different machines see the ROS 1 Network Setup docs to make sure your environment is configured correctly.

Current limitations

ROS 1 connections do not yet support reading or setting ROS parameters.

Additional resources