ใ€€ใ€€ใ€€ใ€€
PR

ๅŠ ้€Ÿๅบฆใ‚ปใƒณใ‚ตใƒผใ‹ใ‚‰่ง’ๅบฆใฎๅค‰ๆ›่จˆ็ฎ—ๆ–นๆณ•

่จ˜ไบ‹ๅ†…ใซๅบƒๅ‘ŠใŒๅซใพใ‚Œใฆใ„ใพใ™ใ€‚

ใ€€ใ‚ธใƒฃใ‚คใƒญๅ€คใฎใƒ‰ใƒชใƒ•ใƒˆ่ฃœๆญฃใ‚’่กŒใ†ใŸใ‚ใ€ๅŠ ้€Ÿๅบฆใ‚ปใƒณใ‚ตใƒผใ‹ใ‚‰ใฎๅ›ž่ปข่ง’ๅบฆใธใฎ่จˆ็ฎ—ๆ–นๆณ•ใ‚’่ชฟในใพใ—ใŸใ€‚ใ„ใ‚ใ„ใ‚็ฎ—ๅ‡บๆ–นๆณ•ใŒใ‚ใ‚‹ใ‚ˆใ†ใงใ™ใŒใ€่ชฟในใŸๅ†…ๅฎนใ‚’ใพใจใ‚ใฆใŠใใพใ™ใ€‚

ใ‚นใƒใƒณใ‚ตใƒผใƒชใƒณใ‚ฏ

1่ปธๅ›ž่ปขใฎๅ ดๅˆ

โ–ฒไธŠๅ›ณใฎใ‚ˆใ†ใซใ€็ตถๅฏพๅบงๆจ™็ณปใ‚’x-zๅนณ้ขใง่ฆ‹ใฆใ€y่ปธๅปปใ‚Š๏ผˆpitch่ง’๏ผ‰ใซฮธๅ›ž่ปขใ—ใฆใ„ใ‚‹ใ‚ปใƒณใ‚ตใƒผใ‚’่€ƒใˆใพใ™ใ€‚ๆคœๅ‡บใ•ใ‚Œใ‚‹ๅŠ ้€Ÿๅบฆใ‚’ใ‚ปใƒณใ‚ตใƒผๅบงๆจ™็ณป๏ผˆๅŠ ้€Ÿๅบฆใ‚ปใƒณใ‚ตใƒผ๏ผ‰ใฎ axใ€az ใจใ—ใฆใพใ™ใ€‚

ใ€€้‡ๅŠ›ๆ–นๅ‘ใ‚’z่ปธใจใ—ใฆใ„ใ‚‹ใฎใงxzๅนณ้ขใงๅ›ณ็คบใ—ใฆใพใ™ใ€‚ๅ›ž่ปขๆ–นๅ‘ใ‚„ใƒ™ใ‚ฏใƒˆใƒซใฎๅ‘ใ็ญ‰ใง็ฌฆๅท๏ผˆยฑ๏ผ‰ใฏๅ่ปขใ™ใ‚‹ใฎใงไฝฟ็”จใ™ใ‚‹ใ‚ปใƒณใ‚ตใƒผใซๅˆใ‚ใ›ใฆ้ฉๅฎœ่ชฟๆ•ดใ—ใฆใใ ใ•ใ„ใ€‚

ใ€€็ฎ—ๅ‡บๆ–นๆณ•ใงใ™ใ€‚1่ปธๅ›ž่ปขใฏๅ˜็ด”ใชไธ‰่ง’้–ขๆ•ฐใง่จˆ็ฎ—ๅฏ่ƒฝใ€‚ไธŠๅ›ณใ‹ใ‚‰y่ปธๅปปใ‚Š๏ผˆpitch๏ผ‰ใฎๅ›ž่ปข่ง’ๅบฆใฏไธ‰่ง’้–ขๆ•ฐใ‚ˆใ‚Šใ€

\begin{align} pitch=\cos^{-1}(az)\\ \end{align}

ใ€€ใ‚‚ใ—ใใฏ

\begin{align} pitch=\sin^{-1}(ax)\\ \end{align}

