Robot

All of the code that controls, collects data, etc of the robot will be built using the ROS development framework. ROS stands for Robot Operating System. It is a widely known set of tools to develop various kinds of robots designed to solve many different problems in many different fields. Regarding the simulation, we will utilize Gazebo, another world wide known framework, designed specifically for that.

The hardware components include:

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/61e26de0-ea84-48d4-9bf6-323c273db0ef/Robot.jpg

Turtlebot3 Waffle Pi diagram

Turtlebot3 Waffle Pi diagram

The follower feature will be implemented using ARTags and the ar_track_alvar ROS package. The obstacle avoidance, automatic return and user guidance features will use the lidar sensor and the SLAM concept.

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/c6d79d5c-3e7b-4db1-9935-a09aa7a5b457/Server.jpg

Server

The server will manage all communications and related data with the help of our database. It will use JavaScript as the main language and NodeJS as the main developing framework.

NodeJS is widely used around the globe and has a rich community as well as thousands of projects already developed.

MongoDB is our choice for the database due to its flexibility, code-native acess and ease to scale horizontally, which means that it can adapt to the number of incoming connections fairly easily.

Just as a reminder, the server will not be part of the simulation. It will be implemented in the machine as one would do normally in other projects.

Mobile App

The app will provide the user an interface to our system. It will use the Google SDK Flutter as the tool to develop the app and the DART programming language.

The Flutter SDK provides means to create responsive e natively compiled applications for mobile, web and desktop this flexibility, simplicity of develop, the increasing community and support on this SDK made it our choice for developing our app.

Our app will have the capability of reading QRCodes and rent the carts. We must stress that we will not implement any kind of real financial transactions, only a dummy functionality with fictional money.

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/9b4a2714-7af2-45ea-91fe-3ab341ceb3f8/App.jpg

Just as a reminder, the app will not be part of the simulation. It will be implemented and deployed to our phones as one would do normally in other projects.


The system simulation

First, we must make very clear that this project is being developed during the COVID-19 pandemic and for that reason will NOT be physically implemented, thus all the robot hardware will be simulated. The simulation will have 3 main components:

The supermarket will be a 3D model made by us and imported into the simulation tool. To this we made the model with Blender, keeping small markets as reference. The model has some shelves that will act as a path and enough objects to keep to the requirements.

For the purpose of proving that the system works, we will simulate only one robot, in particular using the TurtleBot3 Waffle Pi. More info about the TurtleBot family can be found on the official ROS wiki.

Two persons will be simulated as simplified models, both of them will have ARTags attached to them, but only one will "rent" a robot the other will be used to test the robot requirements.