<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://www.olliw.eu/storm32bgc-v2-wiki/index.php?action=history&amp;feed=atom&amp;title=Yaw</id>
	<title>Yaw - Revision history</title>
	<link rel="self" type="application/atom+xml" href="http://www.olliw.eu/storm32bgc-v2-wiki/index.php?action=history&amp;feed=atom&amp;title=Yaw"/>
	<link rel="alternate" type="text/html" href="http://www.olliw.eu/storm32bgc-v2-wiki/index.php?title=Yaw&amp;action=history"/>
	<updated>2026-06-12T23:50:10Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.3</generator>
	<entry>
		<id>http://www.olliw.eu/storm32bgc-v2-wiki/index.php?title=Yaw&amp;diff=11921&amp;oldid=prev</id>
		<title>OlliW at 12:29, 23 January 2026</title>
		<link rel="alternate" type="text/html" href="http://www.olliw.eu/storm32bgc-v2-wiki/index.php?title=Yaw&amp;diff=11921&amp;oldid=prev"/>
		<updated>2026-01-23T12:29:09Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 14:29, 23 January 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The yaw angle is a pretty difficult topic for gimbals which are based on 6DOF MEMS inertial sensors (gyroscope, accelerometer). This page aims at providing some understanding of the challenges and how the STorM32 controller handles yaw.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The yaw angle is a pretty difficult topic for gimbals which are based on 6DOF MEMS inertial sensors (gyroscope, accelerometer). This page aims at providing some understanding of the challenges and how the STorM32 controller handles yaw.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The fundamental issue with &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;such a gimbal setup &lt;/del&gt;is that yaw cannot be measured in absolute terms (e.g. with respect to North) and that moreover the yaw angle drifts quite significantly with time (typically several degrees per minute). This is in striking contrast to the pitch and roll angle which using the accelerometers can be determined with respect to the gravitation axis.  &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The fundamental issue with &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;these sensors &lt;/ins&gt;is that yaw cannot be measured in absolute terms (e.g. with respect to North) and that moreover the yaw angle drifts quite significantly with time (typically several degrees per minute). This is in striking contrast to the pitch and roll angle which using the accelerometers can be determined with respect to the gravitation axis.  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Fundamentally, due to the limitations set by the available sensors, the STorM32 controller has no notion of an absolute yaw, in the sense that yaw could be referenced to a specific direction, like North (aka yaw in earth frame, or absolute yaw) or the gimbal forward orientation (aka yaw in vehicle frame, or relative yaw). Accordingly, it uses what one may call a &amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;synthetic yaw reference&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;. The STorM32 controller tries its best to adjust the yaw reference such that the reported yaw angle may make sense to a user, but this very much depends on the operation conditions, and depending on the particular operation condition and the pervious history it is more or less successful in achieving this. However, fundamentally, the yaw reference wanders with time, and along with it does the reported yaw angle.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Fundamentally, due to the limitations set by the available sensors, the STorM32 controller has no notion of an absolute yaw, in the sense that yaw could be referenced to a specific direction, like North (aka yaw in earth frame, or absolute yaw) or the gimbal forward orientation (aka yaw in vehicle frame, or relative yaw). Accordingly, it uses what one may call a &amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;synthetic yaw reference&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;. The STorM32 controller tries its best to adjust the yaw reference such that the reported yaw angle may make sense to a user, but this very much depends on the operation conditions, and depending on the particular operation condition and the pervious history it is more or less successful in achieving this. However, fundamentally, the yaw reference wanders with time, and along with it does the reported yaw angle.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;For instance, the yaw angle shown in the GUI&#039;s DataDisplay can drift substantially, while the camera itself may not move at all. This by itself is not worrysome as it only shows that for the current operation condition the synthetic yaw reference can not be maintained to a constant value but wanders. Unfortunately, the displayed yaw angle may also drift due to a malfunction, like an exessively drifting gyro sensor or incorrect IMU orientation, and it is not always easy to distinguish the root cause.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;For instance, the yaw angle shown in the GUI&#039;s DataDisplay can drift substantially, while the camera itself may not move at all. This by itself is not worrysome as it only shows that for the current operation condition the synthetic yaw reference can not be maintained to a constant value but wanders. Unfortunately, the displayed yaw angle may also drift due to a &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;actual &lt;/ins&gt;malfunction, like an exessively drifting gyro sensor or incorrect IMU orientation, and it is not always easy to distinguish the root cause.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;In order to produce a yaw angle which is aligned with the gimbal forward orientation, the STorM32 tries as best as it can to make use of its knowledge of the gimbal motor positions, but this also depends very much on the operation conditions and in addition on the gimbal construction (no encoders and no 2nd IMU, no encoders with 2nd IMU, with encoders). Obviously, an encodered gimbal provides the best information on the motor positions while a gimbal with no encoders and unpowered motors cannot provide any information.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;In order to produce a yaw angle which is aligned with the gimbal forward orientation, the STorM32 tries as best as it can to make use of its knowledge of the gimbal motor positions, but this also depends very much on the operation conditions and in addition on the gimbal construction (no encoders and no 2nd IMU, no encoders with 2nd IMU, with encoders). Obviously, an encodered gimbal provides the best information on the motor positions while a gimbal with no encoders and unpowered motors cannot provide any information.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The situation improves substantially if &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;the &lt;/del&gt;STorM32-Link is available. Then the STorM32 controller does know the orientation of the gimbal base in absolute terms, and can adjust its synthetic yaw reference by using the motor positions (as far as these are known, see previous paragraph), such as to achieve a synthetic yaw reference which has a fixed relation to the North direction. However, obviously, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;if &lt;/del&gt;this &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;works well or not &lt;/del&gt;depends on &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;how accurate &lt;/del&gt;the yaw angle &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;is, which is &lt;/del&gt;provided by &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;the &lt;/del&gt;STorM32-Link. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;So, it is important to provide &lt;/del&gt;an accurate yaw angle, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;which &lt;/del&gt;can be difficult to achieve.  &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The situation improves substantially if STorM32-Link is available. Then the STorM32 controller does know the orientation of the gimbal base in absolute terms, and can adjust its synthetic yaw reference by using the motor positions (as far as these are known, see previous paragraph), such as to achieve a synthetic yaw reference which has a fixed relation to the North direction. However, obviously, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;the success of &lt;/ins&gt;this &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;approach &lt;/ins&gt;depends on &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;the accuracy of &lt;/ins&gt;the yaw angle provided by STorM32-Link. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Providing &lt;/ins&gt;an accurate yaw angle &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;it thus crucial&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;but &lt;/ins&gt;can be difficult to achieve.  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The STorM32 controller provides several means to read out a yaw angle, like serial commands or MAVLink messages, and what is reported as yaw angle depends on the particular method and operation condition. In some cases it reports the yaw angle with reference to its synthetic yaw reference, in other cases it reports its best guestimate for the relative yaw angle, and if the STorM32-Link is available it also can provide absolute yaw angles.  &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The STorM32 controller provides several means to read out a yaw angle, like serial commands or MAVLink messages, and what is reported as yaw angle depends on the particular method and operation condition. In some cases it reports the yaw angle with reference to its synthetic yaw reference, in other cases it reports its best guestimate for the relative yaw angle, and if the STorM32-Link is available it also can provide absolute yaw angles.  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;This can be admittedly confusing to the user, but this page hopefully helps at least insofar as to better understand why it is that confusing.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;This can be admittedly confusing to the user, but this page hopefully helps at least insofar as to better understand why it is that confusing.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key 59361m48173_5-storm32bgcmediawikki_:diff:1.41:old-11920:rev-11921:php=table --&gt;