ใ€€ใง็ฎ—ๅ‡บๅฏ่ƒฝใงใ™ใ€‚

ใ€€ใŸใ ใ“ใ‚Œใ ใจๆคœๅ‡บ่ง’ๅบฆใฎ็ฏ„ๅ›ฒใซใ‚ˆใฃใฆใ€ๅŠ ้€Ÿๅบฆใ‚ปใƒณใ‚ตใƒผใฎๅˆ†่งฃ่ƒฝใฎๅฝฑ้ŸฟใŒๅ‡บใฆใ—ใพใ„ใพใ™ใ€‚ใใ“ใงๅผใ‚’ๅฐ‘ใ—ใ„ใ˜ใฃใฆใ€

\begin{align} pitch=\tan^{-1}\left(\frac{ax}{az}\right)\\ \end{align}

ใ€€ใ“ใฎใ‚ˆใ†ใซtanใŒไฝฟใˆใ‚‹ใ‚ˆใ†ๅค‰ๅฝขใ—ใฆใพใ™ใ€‚

ใ€€ใพใŸtan ใงใฏๆคœๅ‡บ็ฏ„ๅ›ฒใŒ -ฯ€/2<ฮ˜<ฯ€/2 ใซใชใฃใฆใ—ใพใ†ใฎใง่จ€่ชž้–ขๆ•ฐใงใฏ atan2 ้–ขๆ•ฐใ‚’ไฝฟ็”จใ—ใŸๆ–นใŒใ„ใ„ใ‹ใ‚‚ใ€‚atan2 ้–ขๆ•ฐใงใฏ -ฯ€<ฮ˜<ฯ€ ใฎ็ฏ„ๅ›ฒใง่จˆ็ฎ—ใŒๅฏ่ƒฝใงใ—ใ€ๅˆ†ๆฏใŒ0ใงใ‚‚่กŒใ‘ใŸใฏใšใ€‚

3่ปธ๏ผˆ2่ปธ๏ผ‰ๅ›ž่ปขใฎๅ ดๅˆ๏ผˆๆฐดๅนณ้ขใซๅฏพใ™ใ‚‹ไปปๆ„ใฎๅ‚พใ๏ผ‰

ใ€€ใ“ใ“ใ‹ใ‚‰ใŒๆœฌ้กŒใงใ™ใ€‚ๅŠ ้€Ÿๅบฆใ‚ปใƒณใ‚ตใƒผใ‚’1่ปธๅ›ž่ปข๏ผˆๅนณ้ขไธŠใฎๅ›ž่ปข๏ผ‰ใฎใ‚ˆใ†ใชไฝฟใ„ๆ–นใ‚’ใ™ใ‚‹ใฎใงใ‚ใ‚ŒใฐไธŠ่จ˜ใฎ่จˆ็ฎ—ๆ–นๆณ•ใง่‰ฏใ„ใ‹ใจๆ€ใ„ใพใ™ใŒใ€ๆฐดๅนณ้ขใซๅฏพใ™ใ‚‹ไปปๆ„ใฎๅ‚พใใŒใ‚ใ‚‹ๅ ดๅˆใฎ่จˆ็ฎ—ๆ–นๆณ•ใ‚’่€ƒใˆใŸใ„ใจๆ€ใ„ใพใ™ใ€‚

0067_Angle-from-acceleration_6

ใ€€1่ปธๅ›ž่ปขใฎๅ ดๅˆใฏๅ˜็ด”ใงใ—ใŸใŒใ€3่ปธ๏ผˆ2่ปธ๏ผ‰ๅ›ž่ปขใจใชใ‚‹ใจๅฐ‘ใ—ใ‚„ใ‚„ใ“ใ—ใ„ใงใ™ใ€‚ๅ›ž่ปข่กŒๅˆ—๏ผˆใƒ™ใ‚ฏใƒˆใƒซ๏ผ‰ใง่€ƒใˆใฆใฟใพใ™ใ€‚

