Inspiration
As a competition team, we've developed many GUIs over the years to support each of our robots. However, the GUI has often been the most overlooked component. With this project, our goal was to build a dynamic, adaptable, and versatile GUI with new features tailored for this year’s University Rover Challenge (URC).
What it does
SpaceGUI displays real-time imagery from any connected camera, including those running on separate computers via ROS. It also dynamically plots numerical data from all ROS nodes and includes an integrated ROS log viewer. An additional feature confirms whether a joystick topic is successfully connected.
How we built it
We created various objects that facilitate communication between ROS nodes and Qt GUI components using Qt signals. Leveraging the dynamic capabilities of Qt6, we were able to create and manage ROS2 nodes that collect and process data in real time. The project was written in C++ to seamlessly integrate both ROS2 and Qt frameworks, as both are primarily built on C++.
Challenges we ran into
Combining large, opinionated libraries presented significant challenges. Qt objects are not well-suited for storing objects that execute in parallel. Our initial architecture failed to properly handle inter-thread communication between Qt and ROS2 threads, resulting in segmentation faults. We resolved this by overhauling the architecture to correctly manage all inter-thread communication.
Accomplishments that we're proud of
We developed a configurable data display system that utilizes standard ROS messages. This marks a major improvement over previous GUIs, as it provides a truly dynamic and flexible interface.
What we learned
We gained deeper knowledge of Qt and how to effectively implement it in C++. We also learned how to resolve complex merge conflicts in GitHub. Perhaps most importantly, we came to understand that inter-process communication is far from trivial—it requires careful planning, especially when integrating frameworks that differ in their handling of modern C++ pointers.
What's next for SpaceGUI
Planned features include the ability to save and load previous sessions, export data for further analysis, and establish direct real-time communication with the robot. Future updates will also support command and joystick integration to assist with field operations.
Built With
- c++
- vscode

Log in or sign up for Devpost to join the conversation.