1

私は sphero アプリに取り組んでおり、gysorcope ベースの運転を追加したいと考えています。私が理解している限り、 を作成しCMMotionManager、値を取得して、yawそれをパラメータとして のインスタンスに渡す必要がありますRKTiltDriveAlgorithm。私が理解していないのは、RKTiltDriveAlgorithmインスタンスをどこに渡すかです。ドキュメントにはRKRobotControl、どこからでもアクセスできないように見えるインスタンスを渡すように書かれています。RKRobotProviderのプロパティがありますが、RKRobotControl割り当て可能ではありません。これまでの私のコードは次のとおりです

RKTiltDriveAlgorithm *tilt = [[RKTiltDriveAlgorithm alloc] initWithOrientation:[UIApplication sharedApplication].statusBarOrientation];
...
[self.motionManager startDeviceMotionUpdatesToQueue:[NSOperationQueue currentQueue] withHandler:^(CMDeviceMotion *motion, NSError *error) {
    float yaw = (180/M_PI) * motion.attitude.yaw;
    tilt.orientationAngle = yaw;
}];

いくつかのヒントをいただければ幸いです、ありがとう:)

4

1 に答える 1

1

この件に関して混乱を招いてしまい、誠に申し訳ございません。統合を容易にするために、Tilt Controls を合理化してきました。新しいシステムの使用例については、RobotUISample [ https://github.com/orbotix/Sphero-iOS-SDK/tree/master/samples/RobotUISample ]をご覧ください。

つまり、シングルトンである RKDriveControl [ https://github.com/orbotix/Sphero-iOS-SDK/blob/master/frameworks/RobotKit.framework/Headers/RKDriveControl.h]のフードの下に Tilt を移動しました。あとは、このシングルトン インスタンスを作成して使用し、Sphero を駆動するだけです。CMMotionManager に直接アクセスできるようになりました。提供する必要があるのは、ドライブの種類と、運転を開始するように指示することだけです。

/*Call when Robot is connected*/
- (void)startDriving {    
    //Drive with Tilt
    [[RKDriveControl sharedDriveControl] startDriving:RKDriveControlTilt];
}
于 2014-07-15T20:30:35.923 に答える