็ตถๅฏพๅบงๆจ™็ณปใงๆคœๅ‡บใ™ใ‚‹้‡ๅŠ›ใƒ™ใ‚ฏใƒˆใƒซใ‚’ๅธธใซZๆ–นๅ‘ใจใ—ใฆ \(\begin{bmatrix}0&0&g\end{bmatrix}^T\) ใจใŠใใพใ™ใ€‚ใพใŸใ‚ปใƒณใ‚ตใƒผๅบงๆจ™็ณปใงๆคœๅ‡บใ•ใ‚Œใ‚‹ๅŠ ้€Ÿๅบฆใƒ™ใ‚ฏใƒˆใƒซใ‚’ \(\begin{bmatrix}ax&ay&az\end{bmatrix}^T\) ใจใ—ใพใ™ใ€‚ๅบงๆจ™ๅค‰ๆ›ใฎๅผใ‹ใ‚‰ไปฅไธ‹ใฎใ‚ˆใ†ใซใŠใ„ใฆๅฑ•้–‹ใ—ใฆใ„ใใพใ™ใ€‚ \begin{align} \begin{bmatrix}ax\\ay\\az\end{bmatrix} &= \begin{bmatrix} 1 &0 &0\\ 0 &\cos\theta_x &\sin\theta_x\\ 0 &-\sin\theta_x &\cos\theta_x \end{bmatrix} \begin{bmatrix} \cos\theta_y &0 &-\sin\theta_y\\ 0 &1 &0\\ \sin\theta_y &0 &\cos\theta_y \end{bmatrix} \begin{bmatrix} \cos\theta_z &\sin\theta_z &0\\ -\sin\theta_z &\cos\theta_z &0\\ 0 &0 &1 \end{bmatrix} \begin{bmatrix} 0\\ 0\\ g \end{bmatrix} \\\\ &= \begin{bmatrix} C_y C_z &C_y S_z &-S_y\\ S_x S_y C_z – C_x S_z &C_x C_z + S_x S_y S_z &S_x C_y\\ C_x S_y C_z + S_x S_z &C_x S_y S_z – S_x C_z &C_x C_y \end{bmatrix} \begin{bmatrix} 0\\ 0\\ g \end{bmatrix} \\\\ &= \begin{bmatrix} -g\sin\theta_y\\ g\sin\theta_x\cos\theta_y\\ g\cos\theta_x\cos\theta_y \end{bmatrix}\\\\ \end{align}

ใ€€ๅ›ž่ปข้ †ใงๅฑ•้–‹ๅผใŒๅค‰ใ‚ใ‚Šใพใ™ใŒใ€๏ผˆ็ตถๅฏพๅบงๆจ™ใฎ๏ผ‰z่ปธๅ›ž่ปขใ‚’ใ—ใฆใ‚‚้‡ๅŠ›ใƒ™ใ‚ฏใƒˆใƒซใซๅค‰ๅŒ–ใŒ็„กใ„ใŸใ‚๏ผˆใ‚ปใƒณใ‚ตใƒผใฎๅ‘ใใŒๅค‰ใ‚ใ‚‹ใ ใ‘๏ผ‰ใงใ‚ใพใ‚Šๆ„ๅ‘ณใŒใ‚ใ‚Šใพใ›ใ‚“ใ€‚z่ปธๅ›ž่ปขใฏ็„กใ„็‰ฉ๏ผˆใ‚‚ใ—ใใฏ0ยฐ๏ผ‰ใจใ—ใฆไป–ใฎใƒ‘ใ‚ฟใƒผใƒณใฎๅฑ•้–‹ๅผ๏ผˆๅ›ž่ปข้ †๏ผ‰ใ‚’่ฆ‹ใฆใ‚‚ๆˆๅˆ†ใฏ้•ใˆใฉๅŒๆง˜ใฎๅฑ•้–‹ๅผใจใชใ‚Šใพใ™ใ€‚

ใ€€ใงๅฑ•้–‹ใ—ใŸ่กŒๅˆ—ๅผใ‹ใ‚‰ใ€ๅ„่ปธใฎๅ›ž่ปข่ง’ๅบฆใ‚’ๅฐŽใใ‚ˆใ†ใซๅผใ‚’ๆ•ด็†ใ—ใฆใ„ใใพใ™ใ€‚

