The graphical interface
A Python interface for ROS2, tested and validated by the target team.
- Target
- The team
- Result
- Validated
Experience · Aug – Nov 2024
A Python interface that turns ROS2 into an easy tool to use, for beginners and experts.
This 3D object represents the GUI I co-developed.
10+
People in the team
The Autonomous Driving R&D team at Expleo, for whom the interface was built.
2
Developers on the GUI
Built in collaboration with another developer.
1 click
Instead of a typed command
The commands are launched from buttons instead of being typed in the terminal.
The mission
I joined the Autonomous Driving R&D team at Expleo, which develops its products with ROS2. ROS2 is a powerful but very complex framework, used through terminal commands, which makes it hard to adopt. Together with another developer, I built a Python graphical interface that turns these commands into buttons, to simplify both daily use for beginners as well as experts. I also studied and optimized the user experience (UX/UI), and centralized the management of processes and threads to optimize resources.
My role. Technical intern in the Autonomous Driving R&D team. I developed the interface in collaboration with another intern, from the literature review to the validation by the target team.
Timeline
1 month
Bibliography and state of the art on ROS2, then discovering the project and the tools.
Tools
The robotics framework the team uses to develop its products, and the one the interface controls.
The language of the whole interface, and of rclpy, the ROS2 Python client library.
A Python library, to build the graphical interface with Qt widgets.
The ROS2 navigation stack, part of the toolset I worked with.
Version control for the work shared with the other developer.
My main development environment.
Challenges
Serving both audiences was a real painpoint: simple enough for beginners, complete enough for experts. We selected the commands useful to both, and imagined, for the future version, a menu to choose which commands are displayed.
ROS2 was entirely new to me. I spent a month on bibliography and state of the art before building anything.
Before / after
Two screenshots on how ROS2 is used through the terminal, and how it is used through the interface.


Deliverables
A Python interface for ROS2, tested and validated by the target team.
The final report of the internship.
Looking ahead
Make the interface adaptive to the user's level, offering more or fewer options so as not to overstimulate the user.
Next experience
Dassault Systèmes