2017-09-21 28 views
0

ラズベリー・パイ・ゼロwのIMU 9250を使用しています。最近のバージョンのwheezyを実行しています。私はRTIMULib2を使ってIMUからデータを読み込んでいます。必要なプログラムがすべてインストールされており、IMUを較正しました。カルマンアルゴリズムを使用して正確なデータを取得しています。ここで私が実行しようとしているコードは次のとおりです。IMU 9250とラズベリー・パイ・ゼロWのRTIMULib

`#!/usr/bin/python3 
from math import degrees 
from time import sleep 
import RTIMU 
SETTINGS_FILE = "/home/pi/displacedRealityDrone/IMU/RTEllipsoidFit/RTIMULib.ini" 
s = RTIMU.Settings(SETTINGS_FILE) 
imu = RTIMU.RTIMU(s) 
if (not imu.IMUInit()): 
    print("IMU init failed") 
    exit(1) 
else: 
    print("IMU init succeeded") 
imu.setSlerpPower(0.02) 
imu.setGyroEnable(True) 
imu.setAccelEnable(True) 
imu.setCompassEnable(True) 
poll_interval = imu.IMUGetPollInterval() 
while True: 
    data = imu.getIMUData() 
    fusionPose = data["fusionPose"] 
    global roll, pitch, yaw 
    roll = degrees(fusionPose[0]) 
    pitch = degrees(fusionPose[1]) 
    yaw = degrees(fusionPose[2]) 
    print(str(roll) + " " + str(pitch) + " " + str(yaw)) 
    sleep(0.2)` 

これは、出力するものである:

IMU init succeeded 
0.0 0.0 0.0 
0.0 0.0 0.0 
0.0 0.0 0.0 
0.0 0.0 0.0 
0.0 0.0 0.0 
0.0 0.0 0.0 
0.0 0.0 0.0 
0.0 0.0 0.0 
0.0 0.0 0.0 
0.0 0.0 0.0 

それはIMUが移動され、どのくらい、いや、決して変わりません。ここの問題は何ですか?それは悪いケーブルですか?私はIMUを交換したので、実際のチップに問題はないので同じ結果が得られました。私のコードは間違っていますか?私はそう前に似たようなコードを使っていますので、私はそうは思わないでしょうが、どこかで愚かな間違いをしたかもしれません。これについての助けに感謝します、私はこの時点で何かを試してみるつもりです。

答えて

0

同様の問題に遭遇した人にとって、このコードはうまく動作しますが、1行だけが出力されず、0だけが出力されています。コードを次のように変更してコードの終わりを修正します。

while True: 
    if imu.IMURead(): 
    data = imu.getIMUData() 
    fusionPose = data["fusionPose"] 
    global roll, pitch, yaw 
    roll = degrees(fusionPose[0]) 
    pitch = degrees(fusionPose[1]) 
    yaw = degrees(fusionPose[2]) 
    print(str(roll) + " " + str(pitch) + " " + str(yaw)) 
    sleep(0.2)` 
関連する問題