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-dev
OpenSSL:sudo apt-get install libssl-dev
Boost:sudo apt-get install libboost-system-dev
Eigen3:sudo apt-get install libeigen3-dev
Paho MQTT C++:sudo apt-get install libpaho-mqttpp-dev libpaho-mqtt3a-dev
CMake:sudo apt-get install cmake
Compiler 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 python3
andsudo apt install python3-pip
to make sure pip is installed. Then go to EPTALAUNCHSERVER/backend and runpip install -r requirements.txt
to 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:8080
with the new one generated by your sensor server app. - Then, in terminal ONE, go to IMUGPSBAR, and run
rm -rf build
, thenmkdir build
, thencd build
and 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 |