|
@@ -5,10 +5,11 @@
|
|
|
|
|
|
|
|
|
|
|
|
-
|
|
|
+
|
|
|
|
|
|
|
|
|
-
|
|
|
+
|
|
|
+
|
|
|
import smbus
|
|
|
import rospy
|
|
|
import numpy as np
|
|
@@ -27,9 +28,9 @@ class MyIMU(object):
|
|
|
ax_tmp = self.i2c.read_i2c_block_data(self.addr, 0x34, 2)
|
|
|
ay_tmp = self.i2c.read_i2c_block_data(self.addr, 0x35, 2)
|
|
|
az_tmp = self.i2c.read_i2c_block_data(self.addr, 0x36, 2)
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
|
|
|
gx_tmp = self.i2c.read_i2c_block_data(self.addr, 0x37, 2)
|
|
|
gy_tmp = self.i2c.read_i2c_block_data(self.addr, 0x38, 2)
|
|
@@ -41,13 +42,16 @@ class MyIMU(object):
|
|
|
self.raw_pitch = float(((pitch_tmp[1]<<8)|pitch_tmp[0])/32768.0*180.0)
|
|
|
self.raw_yaw = (yaw_tmp[1] << 8 | yaw_tmp[0])/32768.0*180
|
|
|
|
|
|
- self.raw_ax = float(((ax_tmp[1]<<8)|ax_tmp[0])/32768.0*16.0)
|
|
|
- self.raw_ay = float(((ay_tmp[1]<<8)|ay_tmp[0])/32768.0*16.0)
|
|
|
- self.raw_az = float(((az_tmp[1]<<8)|az_tmp[0])/32768.0*16.0)
|
|
|
+ self.raw_ax = float(np.short(np.short(ax_tmp[1]<<8)|ax_tmp[0])/32768.0*16.0)
|
|
|
+ self.raw_ay = float(np.short(np.short(ay_tmp[1]<<8)|ay_tmp[0])/32768.0*16.0)
|
|
|
+ self.raw_az = float(np.short(np.short(az_tmp[1]<<8)|az_tmp[0])/32768.0*16.0)
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
|
|
|
- self.raw_gx = float(((gx_tmp[1]<<8)|gx_tmp[0])/32768.0*2000.0)
|
|
|
- self.raw_gy = float(((gy_tmp[1]<<8)|gy_tmp[0])/32768.0*2000.0)
|
|
|
- self.raw_gz = float(((gz_tmp[1]<<8)|gz_tmp[0])/32768.0*2000.0)
|
|
|
+ self.raw_gx = float(np.short(np.short(gx_tmp[1]<<8)|gx_tmp[0])/32768.0*2000.0)
|
|
|
+ self.raw_gy = float(np.short(np.short(gy_tmp[1]<<8)|gy_tmp[0])/32768.0*2000.0)
|
|
|
+ self.raw_gz = float(np.short(np.short(gz_tmp[1]<<8)|gz_tmp[0])/32768.0*2000.0)
|
|
|
|
|
|
def get_quatern(self):
|
|
|
try:
|