\begin{align} \frac{ay}{az} &= \frac{\sin\theta_x\cos\theta_y}{\cos\theta_x\cos\theta_y}\\\\ &= \frac{\sin\theta_x}{\cos\theta_x}\\\\ &= \tan\theta_x\\\\ \theta_x &= \tan^{-1}\frac{ay}{az} \end{align}

ใ€€ๅบงๆจ™ๅค‰ๆ›ใฎๅ…ฌๅผใ‚’ใ“ใฎใ‚ˆใ†ใซๆ•ด็†ใ—ใฆใ„ใใจใ€ๅŠ ้€Ÿๅบฆๅ€คใ‹ใ‚‰ x่ปธๅ›ž่ปข๏ผˆroll่ง’๏ผ‰ใŒ็ฎ—ๅ‡บใงใใพใ™ใ€‚

ใ€€ใ•ใ‚‰ใซใ€y่ปธๅ›ž่ปข๏ผˆpitch่ง’๏ผ‰ใซใคใ„ใฆใฏ

\begin{align} ay^2+az^2 & = \sin^2\theta_x\cos^2\theta_y + \cos^2\theta_x\cos^2\theta_y\\\\ &=\cos^2\theta_y\left(\sin^2\theta_x + \cos^2\theta_x\right)\\\\ &=\cos^2\theta_y\\\\ \sqrt{ay^2 + az^2} &= \cos\theta_y\\\\ \frac{a_x}{\sqrt{ay^2 + az^2}} &= -\frac{\sin\theta_y}{\cos\theta_y}\\\\ &= -\tan\theta_y\\\\ \theta_y &= -\tan^{-1}\left(\frac{a_x}{\sqrt{ay^2 + az^2}}\right) \end{align}

ใ“ใฎใ‚ˆใ†ใซๆ•ด็†ใ—ใพใ™ใ€‚4่กŒ็›ฎใฎๅผใ‚„ใ€\(-\sin\theta_y\)ใ‹ใ‚‰ใงใ‚‚y่ปธ่ง’ๅบฆใฎ็ฎ—ๅ‡บใฏใงใใพใ™ใŒใ€ใ“ใฎใ‚ˆใ†ใชๅฑ•้–‹ใ‚’ใ—ใฆใ„ใ‚‹ใฎใ‚’ใ‚ˆใ่ฆ‹ใ‹ใ‘ใพใ™ใ€‚่ค‡ๆ•ฐ๏ผˆ3่ปธ๏ผ‰ใ‹ใ‚‰ใฎๆคœๅ‡บๅ€คใฎๆ–นใŒไฟก้ ผๆ€งใŒ้ซ˜ใใ†ใชใฎใจ atan2่จ€่ชžใŒไฝฟ็”จใงใใ‚‹ใ‹ใ‚‰ใงใ—ใ‚‡ใ†ใ‹๏ผŸใ€ใ€ใ€‚

ใ€€ๅŠ ้€Ÿๅบฆใ‚ปใƒณใ‚ตใƒผใใฎใ‚‚ใฎใŒๅ‹•็š„ๅŠ ้€Ÿๅบฆใ‚’ไผดใฃใฆใ„ใ‚‹ๅ ดๅˆใ€ๆญฃ็ขบใช่จˆ็ฎ—ใฏใงใใชใ„ใŸใ‚ๆณจๆ„ใŒๅฟ…่ฆใงใ™ใ€‚ๅ„ๅŠ ้€Ÿๅบฆใฎๆคœๅ‡บๅ€คใŒใŠใŠใ‚ˆใ \(\sqrt{ax^2+ay^2+az^2}\fallingdotseq1\) ใจใชใฃใฆใ„ใ‚‹ใฎใŒๅ‰ๆใงใ™ใ€‚

