如何在虚拟游戏杆上实现rc命令?

时间:2019-11-21 17:28:15

标签: dji-sdk

我需要实现一个Tello命令,该命令在虚拟游戏杆上为 rc a b c d 。从不同的论坛上,我知道对于虚拟游戏杆,我们需要使用rc命令来移动Tello无人机。但是我不知道如何实现它。在他们的SDK文档中,他们将其称为

a:左/右(-100〜100)b:前进/后退(-100〜100)c:上/下(-100〜100)d:偏航(-100〜100)

这些负值是什么意思?如何使用rc命令移动无人机?

这是我正在使用的虚拟操纵杆代码:

JoystickView游戏杆=(JoystickView)findViewById(R.id.joystickView);

Clima

1 个答案:

答案 0 :(得分:1)

-100至100的值通常是其各自轴的速度。根据坐标系设置和轴的控制模式,飞机沿着与该值对应的轴移动。根据您提供的代码,我假设强度值代表杆被推动/移动的百分比,角度值则显示杆被推动的方向。

对于虚拟摇杆,您需要通过访问飞行控制器来设置控制模式和坐标系:

setRollPitchControlMode(RollPitchControlMode.VELOCITY);
setYawControlMode(YawControlMode.ANGULAR_VELOCITY);
setVerticalControlMode(VerticalControlMode.VELOCITY);
setRollPitchCoordinateSystem(FlightCoordinateSystem.BODY);

上面选择的模式可确保虚拟控制器的行为与默认的物理遥控器相同。 另外,您需要先使用setVirtualStickModeEnabled方法激活虚拟Sticks。

现在,要持续控制飞机,您需要发送至少5 Hz的virtualStickData:

SendVirtualStickDataTask task = new SendVirtualStickDataTask();
this.timer = new Timer();
this.timer.schedule(task, 0, 200);

在此示例中,SendVirtualStickDataTask扩展了TimerTask,仅通过{{1}中DJI SDK的sendVirtualStickFlightControlData方法将当前的俯仰,侧倾,偏航和垂直油门值发送给无人机1}} TimerTask方法。

最后,当前的俯仰,横滚,偏航和垂直油门值都在您在问题中发布的run()方法内设置。例如。您可以使用三角函数sin和cos确定强度值的x和y部分,如下所示:

onMove()

请注意,角度必须为弧度,您可能需要将角度/强度投射为浮动的。此外,根据确定角度值的方式,您需要相应地调整该值。 第二个操纵杆可用于控制垂直油门和偏航。您将需要一些微调和测试。

对于控制模式/坐标系,以下DJI SDK文档很有帮助(向下滚动至“ Virtual Sticks”): https://developer.dji.com/mobile-sdk/documentation/introduction/component-guide-flightController.html

DJI还提供了有关虚拟Sticks用法的基本代码示例: https://developer.dji.com/mobile-sdk/documentation/android-tutorials/SimulatorDemo.html

我强烈建议您使用DJI Flight Assistant 2软件测试代码,然后再尝试在现实世界中飞行。