A project that uses data from IMU, GPS and Barometer modules to estimate position, velocity, attitude and a rocket parachute behavior based on space state filters implementation using an Extended Kalman Filter Algorithm.
To use the application you will need multiple stuff, including from android apps to c++, python and javascript libs.
-
Download SensorServer in your phone to stream IMU and GPS data for Extended Kalman FIlter Analysis. NOTE: Your cellphone plays the role for a rocket, in this case, substitutes a TAU 1201 GPS Module and a MPU 9250 IMU. It does not work properly for the filtering conditions, but can be used to test all the process. umer0586 - SensorServer (Github Repo)
-
Download all Cpp libraries: Threads:
sudo apt-get install libpthread-stubs0-devOpenSSL:sudo apt-get install libssl-devBoost:sudo apt-get install libboost-system-devEigen3:sudo apt-get install libeigen3-devPaho MQTT C++:sudo apt-get install libpaho-mqttpp-dev libpaho-mqtt3a-devCMake:sudo apt-get install cmakeCompiler C++:sudo apt-get install g++The projects also needs nlohmann/json and WebSocket++ libraries, but they were configured to be downloaded during the execution of cmake. -
Download NodeJS to run frontend application based on React + Vite Then, go to EPTALAUNCHSERVER/frontend and run
npm install, this will install everything inside package.json, making the frontend capable of running everything. -
Python needs to be installed as well to run all backend user management using Django, so run
sudo apt install python3andsudo apt install python3-pipto make sure pip is installed. Then go to EPTALAUNCHSERVER/backend and runpip install -r requirements.txtto install all python libs.
- Go on your cellphone and start Sensor Server app, then copy the websocket ip that the cellphone will display to you after clicking on start.
- Prepare 3 ubuntu terminals to run all the 3 applications at the same time, the c++, python and JavaScript.
- Open IMUGPSBAR/src/main code and on "int main()" section, substitute the current URL
192.168.1.4:8080with the new one generated by your sensor server app. - Then, in terminal ONE, go to IMUGPSBAR, and run
rm -rf build, thenmkdir build, thencd buildand finallycmake ..and thenmake - In terminal TWO, go to EPTALAUNCHSERVER/backend and run
python3 manage.py runserver - In terminal THREE, go to EPTALAUNCHSERVER/frontend and run
npm run dev, this will prompt a local URL, you can click it to go to the website responsible to show the "rocket" data streaming. - Finally, to start streaming the data from your phone, go to terminal ONE and run
./sensor_monitoring
You should see the screen of the app being populated with the data streamed from the cellphone. It should look like that:

For User and Password, try "manga" for both!
The algorithm scheme for the filter idealization is inside IMUGPSBAR folder, in CANVAS format.
Using the cellphone to simulate the data streaming from a TAU 1201 and a MPU 9250 module didn't result in good results. The GPS from the phone has a ridiculous refresh rate [0.3 Hz], compared to TAU 1201 that is at least 5 Hz, it is a massive difference. This low performance on gps leads to significantly bad results on Space State Estimator to create a route path!
| Componente | Preço |
|---|---|
| LilyGo T-Call A7670E (Modem 4G, 2G para stream de dados via MQTT) | R$ 209,57 |
| Allystar TAU 1201 | R$ 139,99 |
| MPU 9250 (IMU) | R$ 12,06 |