ใ€€ใ•ใ‚‰ใซๅŠ ้€Ÿๅบฆใ‚ปใƒณใ‚ตใƒผใ‹ใ‚‰ใฎ่ง’ๅบฆ็ฎ—ๅ‡บใงใฏz่ปธ๏ผˆyaw่ปธ๏ผ‰ๅปปใ‚Šใฎๅ›ž่ปข่ง’ๅบฆ็ฎ—ๅ‡บใŒๅ›ฐ้›ฃใงใ™ใ€‚ใ€‚ๆฐดๅนณ็Šถๆ…‹ใฎz่ปธๅ›ž่ปขใงใฏ้‡ๅŠ›ๅ‘ใใซๅค‰ๅŒ–ใŒใชใ„๏ผˆใพใŸ้ ๅฟƒๅŠ›ใงxใ€y่ปธใซๅŠ ้€ŸๅบฆใŒ็™บ็”Ÿใ—ใฆใ—ใพใ†๏ผ‰ใŸใ‚่ง’ๅบฆ่จˆ็ฎ—ใŠใ‹ใ—ใใชใฃใฆใ—ใพใ„ใพใ™ใ€‚

ใ€€้€”ไธญ้–“้•ใฃใฆใชใ„ใ‹ๅฟƒ้…ใงใ™ใƒปใƒปใƒปใ€‚่กจ็พใŒใŠใ‹ใ—ใชใจใ“ใ‚ใŒใ‚ใ‚‹ใ‹ใ‚‚ใ—ใ‚Œใพใ›ใ‚“ใŒใ™ใฟใพใ›ใ‚“ใƒปใƒปใƒปใ€‚

ใ‚นใƒใƒณใ‚ตใƒผใƒชใƒณใ‚ฏ

่ง’ๅบฆๅค‰ๆ›่จˆ็ฎ—ใฎๆคœ่จผ

ใ€€ๆคœ่จผใซใฏArduino/Genuino 101ใฎๅ†…่”ต6่ปธใ‚ปใƒณใ‚ตใƒผใ‚’ไฝฟ็”จใ—ใฆใพใ™ใ€‚ๅŠ ้€Ÿๅบฆใ‚ปใƒณใ‚ตใƒผใŒๅ†…่”ตใ•ใ‚Œใฆใ„ใ‚‹ใŸใ‚ใ€ๅŸบๆœฌ็š„ใซใฏๅค–ไป˜ใ‘้ƒจๅ“็„กใ—ใงๆคœ่จผใงใใ‚‹ใฎใงไพฟๅˆฉใงใ™ใ€‚

ใ€€ๆคœ่จผใจใ„ใฃใฆใ‚‚ๅ‚พใ่ง’ๅบฆใ‚’่จˆๆธฌใ™ใ‚‹ใฎใฏๅ›ฐ้›ฃใงใ™ใฎใงใ€Processingใ‚’ไฝฟ็”จใ—ใฆใƒ“ใ‚ธใƒฅใ‚ขใƒซใง่ฆ‹ใฆใฟใŸใ„ใจๆ€ใ„ใพใ™ใ€‚

ใ€€ๆฐดๅนณ้ขใซๅฏพใ™ใ‚‹ๅ‚พใใ‚’ใ€ๅŠ ้€Ÿๅบฆใ‚ปใƒณใ‚ตใƒผใฎๅ€คใ‹ใ‚‰่จˆ็ฎ—ใ€‚ใใฎๅค‰ๆ›ๅ€คใ‚’Processingๅดใงใƒ“ใ‚ธใƒฅใ‚ขใƒซๅŒ–ใ—ใฆใพใ™ใ€‚

โ–ผ็ขบ่ชใฎๅ‹•็”ปใงใ™โ–ผ

ใ€€ๅŠ ้€Ÿๅบฆใ‚ปใƒณใ‚ตใƒผใ‹ใ‚‰ใฎๅ–ๅพ—ๅ€คใฎใฟใงๅ‹•ใใ‚’ๅฏ่ฆ–ๅŒ–ใ—ใฆใพใ™ใ€‚ๅ‰ฒใจๆญฃ็ขบใซๅŠ ้€Ÿๅบฆใ‹ใ‚‰ๅ‚พใ่ง’ๅบฆใฎ็ฎ—ๅ‡บใŒใงใใ„ใ‚‹ใ‚ˆใ†ใงใ™ใ€‚

