Foxglove is our favorite tool for developing software for mobile robots. Foxglove allows you to view data coming from you robot, similar to rviz, but it is cross platform and doesn't require ROS to be installed!
In this tutorial we going to show you how to get up and running with Foxglove to control and stream data from your Rover Pro or Rover Zero 2.
Setting Up Foxglove:
Step 1:
Download Foxglove Studio on the computer that will be used to control the robot.
https://foxglove.dev/studio
Note: The desktop app is required at this time due to limitations in the foxglove web app
to correctly run the virtual joystick.
Step 2:
Open foxglove studio and import the ‘RemoteOP Layout.json’ file provided by following
the instructions.
First we need to install the virtual joystick driver. Open the extension manager and
install the virtual joystick driver.
Click on virtual-joystick and then click on install.
Next, you’ll need to import our layout which you can download here. Open the layout manager as shown below.
Next to the plus in the top right, click on import layout and choose the ‘RemoteOP Layout.json’ file we provided.
Then select the RemoteOP Layout from the menu and the layout will be loaded.
Note: you will see 3 widgets: a camera feed, a virtual Joystick, and a teleop widget with
arrows. As for now it is important to keep both the teleop widget and joystick widget if
you wish to use the virtual joystick. The joystick has a minor bug that does not allow it
to publish to the robot without the teleop widget.
Step 3:
Start the robot and connect to it. Click on the top left most menu option as shown in the
image below and then click on the + sign. Then click open connection and leave
Foxglove WebSocket selected on the left hand side.
You will need to install the Foxglove Bridge on your robot payload computer to successfully connect to the WebSocket. Follow the instructions here to install Foxglove Bridge.
The connection IP should be set to the local device IP of the robot. Since the PC and
robot will be on the same network, it should be the internal IP address and not external.
This can be found by going on the computer running the robot and typing ‘ifconfig’ into a
terminal. You can also use 'hostname -I'. It should be the last entry at the bottom of the output. Leave the port as is.