&lt;/table&gt;</summary>
		<author><name>OlliW</name></author>
	</entry>
	<entry>
		<id>http://www.olliw.eu/storm32bgc-v2-wiki/index.php?title=Yaw&amp;diff=11920&amp;oldid=prev</id>
		<title>OlliW at 12:22, 23 January 2026</title>
		<link rel="alternate" type="text/html" href="http://www.olliw.eu/storm32bgc-v2-wiki/index.php?title=Yaw&amp;diff=11920&amp;oldid=prev"/>
		<updated>2026-01-23T12:22:19Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 14:22, 23 January 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The yaw angle is a pretty difficult topic for gimbals which are based on 6DOF MEMS inertial sensors (gyroscope, accelerometer). This page aims at providing &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;at least &lt;/del&gt;some &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;insight into &lt;/del&gt;the &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;implications &lt;/del&gt;and how the STorM32 controller handles yaw.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The yaw angle is a pretty difficult topic for gimbals which are based on 6DOF MEMS inertial sensors (gyroscope, accelerometer). This page aims at providing some &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;understanding of &lt;/ins&gt;the &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;challenges &lt;/ins&gt;and how the STorM32 controller handles yaw.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The fundamental issue with such a gimbal setup is that yaw cannot be measured in absolute terms (e.g. with respect to North) and that moreover the yaw angle drifts quite significantly with time (typically several degrees per minute). This is in striking contrast to the pitch and roll angle which using the accelerometers can be determined with respect to the gravitation axis.  &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The fundamental issue with such a gimbal setup is that yaw cannot be measured in absolute terms (e.g. with respect to North) and that moreover the yaw angle drifts quite significantly with time (typically several degrees per minute). This is in striking contrast to the pitch and roll angle which using the accelerometers can be determined with respect to the gravitation axis.  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key 59361m48173_5-storm32bgcmediawikki_:diff:1.41:old-11919:rev-11920:php=table --&gt;
