Joystick的位置模式控制移动,垂直方向上的位置是“相对起飞点的高度”还是“相对于当前位置的高度”?
已完成位置模式控制移动,垂直方向上的位置是“相对起飞点的高度”还是“相对于当前位置的高度”?
在Joystick的示例中,看到位置控制垂直方向,
设置了 “offsetDesired.z + originHeightBaseHomePoint”,这表示是“相对起飞点的高度”,相当于如果飞到500米高的地方,那就设置为500,但是查看源码,可以看到注释 :垂直方向上的位置模式的可以设置的取值范围为0 ~ 120 m
T_DjiFlightControllerJoystickCommand joystickCommand = {positionCommand.x, positionCommand.y, offsetDesired.z + originHeightBaseHomePoint, yawDesiredInDeg};
-
也就是说 位置模式控制移动,垂直方向上的位置设置的值是”相对于当前位置的高度“吗?
而且您说的是这个示例代码吗?offsetDesired.z + originHeightBaseHomePoint,originHeightBaseHomePoint 这个变量表示的是相对于起飞点的高度,所以偏差位移+上起飞点的高度不就是“相对起飞点的高度”吗?是示例写错了吗?
里面描述垂直方向上的位置设置的值是”相对起飞点的高度“?
-
您好,位置移动模式,您传参的高度是相对于当前位置的,您可以看下这个函数DjiTest_FlightControlMoveByPositionOffset,在 DjiTest_FlightControlMoveByPositionOffset 函数中,首先获取起飞点的 GPS 位置和相对高度,这些值代表了飞机起飞时的位置和高度。 在控制循环中,使用相同的函数获取当前 GPS 位置和高度,T_DjiFcSubscriptionPositionFused currentGPSPosition = DjiTest_FlightControlGetValueOfPositionFused(); dji_f32_t currentHeight = DjiTest_FlightControlGetValueOfRelativeHeight(); 使用 DjiTest_FlightControlLocalOffsetFromGpsAndFusedHeightOffset 函数计算当前位置与起飞点之间的局部偏移量,这个函数计算了当前位置与起飞点之间的三维偏移量(NED坐标系),其中 deltaNed.z 表示高度差。通过将期望的偏移量(例如 {20, 0, 0} 或 {0, 0, 30})与当前的局部偏移量进行比较,计算出剩余的偏移量:T_DjiTestFlightControlVector3f offsetRemaining = DjiTest_FlightControlVector3FSub(offsetDesired, localOffset); 最后,使用计算出的 offsetRemaining 来生成控制命令,并通过 DjiFlightController_ExecuteJoystickAction 函数发送给飞控,让飞控朝指定位置移动。 -
我感觉您给我绕了一大圈啊,我想询问的不是这个二次封装函数DjiTest_FlightControlMoveByPositionOffset()的入参,而是DjiFlightController_ExecuteJoystickAction() 函数在位置移动模式下,它的入参是“相对起飞点的高度”还是“相对于当前位置的高度”?
示例代码采用”offsetDesired.z + originHeightBaseHomePoint“ 表示”期望移动的高度偏差+当前无人机相对于起飞点的高度“ ,示例代码的意思是,这个高度位置参数需要输入“最终的相对起飞点高度”,
但是如果是“相对于起飞点的高度”,那源码为什么注释设置值的范围为0~120,这明显和示例代码不匹配啊
while (elapsedTimeInMs < timeoutInMilSec) { ... T_DjiFlightControllerJoystickCommand joystickCommand = {positionCommand.x, positionCommand.y, offsetDesired.z + originHeightBaseHomePoint, yawDesiredInDeg}; DjiFlightController_ExecuteJoystickAction(joystickCommand);
请先登录再写评论。
评论
6 条评论