Giter VIP home page Giter VIP logo

edubgr / mpu6050-motiontracking Goto Github PK

View Code? Open in Web Editor NEW
81.0 1.0 16.0 1.34 MB

Movement data collection using MPU6050 and Raspberry Pi. And obtaining the position and velocity with Python and Matplotlib, with visualization and data processing.

License: MIT License

Python 11.48% C++ 76.62% C 11.62% Makefile 0.20% Shell 0.09%
mpu6050 python matplotlib motion-tracking position velocity quaternion rotation simulation 3d

mpu6050-motiontracking's Introduction

Description

This program was designed to determine the position and rotation of a body using the MPU6050 and a Raspberry Pi.

From the acceleration and quaternion values ​​obtained by the sensor, it is possible to determine the rotation, position and velocity of a body, using due processes. The program is still a robust version, which needs some improvements. Long movements with few pauses tend to have poor accuracy for position and velocity, due to the drift obtained by integrating acceleration data. However, rotation works in all cases, obtaining a rotation identical to the rotation performed by the body.

Instructions

To make it work, create the necessary circuit on a protoboard, run the program "Collect data" on your raspberry, press the button to start collecting the movement data and press it again to finish. Copy the files into the "Datas" folder and paste them into the "Processing data" program. Then run it on your computer or raspberry, following the appropriate procedures.

Example

The program is able to return different types of graphs of different types of data. Examples of results and movements performed can be seen in:

https://www.youtube.com/watch?v=dDBdsNAT8Fs

https://www.youtube.com/watch?v=ekyY6dQ9t6o

Square shaped movement

Straight-line movement

Parable shaped movement

360 degree rotation around the y axis

Contact

For any questions, please contact me [email protected] - Eduardo Guimarães 2021

mpu6050-motiontracking's People

Contributors

edubgr avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

mpu6050-motiontracking's Issues

The data_4 dataset contains data which cannot be drifted

`---------------------------------------------------------------------------
IndexError Traceback (most recent call last)
/var/folders/5d/jppcsct91857cvxdp34vyw780000gp/T/ipykernel_31642/2518927757.py in
1 fig, ax = plt.subplots(figsize=(16, 8))
----> 2 plot_vel(time,acc,ax,'drift')

/var/folders/5d/jppcsct91857cvxdp34vyw780000gp/T/ipykernel_31642/4091315804.py in plot_vel(time, acc, ax, v_type)
1 def plot_vel(time,acc,ax,v_type):
2 if v_type == 'drift':
----> 3 vel = get_vel_drift(time,acc)
4 ax.set(title="Velocity correct")
5 elif v_type == 'pure':

~/Projects/MPU6050-MotionTracking/Processing data/functions.py in get_vel_drift(time, acc)
265 vel = integral_vel(acc,time,stationary)
266 # Calculate integral drift
--> 267 drift = get_drift(vel,stationary,time)
268 # Remove integral drift
269 vel_drift=vel-drift

~/Projects/MPU6050-MotionTracking/Processing data/functions.py in get_drift(data, stationary, time)
203 xyz=[[0,0,0]]
204 drift_data=pd.DataFrame(np.repeat(xyz,len(data),axis=0),columns=['velx','vely','velz'])
--> 205 if drift_start[0]>drift_end[0]:
206 drift_start = np.append([0],drift_start)
207 for i in range(len(drift_end)):

IndexError: index 0 is out of bounds for axis 0 with size 0`

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.