&lt;/table&gt;</summary>
		<author><name>OlliW</name></author>
	</entry>
	<entry>
		<id>http://www.olliw.eu/storm32bgc-v2-wiki/index.php?title=Yaw&amp;diff=11919&amp;oldid=prev</id>
		<title>OlliW at 12:21, 23 January 2026</title>
		<link rel="alternate" type="text/html" href="http://www.olliw.eu/storm32bgc-v2-wiki/index.php?title=Yaw&amp;diff=11919&amp;oldid=prev"/>
		<updated>2026-01-23T12:21:42Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 14:21, 23 January 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The yaw angle is a &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;somewhat &lt;/del&gt;difficult topic for gimbals which are based on 6DOF inertial sensors (gyroscope, accelerometer)&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;, and this &lt;/del&gt;page aims at providing at least some insight into the implications and how the STorM32 controller handles yaw.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The yaw angle is a &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;pretty &lt;/ins&gt;difficult topic for gimbals which are based on 6DOF &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;MEMS &lt;/ins&gt;inertial sensors (gyroscope, accelerometer)&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;. This &lt;/ins&gt;page aims at providing at least some insight into the implications and how the STorM32 controller handles yaw.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The fundamental issue with such a gimbal setup is that yaw cannot be measured in absolute terms (e.g. with respect to North) and that moreover the yaw angle drifts quite significantly with time (typically several degrees per minute). This is in striking contrast to the pitch and roll angle which using the accelerometers can be determined with respect to the gravitation axis.  &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The fundamental issue with such a gimbal setup is that yaw cannot be measured in absolute terms (e.g. with respect to North) and that moreover the yaw angle drifts quite significantly with time (typically several degrees per minute). This is in striking contrast to the pitch and roll angle which using the accelerometers can be determined with respect to the gravitation axis.  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key 59361m48173_5-storm32bgcmediawikki_:diff:1.41:old-11110:rev-11919:php=table --&gt;
&lt;/table&gt;</summary>
		<author><name>OlliW</name></author>
	</entry>
	<entry>
		<id>http://www.olliw.eu/storm32bgc-v2-wiki/index.php?title=Yaw&amp;diff=11110&amp;oldid=prev</id>
		<title>OlliW at 09:32, 26 May 2023</title>
		<link rel="alternate" type="text/html" href="http://www.olliw.eu/storm32bgc-v2-wiki/index.php?title=Yaw&amp;diff=11110&amp;oldid=prev"/>
		<updated>2023-05-26T09:32:11Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 11:32, 26 May 2023&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l9&quot;&gt;Line 9:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 9:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;In order to produce a yaw angle which is aligned with the gimbal forward orientation, the STorM32 tries as best as it can to make use of its knowledge of the gimbal motor positions, but this also depends very much on the operation conditions and in addition on the gimbal construction (no encoders and no 2nd IMU, no encoders with 2nd IMU, with encoders). Obviously, an encodered gimbal provides the best information on the motor positions while a gimbal with no encoders and unpowered motors cannot provide any information.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;In order to produce a yaw angle which is aligned with the gimbal forward orientation, the STorM32 tries as best as it can to make use of its knowledge of the gimbal motor positions, but this also depends very much on the operation conditions and in addition on the gimbal construction (no encoders and no 2nd IMU, no encoders with 2nd IMU, with encoders). Obviously, an encodered gimbal provides the best information on the motor positions while a gimbal with no encoders and unpowered motors cannot provide any information.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The situation improves substantially if the STorM32-Link is available. Then the STorM32 controller does know the orientation of the gimbal base in absolute terms, and can adjust its synthetic yaw reference by using the motor positions (as far as these are known, see previous paragraph), such as to achieve a synthetic yaw reference which has a fixed relation to the North direction. However, obviously, if this works well or not depends on how accurate the yaw angle is, which is provided by the STorM32-Link. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;It can be difficult &lt;/del&gt;to provide an accurate yaw angle.  &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The situation improves substantially if the STorM32-Link is available. Then the STorM32 controller does know the orientation of the gimbal base in absolute terms, and can adjust its synthetic yaw reference by using the motor positions (as far as these are known, see previous paragraph), such as to achieve a synthetic yaw reference which has a fixed relation to the North direction. However, obviously, if this works well or not depends on how accurate the yaw angle is, which is provided by the STorM32-Link. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;So, it is important &lt;/ins&gt;to provide an accurate yaw angle&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;, which can be difficult to achieve&lt;/ins&gt;.  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The STorM32 controller provides several means to read out a yaw angle, like serial commands or MAVLink messages, and what is reported as yaw angle depends on the particular method and operation condition. In some cases it reports the yaw angle with reference to its synthetic yaw reference, in other cases it reports its best guestimate for the relative yaw angle, and if the STorM32-Link is available it also can provide absolute yaw angles.  &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The STorM32 controller provides several means to read out a yaw angle, like serial commands or MAVLink messages, and what is reported as yaw angle depends on the particular method and operation condition. In some cases it reports the yaw angle with reference to its synthetic yaw reference, in other cases it reports its best guestimate for the relative yaw angle, and if the STorM32-Link is available it also can provide absolute yaw angles.  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;This can be admittedly confusing to the user, but this page hopefully helps at least insofar as to better understand why it is that confusing.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;This can be admittedly confusing to the user, but this page hopefully helps at least insofar as to better understand why it is that confusing.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key 59361m48173_5-storm32bgcmediawikki_:diff:1.41:old-11109:rev-11110:php=table --&gt;
