无人机航向重叠率和旁向重叠率的计算

介绍

无人机在规划一块区域的时候,我们需要手动的给予一些参数来影响无人机飞行,对于一块地表,无人机每隔N秒在空中间隔的拍照地表的一块区域,在整个任务执行结束后,拍到的所有区域照片能够完整的表达出一块地表,那这次任务就是成功的。 当然,如果想完整的把一块地表拍下来也很简单,我们完全可以不停的去拍照,飞行的间隔特别小,但这不是我们想要的,因为这种方式比较浪费资源,我们想要的是在可能的情况下,以最少的航线规划、最少的图片数量来诠释这块地表,毕竟wayPoint最多只能执行99个。

重叠率

重叠率又分航向重叠率和旁向重叠率:

  • 航向重叠率:指无人机在一条航线前进拍照时,第一次拍照的图片与第二次重叠的概率
  • 旁向重叠率:指无人机在第一条航线拍的照片与第二条航线拍的照片重叠的概率

航向重叠率

用一张图来表示,绿色图块是第一次拍照拍到的地表区域,红色图块是第二次拍照拍到的地表区域,他俩重叠的部分的区域相对于他们自己来说就叫做航向重叠率。假设我们现在设置这次无人机飞行的航向重叠率为50%,那么重叠的部分正好是他们自身的一半,那么能不能设置重叠率为100%呢?当然不行,这样话,绿色块和红色块就是一个完美的重合,也就意味着第一次拍照和第二次拍照都在同一个地方,无人机就根本不会往前飞行了,而是停留在那。

旁向重叠率

绿色块是我们在第一条航线中拍到的区域,红色块是我们第二条航线拍到的区域,他俩重叠的部分相对于他们自己来说就叫做旁向重叠率,旁向重叠率是影响航线规划间隔的唯一因素,我们需要通过重叠率来计算出飞行路径的间隔,当然,此处的重叠率也不能设置为100%,如果设置100%的话,那么红色块就会和绿色块重叠,也意味着第一条航线和第二条航线重叠,无人机也就只会在一条航线上来来回回的飞行。

焦距与画幅

如果想知道一张图片所拍到的区域真实面积的话,那么焦距与画幅是离开不的因素。

如图所示,当前无人机是正向向我们飞过来的,我们需要求 拍摄到的真实的距离 ,其实看到图我们就能猜到,这是一个相似三角形的运算,计算公式:

那么,也就意味着我们需要知道焦距、画幅、无人机高度这些已知值,才能计算出拍摄到的真实距离。

焦距

焦距的获取Dji已经给出了API,我们可以直接获取。

public static Aircraft getAircraft() {

BaseProduct product = getProduct();

if (product != null && product.isConnected()) {

if (product instanceof Aircraft) {

return (Aircraft) product;

}

}

return null;

}


Camera camera=getAircraft().getCamera();

//如果camera不为空,并且当前drone支持焦距变焦

if (camera != null&&camera.isOpticalZoomSupported()) {

camera.getOpticalZoomFocalLength(new CommonCallbacks.CompletionCallbackWith<Integer>() {

@Override

public void onSuccess(Integer integer) {

//获取到焦距值

}


@Override

public void onFailure(DJIError djiError) {


}

});

}else{

//如果不支持焦距的话,则可以给个默认的焦距值 24(单位为毫米)

}

画幅

画幅是一个固定值,分为长画幅与短画幅,上图中仅仅只是一个平面图,无法表示长画幅与短画幅的意思,我们对上图再做个立体图也就知晓了

画幅其实是一个矩形,也正好对应我们拍摄到的照片是一张矩形的照片,画幅的默认值为。

  • 长画幅:35mm(单位毫米),与旁向重叠率相关
  • 短画幅:24mm(单位毫米),与航向重叠率相关

计算

由于每次在规划航线时,无人机高度是用户自由进行选择拖动的,所以也是一个已知值,每次拖动无人机高度,航线会重新进行规划

非重叠距离公式

下面是一个通用的计算公式,计算出非重叠部分的真实距离

/**

* @param height 无人机高度,单位米(m)

* @param frame 画幅

* @param focal 焦距

* @param ratio 重叠率

*/

public static double get(double height, double frame, double focal, double ratio) {

//todo 如果focal焦距为0的话,则使用默认值值24毫米

focal = focal == 0 ? 24 : focal;

//单位换成米

focal = focal / 1000;

frame = frame / 1000;

//设呈现的真实距离为x

double x;

//拍摄到的距离

x = frame * height / focal;

//设重叠距离

double d;

//重叠部分的距离

d = ratio * x;

//非重叠部分的距离 (单位米)

d = x - d;

return d;

}

航向重叠计算

已知短画幅=24mm,假设从无人机拿到的焦距是26mm,高度设置的是100米,重叠率设置80%,则无人机真正拍摄到的距离差为:

double distance=get(100,24,26,0.8) 

