Arastronaut is a cutting-edge open-source platform that combines hardware and software to deliver high-precision indoor positioning. Designed for researchers, developers, and enthusiasts, this project leverages Ultra-Wideband (UWB) technology and Inertial Measurement Units (IMUs) to achieve centimeter-level accuracy in diverse applications.
- ESP32 Microcontroller: A cost-effective, dual-core processor with built-in Wi-Fi capabilities.
- DWM1000 UWB Transceiver: Provides precise distance measurements using Time of Flight (ToF) calculations.
- BMI088 IMU: A robust inertial sensor for detecting linear acceleration and angular velocity.
- Additional Sensors:
- QMC5883L Magnetometer for accurate heading estimation.
- BMP280 Barometric Pressure Sensor for 3D localization.
- User-Friendly OLED Display: For monitoring system parameters and debugging.
- Two-Way Ranging (TWR): A reliable distance measurement method that eliminates the need for strict synchronization.
- Time Division Multiple Access (TDMA): Ensures robust synchronization and prevents signal collisions.
- Real-Time Operating System (RTOS): Optimized for dynamic environments with high data throughput.
- Graphical User Interface (GUI): Simplifies calibration, monitoring, and data collection.
- Indoor navigation for robots and drones.
- Motion tracking in AR/VR systems.
- Asset tracking in warehouses and industrial facilities.
- Research on sensor fusion and localization techniques.
- ESP32 development board.
- DWM1000 UWB modules and supporting sensors.
- USB cables for firmware flashing.
- Python environment (for GUI and data processing).
- Python (Version 3.7 or higher recommended)
- Node.js (Latest LTS version recommended)
- pip (Python package installer)
-
Clone the Repository:
git clone https://github.com/mehtivakili/Arastronaut.git cd Arastronaut
-
Install Python Dependencies:
pip install -r requirements.txt
-
Run the Node.js Server Start the Node.js server:
node server.js
-
Run the Python Application In a new terminal, launch the Python application:
python3 app.py
-
Flash Firmware:
- Connect the ESP32 to your computer.
- Use the GUI or ESP32 flashing tools to upload the firmware.
-
Calibration IMU, Magnetometer and UWB:
- Calibration of IMU & Mag from the panel following the instructions
- Evaluating the IMU & Mag data from the panel
-
Setup Anchors and Tags:
- Configure anchor positions and assign unique IDs.
- Define the number of anchors needed based on your environment.
The platform consists of modular components for easy deployment and scalability. Anchors are strategically placed in fixed locations, while the mobile tag computes its position using trilateration.
- Anchors: Fixed reference points using DWM1000 modules.
- Tags: Mobile units equipped with UWB, IMU, and other sensors.
- Firmware:
- Configures hardware and establishes communication protocols.
- Implements TDMA for time slot management.
- Calibration:
- Magnetometer: Corrects hard/soft iron distortions.
- IMU: Adjusts for biases and misalignment.
- UWB: Accounts for antenna delays.
- Sensor Fusion:
- Combines UWB and IMU data for enhanced accuracy.
- Processes real-time motion data for dynamic environments.
The GUI is designed for user-friendliness and functionality:
- IMU Calibration:
- Displays raw and calibrated data for accelerometer and gyroscope.
- Provides tools for parameter adjustments and visualization.
- UWB Pre-Calibration:
- Allows users to input anchor positions and visualize localization results.
- Magnetometer Calibration:
- Compensates for sensor errors to achieve accurate heading estimation.
- Data Monitoring:
- Real-time plots for sensor output.
- Export options for further analysis.
The IMU was tested on a precision rotary table to compare its output against a reference encoder. Results showed a Root Mean Square Error (RMSE) of 2 degrees for orientation estimation.
Two DWM1000 modules were tested in a controlled environment. Linear regression modeling reduced the RMSE from 15 cm to 6 cm, showcasing the system’s high accuracy.
- Integration of advanced sensor fusion algorithms.
- Exploration of Non-Line-of-Sight (NLOS) mitigation techniques.
- Adaptation for larger-scale environments and multi-floor navigation.
- Development of an API for third-party integrations.
Contributions are welcome! To contribute:
- Fork the repository.
- Create a feature branch:
git checkout -b feature-name
- Submit a pull request with a detailed description of your changes.
For major changes, please open an issue to discuss your proposed modifications.
If you encounter any issues or have questions, please open an issue in this repository or contact us directly.
This project is licensed under the MIT License. See the LICENSE file for more details.
This project is based on the paper:
Vakili, M., Mirjalili, A. S., Dindarloo, M. R., Sharifi, A., Taghirad, H. D., “Arastronaut: An Open Source UWB/IMU Hardware and Software for Indoor Positioning”, Proceedings of ICRoM 2024.
You can read the full research paper here:
Arastronaut: An Open Source UWB/IMU Hardware and Software for Indoor Positioning