&lt;/table&gt;</summary>
		<author><name>OlliW</name></author>
	</entry>
	<entry>
		<id>http://www.olliw.eu/storm32bgc-v2-wiki/index.php?title=Yaw&amp;diff=11109&amp;oldid=prev</id>
		<title>OlliW at 09:30, 26 May 2023</title>
		<link rel="alternate" type="text/html" href="http://www.olliw.eu/storm32bgc-v2-wiki/index.php?title=Yaw&amp;diff=11109&amp;oldid=prev"/>
		<updated>2023-05-26T09:30:14Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 11:30, 26 May 2023&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l9&quot;&gt;Line 9:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 9:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;In order to produce a yaw angle which is aligned with the gimbal forward orientation, the STorM32 tries as best as it can to make use of its knowledge of the gimbal motor positions, but this also depends very much on the operation conditions and in addition on the gimbal construction (no encoders and no 2nd IMU, no encoders with 2nd IMU, with encoders). Obviously, an encodered gimbal provides the best information on the motor positions while a gimbal with no encoders and unpowered motors cannot provide any information.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;In order to produce a yaw angle which is aligned with the gimbal forward orientation, the STorM32 tries as best as it can to make use of its knowledge of the gimbal motor positions, but this also depends very much on the operation conditions and in addition on the gimbal construction (no encoders and no 2nd IMU, no encoders with 2nd IMU, with encoders). Obviously, an encodered gimbal provides the best information on the motor positions while a gimbal with no encoders and unpowered motors cannot provide any information.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The situation improves substantially if the STorM32-Link is available. Then the STorM32 controller does know the orientation of the gimbal base in absolute terms, and can adjust its synthetic yaw reference by using the motor positions (as far as these are known, see previous paragraph), such as to achieve a synthetic yaw reference which has a fixed relation to the North direction. However, obviously, if this works well or not depends on how accurate the yaw angle provided by the STorM32-Link &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;is&lt;/del&gt;. It can be difficult to provide an accurate &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;external &lt;/del&gt;yaw angle.  &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The situation improves substantially if the STorM32-Link is available. Then the STorM32 controller does know the orientation of the gimbal base in absolute terms, and can adjust its synthetic yaw reference by using the motor positions (as far as these are known, see previous paragraph), such as to achieve a synthetic yaw reference which has a fixed relation to the North direction. However, obviously, if this works well or not depends on how accurate the yaw angle &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;is, which is &lt;/ins&gt;provided by the STorM32-Link. It can be difficult to provide an accurate yaw angle.  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The STorM32 controller provides several means to read out a yaw angle, like serial commands or MAVLink messages, and what is reported as yaw angle depends on the particular method and operation condition. In some cases it reports the yaw angle with reference to its synthetic yaw reference, in other cases it reports its best guestimate for the relative yaw angle, and if the STorM32-Link is available it also can provide absolute yaw angles.  &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The STorM32 controller provides several means to read out a yaw angle, like serial commands or MAVLink messages, and what is reported as yaw angle depends on the particular method and operation condition. In some cases it reports the yaw angle with reference to its synthetic yaw reference, in other cases it reports its best guestimate for the relative yaw angle, and if the STorM32-Link is available it also can provide absolute yaw angles.  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;This can be admittedly confusing to the user, but this page hopefully helps at least insofar as to better understand why it is that confusing.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;This can be admittedly confusing to the user, but this page hopefully helps at least insofar as to better understand why it is that confusing.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key 59361m48173_5-storm32bgcmediawikki_:diff:1.41:old-11108:rev-11109:php=table --&gt;
