Repository created for educational purposes
YT: https://youtu.be/g4o41eXRbZU?si=pJWVFO3Za3_mcHig
Allowing a machine to move in all directions has always been a challenge for humans.
To create a robot that can move in all directions.
Users can connect to a robot on their local network via a temporary code.
Users can control the robot locally using a screen or by connecting a gamepad.
Users can control the robot remotely through a computer or phone connected to the same network, with the gamepad connected to either the computer or phone.
The system must recognize a wide range of devices to facilitate the use of the robot.

Simplify your tasks with MecanumPi, an automated robot with a web interface accessible from any device. Customize your tasks in the simplest way with precise and fast movements. Control your robot remotely in real time with 4 powered wheels that allow movement in all directions. Experience your work in real time with a high-quality wide-angle camera. Use your robot in the dark or in shadowy spaces with night vision.
- Omnidirectional System
- High-resolution wide-angle camera
- Night Vision
- Remote control from multiple devices
- Precise system with real-time data
- As a generic user, I want to be able to connect to the robot via a code displayed on the screen.
- As a saved/connected user, I want to view the robot’s web interface and use it properly.
- As a saved/connected user, I want to connect and disconnect from other robots on the network.
- As a user connected via local control, I want to use my robot directly with input devices (gamepad, touchscreen) without the need for external devices (smartphone, PC, etc.).
- As a user connected via remote control, I want to use my robot from a distance and have an experience as close as possible to local control. Input devices connected to the robot (gamepad, touchscreen) should be optional compared to external devices (smartphone or PC).
- As a user connected via remote and/or local control, I want to see the physical space in front of the robot through a camera under any lighting condition (day or night).
- As a local user, I want to be able to transport appropriate objects using devices attached to the robot or external devices.
- As a “staff” user, I want to update and improve the code of produced robots by publishing new versions on this GitHub.
- The user must physically go to the robot to add their device using a unique and random code.
- Each device is automatically authenticated if it has already been registered.
- Each device is removed after 7 days of inactivity with the robot.
- With each use, the list of robot interactions is updated.
- Each user has the ability to control the robot remotely, but if multiple users want to control the same robot, a request for control will be sent to the current user.
- Each user can view the robots available on the network and access them as described earlier.
- Each user can view the camera on the robot and visually track its usage.
- The user controlling the robot directly, rather than through another device, has primary control and can revoke control from other users.
- Take a micro SD card and install Raspberry Pi Bullseye (64bit).
- Insert it into your Raspberry Pi (model 4 recommended).
- Attach the Raspberry Pi to a touchscreen monitor (7-inch in my case).
- Install a webcam on the Raspberry Pi (I use the Raspberry Pi Camera Module 3 Noir-Wide).
- Connect the Raspberry Pi to a power bank (50W minimum recommended).
- L298N Motor Driver
- Download this repository.
- Download the node modules.
- Start the web server (host mode recommended).
- Start the backend Node.js server.
- Start the Python WebSocket and camera servers.
- Preferably, create services to start the servers automatically.
for node npm install for python start them on your rpi with the camera connected and install the missing libraries.
Start node server in backend folder with node filename.js.
Start python servers in backend/pythonServers folder with python3 filename.py.
Once you've created a project and installed dependencies with npm install (or pnpm install or yarn), start a development server:
npm run dev
# or start the server and open the app in a new browser tab
npm run dev -- --openTo create a production version of your app:
npm run buildYou can preview the production build with npm run preview.
Use -- --host --port 80 to host in all your private network.
