航点任务结束后切VirtualStick控制,pitch的值控制异常
0
关于航点任务技术后切VirtualStick控制,模拟器飞控制飞机前后左右移动都正常,实地测试pitch的值无论负统一都往右飞的问题,我代码逻辑详细解释如下:1,首先在waypointmission结束之后,使mstate的值为true,方便下步判断
public void onExecutionFinish(@Nullable final DJIError error) {//无人机任务停止后的状态处理
setResultToToast("Execution finished: " + (error == null ? "Success!" : error.getDeion())); mFlightController.setVirtualStickModeEnabled(true,null);
mstate = true;
2,然后再initFlightControler里初始化控制摇杆飞行的一些设置
private void initFlightController() {
BaseProduct product = DJIDemoApplication.getProductInstance();
if (product != null && product.isConnected()) {
if (product instanceof Aircraft) {
mFlightController = ((Aircraft) product).getFlightController();
}
}
if (mstate==true) {if (mFlightController != null) { mFlightController.setRollPitchControlMode(RollPitchControlMode.VELOCITY);
mFlightController.setYawControlMode(YawControlMode.ANGULAR_VELOCITY);
mFlightController.setVerticalControlMode(VerticalControlMode.POSITION) mFlightController.setRollPitchCoordinateSystem(FlightCoordinateSystem.BODY);
3,给pitch roll yaw throttle传值,其中yaw throttle固定为0、30;主要改变pitch与roll的值来控制飞机在二维平面移动,由官方文档,我的理解为pitch正,后退,负前进;roll为正,右移,负,左移,并在模拟器上测试时,把roll和pitch依次写为0,观察单方向移动时,我的理解是正确的。
但在室外实时飞行时,roll的值控制左右移动正常,但是pitch控制前后移动却一直是往右飞,测试御2pro御2zoom两架飞机,均是如此。
我的控制移动的代码如下:
mPitch=-2;
mRoll=0;
mYaw=0;//转机头0为不动
mThrottle =30;
if (mFlightController != null) {//是指id不是空,就是id存在数据
mFlightController.sendVirtualStickFlightControlData(
new FlightControlData(
mPitch, mRoll, mYaw, mThrottle
), new CommonCallbacks.CompletionCallback() {
@Override
public void onResult(DJIError djiError) {
}
}
); }
这里以我想控制飞机前进为例,飞机依然是往右飞;同样mPitch=2时,飞机还是往右飞。
请问是我哪里设置错了或者有什么理解错了吗?还是硬件设备有什么问题,烦请解答,不胜感激。
补充:waypointmission结束之后,在执行摇杆任务之前飞机会自动旋转下机头,在模拟器与实地飞行时都是如此,后结合文档,我理解为是因为飞机在设置会机身坐标系,设置RollPitchControlMode.VELOCITY时,机头默认朝向北方,请问这种理解对嘛 |
|
|
|