- I think you can get near 1-2 degrees accuracy with medium priced MEMS sensors.
- See below.
- There is never a lock up and the I2C works always 100% if it is done right. It must be done right, because the I2C bus is not a fault tolerant bus. If you have troubles with the I2C bus, then assume that there are four to ten major problems with it (not kidding).
The MPU-6050 is noisy and outdated and your MPU-6050 might not be the real one.
Arduino user @jremington put some serious work into this: https://github.com/jremington/LSM9DS1-AHRS. You need to calibrate the sensor.
The Nano is a 5V board, and the ESP32 is a 3.3V board. Most sensors are 3.3V sensors, so it is much easier to use a 3.3V board. Don't try the 5V board first, because you could damage the sensor. I'm not talking about the power to the sensor, but about trying to push a signal of 5V into the SDA and SCL pins of the sensor.
You have to know about pullup resistors of the I2C bus. I prefer a sink current of 1...3mA. Suppose the voltage is 3.3V and the sink current (to make the signal low) is 2mA, then all the pullup resistors combined is 1650 Ω, that would be pullup resistors of 1k5 or 1k8.
How long are the wires of the I2C bus ? Do you want to use a cable for the I2C bus. A flat-ribbon cable with SDA next to SCL is the worst. The I2C bus was not designed to go through a cable.
I made a Wiki on github about the troubles I read on this forum: how to make a reliable I2C bus.
The sample rate to get data can only be so much. To keep track of all the motions of the vehicle, a very high sample rate is needed. The accelerometer is very sensitive for vibrations and short shocks. If you mechanically dampen the sensor, it becomes a lot easier to keep track of the motions of the vehicle.