Losing pallets in a warehouse costs millions of rubles annually. For instance, at a hypermarket chain warehouse, we deployed UWB tracking for 200 pallets. Result: lost items reduced by 40%, search time dropped from 15 minutes to 30 seconds. Payback period: 8 months. UWB tracking solves the problem with 10 cm accuracy. We build mobile apps for RTLS that show every object’s location in real time. With over 7 years in the market and 50+ deployments in warehouses, hospitals, and factories, we know the technical challenges. This article dives into RTLS architecture, key app screens, and WMS integration.
Operational costs drop by up to 35% after UWB tracking implementation — from our practice. Payback in under a year. Lost items due to lack of RTLS can cost 5–10 million rubles per year on a 10,000 m² warehouse.
RTLS (Real-Time Location System) Architecture
A typical UWB-RTLS scheme:
UWB tags (on objects) ↓ TWR/TDoA UWB anchors (ceiling, 10-15m apart) ↓ Ethernet/Wi-Fi Location Engine (server) ↓ WebSocket/REST Mobile app The Location Engine is the compute server that receives raw ToA measurements from anchors and calculates tag coordinates. Commercial solutions: Pozyx SaaS, Sewio UWB RTLS, Zebra MotionWorks. Open-source: MOSAIC-uwb (Python), custom on top of IEEE 802.15.4a-2007.
Accuracy: TWR (Two-Way Ranging) — 10–30 cm; TDoA (Time Difference of Arrival) — 15–50 cm, requires synchronized anchors. For warehouse object tracking, 30 cm is sufficient.
Mobile App: Key Screens
Real-Time Object Map
A 2D building plan (floor plan from SVG or CAD file) with moving markers. Each marker corresponds to a UWB tag attached to a specific object (pallet #A-123, cart, device).
Position updates: WebSocket subscription. The Location Engine publishes events tag.position_updated with {tag_id, x, y, floor, timestamp}. The client receives the stream and updates marker positions. Frequency: 2–10 Hz per tag; for 50 tags, that's 100–500 events per second over a single WS stream.
Render optimization: do not update every marker on each event — batch updates using a requestAnimationFrame equivalent. On iOS: accumulate positions over 100ms → one bulk update via CATransaction with disableActions. On Android Compose: LazyColumn with key(tagId) + animateItemPlacement.
Smooth marker movement: UWB delivers a position every 100–500 ms. Between updates, interpolate linearly (lerp) or use Kalman prediction. Without interpolation, markers jump; with it, they move smoothly.
Searching for a Specific Object
The user searches for pallet #A-456. Search the database → object found → highlighted on the map, camera centers on it with animation. Distance from the user's current position to the object plus directions — A* pathfinding.
If the object is on a different floor, switch to the corresponding floor plan with highlight.
Optional: AR arrow mode via NearbyInteraction (if the object carries an Apple-compatible UWB tag, like an AirTag or Qorvo accessory). NISession with isCameraAssistanceEnabled = true → AR pointer over the camera feed.
Movement History
Trail (trace) of an object over a period: LineString from historical positions. SELECT x, y, timestamp FROM tag_positions WHERE tag_id = ? AND timestamp > ? ORDER BY timestamp — render as a polyline on the map. Helps investigate "where did the pallet go on Friday evening."
Zone load heatmap: aggregated data from all tags → heatmap of which warehouse zones are used most intensively. MapboxHeatmapLayer or custom rendering via Core Graphics on grid cells.
Why UWB Over BLE and Wi-Fi for Warehouses?
UWB provides up to 10 cm accuracy — 10 times better than Bluetooth tracking and 5 times better than Wi-Fi RTT. UWB is less affected by multipath and metal interference. For warehouse tasks requiring sub-meter accuracy, UWB is the only practical solution.
| Method | Accuracy | Range | Interference immunity | Deployment cost |
|---|---|---|---|---|
| UWB | 10-30 cm | 50 m | High | Medium |
| BLE | 1-5 m | 100 m | Low | Low |
| Wi-Fi RTT | 1-2 m | 50 m | Medium | Medium |
| RFID (UHF) | 0.5-1 m | 10 m | Medium | Low |
Geofencing Zones
Virtual zones on the map (receiving zone, storage zone A, shipping zone) → rules for objects:
- Tag enters a restricted zone → push notification to security
- Object stays outside its designated zone for more than 2 hours → alert to manager
- Pallet leaves the warehouse without proper documentation → alarm
Geofencing is calculated on the Location Engine server — it knows all zone and tag coordinates. The mobile app only displays events and manages zone rules.
How to Set Up Geofencing?
Setting up takes a few steps:
- Create a virtual zone on the map by specifying coordinates and radius.
- Define a rule: on tag entry/exit from zone, send a notification.
- Assign tags to which the rule applies.
- Test the rule via movement simulation.
Tag Management
Add a tag to the system: enter the tag ID (printed on the device), link it to an object (name, type, photo), assign a zone. Batch input via CSV import for large warehouses.
Tag battery status: most UWB tags (Pozyx Tag, Sewio Tag) transmit battery level in the packet. The Location Engine parses it and exposes via API. In the app: filter “low battery tags” + notification when below 20%.
Signal loss: if a tag is not seen by anchors for more than N minutes (configurable) → status “out of range,” marker turns gray on the map. Logged as an event.
Integration with WMS / ERP
The warehouse runs a WMS (Warehouse Management System) — 1C:WMS, SAP EWM, Odoo. We fetch movement tasks from the WMS → the app shows “where this pallet should go.” RTLS provides “where it currently is.” The difference = deviation from plan → alert to the operator.
Integration: REST API or message queue (Kafka/RabbitMQ) between the Location Engine and WMS. The mobile app interacts with the Location Engine API, not directly with the WMS.
Hardware Selection: What We Recommend
| System | Accuracy | Rate | Anchor coverage | Anchor price |
|---|---|---|---|---|
| Pozyx Creator | 10-30 cm | 10 Hz | ~50 m² | Varies |
| Sewio RTLS | 15-50 cm | 10 Hz | ~100 m² | Varies |
| Zebra MotionWorks | 30-50 cm | 5 Hz | ~200 m² | Varies |
| Qorvo DWM3001 | 10-20 cm | 100 Hz | ~30 m² | Varies |
For a 1000 m² warehouse, 20–25 anchors are needed. The exact equipment cost is determined after an on-site audit.
Technical Requirements
The system requires an Ethernet or Wi-Fi network between anchors and the server. The Location Engine server can be deployed on Linux/Windows (4 cores, 8 GB RAM). Tag batteries last up to 2 years. Anchor range is up to 50 m line-of-sight.What's Included
- On-site survey and anchor network design.
- Supply and installation of UWB equipment.
- Custom mobile app development (iOS/Android) for your screens and logic.
- Location Engine configuration and WMS/ERP integration.
- Staff training and documentation.
- 1-year warranty support.
Timeline
A pilot with 4 anchors and a basic app (map + positioning of 5 tags) — 3–4 weeks. A full warehouse system with geofencing, history, and WMS integration — 3–5 months. The project cost comprises hardware, Location Engine licenses, and development. We calculate it after the on-site audit.
Get a consultation for your project — contact us. We'll estimate cost and timeline turnkey. Contact us for a free on-site audit.







