Logistics robots with ROS

Project attribution: Project done in a team of 10 Computer Science and Engineering students.
Source: The project was done for Starnus Technology, so the files are not open source.
Short description: ROS architecture with SPI back-end for RC car.
Technologies: ROS, C++, Gazebo, Springboot, Vue.
What I did: I designed the ROS architecture, implemented ROS1 C++ nodes, created the Gazebo simulation. Participated in the design of the overall architecture comprising of the Vue web app, the Springboot server and the ROS robot backend.

This was my Bachelor End Project for my Bachelor of Computer Science and Engineering. It was done for a startup from TU Eindhoven called Starnus Technology, a company that wanted to make modular robotics for logistics applications, like warehouse use. Since then the startup changed their trajectory from robotics to AI software.

Starnus required a web application that could send missions to robots in the warehouse, as well as the actual software that controls the robots from their current location to a destination while avoiding obstacles. I focused on the ROS back-end that achieved the second goal.

Architecture

High-level architecture of the project. I focused on the backend and the robot parts.
High-level architecture of the technologies of the project.
Detailed architecture of the technologies of the project.

ROS

Closeup of the robot in the Gazebo simulator. A user can directly control the robot via a package that implements a GUI joystick. This joystick is accessible in the Vue web app as well.
Reduced ROS graph of the robot software. The websocket node and the mission sender node are the ones that we added.
The robot in a square warehouse in the Gazebo simulator.
View of rviz that displays the direction vectors of the robot on its path to the destination.
View of RTABmap, the SLAM algorithm that we used to create a map of the warehouse.

Vue web app

The web application interface. On the left panel you can see the joystick. On the right panel you can see the square world seen by the robot. The green circle is the robot. The yellow circles are waypoints to which the robot navigates. The yellow square represents a priority area which the robot will priorities in its path, i.e. it will first path through that area on its way to the waypoints.
A user can create new missions with many destinations for each robot. Here is the panel that can do that.