Using Arduino to Obtain Absolute Orientation from a 6-Axis Gyro

In summary, the conversation discusses the use of a gyro with 6 inertial axes and 3 magnetic axes to obtain the absolute orientation of a model rocket in real-time. The participants also mention using accelerometers and magnetometers to measure acceleration and local magnetic field orientation, respectively. Additionally, the conversation touches on the use of servos and thrust vectoring or fin angling for control, as well as the integration of body rates to determine orientation. The participants also mention the use of MATLAB code for sensor fusion and calculations, and the potential changes in dynamics during flight as fuel is consumed.
  • #1
Leo Liu
353
156
The gyro has 6 inertial axes and 3 magnetic axes. How do I make them work together to get the orientation of the rocket in the reference fixed to the ground? I found something from Matlab but I am not sure how it works: https://www.mathworks.com/help/fusi...sing-Inertial-Sensor-Fusion-and-MPU-9250.html. Also it doesn't suit my purpose since I would like to compute the absolute orientation in real time on the Arduino.

Could someone help me out please?

PS My end goal is to build a model rocket with attitude control, but for now I just want to record orientations and accelerations. I will be using Arduino for my project.

PS2 I realized the real question is how to obtain the absolute orientation from the gyro angular speeds.
 
Last edited:
Physics news on Phys.org
  • #2
There are three perpendicular accelerometers.
There are three perpendicular rotation rate-meters.
There are three perpendicular magnetometers.

Start with the rocket vertical, and with a reference to North.
Use the accelerometers to find the vertical axis. Measure g.
Use the magnetometers to find local magnetic field orientation.
Record the zero values for the three rotation-rate channels.

Launch the rocket.
Measure 3D acceleration, and 3D rotation.
Integrate those to map the changing orientation and path of the rocket.
Check the computed orientation against the local magnetic field orientation.
 
  • Like
Likes berkeman
  • #3
What method of control will you use?
Servos combined with thrust vectoring or fin angling?
 
  • #4
Baluncore said:
Integrate those to map the changing orientation and path of the rocket.
Does integrating the body rates give the true orientation? How do I convert body rates to angular speeds under an inertial frame?
 
  • #5
Lnewqban said:
What method of control will you use?
Servos combined with thrust vectoring or fin angling?
Haven’t decided yet. Most likely TVC without fins. But for now I just want to record data during a flight.
 
  • Like
Likes Lnewqban
  • #6
Leo Liu said:
Does integrating the body rates give the true orientation? How do I convert body rates to angular speeds under an inertial frame?
No, there is a lot more to it. You can use the MATLAB link that you included or make your own code.
The MATLAB code might even adjust for a rotating Earth and Coriolus force, but that is not needed in a short-range rocket. On the other hand, it might not keep track of rotations of the rocket around its long axis if it is assuming that the rocket is asymmetric in that axis and a rotation does not matter.
 
  • #7
FactChecker said:
No, there is a lot more to it. You can use the MATLAB link that you included or make your own code.
The MATLAB code might even adjust for a rotating Earth and Coriolus force, but that is not needed in a short-range rocket. On the other hand, it might not keep track of rotations of the rocket around its long axis if it is assuming that the rocket is asymmetric in that axis and a rotation does not matter.
My IMU module is actually able to do a sensor fuse though all the calculations are done in a black box. I have made this post to understand what's going on behind the scene, but I guess I will just use that for now. Thanks for the help.
 
  • #8
Leo Liu said:
My IMU module is actually able to do a sensor fuse though all the calculations are done in a black box. I have made this post to understand what's going on behind the scene, but I guess I will just use that for now. Thanks for the help.
The actual sensor fusion and inertial reference calculations of a purchased IMU are likely to be proprietary. That being said, if you are interested in calculations of that general nature, MATLAB usually does a pretty good job of documenting their algorithms.
 
  • Like
Likes Leo Liu
  • #9
The mass and the moment of inertia about different axes will change during flight, as fuel is consumed. That does not change the integration of the accelerations and rates, to get the position and orientation, but it will change the dynamics of the control response, needed to correct the flight path.
 
  • Like
Likes FactChecker

FAQ: Using Arduino to Obtain Absolute Orientation from a 6-Axis Gyro

What components do I need to obtain absolute orientation using a 6-axis gyro with Arduino?

To obtain absolute orientation using a 6-axis gyro with Arduino, you will need an Arduino board (e.g., Arduino Uno), a 6-axis gyro/accelerometer sensor (such as the MPU-6050), connecting wires, and potentially a breadboard for prototyping. Additionally, you might need a library like the MPU6050 library for easier interfacing with the sensor.

How do I connect a 6-axis gyro to the Arduino?

To connect a 6-axis gyro like the MPU-6050 to the Arduino, you typically use the I2C interface. Connect the VCC pin of the sensor to the 5V pin on the Arduino, GND to GND, SDA to the A4 pin, and SCL to the A5 pin on an Arduino Uno. Ensure the connections are secure to get accurate readings.

What Arduino code is required to read data from the 6-axis gyro?

To read data from the 6-axis gyro, you need to include the Wire library for I2C communication and a specific library for the sensor, such as the MPU6050 library. The code involves initializing the sensor, reading the raw accelerometer and gyroscope data, and then processing this data to compute the orientation. Example code can be found in the MPU6050 library documentation or other similar resources.

How do I calculate absolute orientation from the sensor data?

Calculating absolute orientation from a 6-axis gyro involves sensor fusion algorithms that combine accelerometer and gyroscope data to estimate orientation. Common algorithms include Complementary Filter, Kalman Filter, and Madgwick Filter. These algorithms help to minimize drift and provide a stable orientation estimate. Libraries implementing these algorithms are available and can be integrated into your Arduino code.

How can I visualize the orientation data obtained from the 6-axis gyro?

To visualize the orientation data, you can output the calculated orientation angles (pitch, roll, yaw) to the Serial Monitor in the Arduino IDE. For a more graphical representation, you can use software like Processing, which can read serial data from the Arduino and display a 3D model that moves according to the sensor's orientation.

Back
Top