Movesense Accelerometer and Gyroscope scale - movesense

In the Movesense sensor Documentation, it shows the following specifications for the Accelerometer and the gyroscope:
Acceleration ±2/±4/±8/±16g full scale
Gyroscope ±125/±245/±500/±1000/±2000°/s full scale
How can I know which one of those scales I am using? +-2 G Or +-16G? or 1000 OR 2000 in Gyroscope?
Which one is the default value? how can I change it?
Thank you

Here is the documentation:
https://bitbucket.org/suunto/movesense-docs/wiki/EmbeddedSoftware/api/meas/acc.md
And the default values should be ±8g and ±2000°/s

Related

BNO055 ACCELEROMETER READINGS

I am using BNO055 for tracking position and velocity. I am getting the accelerometer readings from the sensor but the readings are not precise. Though the accelerometer is calibrated I am getting some disturbance in readings. I just placed the sensor on table but it accumulating some values. I am attaching some of my readings so you can check it out.
I am very glad if someone help me. accelerometer readings
The readings look rather precise to me. The fluctuations are in the hundredths of a m/s^2. And yes that might add up if you plan on calculating the speed or position of the device but you might add some noise filtering to cancel it out. Check here for a start:
Accelerometer Low Pass Filtering

I want to calculate spped of android device using accelerometers sensor only not with GPS?

I need to create an app that Calculates the moving car velocity/speed, with x/y/z speed.
My idea is using device's accelerometer.
I am using Sensor.TYPE_ACCELEROMETER and getting ax,ay,az (acceleration in x,y,z direction). how to get sped of device. Lots of physics formulas suggested by people to get speed but any one of then not giving correct speed compared to GPS. Please tell me code or good link which solve my problem.
That would be very difficult. To calculate the speed of the device, you need to calculate the integral of the acceleration. But to do so, you need to very accurately know for very dense points in time both the device's rotation and its acceleration. Assuming you do have those things, you simply need to take the device's initial speed, and for each point in time add to it (rotation matrix * acceleration vector * time to next measurement). That's probably the most accurate thing you can that is simple enough.

Get position from accelerometer

I am working in a monocular 3D Mapping project, and I need every time both position and rotation (angle).
To filter Gyroscope Data, I decided to use the "compass" and set 0 value to the angle if it's north.
But to get the position, I will need to double integrate the accelerometer value with a small sampling step (1ms) and 7 values mean filter.
I think this will make position more accurate. But does someone have an idea about the error range ? for example, in 10 meters, How much the error will be.
And does anyone have a better idea?
The sensors are from STM32F3 Discovery Board
Thanks
The STM32F3 has two sensors you'd be using:
LSM303DLHC accelerometer and magnetometer
L3GD20 3-axis digital gyroscope.
The sensor accuracy should appear somewhere in the datasheet. Since you'll be using several sensors, you'll have to calculate the total error over the time your measuring. Note, the error won't be a single number like 10 meters because it will accumulate over time. If you had a GPS or some other way of determining your position you'd be able to limit your accumulated error.
What you're doing sounds like an Inertial Measurement Unit. If you haven't already, I'd recommend reading up on that and also Dead Reckoning.

Is there any other sensors in android beside those?

so far, i've found below sensors in android devices. I'm going to develop an app putting information about all sensors available in device. For that i need to know how many sensors an android device can have beside those are given in below?
Gyroscope Sensor
Light Sensor
Orientation Sensor
Proximity Sensor
Temperature Sensor
Accelerometer Sensor
Sound
Magnetic Field
Pressure
Any reference link, helpful comment will be appreciated.
When there is no gyroscope on the device, and only when there is no gyroscope, you may implement the rotation vector, linear acceleration and gravity sensors without using the gyroscope.
https://source.android.com/devices/sensors/sensor-types.html
Barometer sensor - basically pressure for weather forecast,
Step detecting sensor
and some orientation sensors with maximum 6-axis compared to the traditional 3-axis ones
According to Google site there is total 13 sensors:
ACCELEROMETER : Measures the acceleration force
AMBIENT_TEMPERATURE : Measures the ambient room temperature
GRAVITY : Measures the force of gravity
GYROSCOPE : Measures a device's rate of rotation in rad/s around each of the three physical axes (x, y, and z).
LIGHT : Measures the ambient light level
LINEAR_ACCELERATION : Measures the acceleration force
MAGNETIC_FIELD : Measures the ambient geomagnetic field
ORIENTATION : Determining device position.
PRESSURE : Monitoring air pressure changes.
PROXIMITY : Phone position during a call.
RELATIVE HUMIDITY : Measures the relative ambient humidity in percent (%).
ROTATION_VECTOR : Motion detection and rotation detection.
TEMPERATURE : Monitoring temperatures.
For More information visit :
http://developer.android.com/guide/topics/sensors/sensors_overview.html

