gpt4 book ai didi

android - 通过虚拟摇杆控制 dji mavic enterprise

转载 作者:行者123 更新时间:2023-11-29 02:20:32 25 4
gpt4 key购买 nike

我正在尝试使用命令 sendVirtualStickFlightControlData 控制无人机。要向左移动无人机,我使用以下代码。

    sendVirtualStickDataTask = new SendVirtualStickDataTask(0, -5, 0, 0);
sendVirtualStickDataTimer = new Timer();
sendVirtualStickDataTimer.schedule(sendVirtualStickDataTask, 100, 200);

private class SendVirtualStickDataTask extends TimerTask {

private float pitch;
private float roll;
private float yaw;
private float throttle;
private long startTime = System.currentTimeMillis();

public SendVirtualStickDataTask(float inputPitch, float inputRoll, float inputYaw, float inputThrottle) {
pitch = inputPitch;
roll = inputRoll;
yaw = inputYaw;
throttle = inputThrottle;
}

@Override
public void run() {
if (System.currentTimeMillis() - startTime > 300) {
mFlightController.sendVirtualStickFlightControlData(new FlightControlData(0, 0, 0, 0),
new CommonCallbacks.CompletionCallback() {
@Override
public void onResult(final DJIError djiError) {

}
});
cancel();
} else {
mFlightController
.sendVirtualStickFlightControlData(new FlightControlData(pitch,
roll,
yaw,
throttle),
new CommonCallbacks.CompletionCallback() {
@Override
public void onResult(final DJIError djiError) {
}
});
}
}
}

然而,无人机向左移动,然后急剧下降。

这种无人机行为的原因是什么?

最佳答案

我不知道为什么它会急剧下降,因为你没有改变 throttle 值。确保在使用前启用虚拟棒。这可能与您需要设置最大值有关。这段代码对我来说很好用。

    /* controllers virtual sticks command and triggers drone movement */
private void sendVirtualStickCommands(final float pX, final float pY, final float pZ, final float pYaw){

//maximum amounts
float verticalJoyControlMaxSpeed = 2;
float yawJoyControlMaxSpeed = 30;
float pitchJoyControlMaxSpeed = 10;
float rollJoyControlMaxSpeed = 10;

//set yaw, pitch, throttle, roll
float mYaw = (float)(yawJoyControlMaxSpeed * pYaw);
float mThrottle = (float)(verticalJoyControlMaxSpeed * pZ);
float mPitch = (float)(pitchJoyControlMaxSpeed * pX);
float mRoll = (float)(rollJoyControlMaxSpeed * pY);

if (mFlightController != null){
//if virtual sticks are enabled, send the command, otherwise turn them on
if (virtualSticksEnabled){
mFlightController.sendVirtualStickFlightControlData(
new FlightControlData(
mPitch, mRoll, mYaw, mThrottle
), new CommonCallbacks.CompletionCallback() {
@Override
public void onResult(DJIError djiError) {
if (djiError!=null){
setResultToToast(djiError.getDescription());
}
}
}
);
} else {
setResultToToast("flight controller virtual mode off");
//if not enabled, enable
mFlightController.setVirtualStickModeEnabled(true, new CommonCallbacks.CompletionCallback() {
@Override
public void onResult(DJIError djiError) {
if (djiError != null){
setResultToToast(djiError.getDescription());
}else
{
setResultToToast("Enable Virtual Stick Success");
virtualSticksEnabled = true;
sendVirtualStickCommands(pX, pY, pZ, pYaw);

}
}
});
}

} else{
setResultToToast("Flight Controller Null");
}

}

然后,向一个方向移动:

sendVirtualStickCommands(0.1f, 0, 0, 0);//move right
sendVirtualStickCommands(-0.1f, 0, 0, 0);//move left
sendVirtualStickCommands(0, 0.1f, 0, 0);//move forward
sendVirtualStickCommands(0, -0.1f, 0, 0);//move backwards
sendVirtualStickCommands(0, 0, 0.1f, 0);//move upwards
sendVirtualStickCommands(0, 0, -0.1f, 0);//move downwards

关于android - 通过虚拟摇杆控制 dji mavic enterprise,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56143341/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com