Skip to content

martenwindler/passform2

Repository files navigation

passform2

Ubuntu 24.04 Raspberry Pi ROS 2 Jazzy Eclipse BaSyx Rust Tokio Elm Tailwind CSS SCSS Docker Vite

ROS2 ecosystem managing RFID events, heartbeats, system states, Raspberry Pi clusters.

Software

passform2/
├── passform2_agent_backend/    # Zentraler Orchestrator (Hybrid)
│   ├── src/                    # Modern Rust Core (Axum, rclrs, Tokio)
│   │   ├── managers/           # Asynchrone Logik (Agent-, Path-, Skill-Manager)
│   │   ├── ros/                # ROS 2 Jazzy Bridge (rclrs Client)
│   │   └── main.rs             # API-Entrypoint & Task-Orchestrierung
│   ├── app/                    # Legacy Python Backend (FastAPI)
│   ├── start__backend.sh       # Launcher (Standard: Rust, --legacy: Python)
│   └── Cargo.toml              # Rust Dependencies & Build-Config
├── passform2_agent_frontend/   # Web-3D-UI
│   ├── src/                    # Frontend Logik
│   ├── index.html              # 3D-Szenen Entrypoint
│   └── vite.config.js          # Vite Build-System & Dev-Server
├── passform2_ws/               # Zentraler ROS 2 Workspace (Jazzy)
│   └── src/
│       ├── passform_agent_resources/ # Custom Messages & Services (SSoT)
│       └── ros2_rust/          # rclrs & Code-Generatoren Source-Build
├── data/                       # Zentrale SSoT (Konfigurationen & JSON-Data)
├── deployment/                 # Docker- & Hardware-Provisionierung (RPi 5)
├── utils/                      # Administrative Shell-Scripts & Maintenance-Tools
└── Makefile                    # Globales Steuerungs-Tool (make install, make start-all)

Quickstart.

make install

Build build-ws.

make build-ws

Build backend.

make backend

(Build backend-legacy python).

make backend-legacy

Inspect backend (ROS system state).

http://127.0.0.1:8080/

Build agent.

ros2 topic pub -1 /agent_info passform_agent_resources/msg/AgentInfo "{agent_id: 'Robby-01', module_type: 'Y-Module', position: {x: 5, y: 2}, orientation: 90.0}"

Build test config

# Agent 1: Ranger (FTF)
ros2 topic pub -1 /agent_info passform_agent_resources/msg/AgentInfo "{agent_id: 'Ranger-01', module_type: 'ranger', position: {x: 3, y: 1}, orientation: 0.0}" & \
# Agent 2: UR5 Roboterarm
ros2 topic pub -1 /agent_info passform_agent_resources/msg/AgentInfo "{agent_id: 'UR5-Arm-01', module_type: 'ur5', position: {x: 4, y: 1}, orientation: 90.0}" & \
# Agent 3: Förderband
ros2 topic pub -1 /agent_info passform_agent_resources/msg/AgentInfo "{agent_id: 'Conv-01', module_type: 'conveyor', position: {x: 5, y: 1}, orientation: 0.0}" & \
# Agent 4: Y-Module
ros2 topic pub -1 /agent_info passform_agent_resources/msg/AgentInfo "{agent_id: 'Y-Mod-01', module_type: 'y-module', position: {x: 6, y: 1}, orientation: 180.0}" & \
# Agent 5: Zweiter Ranger
ros2 topic pub -1 /agent_info passform_agent_resources/msg/AgentInfo "{agent_id: 'Ranger-02', module_type: 'ranger', position: {x: 3, y: 2}, orientation: 0.0}" & \
# Agent 6: BaSyx Inventory/Speicher
ros2 topic pub -1 /agent_info passform_agent_resources/msg/AgentInfo "{agent_id: 'Store-01', module_type: 'bay', position: {x: 4, y: 2}, orientation: 0.0}" & \
# Agent 7: Weiterer Greifer/Zubehör
ros2 topic pub -1 /agent_info passform_agent_resources/msg/AgentInfo "{agent_id: 'Gripper-01', module_type: 'ur5__gripper', position: {x: 5, y: 2}, orientation: 270.0}" & \
# Agent 8: Der Human Operator
ros2 topic pub -1 /agent_info passform_agent_resources/msg/AgentInfo "{agent_id: 'Operator-Max', module_type: 'human_operator', position: {x: 6, y: 2}, orientation: 0.0}"

Inspect heartbeat(s).

ros2 topic echo /ymodule_broadcast

Inspect agent list.

http://127.0.0.1:8080/api/agents

Inspect bays.

http://127.0.0.1:8080/api/bays

Inspect inventory list.

http://127.0.0.1:8080/api/inventory
http://127.0.0.1:8080/api/inventory/basyx

Inspect basyx.

http://127.0.0.1:8080/basyx/
http://127.0.0.1:8080/basyx/aas/
http://127.0.0.1:8080/basyx/aas-api/
http://127.0.0.1:8080/basyx/shells
http://127.0.0.1:8080/basyx/shell-descriptors/
http://127.0.0.1:8080/basyx/shells/{id}/submodels
http://127.0.0.1:8080/aas-api/registry/shell-descriptors
http://127.0.0.1:8080/aas-api/server/shells
http://127.0.0.1:8080/basyx/description

Build frontend.

make frontend

Build styleguide.

elm-book src/View/Styleguide/Styleguide.elm --serve --port 8085

Hardware

IMG_1196

sudo apt update && sudo apt install nmap -y
cmd.exe /c "netsh wlan show interfaces" | grep -i " SSID"
powershell.exe -Command "netsh wlan show profile name='DEINE_SSID' key=clear" | grep -i "Inhalt"
# on laptop
cd ~/passform2
rsync -avz --delete \
--exclude '.git' \
--exclude '__pycache__' \
--exclude 'venv/' \
--exclude '.vscode/' \
~/passform2/ {USER}@{HOST_IP}:/home/{USER}/passform2/
# on pi
cd ~/passform2
docker compose up --build -d
sudo apt install -y spi-tools
hostname -I | awk '{print $1}'
netsh interface portproxy add v4tov4 listenport=8000 listenaddress=0.0.0.0 connectport=8000 connectaddress=127.0.0.1
python3 ~/passform2/utils/pi__rfid_bridge.py

IMG_1196

(tbd.)

Stats

  • passform2_agent_backend by llvm-cov: Coverage: 0%, 01.02.26
  • passform2_agent_frontend by elm-coverage: Coverage: 26%, 01.02.26

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Contributors