3.9 KiB
Robot App Web (RBS)
Chức năng:
- Đăng ký danh sách cảm biến LiDAR (tên, ip, port)
- Đăng ký IMU (tên, frame_id, topic, nguồn) và pose trên robot
- Kéo thả icon LiDAR/IMU trên canvas để set vị trí (robot frame)
- Nhiều layout — mỗi layout lưu profile trong SQLite (
layout_profiles); catalog trong documentstate - Database SQLite:
data/RBS.db(WAL mode). Thư mục media:data/maps/,data/sounds/,data/recordings/
Build
cd /home/robotics/RD/RBS
# Ubuntu/Debian: sudo apt install libsqlite3-dev
cmake -S . -B build
cmake --build build -j
Run
Chạy mặc định port 8080, phục vụ static từ www/, dữ liệu SQLite tại data/RBS.db:
./build/lidar_manager_web
Hoặc chỉ định:
./build/lidar_manager_web 8080 ./www ./data/RBS.db
Mở trình duyệt: http://localhost:8080/
API Maps & Sounds (SQLite)
| Method | Endpoint | Mô tả |
|---|---|---|
| GET | /api/maps |
Danh sách map |
| POST | /api/maps |
Tạo map (JSON metadata) |
| GET/PUT/DELETE | /api/maps/{id} |
CRUD map |
| GET/POST | /api/maps/{id}/image |
Tải/xem ảnh map (file trong data/maps/{id}/) |
| GET | /api/sounds |
Danh sách sound |
| POST | /api/sounds |
Tạo sound |
| GET/PUT/DELETE | /api/sounds/{id} |
CRUD sound |
| GET/POST | /api/sounds/{id}/file |
Tải/upload file âm thanh |
| GET/PUT | /api/dashboards |
Dashboard (server-side, thay localStorage) |
| GET | /api/recordings |
Stub — trả về [] (Phase sau) |
Đăng nhập (Signing in — MiR §2.1)
Trang web bắt buộc đăng nhập. Hai tab: tên/mật khẩu hoặc Mã PIN (keypad 4 số). Tài khoản mặc định (trong data/RBS.db, seed lần đầu):
| User | Password | Nhóm |
|---|---|---|
| Admin | admin | Administrators (full quyền) |
| User | user | Users (dashboard write, còn lại read) |
| Distributor | distributor | Distributors (full quyền) |
PIN 4 chữ số chỉ dùng được với user thuộc nhóm Users sau khi admin gán PIN (PUT /api/users/:id).
Tắt auth cho dev/test: LM_AUTH_DISABLED=1 ./build/lidar_manager_web …
Tài liệu đầy đủ: docs/Reference_guide.md §2.1.
Docker (giới hạn 2 CPU, 4 GB RAM)
Mô phỏng cấu hình controller tối thiểu SICK (Dual-Core, 4 GB) trên máy dev:
cd /home/robotics/RD/RBS
./scripts/lm.sh docker up
# hoặc: sudo docker compose up --build -d
Kiểm tra giới hạn:
./scripts/lm.sh docker stats
Dừng:
./scripts/lm.sh docker down
Dữ liệu layout vẫn lưu tại data/ trên host (volume mount).
Kiểm tra tài nguyên trong container:
# Vào shell container
./scripts/lm.sh docker shell
# Trong container, thử:
htop # CPU/RAM (q để thoát)
free -h # RAM
nproc # số CPU nhìn thấy
ps aux # process
cat /proc/meminfo | head
./scripts/lm.sh docker htop
./scripts/lm.sh docker stats
Test tự động
Chạy toàn bộ: unit C++ (GTest), API smoke (curl), pytest integration.
cd /home/robotics/RD/RBS
chmod +x scripts/lm.sh scripts/test/*.sh
./scripts/lm.sh test run
Chỉ unit test C++:
cmake -S . -B build -DBUILD_TESTING=ON
cmake --build build -j
ctest --test-dir build --output-on-failure
Chỉ API smoke (server đang chạy, dùng fixture tests/fixtures/data/):
./build/lidar_manager_web 18080 www tests/fixtures/data/state.json &
./scripts/lm.sh test smoke http://127.0.0.1:18080
Fixture mission id mặc định: testmission00001 (tests/fixtures/data/missions.json).
Benchmark hiệu năng trong container (cần docker compose up -d):
./scripts/lm.sh docker bench
# hoặc chỉ HTTP: ./scripts/lm.sh bench http
CI: GitHub Actions workflow .github/workflows/test.yml.