turtlebot:adventures:sensing101_thetaerror
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
turtlebot:adventures:sensing101_thetaerror [2015/10/05 14:34] – pvela | turtlebot:adventures:sensing101_thetaerror [2024/08/20 21:38] (current) – external edit 127.0.0.1 | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | The orientation estimate is published as a [[https:// | + | The orientation estimate is published as a [[https:// |
- | It turns out that these two parts used correspond to a planar quaternion, which is basically just a complex number $ z = x + jy$. Be careful though because the quaternion version has half the phase. | + | It turns out that these two parts used correspond to a planar quaternion, which is basically just a complex number $ z = x + jy$. Be careful though because the quaternion version has half the phase. |
OK, let's assume that you have a desired orientation that gets created as a complex number | OK, let's assume that you have a desired orientation that gets created as a complex number | ||
- | $$ z_{des} = e^{j \theta_{des}} = \cos(\theta_{dsc}) + j \sin(\theta_{des})$$ | + | $$ z_{des} = e^{j \theta_{des}} = \cos(\theta_{des}) + j \sin(\theta_{des})$$ |
In python, one would use the [[https:// | In python, one would use the [[https:// | ||
OK, now that we have $z_des$, and there is a callback function that unpacks the quaternion orientation into a complex number too, called $z_{curr}$ for the current orientation, | OK, now that we have $z_des$, and there is a callback function that unpacks the quaternion orientation into a complex number too, called $z_{curr}$ for the current orientation, | ||
- | $$z_{err} = z_{curr}^{-1} z_{des} = z_{des} / z_{curr},$$ | + | $$z_{err} = z_{curr}^{-1} z_{des} = z_{des} |
where we took advantage of the fact that complex numbers behave more or less like scalar real number when performing multiplication by the inverse (e.g., performing division). | where we took advantage of the fact that complex numbers behave more or less like scalar real number when performing multiplication by the inverse (e.g., performing division). | ||
The variable $z_{err}$ is the orientation error as a complex number. | The variable $z_{err}$ is the orientation error as a complex number. | ||
$$ \theta_{err} = \text{phase}(z_{err})$$ | $$ \theta_{err} = \text{phase}(z_{err})$$ | ||
- | which also happens to be a '' | + | which also happens to be a '' |
The last step is to convert this error into a feedback controlled signal, which is done through a gain | The last step is to convert this error into a feedback controlled signal, which is done through a gain |
turtlebot/adventures/sensing101_thetaerror.1444070070.txt.gz · Last modified: 2024/08/20 21:38 (external edit)