&lt;/table&gt;</summary>
		<author><name>OlliW</name></author>
	</entry>
	<entry>
		<id>http://www.olliw.eu/storm32bgc-v2-wiki/index.php?title=Yaw&amp;diff=11108&amp;oldid=prev</id>
		<title>OlliW at 09:29, 26 May 2023</title>
		<link rel="alternate" type="text/html" href="http://www.olliw.eu/storm32bgc-v2-wiki/index.php?title=Yaw&amp;diff=11108&amp;oldid=prev"/>
		<updated>2023-05-26T09:29:15Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 11:29, 26 May 2023&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l9&quot;&gt;Line 9:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 9:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;In order to produce a yaw angle which is aligned with the gimbal forward orientation, the STorM32 tries as best as it can to make use of its knowledge of the gimbal motor positions, but this also depends very much on the operation conditions and in addition on the gimbal construction (no encoders and no 2nd IMU, no encoders with 2nd IMU, with encoders). Obviously, an encodered gimbal provides the best information on the motor positions while a gimbal with no encoders and unpowered motors cannot provide any information.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;In order to produce a yaw angle which is aligned with the gimbal forward orientation, the STorM32 tries as best as it can to make use of its knowledge of the gimbal motor positions, but this also depends very much on the operation conditions and in addition on the gimbal construction (no encoders and no 2nd IMU, no encoders with 2nd IMU, with encoders). Obviously, an encodered gimbal provides the best information on the motor positions while a gimbal with no encoders and unpowered motors cannot provide any information.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The situation improves substantially if the STorM32-Link is available. Then the STorM32 controller does know the orientation of the gimbal base in absolute terms, and can adjust its synthetic yaw reference by using the motor positions (as far as these are known, see previous paragraph), such as to achieve a synthetic yaw reference which has a fixed relation to the North direction. However, obviously, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;how well &lt;/del&gt;this works depends on &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;the accuracy of &lt;/del&gt;the yaw angle &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;which is &lt;/del&gt;provided &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;via &lt;/del&gt;the STorM32-Link. It can be difficult to provide an accurate external yaw angle.  &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The situation improves substantially if the STorM32-Link is available. Then the STorM32 controller does know the orientation of the gimbal base in absolute terms, and can adjust its synthetic yaw reference by using the motor positions (as far as these are known, see previous paragraph), such as to achieve a synthetic yaw reference which has a fixed relation to the North direction. However, obviously, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;if &lt;/ins&gt;this works &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;well or not &lt;/ins&gt;depends on &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;how accurate &lt;/ins&gt;the yaw angle provided &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;by &lt;/ins&gt;the STorM32-Link &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;is&lt;/ins&gt;. It can be difficult to provide an accurate external yaw angle.  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The STorM32 controller provides several means to read out a yaw angle, like serial commands or MAVLink messages, and what is reported as yaw angle depends on the particular method and operation condition. In some cases it reports the yaw angle with reference to its synthetic yaw reference, in other cases it reports its best guestimate for the relative yaw angle, and if the STorM32-Link is available it also can provide absolute yaw angles.  &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The STorM32 controller provides several means to read out a yaw angle, like serial commands or MAVLink messages, and what is reported as yaw angle depends on the particular method and operation condition. In some cases it reports the yaw angle with reference to its synthetic yaw reference, in other cases it reports its best guestimate for the relative yaw angle, and if the STorM32-Link is available it also can provide absolute yaw angles.  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;This can be admittedly confusing to the user, but this page hopefully helps at least insofar as to better understand why it is that confusing.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;This can be admittedly confusing to the user, but this page hopefully helps at least insofar as to better understand why it is that confusing.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key 59361m48173_5-storm32bgcmediawikki_:diff:1.41:old-11107:rev-11108:php=table --&gt;
