Robot Web Command Center

Robot Initialization User Interface Prototype

Introduction

During the initial week of my internship at the Construction Engineering Research Laboratory (CERL), I was engaged in a project aimed at improving the experience of deploying a rover designed to autonomously survey remote terrains. The researchers used the Robot Operating System (ROS) framework to develop and interact with the rover. However, we recognized that the end-users, soldiers, may lack experience in robotics and be unaccustomed to a Unix environment. Hence, the primary objective was to develop both an intuitive graphic user interface (GUI) and its backend to provide soldiers with a foolproof method for initiating the rover and monitoring its status. The GUI serves as a user-friendly alternative to command-line interfaces, which are text-based and prone to typos.

The hope was that my solution would be accessible across various devices, without the need for lengthy installation procedures that consume lots of memory. Whether accessed via rugged tablets, standard laptops, or smartphones, the interface should accommodate individuals in a diversity of operational settings. Along with performing initialization tasks, the GUI should be capable of relaying diagnostics, providing real-time feedback on sensor and sub-system states. This integration enables users to make informed decisions based on up-to-date information during the course of terrain surveys.


Implementation

We opted to create an HTTP server, so that the GUI, named the ROS Command Center, could be accessed across multiple tablets. The only requirement for these tablets would be a web browser like Chrome or Firefox.

Labelled ROS Command Center

Above is an image of an early prototype of the GUI. In the present state, the interface offers five buttons. Each button, when pressed, performs a ROS command. At the time, the specific functions of the third and fourth button have yet to be provided. The first button executes a ROS launch file. The second button kills all existing ROS nodes, except the one the GUI is using and rosout. The fifth button opens Foxglove Studio, an open-source visualization and debugging tool for robotics, in another tab.

For each button, I created a separate ROS service to perform the task. Each service has its own Executable file which contains the type of data the input consists of (integers, strings) and the type of data the response consists of (booleans). I wanted to keep the existing web server that handles the majority of the nodes used for the robot’s primary functions (sensor data processing, motion planning, etc.) and the server used for the GUI separate. Hence, the following procedure is executed to establish communication between the two servers.

Each button/ROS service is linked to a route such as “http://localhost:8000/launch_jackal” (see Virtual Reality Robot Command Center for a deeper dive into the architecture of server-client model). When a button is pressed, a service identification number along with the appropriate parameters (an HTTP request) is sent through to the platform server. Then, the server receives our request and performs a ROS service call. The callback function for that service, which houses the ROS launch commands, is executed. Once the service has been run, an HTTP response is returned. The response, a boolean, informs the message that should be displayed on the webpage.

In addition, the other two features I implemented were an image displaying the system state and a terminal-like screen to display continuous diagnostics messages. The ability to switch the rover’s operating state (teleoperated, autonomous, idle, etc.) was tested with one of the buttons.


Results

I would like to highlight that, currently, the ROS Command Center is a proof-of-concept and not the final product. Insufficient design requirements were provided to me to know the exact services or launch files used in the rover initialization process. I requested more direction from my colleagues, but they were satisfied, knowing that dummy launch files and services could be called through the client I had made. The ability to subscribe to topics that communicated that rover’s state and information about its sensors was also verified. It is the researchers’ intentions to develop this GUI further, once the rover’s developers have a better understanding of what functionalities should be provided to the soldiers.

Previous
Previous

Virtual Reality Robot Command Center

Next
Next

Formula SAE Suspension