Гироскоп управляемый сферо
Я работаю над приложением 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;
}];
Буду признателен за некоторые советы, спасибо:)
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%5D, который является одиночным. Теперь вы просто создаете и используете этот экземпляр-одиночка для управления Sphero. Мы даже сейчас напрямую подключаемся к CMMotionManager. Все, что вам нужно предоставить, - это тип диска и сообщить ему, чтобы он начал движение.
/*Call when Robot is connected*/
- (void)startDriving {
//Drive with Tilt
[[RKDriveControl sharedDriveControl] startDriving:RKDriveControlTilt];
}