Can I build a posture monitor wearable like Lumo Lift using RPRO + BUZZER?

Hi there,

I'm trying to build a posture monitor wearable + App combination, like Lumo Lift, that will buzz whenever the wearer is bending his/her back in bad posture. I assumed that we could use the gyroscope and accelerometer in the RPRO to figure out the wearers deviation from healthy normal posture. The buzz will go off whenever that deviation occurred reminding the wearer to fix their posture. The wearable will ideally be worn above the chest area, but below the clavicle. 

I'm a seasoned C# and Java developer. I'm also familiar with Swift. What steps will you suggest I take to develop the App? If I coded it in C# I'll use the Xamarin IDE to work. Do you have a sample App I can look at?



  • You can take a look at the MbientLab GitHub page for sample code and the Getting Started guide on the website.  A MetaWear app is available both on Google Play and the Apple Store, just search for "MetaWear".
  • Hey Eric,

    I read through the article your team posted on analyzing accelerometer data,, to try to understand how I could figure out how to determine when a person is tilted forward. Is there a gyroscope on the RPRO? If there is one, how can I read data from it in the same fashion shown in the article mentioned above?

    If RPRO does not have a built in gyroscope. It appears to me that I would need to add an IMU/gyroscope to the RPRO board to capture the body's tilt from a vertical axes, assuming the device is worn on the person's chest area. Is this assumption correct? How do I capture the reading from the IMU/gyroscope from within the MetaWear IOS App?


  • Yes, RPro comes with a gyro.  The iOS docs page has more info on communicating with the on-board sensors.  Specifically, the gyro section is here:
  • I did successfully run and capture gyro data from the MetaWear App, but its a bit confusing to interpret. Based on the data I captured, the gyroscope seems to measure absolute twist orientation along all three axes of the RPRO. Is this correct? 

    I left the RPRO laying flat on the table and captured orientation data over a 10 second period. I noticed that all x, y, and z orientation angles changed even though the RPRO laid untouched over the 10 second period. Why did the orientation data change? What should the degree of error/sensitivity be for the orientation data?

    Would you provide more details on the orientation information for the Gyroscope that will help me identify the physical x, y, and z axes as pertains to the RPRO board? Are the logged measurement in degrees or radians? 


    1. The gyro measures rate of rotation around the XYZ axes, i.e. how fast it is spinning, in degrees per second.  
    2. How much did the values deviate from 0 when the board is at rest?  There is always noise that the sensor picks up and unless there is something seriously wrong with the board, it is negligible.  You can read the BMI160 spec, specifically section 1.2, table 3, if you want more detailed information
    3. Assuming the board is laying flat, X axis runs through the board length wise, Y axis runs width wise, Z axis runs up/down.
  • If the gyro scope measures the rate of rotation around the XYZ axes, it may not work for my application. I will like to know the angular displacement of the RPRO around the XYZ axes. Can you confirm that your on board gyro scope does not provide that kind of data? Can you suggest other sensors, compatible with the RPRO board, that may provide such data?

  • Alternatively, if the gyroscope measures the rate of rotation around the XYZ axes in degrees per second, there ought to be a way to convert that to angular displacement in degrees. Sounds like an integral computation that should be performed at the board level. Is this functionality that the RPRO can assist with?

  • Any updates Eric?
  • alphacoder,

    Please familiarize yourself with sensor technology and let us know if we can help with our services:

  • The BMI160 chip only reports angular rotation rate.  You can integrate the rotation rate using the on-board data processor, take a look at event filters,

This discussion has been closed.