我正在使用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;
}];
非常感谢一些提示,谢谢:)
答案 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];
}