IMU - BNO055
1. ์ผ์ ์๊ฐ
BNO055
IMU ์ผ์ ์ค ํ๋๋ก ๊ฐ๊ฐ์๋ 3์ถ, ๊ฐ์๋ 3์ถ, ์ง์๊ธฐ 3์ถ์ ์ธก์ ํด์ฃผ๋ ์ผ์
์ด 9๊ฐ์ง ์ผ์๊ฐ์ ํ์ฉํ์ฌ ํ์ฌ ์ผ์๊ฐ ๊ธฐ์ธ์ด์ง ๊ฐ๋์ ์ด๋ ์๋๋ฅผ ์ ์ ์์ต๋๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก ์ผ์๊ฐ์ ์ค์ฐจ๊ฐ ๋ง์ด ์๊ธฐ ๋๋ฌธ์ ํํฐ ๋ฑ์ ๊ธฐ๋ฒ์ ํตํด ๋ฐ์ดํฐ์ ์ ์ ๊ฐ ํ์ํ์ง๋ง, ์ด ์ผ์์ ๊ฒฝ์ฐ ๊ธฐ๋ณธ์ ์ธ ํํฐ๊ฐ ๋ด์ฅ๋์ด ์์ด ์์ ์ ์ธ ์ธก์ ๊ฐ์ ์ ๊ณตํฉ๋๋ค.
- ๊ตฌ๋งค๋งํฌ
2. ๋ฐฐ์ ๋ฐฉ๋ฒ
์ผ์์ Jetson Nano ๊ฐ์ I2C ํต์ ์ด ํ์ํ๋ฉฐ, ์ด๋ฅผ ์ํด Jetson Nano์I2C1_SDA
,I2C1_SCL
์ ์ฌ์ฉํฉ๋๋ค.
๋ฐฐ์ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ์ผ์ - Jetson NanoVin - 5VSDA - 3
- SCL - 5
- GND - GND
3. ์ค์น ๋ฐฉ๋ฒ ๋ฐ ์์
- pip์ ํตํด ๊ด๋ จ ํจํค์ง๋ฅผ ์ค์นํฉ๋๋ค.
$ sudo pip3 install adafruit-circuitpython-bno055
- ์ค์ ํ์ด์ฌ ํ๋ก๊ทธ๋๋ฐ ์์๋ ๋ค์๊ณผ ๊ฐ์ด importํ์ฌ ์ฌ์ฉํฉ๋๋ค.
import board
import adafruit_bno055
๊ธฐ๋ณธ ์์
BNO055๋ฅผ ํตํด ์ป์ ์ ์๋ ๋ชจ๋ ์ผ์๊ฐ๋ค์ ์ถ์ถํ๊ณ , ์ด๋ฅผ ์ฝ์์ ์ถ๋ ฅํด ๋ด ์๋ค.
import time
import board
import busio
import adafruit_bno055
# Use these lines for I2C
i2c_bus0 = busio.I2C(board.SCL_1, board.SDA_1)
sensor = adafruit_bno055.BNO055_I2C(i2c_bus0)
# User these lines for UART
# uart = busio.UART(board.TX, board.RX)
# sensor = adafruit_bno055.BNO055_UART(uart)
while True:
print("Accelerometer (m/s^2): {}".format(sensor.acceleration))
print("Magnetometer (microteslas): {}".format(sensor.magnetic))
print("Gyroscope (rad/sec): {}".format(sensor.gyro))
print("Euler angle: {}".format(sensor.euler))
print("Quaternion: {}".format(sensor.quaternion))
print("Linear acceleration (m/s^2): {}".format(sensor.linear_acceleration))
print("Gravity (m/s^2): {}".format(sensor.gravity))
print()
time.sleep(1)
sensor.acceleration
: 3์ถ ๊ฐ์๋ ์ธก์ ๊ฐ
sensor.magnetic
: 3์ถ ์๊ธฐ์ฅ ์ธก์ ๊ฐ
sensor.gyro
: 3์ถ ๊ฐ์๋ ์ธก์ ๊ฐ
sensor.euler
: ์ค์ผ๋ฌ ์ฒด๊ณ ๊ฐ๋ ๊ณ์ฐ๊ฐ
sensor.quaternion
: 4์์ ์ฒด๊ณ ๊ฐ๋ ๊ณ์ฐ๊ฐ
acceleration, magnetic, gyro ๋ ์ผ์์ ์ธก์ ๊ฐ์ด๋ฉฐ
euler, quaternion๋ ์ผ์์ ์ธก์ ๊ฐ์ ํ์ฉํ์ฌ ์ํ์ ์ธ ๊ณ์ฐ์ ํตํด ์ป์ด๋ธ ๊ฐ๋๊ฐ ์ ๋๋ค.
๊ฐ๋ ํ์ ์ฒด๊ณ์ ๋ฐ๋ผ์ euler
๋ฐฉ์๊ณผ quaternion
๋ฐฉ์ ๋๊ฐ์ง๋ฅผ ์ ๊ณตํฉ๋๋ค.
๊ฐ๋ ์ฒด๊ณ์ ๋ํ ์ถ๊ฐ ์ค๋ช
(x์ถ 90๋ ํ์ ํ y์ถ 90๋ ํ์ ) ≠ (y์ถ 90๋ ํ์ ํ x์ถ 90๋ ํ์ )
๊ทธ๋ ๊ธฐ ๋๋ฌธ์ 3์ฐจ์ ์์์ ๊ฐ๋๋ฅผ ํํํ ๋๋ ์ถ๋ณ ๊ฐ๋ ์์์ ๋ํ ์ฝ์์ด ํ์ํ๋ฉฐ,
๊ทธ ์ค์ ํ๊ฐ์ง ์ฒด๊ณ๊ฐ ์ค์ผ๋ฌ ๊ฐ๋์ธ ๊ฒ์ ๋๋ค.
- x์ถ ํ์ ์ roll
- y์ถ ํ์ ์ pitch
- z์ถ ํ์ ์ yaw๋ผ๊ณ ๋ช ๋ช ํ๊ณ
roll
⇒ pitch
⇒ yaw
์์๋๋ก ํ์ ์ํค๊ฒ ๋ฉ๋๋ค.
๋ฐ๋ผ์ ์ด๋ฅผ ํ์ ํ๋ ฌ๋ก ํํํ๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
BNO055 ์ผ์์ ๊ฒฝ์ฐ ์ถ๋ ฅ๊ฐ์ด ์ค์ผ๋ฌ ๊ฐ๋ ํ์์ด๊ธฐ ๋๋ฌธ์ ์ธก์ ๊ฐ์ ํ์ฉํ ๋ ์ด์ ์ ์ ์ํ๋ฉด์ ์ฌ์ฉํด์ผ ํฉ๋๋ค.