&lt;/table&gt;</summary>
		<author><name>OlliW</name></author>
	</entry>
	<entry>
		<id>http://www.olliw.eu/storm32bgc-v2-wiki/index.php?title=Yaw&amp;diff=11107&amp;oldid=prev</id>
		<title>OlliW at 09:27, 26 May 2023</title>
		<link rel="alternate" type="text/html" href="http://www.olliw.eu/storm32bgc-v2-wiki/index.php?title=Yaw&amp;diff=11107&amp;oldid=prev"/>
		<updated>2023-05-26T09:27:31Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 11:27, 26 May 2023&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l3&quot;&gt;Line 3:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 3:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The fundamental issue with such a gimbal setup is that yaw cannot be measured in absolute terms (e.g. with respect to North) and that moreover the yaw angle drifts quite significantly with time (typically several degrees per minute). This is in striking contrast to the pitch and roll angle which using the accelerometers can be determined with respect to the gravitation axis.  &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The fundamental issue with such a gimbal setup is that yaw cannot be measured in absolute terms (e.g. with respect to North) and that moreover the yaw angle drifts quite significantly with time (typically several degrees per minute). This is in striking contrast to the pitch and roll angle which using the accelerometers can be determined with respect to the gravitation axis.  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Fundamentally, due to the limitations set by the available sensors, the STorM32 controller has no notion of an absolute yaw, in the sense that yaw could be referenced to a specific direction, like North (aka yaw in earth frame, or absolute yaw) or the gimbal forward orientation (aka yaw in vehicle frame, or relative yaw). Accordingly, it uses what one may call a &#039;&#039;&#039;&#039;&#039;synthetic yaw reference&#039;&#039;&#039;&#039;&#039;. The STorM32 controller tries its best to adjust the yaw reference such that the reported yaw angle may make sense to a user, but this very much depends on the operation conditions, and depending on the particular operation condition and the pervious history it is more or less successful in achieving this. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Howecer&lt;/del&gt;, fundamentally, the yaw reference wanders with time, and with it the reported yaw angle&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;(s)&lt;/del&gt;.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Fundamentally, due to the limitations set by the available sensors, the STorM32 controller has no notion of an absolute yaw, in the sense that yaw could be referenced to a specific direction, like North (aka yaw in earth frame, or absolute yaw) or the gimbal forward orientation (aka yaw in vehicle frame, or relative yaw). Accordingly, it uses what one may call a &#039;&#039;&#039;&#039;&#039;synthetic yaw reference&#039;&#039;&#039;&#039;&#039;. The STorM32 controller tries its best to adjust the yaw reference such that the reported yaw angle may make sense to a user, but this very much depends on the operation conditions, and depending on the particular operation condition and the pervious history it is more or less successful in achieving this. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;However&lt;/ins&gt;, fundamentally, the yaw reference wanders with time, and &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;along &lt;/ins&gt;with it &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;does &lt;/ins&gt;the reported yaw angle.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;For instance, the yaw angle shown in the GUI&amp;#039;s DataDisplay can drift substantially, while the camera itself may not move at all. This by itself is not worrysome as it only shows that for the current operation condition the synthetic yaw reference can not be maintained to a constant value but wanders. Unfortunately, the displayed yaw angle may also drift due to a malfunction, like an exessively drifting gyro sensor or incorrect IMU orientation, and it is not always easy to distinguish the root cause.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;For instance, the yaw angle shown in the GUI&amp;#039;s DataDisplay can drift substantially, while the camera itself may not move at all. This by itself is not worrysome as it only shows that for the current operation condition the synthetic yaw reference can not be maintained to a constant value but wanders. Unfortunately, the displayed yaw angle may also drift due to a malfunction, like an exessively drifting gyro sensor or incorrect IMU orientation, and it is not always easy to distinguish the root cause.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l9&quot;&gt;Line 9:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 9:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;In order to produce a yaw angle which is aligned with the gimbal forward orientation, the STorM32 tries as best as it can to make use of its knowledge of the gimbal motor positions, but this also depends very much on the operation conditions and in addition on the gimbal construction (no encoders and no 2nd IMU, no encoders with 2nd IMU, with encoders). Obviously, an encodered gimbal provides the best information on the motor positions while a gimbal with no encoders and unpowered motors cannot provide any information.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;In order to produce a yaw angle which is aligned with the gimbal forward orientation, the STorM32 tries as best as it can to make use of its knowledge of the gimbal motor positions, but this also depends very much on the operation conditions and in addition on the gimbal construction (no encoders and no 2nd IMU, no encoders with 2nd IMU, with encoders). Obviously, an encodered gimbal provides the best information on the motor positions while a gimbal with no encoders and unpowered motors cannot provide any information.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The situation improves substantially if the STorM32-Link is available. Then the STorM32 controller does know the orientation of the gimbal base in absolute terms, and can adjust its synthetic yaw reference by using the motor positions (as far as these are known, see previous paragraph), such as to achieve a synthetic yaw reference which has a fixed relation to the North direction.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The situation improves substantially if the STorM32-Link is available. Then the STorM32 controller does know the orientation of the gimbal base in absolute terms, and can adjust its synthetic yaw reference by using the motor positions (as far as these are known, see previous paragraph), such as to achieve a synthetic yaw reference which has a fixed relation to the North direction&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;. However, obviously, how well this works depends on the accuracy of the yaw angle which is provided via the STorM32-Link. It can be difficult to provide an accurate external yaw angle&lt;/ins&gt;.  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The STorM32 controller provides several means to read out a yaw angle, like serial commands or MAVLink messages, and what is reported as yaw angle depends on the particular method and operation condition. In some cases it reports the yaw angle with reference to its synthetic yaw reference, in other cases it reports its best guestimate for the relative yaw angle, and if the STorM32-Link is available it also can provide absolute yaw angles.  &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The STorM32 controller provides several means to read out a yaw angle, like serial commands or MAVLink messages, and what is reported as yaw angle depends on the particular method and operation condition. In some cases it reports the yaw angle with reference to its synthetic yaw reference, in other cases it reports its best guestimate for the relative yaw angle, and if the STorM32-Link is available it also can provide absolute yaw angles.  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;This can be admittedly confusing to the user, but this page hopefully helps at least insofar as to better understand why it is that confusing.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;This can be admittedly confusing to the user, but this page hopefully helps at least insofar as to better understand why it is that confusing.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key 59361m48173_5-storm32bgcmediawikki_:diff:1.41:old-10779:rev-11107:php=table --&gt;
