RollPitchControlMode.VELOCITY 旋转无人机,相差90度的问题
已完成我用虚拟摇杆发送 往前飞和旋转指定角度的功能。
FlightController.sendVirtualStickFlightControlData(new FlightControlData(pitch,
roll,
yaw,
verticalThrottle),
旋转角度时,我设置 setYawControlMode 的模式是 ANGLE。
controller.setYawControlMode(YawControlMode.ANGLE);
往前飞我用的模式是 VELOCITY
controller.setRollPitchControlMode(RollPitchControlMode.VELOCITY);
现在遇到的问题是:
1、我开机后直接旋转,最终的旋转角度会少90度。 如果在旋转了一次的基础上再次旋转,旋转效果就是对的。
2、只要往前飞行了一段距离,再次去旋转,又会出现旋转角度少90度的问题。
请问是模式设置不对吗,还是哪里漏了什么呢,在官方的文档和论坛上都没有找到类似的问题。
-
是一直发的。做了一个定时器一直在发的。
public void yawByAngularVelocityMode(float tartGetAngle, boolean isClockwise,IControlCompleteCallback callback) {
int speed = isClockwise ? YAWSPEED : -YAWSPEED;
clearMission();
if (controller == null) {
init();
}
if (controller == null) {
callback.onResult(-3, "飞机未连接");
return;
}
if (!isFlying()) {
callback.onResult(-3, "飞机未起飞");
return;
}
verticalThrottle = 0;
pitch = 0;// (float)controller.getState().getAttitude().pitch;
roll = 0;//(float) controller.getState().getAttitude().roll;
yaw = speed;
controller.setYawControlMode(YawControlMode.ANGULAR_VELOCITY);
controller.setYawControlMode(YawControlMode.ANGULAR_VELOCITY);
controller.setVirtualStickModeEnabled(true, djiError -> {
if (djiError != null) {
LyLog.showLog("setVirtualStickModeEnabled " + djiError.getErrorCode() + " " + djiError.getDescription());
}
});
/*controller.setFlightOrientationMode(FlightOrientationMode.AIRCRAFT_HEADING, djiError -> {
if (djiError != null) {
LyLog.showLog("setFlightOrientationMode " + djiError.getErrorCode() + " " + djiError.getDescription());
}
});*/
sendVirtualStickDataTask = new SendVirtualStickDataTask();
sendVirtualStickDataTimer = new Timer();
sendVirtualStickDataTimer.schedule(sendVirtualStickDataTask, 0, 100);
// 单位毫秒
long time = (int) (Math.abs(tartGetAngle) * 1000 / Math.abs(speed));
LyLog.showLog("无人机旋转=tartGetAngle="+tartGetAngle+" time="+time);
mHandler.postDelayed(() -> {
sendVirtualStickDataTimer.cancel();
cancel();
controller.setYawControlMode(YawControlMode.ANGLE);
}, time);
callback.onResult(1, "成功");
}
请先登录再写评论。
评论
10 条评论