ใ‚ณใƒกใƒณใƒˆ

  1. Cuz we are special ใ‚ˆใ‚Š:

    ๅˆใ‚ณใƒกใƒณใƒˆๅคฑ็คผใ—ใพใ™ใ€‚ๅคงๅค‰่ˆˆๅ‘ณๆทฑใ„่จ˜ไบ‹ใงใ™ใ€‚ๅ‚่€ƒใซใชใ‚Šใพใ™ใ€‚ๅ›ž่ปข่กŒๅˆ—ใซใคใ„ใฆ่ณชๅ•ใŒใ‚ใ‚Šใพใ™ใ€‚

    ๅ›ž่ปขๅ‰ๅงฟๅ‹ขใฎ่กŒๅˆ—ใ‚’gใฎๅฏพ่ง’่กŒๅˆ—ใจใ•ใ‚Œใฆใ„ใพใ™ใŒใ€ใ“ใ‚ŒใฏไพฟๅฎœไธŠ้‡ๅŠ›ๅŠ ้€Ÿๅบฆgใจใ•ใ‚Œใฆใ„ใ‚‹ใจใ„ใ†ใ“ใจใงใ™ใ‚ˆใญ๏ผŸ
    nๅบฆ็›ฎใฎๅ›ž่ปขใฎใใ‚Œใžใ‚ŒใฎๅŠ›ใ‚’ใ€Fnใฎๅฏพ่ง’่กŒๅˆ—ใจใ—ใŸๆ™‚ใซใ€
    n+1ๅบฆ็›ฎใฎๅ›ž่ปขใงใฎใ€zๆ–นๅ‘ใฎๅŠ ้€Ÿๅบฆใ‚’็Ÿฅใ‚ŠใŸใ„ใ‹ใ‚‰zๆˆๅˆ†ใฎใฟใฎๅŠ ้€Ÿๅบฆใฎ่กŒๅˆ—ใ‚’aใจใ•ใ‚Œใฆใ„ใ‚‹๏ผˆ1่ปธๅ›ž่ปขใฎๅ ดๅˆใฎๆ‹กๅผต็š„ใช่งฃ้‡ˆ๏ผ‰

    ใจใ„ใ†่ช่ญ˜ใงใ‚ใฃใฆใ„ใพใ™ใงใ—ใ‚‡ใ†ใ‹๏ผŸ

  2. Cuz we are special ใ‚ˆใ‚Š:

    ้€ฃๆŠ•ๅคฑ็คผใ—ใพใ™ใ€‚
    ใ„ใ‚ใ„ใ‚่ชฟในใฆใ„ใฆใ‚ใ‹ใฃใŸใฎใงใ™ใŒใ€ใคใพใ‚Šใฏใ‚ปใƒณใ‚ตใƒผ็ณปใงใฎt[ ax , ay, az ]ใฏใ€ๆˆ‘ใ€…ใฎไธ–็•Œใงใฎ็ณปใงt[ 0, 0,g]ใ‹ใ‚‰ๆฅใฆใ„ใ‚‹ๅŠ ้€Ÿๅบฆใชใฎใงใ€

    ๅ›ž่ปข่กŒๅˆ—ใ€€๏ผŠใ€€t[ ax , ay, az ]ใ€€๏ผใ€€t[ 0, 0,g]

    ใจใ„ใ†็ญ‰ๅผใซใชใฃใฆใ„ใ‚‹ใฎใงใ™ใญใ€‚

    • imo ใ‚ˆใ‚Š:

      Cuz we are specialใ•ใ‚“ใ€ใ‚ตใ‚คใƒˆๆ‹่ฆ‹ไธ‹ใ•ใ‚Šๆœ‰้›ฃใ†ๅพกๅบงใ„ใพใ™ใ€‚
      ๆฆ‚ใญใใ‚“ใชๆ„Ÿใ˜ใงใ™ใ€‚่จ˜ไบ‹ใฎๆ–นใฏใ‚‚ใ†ๅฐ‘ใ—ใ‚ใ‹ใ‚Šๆ˜“ใ„ใ‚ˆใ†ใซไฟฎๆญฃใ—ใฆใŠใใพใ—ใŸใ€‚

ใ‚ฟใ‚คใƒˆใƒซใจURLใ‚’ใ‚ณใƒ”ใƒผใ—ใพใ—ใŸ