Skip to content

Experience · Aug – Nov 2024

Expleo

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

How it unfolded.

1 month

Literature review

Bibliography and state of the art on ROS2, then discovering the project and the tools.

Tools

What I worked with.

ROS2

The robotics framework the team uses to develop its products, and the one the interface controls.

Python

The language of the whole interface, and of rclpy, the ROS2 Python client library.

PySide2

A Python library, to build the graphical interface with Qt widgets.

N

Nav2

The ROS2 navigation stack, part of the toolset I worked with.

Git

Version control for the work shared with the other developer.

V

VS Code

My main development environment.

Challenges

What got in the way.

One interface for beginners and experts

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.

Learning a brand-new tool

ROS2 was entirely new to me. I spent a month on bibliography and state of the art before building anything.

Before / after

From terminal commands to buttons.

Two screenshots on how ROS2 is used through the terminal, and how it is used through the interface.

Deliverables

What I delivered.

Achieved

The graphical interface

A Python interface for ROS2, tested and validated by the target team.

Target
The team
Result
Validated
Achieved

Internship report

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