&lt;/table&gt;</summary>
		<author><name>OlliW</name></author>
	</entry>
	<entry>
		<id>http://www.olliw.eu/storm32bgc-v2-wiki/index.php?title=Yaw&amp;diff=10779&amp;oldid=prev</id>
		<title>OlliW at 11:51, 13 January 2023</title>
		<link rel="alternate" type="text/html" href="http://www.olliw.eu/storm32bgc-v2-wiki/index.php?title=Yaw&amp;diff=10779&amp;oldid=prev"/>
		<updated>2023-01-13T11:51:34Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 13:51, 13 January 2023&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l7&quot;&gt;Line 7:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 7:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;For instance, the yaw angle shown in the GUI&amp;#039;s DataDisplay can drift substantially, while the camera itself may not move at all. This by itself is not worrysome as it only shows that for the current operation condition the synthetic yaw reference can not be maintained to a constant value but wanders. Unfortunately, the displayed yaw angle may also drift due to a malfunction, like an exessively drifting gyro sensor or incorrect IMU orientation, and it is not always easy to distinguish the root cause.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;For instance, the yaw angle shown in the GUI&amp;#039;s DataDisplay can drift substantially, while the camera itself may not move at all. This by itself is not worrysome as it only shows that for the current operation condition the synthetic yaw reference can not be maintained to a constant value but wanders. Unfortunately, the displayed yaw angle may also drift due to a malfunction, like an exessively drifting gyro sensor or incorrect IMU orientation, and it is not always easy to distinguish the root cause.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;In order to &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;synthesize &lt;/del&gt;a yaw &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;reference &lt;/del&gt;which is aligned with the gimbal forward orientation, the STorM32 tries as best as it can to make use of its knowledge of the gimbal motor positions, but this also depends very much on the operation conditions and in addition on the gimbal construction (no encoders and no 2nd IMU, no encoders with 2nd IMU, with encoders). Obviously, an encodered gimbal provides the best &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;info &lt;/del&gt;on the motor positions while a gimbal with no encoders and unpowered motors cannot provide any &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;info&lt;/del&gt;.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;In order to &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;produce &lt;/ins&gt;a yaw &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;angle &lt;/ins&gt;which is aligned with the gimbal forward orientation, the STorM32 tries as best as it can to make use of its knowledge of the gimbal motor positions, but this also depends very much on the operation conditions and in addition on the gimbal construction (no encoders and no 2nd IMU, no encoders with 2nd IMU, with encoders). Obviously, an encodered gimbal provides the best &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;information &lt;/ins&gt;on the motor positions while a gimbal with no encoders and unpowered motors cannot provide any &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;information&lt;/ins&gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The situation improves substantially if the STorM32-Link is available. Then the STorM32 controller does know the orientation of the gimbal base in absolute terms, and can adjust its synthetic yaw reference by using the motor positions (as far as these are known, see previous paragraph), such as to achieve a synthetic yaw reference which has a fixed relation to the North direction.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The situation improves substantially if the STorM32-Link is available. Then the STorM32 controller does know the orientation of the gimbal base in absolute terms, and can adjust its synthetic yaw reference by using the motor positions (as far as these are known, see previous paragraph), such as to achieve a synthetic yaw reference which has a fixed relation to the North direction.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l13&quot;&gt;Line 13:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 13:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The STorM32 controller provides several means to read out a yaw angle, like serial commands or MAVLink messages, and what is reported as yaw angle depends on the particular method and operation condition. In some cases it reports the yaw angle with reference to its synthetic yaw reference, in other cases it reports its best guestimate for the relative yaw angle, and if the STorM32-Link is available it also can provide absolute yaw angles.  &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The STorM32 controller provides several means to read out a yaw angle, like serial commands or MAVLink messages, and what is reported as yaw angle depends on the particular method and operation condition. In some cases it reports the yaw angle with reference to its synthetic yaw reference, in other cases it reports its best guestimate for the relative yaw angle, and if the STorM32-Link is available it also can provide absolute yaw angles.  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;This can be admittedly confusing to the user, but this page &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;may have helped &lt;/del&gt;at least insofar as to better understand why it is that confusing.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;This can be admittedly confusing to the user, but this page &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;hopefully helps &lt;/ins&gt;at least insofar as to better understand why it is that confusing.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key 59361m48173_5-storm32bgcmediawikki_:diff:1.41:old-10778:rev-10779:php=table --&gt;
&lt;/table&gt;</summary>
		<author><name>OlliW</name></author>
	</entry>
	<entry>
		<id>http://www.olliw.eu/storm32bgc-v2-wiki/index.php?title=Yaw&amp;diff=10778&amp;oldid=prev</id>
		<title>OlliW at 11:48, 13 January 2023</title>
		<link rel="alternate" type="text/html" href="http://www.olliw.eu/storm32bgc-v2-wiki/index.php?title=Yaw&amp;diff=10778&amp;oldid=prev"/>
		<updated>2023-01-13T11:48:24Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 13:48, 13 January 2023&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l3&quot;&gt;Line 3:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 3:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The fundamental issue with such a gimbal setup is that yaw cannot be measured in absolute terms (e.g. with respect to North) and that moreover the yaw angle drifts quite significantly with time (typically several degrees per minute). This is in striking contrast to the pitch and roll angle which using the accelerometers can be determined with respect to the gravitation axis.  &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The fundamental issue with such a gimbal setup is that yaw cannot be measured in absolute terms (e.g. with respect to North) and that moreover the yaw angle drifts quite significantly with time (typically several degrees per minute). This is in striking contrast to the pitch and roll angle which using the accelerometers can be determined with respect to the gravitation axis.  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Fundamentally, due to the limitations set by the available sensors, the STorM32 controller has no notion of an absolute yaw, in the sense that yaw could be referenced to a specific direction, like North (aka yaw in earth frame, or absolute yaw) or the gimbal forward orientation (aka yaw in vehicle frame, or relative yaw). Accordingly, it uses what one may call a &#039;&#039;&#039;&#039;&#039;synthetic yaw reference&#039;&#039;&#039;&#039;&#039;. The STorM32 controller tries its best to adjust the yaw reference such that the reported yaw angle may make sense to a user, but this very much depends on the operation conditions, and depending on the particular operation condition and the pervious history it is more or less successful in achieving this. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Fundamentally&lt;/del&gt;, the yaw reference wanders with time, and with it the reported yaw angle(s).&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Fundamentally, due to the limitations set by the available sensors, the STorM32 controller has no notion of an absolute yaw, in the sense that yaw could be referenced to a specific direction, like North (aka yaw in earth frame, or absolute yaw) or the gimbal forward orientation (aka yaw in vehicle frame, or relative yaw). Accordingly, it uses what one may call a &#039;&#039;&#039;&#039;&#039;synthetic yaw reference&#039;&#039;&#039;&#039;&#039;. The STorM32 controller tries its best to adjust the yaw reference such that the reported yaw angle may make sense to a user, but this very much depends on the operation conditions, and depending on the particular operation condition and the pervious history it is more or less successful in achieving this. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Howecer, fundamentally&lt;/ins&gt;, the yaw reference wanders with time, and with it the reported yaw angle(s).&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;For instance, the yaw angle shown in the GUI&amp;#039;s DataDisplay can drift substantially, while the camera itself may not move at all. This by itself is not worrysome as it only shows that for the current operation condition the synthetic yaw reference can not be maintained to a constant value but wanders. Unfortunately, the displayed yaw angle may also drift due to a malfunction, like an exessively drifting gyro sensor or incorrect IMU orientation, and it is not always easy to distinguish the root cause.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;For instance, the yaw angle shown in the GUI&amp;#039;s DataDisplay can drift substantially, while the camera itself may not move at all. This by itself is not worrysome as it only shows that for the current operation condition the synthetic yaw reference can not be maintained to a constant value but wanders. Unfortunately, the displayed yaw angle may also drift due to a malfunction, like an exessively drifting gyro sensor or incorrect IMU orientation, and it is not always easy to distinguish the root cause.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key 59361m48173_5-storm32bgcmediawikki_:diff:1.41:old-10777:rev-10778:php=table --&gt;
