1

我正在开发 sphero 应用程序并想添加一个基于陀螺仪的驾驶。据我了解,我需要创建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

对于这方面的困惑,我感到非常抱歉。实际上,我们一直在简化倾斜控制以使集成更容易。有关如何使用新系统的示例,请参阅 RobotUISample [ https://github.com/orbotix/Sphero-iOS-SDK/tree/master/samples/RobotUISample] 。

简而言之,我们将 Tilt 移到了 RKDriveControl [ https://github.com/orbotix/Sphero-iOS-SDK/blob/master/frameworks/RobotKit.framework/Headers/RKDriveControl.h]的底层,这是一个单例。现在,您只需创建并使用这个单例实例来驱动 Sphero。我们现在甚至直接为您接入 CMMotionManager。您需要提供的只是驱动器类型并告诉它开始驱动。

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