Compensating compass lag with the gyroscope on iPhone 4

I've been experimenting with the compass and gyroscope on iPhone 4 and would like some help with an issue I'm having. I want to compensate for the slowness of the compass by using data from the gyroscope.
Using CMMotionManager and its CMDeviceMotion object (motionManager.deviceMotion), I get the CMAttitude object. Correct me if I'm wrong (please), but here is what I've deduced from the CMAttitude object's yaw property (I don't need pitch nor roll for my purposes):
yaw ranges from 0 to PI when the phone is pointing downwards (as indicated by deviceMotion.gravity.z) and swinging counterclockwise and 0 to -PI when swung clockwise
when the device is pointing upwards, yaw ranges from -PI to 0 and PI to 0, respectively
and from the compass data (I'm using locationManager.heading.magneticHeading), I see that the compass gives values from 0 to 360, with the value increasing when swinging clockwise
All right, so using all of this information together, I'm able to get a value I call horizontal that, regardless of whether the device is pointing up or down, will give values from 0 to 360 and increase when the device is swung clockwise (though I am still having trouble when deviceManager.gravity.z is around 0 -- the yaw value freaks out at this gravity.z value).
It seems to me that I could "synchronize" the horizontal and magneticHeading values, using a calculated horizontal value that maps to magneticHeading, and "synchronize" the horizontal value to magneticHeading when I feel the compass has "caught up."
So my questions:
Am I on the right track with this?
Am I using the gyro data from CMDeviceMotion properly and the assumptions I listed above correct?
Why might yaw freak out when gravity.z is around 0?
Thank you very much. I look forward to hearing your answers!
Just trying to answer... correct me if i'm wrong..
1.Yes you are on the right track
2.gravity in CM is already "isolated" from user gravity (gravity value caused by user acceleration) thats why there is two gravity, the "gravity" and "userAcceleration" its on apple CM documentation
// Note : not entirely isolated //
3.
if you have a gravity 0 it mean that the coresponding axis is perpendicular with gravity.
gravity.z is the iPhone screen thats why it -9.82m/s2 if you put on the desk with screen upright, actualy it hard to get 0 or maximum value of the gravity due to the sensor noise (it's normal, all sensor has a noise expecially cheap sensor).
what i do on my apps is I will switch my reference axis to other axis (in your case may be x or y) for certain limits, how the strategy is depend on the purpose or which side is your reference.
the other thing is, gyro is fast but its not stable, you need to re-calibrate the value for several interval. In my case every 5 second. I've experiment with gyro for calculating angle between two plane, i try with exacly 90 degree ruler and it will give an error about 0.5 degree every second try and keep increasing, but thats is mine, maybe others have a better method for avoid the error.
below is my steps "
Init
Read gravity XYZ -> Xg Yg Zg
Check if Xg < 0.25 If TRUE try Yg then Zg // Note 1 = 1g = 9.82 m/s^2
Read the compass and gyro
Configure and calibrate the gyro using the compass and calulate based on which axis i use in point 3.
If 5 second is pass then recalibrate, read the compass
If the the difference with gyro reading is > 5 degree skip recalibartion the gyro.
If the the difference with gyro reading is < 5 degree calibrate the gyro using compass value
Note: for number 7 : is to check if the phone affected with magnetic field or near huge steel such or high voltage electrical line or in noisy and heavy equipment in factory plant.
Thats all... Hope this could help you...
And sorry for my english..
Here is an example of an iPhone app where the compass get compensated with the gyroscope. Code and project can be seen here:
http://www.sundh.com/blog/2011/09/stabalize-compass-of-iphone-with-gyroscope/
The direction of the yaw axis vector is undefined when in zero gravity (or free fall, or close enough).
In order to do synchronization while in motion, you need to create a filter for your "horizontal" value that has the same lag/delay response characteristics as the magnetic compass. Either that, or wait until motion stops long enough for both values to settle before recalculating the offset.
Answer to question 1 is Yes, question 2 you are on the right track but you could use a variable name that is not 'horizontal', question 3 is answered by hotpaw2 and also a yaw in a chopper or helicopter at near zero altitude would alert the pilot with an alarm. There is a time lag because part of the software is local while there are other factors which can slow it down including access to a sensor for detecting magnetic waves, the device position and direction, preparing the graphic output for the compass display, computing and outputting data from the gyro and sensors through a relatively slow interface, using a general purpose handheld device not custom designed for the type of task being asked of it.