This project implements an API and frontend application for controlling and monitoring a bin picking cell.
- Python 3.11 or higher
- ROS2 Humble
- Node.js 18.x or higher
For Python dependencies:
pip install -r requirements.txtClone the repository:
git clone https://github.com/lenigovi/binpicking_cellcontrol_app.git
Ensure that Docker engine is running.
docker-compose upTo stop, run:
docker-compose downThen simply go to http://localhost:3000 in your web browser.
projectvideo.mp4
Running without Docker
In WSL open 4 terminal tabs and navigate to the project directory in the first 3 tabs by running:
cd /mnt/c/Users/{username}/{Project_Folder}/binpicking_cellcontrol_app
-
Backend API and WMS Server:
In the first terminal tab, run the FastAPI server with:
python3 -m uvicorn controlapp.backend.main:app --reload --port 8080 --host 0.0.0.0In the second terminal tab, run the WMS server with:
python3 -m uvicorn controlapp.backend.wms_server:app --reload --port 8081 -
ROS2 Nodes:
In the third terminal tab, run the ROS2 node for the bin picking cell with:
python3 -m controlapp.backend.ros_nodes.scanner_nodeIf necessary, you can check the running ROS2 nodes with:
ros2 node list -
Frontend Application:
In the fourth terminal tab, navigate to the frontend directory
cd /mnt/c/Users/{username}/{Project_Folder}/binpicking_cellcontrol_app/controlapp/frontendand start the React application with:
npm start
When the door is open or emergency button is pressed, the WMS server will decline requests, and scanner_node will be interrupted. The stacklight will inform the user that the state of the cell is in an undesired position for the process to continue. When state is back to desired position, picking will be performed as usual.