I am working on a data logger project and I am looking for an IMU able to perform fast acquisitions of 9 data: 3x orientations, 3x angular velocities, 3x accelerations. I am instrumenting a motorcycle and the IMU will be installed under the rider seat and as I have ever asked in previous post use a magnetometer seems not to be a good idea due to iron environment and magnetic interferences.
So I am looking for a board with at least a gyro and an accelero and if possible a board including an algorithm to compute orientations from gyro and accel data.
The sensor loop speed is exactly 10 ms (100Hz). Nevertheless write data on the SD takes around 5 ms.
Currently I have a BNO055 which is fast (able to read at 100 Hz) but not enough (not able to read and save at 100 Hz). I mean that data reading times are not constant and take between 1 and 6 ms. During a long acquisition (6ms) time budget is not reached due to time consumed to write data! You can find explanations here: ABS sensor scooter & arduino - Sensors - Arduino Forum
Do you have any idea about a faster IMU than the BNO055?
Thank you for the link I am going to read the data sheet.
I am PhD student and I am working on motorcycle stability and control.
This arduino project aims to validate theorical works on lateral motorcycle dynamics estimation. It means that using judicious measures, mathematical algorithms allow to estimate some dynamics state. For example I am able to estimate roll angle without the knowing of the measure.
As you know to perform validation, I need to compare estimated with measured states.
The global objective is to contribute to the development on new active safety systems for 2 wheeled vehicles by reducing the number of sensors.
So you are trying to indirectly determine dynamics of a bike and in order to validate the indirect predictions you need to compare it to direct measurements. Is that correct?
Sounds freaking awesome!
Something else came to my mind: since you need to calculate attitude, heading and so forth you might want to look into this. I have never used it persoanlly yet but it basically is an Arduino on steroids... tons of steroids.
sounds like an awesome project. interesting for sure. i'm a bike rider too and a gotta question: wouldn't the roll be complicated by the amount the rider leans into the turn too? most lean without even knowing it and good riders like you come right off the seat into a turn. so is the roll you are looking at the angle of the bike to ground, say or something else? keep up the good work!
So you are trying to indirectly determine dynamics of a bike and in order to validate the indirect predictions you need to compare it to direct measurements. Is that correct?
Yes it is.
Using a linearized model of the motorcycle as the well-known Sharp 71 model allows to model the dynamics of the motorcycle. For sure, we need many parameters as the wheel base, the gravity center positions (2 bodies: front vs rear), the masses, the inertias,…
Then using this model it is possible to derive “estimators/observers “ which allow to estimate the whole of the dynamics (described by the model) with only few judicious measures. For example with the measure of the steering angle, the yaw rate and the roll rate, observers allow to estimate the roll angle, … and two of the most interesting states: the tire forces
Something else came to my mind: since you need to calculate attitude, heading and so forth you might want to look into this. I have never used it persoanlly yet but it basically is an Arduino on steroids... tons of steroids.
I have ever several Arduinos with lot of sensors but thank you for the link.
sounds like an awesome project. interesting for sure. i'm a bike rider too and a gotta question: wouldn't the roll be complicated by the amount the rider leans into the turn too? most lean without even knowing it and good riders like you come right off the seat into a turn. so is the roll you are looking at the angle of the bike to ground, say or something else? keep up the good work
You are right it is not an easy question. It exists very complex motorcycle models as Sharp 94 where the whole bike + rider are divided into 8 rigid bodies:
-rear wheel
-front wheel
-lower part of the fork
-upper part of the fork + steering mechanism
-rear body (engine, fuel tank, frame,...)
-rider upper body
-rider lower body
-swing arm
This kind of model allow to model the rider motion in curve.
BikeSim is a complete engineering motorcycle simulation software and it is based on this model.
It is to say that you can model what you want but the problem is the complexity especially if you work on control or observation.
To use control and observation tools you need a model as simple as possible. That is why, it is not a bad assumption for common (not race) vehicle to consider the rider rigidly attached to the rear body and so rider lean angle equal to the bike roll angle.
Can you log the data into a buffer in an interrupt (at 100Hz), and use the loop() to write the buffer to SD card? Accessing the file system may have a lot of overhead, so batch writing the data may significantly improve the throughput.