BNO085 or BNO080 IMU

Does somebody tested it?
Or plan to test it?
Looks very impressive.
It supports magnetic declination config.

I drove around the field with CMPS 14 mounted. The field was very uneven, frozen, uneven after cultivation with a grubber. The AGO kept the line straight, but every now and then, every 3-4 minutes or every few hundred meters, a sharp swing of the course appeared, which resulted in a shift of about 0.5 m from the line and a quick return.

The AgIO has a filter algorithm is implemented to correcting the heading. A few days ago, I got similar a signal to your result. Or it seemed like sine/cosine. I am not sure if it is correct to provide raw Euler angle data on CPMS14 to the pivot axle heading directly.

Would this connect in where the MMA was on the Pcb board and let us put the CMPS on the roof with a cable?

Sorry forgot the pic Screenshot_20201210-221440

Saw this in one of your earlier posts, couldnā€™t figure out how to reply with the pic in reply

Could that be something electrical affecting it or is re calibration on? Iā€™ve not tested a CMPS14. Iā€™ve got the Adafruit BNO085 breakout.

With the magnetometer on, I once had my lights pull the heading way off course. I have the magnetometer off now. Not tested it properly but nothing seems to bother it now.

I have been driving it around a fair bit. This is completely different software, but the cmps14 has proven rock solid so far.

https://www.youtube.com/watch?v=8HZ4DnVfWYQ

1 Like

Oops, wrong video - but it is still pretty interesting as wellā€¦

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

1 Like

Hello,

Here is my edited version fo Autosteer_USB_4.3.10.ino to use BNO08x with AOG.
Itā€™s based on previous code posted, but with some improvement in the .ino and in the Sparkfun Library:

  • I add in the library the possibility to plot the current calibration configuration
  • When we enable a BNO08x report, the BNO08x respond with a report to confirm the correct activation of the report: I add functions to retrieve this report and check if the report is correctly enable

The code is available in the following zip (I would see later to put it on GitHub): https://1drv.ms/u/s!At0hnqbQtv42pVtYpDwNU0x2fiqq?e=oexJXw
All edited line are identified with a comment starting by ā€œEdited by Mathā€, so you can easily found the edited lines.

The code let you choose if you want to use BNO08x instead of MMA, or instead BNO055 or instead of both (so you can easily switch from one module to the orther if you want to make comparativ test). So at the begining of code you have a config zone with:

  • BNO08x_ADRESS: adresse of the BNO, 0x4A for Adafruit BNO085 board, 0x4B for Sparkfun BNO080 board
  • USE_BNO08X_ROLL: set to 1, it will force the .INO to use the BNO08x for roll instead of MMA/DOGS2 (regardless of the Inclinometer you have choose in AOG module configuration page)
  • USE_BNO08X_HEADING: set to 1, it will force the .INO to use the BNO08x for heading instead of BNO055 (regardless if BNO is selected or not in AOG module configuration page)
  • REPORT_INTERVAL: if you want to change report interval of the Rotation Vector report, for advanced users
  • ENABLE_GYRO_CAL: set to 1 if you want to enable the background gyroscope calibration. By default background calibration is enable only for magnetometer and accelerometer. If you set this parameter to 1, during the setup, the Arduino will check the BNO08x background calibration enable and print it to the serial port, so with a serial consol you can check if the calibration are correctly enable

Even if you choose to use BNO08x for roll, in the AOG module configuation page you can still choose the inclinometer axis: the MMA axis selection, will change the BNO08x axis use for roll. If you need to inverse roll value for BNO08x, you just have to activate ā€œinvert rollā€ in AOG module configuration page.

The code is made so that, if we want to add BNO08x as an official alternativ of MMA/BNO055, I can be easily edited to treat BNO08x as additionnal option (we just have to define the corrsponding value for aogSettings.BNOInstalled and aogSettings.InclinometerInstalled).

Tested in my test bench itā€™s work. I will test it in one week on the tractor and I hop it will solve the difficulty I encounter with MMA: Perfect straight line without MMA, slight oscillation with MMA

Math

2 Likes

Finally have the BNO080 and the CMPS14 on the same board with a nano. So guess which one is the clear winner? (The line should be straight like the blue one. )

Screenshot_1

Another pic.

Screenshot_3

The blue is probably the CMPS14, if it follows what you have been testing earlier. Too bad I have already got the BNO085 before this :frowning:
But what exactly did you do with the board, while performing this test ?
Hope there is a way to make the BNO perform better.

1 Like

The roll seems to take off as you rotate the board - like steering. But oddly it takes a while to settle back to where it should be at 0 again. The roll follows each other with noisy and rapid movement etc. It responds very quickly.

On a development forum such as this a little more information would be good. If that is roll then something is set up wrong. I tested the BNO085 on the bench with very very violent horizontal movements on a flat plane and roll didnā€™t move one tiny bit. Neither did yaw, if I slid the sensor sharply back and forth along a fixed straight edge.

Not sure what your testing involved there but something seems wrong.

They are basically both the same sensor, with the same Hillcrest firmware after all.

I may be wrong but, given the basically identical price point I would guess all that the cmps14 has extra is i2c conversion to standard protocol and maybe a standard setup that serves itā€™s target usage to the detriment of flexibility.

I would be leaving background calibration turned off. In the tractor with it turned on I got basically exactly the same problem that the BNO055 has. Drift after calibration.

Why nobody want to try UFSMAX?
Reading their articles it is looks like they did great job.
Drift can be eliminated only by the calibration.
So they implement dynamic calibration.
I had ordered 2 pcs, but it will take around a month to delivery to Europe.

What evidence are you basing that on?

1 Like

The CMPS is calibrated in a special jig. something we just can not do accurately at home. Andreas experienced this as well. I was testing the BNO080 from sparkfun, not the 085. I have ordered the 085 as well, may as well try everything we can. I have spent a ridiculous amount of time with testing IMUā€™s so i kind of know how to make them show their insecurities. They are all hobby devices and the goal is to find the least crappy. :slight_smile:

Both sensors were read at the exact same time mounted on the same board, merged code. The library is HUGE for the bno080 and the 085 library (according to AdaFruit) is too big to fit on the atmel 328, this is also a problem, whereas the CMPS requirement is a about 300 bytes.

I donā€™t think the imu always pointing north is critical with AOG. All we really need is something that has a stable roll and fairly consistent heading to smooth out the single antenna GPS heading. In fact a stable accel/gyro is all we really need like in commercial units but at a much lower cost. The random drift and problems of the BNO055 made it especially useless.

3 Likes

Looking forward to hear how it works!