陀螺仪驱动的球形

时间:2014-07-14 09:21:50

标签: ios iphone sphero-api sphero

我正在使用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;
}];

非常感谢一些提示,谢谢:)

1 个答案:

答案 0 :(得分:1)

我很抱歉对此感到困惑。我们实际上已经简化了Tilt控件以简化集成。有关如何使用新系统的示例,请参阅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];
}