&lt;/table&gt;</summary>
		<author><name>OlliW</name></author>
	</entry>
	<entry>
		<id>http://www.olliw.eu/storm32bgc-v2-wiki/index.php?title=Yaw&amp;diff=10777&amp;oldid=prev</id>
		<title>OlliW at 11:47, 13 January 2023</title>
		<link rel="alternate" type="text/html" href="http://www.olliw.eu/storm32bgc-v2-wiki/index.php?title=Yaw&amp;diff=10777&amp;oldid=prev"/>
		<updated>2023-01-13T11:47:32Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 13:47, 13 January 2023&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l3&quot;&gt;Line 3:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 3:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The fundamental issue with such a gimbal setup is that yaw cannot be measured in absolute terms (e.g. with respect to North) and that moreover the yaw angle drifts quite significantly with time (typically several degrees per minute). This is in striking contrast to the pitch and roll angle which using the accelerometers can be determined with respect to the gravitation axis.  &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The fundamental issue with such a gimbal setup is that yaw cannot be measured in absolute terms (e.g. with respect to North) and that moreover the yaw angle drifts quite significantly with time (typically several degrees per minute). This is in striking contrast to the pitch and roll angle which using the accelerometers can be determined with respect to the gravitation axis.  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Fundamentally, due to the limitations set by the available sensors, the STorM32 controller has no notion of an absolute yaw, in the sense that yaw could be referenced to a specific direction, like North (aka yaw in earth frame, or absolute yaw) or the gimbal forward orientation (aka yaw in vehicle frame, or relative yaw). Accordingly, it uses what one may call a synthetic yaw reference. The STorM32 controller tries its best to adjust the yaw reference such that the reported yaw angle may make sense to a user, but this very much depends on the operation conditions, and depending on the particular operation condition and the pervious history it is more or less successful in achieving this. Fundamentally, the yaw reference wanders with time, and with it the reported yaw angle(s).&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Fundamentally, due to the limitations set by the available sensors, the STorM32 controller has no notion of an absolute yaw, in the sense that yaw could be referenced to a specific direction, like North (aka yaw in earth frame, or absolute yaw) or the gimbal forward orientation (aka yaw in vehicle frame, or relative yaw). Accordingly, it uses what one may call a &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&#039;&#039;&#039;&#039;&#039;&lt;/ins&gt;synthetic yaw reference&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&#039;&#039;&#039;&#039;&#039;&lt;/ins&gt;. The STorM32 controller tries its best to adjust the yaw reference such that the reported yaw angle may make sense to a user, but this very much depends on the operation conditions, and depending on the particular operation condition and the pervious history it is more or less successful in achieving this. Fundamentally, the yaw reference wanders with time, and with it the reported yaw angle(s).&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;For instance, the yaw angle shown in the GUI&amp;#039;s DataDisplay can drift substantially, while the camera itself may not move at all. This by itself is not worrysome as it only shows that for the current operation condition the synthetic yaw reference can not be maintained to a constant value but wanders. Unfortunately, the displayed yaw angle may also drift due to a malfunction, like an exessively drifting gyro sensor or incorrect IMU orientation, and it is not always easy to distinguish the root cause.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;For instance, the yaw angle shown in the GUI&amp;#039;s DataDisplay can drift substantially, while the camera itself may not move at all. This by itself is not worrysome as it only shows that for the current operation condition the synthetic yaw reference can not be maintained to a constant value but wanders. Unfortunately, the displayed yaw angle may also drift due to a malfunction, like an exessively drifting gyro sensor or incorrect IMU orientation, and it is not always easy to distinguish the root cause.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key 59361m48173_5-storm32bgcmediawikki_:diff:1.41:old-10708:rev-10777:php=table --&gt;
&lt;/table&gt;</summary>
		<author><name>OlliW</name></author>
	</entry>
</feed>