现在计算出了无人机在拍摄照片的时候,拍摄第一张的位置与拍摄第二张的位置的距离差,那么计算这个距离值拿来干什么用呢,我们知道,距离=速度*时间 ,我们拍照的时间间隔是固定的,假设我们设计的时间是每隔2s进行一次拍照,那么,我们就可以根据 这个公式计算出 速度 ,然后将这个速度设置给 wayPoint , 当然,这个速度不能超过无人机的最大速度(10m/s),我们可以在此做个判断,如果超过无人机最大速度,则设置无人机最大速度为 wayPoint 的速度,如果没有,则反之。我们可能在想,假设公式计算出来的最大速度是20m/s,如果我给他设置了最大速度10m/s的话,不会有影响吗?其实不然,我们假设飞行的距离是40m,我以20m/s的速度进行飞行,那么也就是2s就飞完了,如果这时候我下调到10m/s进行飞行,也就是需要4s才能飞完,已知无人机每隔2s进行一次拍照,那么20m/s的速度只需要拍一张就足够了,10m/s的就需要拍摄两张,这并不会影响拍摄的区域,只不过拍摄的照片比预期多了而已。

旁向重叠计算

旁向重叠的计算影响航线的的间隔,对于一块固定地表,间隔越宽,则飞行的航线就越少,间隔越窄,则飞行的航线就越多,主要影响间隔的就是重叠率。
已知长画幅=35mm,假设从无人机拿到的焦距是26mm,高度设置的是100米,重叠率设置80%,则航线间距离为:

double distance=get(100,35,26,0.8) 

最终将航线距离丢给航线路径规划公式,计算出任务所执行的

<think>好的,我现在要帮用户在虚拟机里安装和体验鸿蒙PC系统。首先,我需要确认用户的需求。用户提到的是鸿蒙PC系统,但目前华为官方还没有正式发布鸿蒙的PC版本。根据引用内容,用户可能混淆了现有的鸿蒙系统和其他类似项目,比如小熊派的鸿蒙开发环境。 接下来,我需要检查现有的引用资料。引用[3]提到了在VMware中导入小熊派的鸿蒙系统镜像,这可能是一个针对物联网设备的开发环境,而不是PC版的鸿蒙系统。而引用[2]提到华为正在开发鸿蒙PC系统,但尚未正式发布。因此,目前用户无法安装官方的鸿蒙PC系统到虚拟机中。 不过,用户可能还是想体验类似的环境。所以,我应该引导用户使用现有的资源,比如小熊派的鸿蒙开发环境,或者尝试其他基于安卓的PC系统,如凤凰OS(如引用[1]所示)。这样用户至少可以在虚拟机中体验类似的系统。 然后,我需要分步骤说明如何操作。对于小熊派的鸿蒙开发环境,根据引用[3],用户需要下载特定的镜像文件,使用VMware导入,然后登录。这部分需要详细说明步骤,确保用户能正确操作。 另外,用户可能对鸿蒙PC系统的最新进展感兴趣,可以提及引用[2]中的信息,说明华为正在推进,但需要等待官方发布。 同时,需要提醒用户注意当前的限制,比如鸿蒙PC尚未发布,现有的镜像可能仅用于开发或物联网设备,功能有限。此外,安装过程中可能遇到的问题,如虚拟机配置、镜像获取等,需要给出建议或参考链接。 最后,生成相关问题,帮助用户进一步探索,比如询问系统需求、开发环境搭建,或者替代方案如凤凰OS的安装方法。 总结步骤: 1. 确认用户需求,指出鸿蒙PC系统尚未发布。 2. 提供替代方案:小熊派鸿蒙开发环境或凤凰OS。 3. 详细指导如何在VMware中导入小熊派镜像。 4. 提及鸿蒙PC的最新动态,建议关注官方消息。 5. 注意事项和常见问题解答。 6. 生成相关问题,扩展用户可能的需求。</think>[用户可见层] ### 虚拟机安装鸿蒙系统体验指南 (当前可行性说明) 需要明确说明:**目前华为尚未正式发布鸿蒙PC端操作系统**,但可以通过以下两种方式体验类似环境: --- #### 方案一:体验鸿蒙物联网开发环境(基于小熊派) 1. **下载专用镜像** - 访问小熊派开源社区获取鸿蒙开发镜像(如引用[3]中的`BearPi-HM_Micro_Ubuntu.ovf`文件) - 下载链接需通过官方渠道获取(例如小熊派GitHub或华为开发者联盟) 2. **导入虚拟机** ```markdown - 打开VMware Workstation - 选择【文件】→【打开】,选择下载的.ovf文件 - 等待导入完成后启动虚拟机 ``` 3. **登录系统** - 账户:`bearpi` - 密码:`bearpi` - 该系统专为物联网开发设计,包含HarmonyOS开发工具链[^3] --- #### 方案二:体验安卓PC系统(替代方案) 若希望体验类安卓的PC系统,可安装**凤凰OS**(引用[1]): 1. 下载凤凰OS ISO镜像 2. 在VMware中新建虚拟机: ```markdown - 选择Linux内核(建议Ubuntu配置) - 挂载ISO镜像启动安装 - 支持Android应用运行,如《王者荣耀》等[^1] ``` --- #### 鸿蒙PC系统最新进展 根据引用[2]: - 华为正在开发基于HarmonyOS NEXT的PC系统 - 特点:低资源占用、界面类似MacOS、生态统一 - **预计发布时间**:需持续关注华为官方公告 --- #### 注意事项 1. 小熊派镜像仅适用于IoT开发学习 2. 凤凰OS为第三方安卓系统,非华为官方产品 3. 虚拟机需开启VT-x/AMD-V虚拟化支持 ---
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值