Я читаю данные с датчика AHRS / IMU через USB с Python 2.7. Для получения ускорения производитель указывает в соответствии с изображением ниже:
Описание поставщика IMU
![](https://i.stack.imgur.com/C4VfM.png)
Мой код на python такой, но когда ускорение отрицательное, значения неправильные.
Я считаю, что мне нужно проверить первый бит MSB (в данном случае, поле AxH), если 1 отрицательно, если 0 положительно.
#....
#data = serial.read(size=11)
#....
#
#Acceleration
elif data[1] == b'\x51':
AxL=int(data[2:3].encode('hex'), 16)
AxH=int(data[3:4].encode('hex'), 16)
AyL=int(data[4:5].encode('hex'), 16)
AyH=int(data[5:6].encode('hex'), 16)
AzL=int(data[6:7].encode('hex'), 16)
AzH=int(data[7:8].encode('hex'), 16)
x = (AxH<<8|AxL)/32768.0*16.0
y = (AyH<<8|AyL)/32768.0*16.0
z = (AzH<<8|AzL)/32768.0*16.0
У кого-нибудь есть предложения?
Полное руководство по эксплуатации датчика IMU:
http://wiki.wit -motion.com / английский / Библиотека / ех / fetch.php медиа = модуль: wt901: документы: jy901usermanualv4.pdf