草庐IT

DJI Pilot无人机航线规划-实景三维建模全流程

忘仔小秃头 2024-07-22 原文

目前很多网上推荐的无人机航线规划软件如Altizure、航测通等难以下载或为商用软件。该文章以大疆精灵4为例演示DJI Pilot航线规划-CC实景建模-三维模型导入Cesiumlab3全流程。

目录

一、软件准备

  • 移动端DJI Pilot 用于大疆无人机飞行规划(大疆行业产品都可以免费使用)
  • ContextCapture(CC)用于三维建模
  • Cesiumlab3 用于载入三维模型

下载方式:

二、DJI Pilot航线规划

1、准备工作
1.1了解测区环境

航拍出发前,了解拍摄地天气情况;
地形和地貌影响无人机成图的质量,对于地面反光强烈的地区,如沙漠、盐滩等,在正午前后不宜摄影。对于陡峭的山区和高密集度的城市地区,为避免阴影,应在当地正午前后进行摄影。规划航线之前,要了解测区地貌,优化航飞方案,提升作业效率,避免撞机事故发生。

1.2 检查无人机

检查机身是否有破损;
安装机翼时,每个机翼都有对应的颜色,然后根据机翼上的图标指示旋转拧紧,飞行前一定要确保机翼是固定好的;
安装好后,无人机和遥控器都开机(短按一下再长按开机);

2、航线规划
2.1创建测绘区域

打开DJI Pilot点击创建航线→创建航线,或者导入KML文件,出现如图所示界面;

创建行航线有以下几种模式,针对不同需求,选择不同模式。本次实验使用倾斜摄影模式构建实景三维地图。
进入主界面后,移动到实验大概区域,点击屏幕生成测绘区域,可以移动边界点更改测区范围;

2.2参数设置

点击右边框自定义影像重叠率,相机角度,飞行高度等参数,一般默认。重叠率参数设置参考下图。建议使用等距拍照,等距拍照的效果要优于等时拍照。

根据所要建模的精度选择对应高度,但一定要在安全高度上飞行。GSD为地面样本距离,如上图,当我们选定高度为80m时,分辨率为3.27cm。下方显示无人机测绘面积、航线时长、航线预计时长,航点、照片数等。

3、执行飞行任务

参数设置完成,点击屏幕左边的“保存”,再点击“调用”,选择执行的航线(有5条,选的条数越多,后期建模精度越高),上传航线后可以点击“开始飞行”执行任务,飞行过程中可以使用地图视图和相机视图进行实时监测。电量低会自动返航及时更换电池。

导出数据作业完成后,整理好无人机装箱,拿出内存卡用读卡器导出影像数据,再进行内业处理。

三、CC实景建模

1.1 创建工程

打开ContextCapture Center Master新建新工程,工程名称需要使用英文,指定工程目录。

1.2添加影像

点击添加相片文件夹。添加影像后,可以更改POS的高程信息(P4R直接获取的POS为大地高)

1.3影像设置

为保证建模质量,暂不设置降低采样;
检查影像文件,点击确定,排除有问题的相片;

图像通过检查,进行下一步;

1.4提交空中三角测量

点击概要—提交空中三角测量;

输入区块名称;

定位/地理参数,没有添加控制点时使用本项;

空三计算设置,一般采用默认设置;

提交进行空三计算(此时需要打开引擎ContextCapture Center Engine);

打开ContextCapture Center Engine;

打开后便开始进行空中三角测量计算;

空三计算完成

1.5空间框架参数设置

点击新建重建项目,进行空间框架参数的设置;

软件内置的切块方式只有矩形,可通过添加KML或dgn文件选择不规则范围,添加时注意空间参考系统。
![在这里插入图片描述](https://img-blog.csdnimg.cn/aa11fe91852a4c7f96f17d8964cfcc2a.png

其它参数设置可以保持默认,返回概要,再次提交新的生产项目,在名称中可以添加描述;

目的选择三角网格

格式/选项可以保持默认选项(若要在cesium上导入3D模型,则格式选择OSBG),空间参考系选择刚刚设置的空间参考,最后在目标中设置项目的输出路径;

等待一段时间,得到的实景3D建模图如下:

四、在cesiumlab3上导入三维模型

Cesiumlab3是一个专业的地理信息基础数据处理平台, 可以将四大三维数据格式(BIM、3DMax、倾斜摄影数据模型、白模)转成3DTiles,并对三维数据进行高效率的可视化处理。
该平台支持glTF/glb和3D Tiles格式的三维模型,在进行三维可视化前,应将在CC中生成的OSBG格式三维数据转成3DTiles。

2.1 OSGB格式转为3Dtiles

以倾斜摄影的osgb数据转3Dtiles格式为例;在数据处理主页面点击倾斜摄影模型转换;

输入OSGB文件位置,然后会自动读取模型坐标等信息。取消顶点压缩并将存储类型改成散列,最后设置输出的位置,其它选项保持默认,点击提交处理,等待结果即可;

2.2 导入3D模型

点击分发服务,找到刚才生成的3Dtiles文件,在右侧点击预览;

测区的3D模型便显示在平台影像上,可以实现对测区的漫游、分析、标绘等功能;

附录:

1、GSD

GSD(Ground Sampling Distance, GSD)表示数字影像中单个像元对应的地面尺寸,它描述了两个连续像素的中心点之间的距离。
以下为大疆精灵4相机传感器参数:

Sw:真实传感器宽度(mm);
Fr:真实焦距(mm);
H:飞行高度(m);
imW:图像宽度(像素)
Sw=6.17
ImW = 4000
Fr =3.56mm
H(m)=(imW x GSD x Fr)/(Sw x 100)
GSD =H×Sw×100/(imW×Fr)

2. 不同区域像控点选取:

目的:纠正飞行器因定位受限或电磁干扰而产生的位置偏移、坐标精度过低等问题。
①规则矩形和正方形:小面积区域最少布设5个控制点,及航飞区域内4个角各一个,区域中间1个;大面积区域相应的增加控制点

②不规则图形:很多时候我们的飞行区域并不是很规则的图形,这个时候我们就只能根据地形来给它布设控制点了,保证布设的控制点能均匀的覆盖整个测区。
在这里插入图片描述

③带状,河道,公路等区域:这种区域经常采用“Z”字型打法,也就是垂直于带状两边各两个控制点,带状区域中间一个控制点。具体如下图所示。

3、奥维地图在测绘作业中应用的研究

奥维互动地图采用新技术,集多种知名地图与一体,可以辅助完成测绘项目测区范围确定、测绘项目控制点的选点以及控制网图形优化、作业区域作业方式选择和化分、航摄像控测量、地形测量、桩位放样等当前测绘行业的主要任务,为测绘项目实施及管理提供了较为精确的地形地貌资料,

4、Pix4D与Contextcapture之间的比较

Context Capture的三维建模精度比Pix4D更高,Pix4D生成的正射影像精度比Context Capture。Context Capture在模型构建过程中可以对测区进行分块,处理速度更快。由于Pix4D无法分块处理,对电脑配置要求较高。

有关DJI Pilot无人机航线规划-实景三维建模全流程的更多相关文章

  1. ruby-on-rails - 建模收藏夹 - 2

    我希望将Favorite模型添加到我的User和Link模型。业务逻辑用户可以有多个链接(即可以添加多个链接)用户可以收藏多个链接(他们自己的或其他用户的)一个链接可以被多个用户收藏,但只有一个所有者我对如何为这种关联建模以及在模型就位后如何创建用户收藏夹感到困惑?classUser 最佳答案 下面的数据模型怎么样:classUser:destroyhas_many:favorite_links,:through=>:favorites,:source=>:linkendclassLink:destroyhas_many:favor

  2. 建模分析 | 平面2R机器人(二连杆)运动学与动力学建模(附Matlab仿真) - 2

    目录0专栏介绍1平面2R机器人概述2运动学建模2.1正运动学模型2.2逆运动学模型2.3机器人运动学仿真3动力学建模3.1计算动能3.2势能计算与动力学方程3.3动力学仿真0专栏介绍?附C++/Python/Matlab全套代码?课程设计、毕业设计、创新竞赛必备!详细介绍全局规划(图搜索、采样法、智能算法等);局部规划(DWA、APF等);曲线优化(贝塞尔曲线、B样条曲线等)。?详情:图解自动驾驶中的运动规划(MotionPlanning),附几十种规划算法1平面2R机器人概述如图1所示为本文的研究本体——平面2R机器人。对参数进行如下定义:机器人广义坐标

  3. ruby-on-rails - 如何针对组合字段的唯一性对这种复杂的验证进行建模 - 2

    link有两个组件:componenta_id和componentb_id。为此,在Link模型文件中我有:belongs_to:componenta,class_name:"Component"belongs_to:componentb,class_name:"Component"validates:componenta_id,presence:truevalidates:componentb_id,presence:truevalidates:componenta_id,uniqueness:{scope::componentb_id}validates:componentb_id

  4. 等保工作流程和明细 - 2

    一、系统定级信息系统运营使用单位按照等级保护管理办法和定级指南,自主确定信息系统的安全保护等级。有上级主管部门的,应当经上级主管部门审批。跨省或全国统一联网运行的信息系统可以由其主管部门统一确定安全保护等级。定级需要根据信息系统的实际情况合理定级。二、系统备案第二级以上信息系统定级单位到所在地设区的市级以上公安机关办理备案手续。省级单位到省公安厅网安总队备案,各地市单位一般直接到市级网安支队备案,也有部分地市区县单位的定级备案资料是先交到区县公安网监大队的,具体根据各地市要求来。信息系统运营、使用单位或者其主管部门应当在信息系统安全保护等级确定后30日内,到公安机关办理备案手续。三、初次测评信

  5. 设计一个亿级高并发系统架构 - 12306火车票核心场景DDD领域建模 - 2

    “架设一个亿级高并发系统,是多数程序员、架构师的工作目标。许多的技术从业人员甚至有时会降薪去寻找这样的机会。但并不是所有人都有机会主导,甚至参与这样一个系统。今天我们用12306火车票购票这样一个业务场景来做DDD领域建模。”开篇要实现软件设计、软件开发在一个统一的思想、统一的节奏下进行,就应该有一个轻量级的框架对开发过程与代码编写做一定的约束。虽然DDD是一个软件开发的方法,而不是具体的技术或框架,但拥有一个轻量级的框架仍然是必要的,为了开发一个支持DDD的框架,首先需要理解DDD的基本概念和核心的组件。一.什么是领域驱动设计(DDD)首先要知道DDD是一种开发理念,核心是维护一个反应领域概

  6. 2023爱分析·流程中台市场厂商评估报告:微宏科技 - 2

     目录1. 研究范围定义2. 流程中台市场分析3. 厂商评估:微宏科技4. 入选证书 1.   研究范围定义近年来,随着外部市场环境快速变化、客户需求愈发多样,企业逐渐意识到,自身业务需要更加敏捷、高效,具备根据市场需求快速迭代的能力。业务流程的自动化能够帮助企业实现业务的敏捷高效,因此受到越来越多企业的关注。企业的“自动化武器库”品类丰富,包括低/零代码平台、RPA、BPM、AI等。企业可以使用多项自动化工具,但结果往往是各项自动化工具处于各自的“自动化烟囱”之中,仅能实现碎片式自动化。例如,某企业的IT团队可能在使用低代码平台、财务团队可能在使用RPA、呼叫中心则可能在使用聊天机器人。自动

  7. 【动态规划】背包问题(详细总结,很全) - 2

    【动态规划】一、背包问题1.背包问题总结1)动规四部曲:2)递推公式总结:3)遍历顺序总结:2.01背包1)二维dp数组代码实现2)一维dp数组代码实现3.完全背包代码实现4.多重背包代码实现一、背包问题1.背包问题总结暴力的解法是指数级别的时间复杂度。进而才需要动态规划的解法来进行优化!背包问题是动态规划(DynamicPlanning)里的非常重要的一部分,关于几种常见的背包,其关系如下:在解决背包问题的时候,我们通常都是按照如下五部来逐步分析,把这五部都搞透了,算是对动规来理解深入了。1)动规四部曲:(1)确定dp数组及其下标的含义(2)确定递推公式(3)dp数组的初始化(4)确定遍历顺

  8. ruby - 在 rspec 中测试多步骤工作流程 - 2

    我想了解使用rspec测试多步骤工作流的习惯用法或最佳实践。我们以“购物车”系统为例,其中的购买流程可能是当用户提交购物篮并且我们没有使用https时,重定向到https当用户提交购物篮并且我们使用https并且没有cookie时,创建并显示一个新的购物篮并发回cookie当用户提交到购物车并且我们使用https并且有一个有效的cookie并且新商品与第一个商品用于不同的产品时,向购物车添加一行并显示这两行当用户提交到购物篮并且我们使用https并且有一个有效的cookie并且新商品与之前的商品相同时,增加该购物篮行的数量并显示这两条线当用户点击购物车页面上的“结帐”并使用https并

  9. ruby-on-rails - Rails 3 中私有(private)消息建模的首选方式 - 2

    我计划在成员之间实现一个私有(private)消息系统。我想知道对此的首选方法是什么。要求是我应该能够像这样轻松地检索它们@user.conversations#ShouldreturnUserobjectsthatIsentorreceivedmessagesfrom(butnotme)@user.conversations.messages#Messagesfromallorspecificuserobjects.@user.conversations.messages.unread#Unreadmessages调用@user.conversations时应该只检索向我发送消息的人

  10. ruby-on-rails - 如何编写一个健壮的永无止境的流程? - 2

    我问了一个关于目录监视的不同问题,有人回答了这个问题,但问题的另一半是如何最好地在ruby​​中创建一个永无止境的进程来做到这一点。以下是要求:永远奔跑可监控(即知道它是在运行还是在运行)有某种方法可以重新启动它并确保它正常运行(上帝?)开始/停止使用Capistrano(会很好!)我们看过BackgroundRb,但它似乎有点过时而且老实说不可靠!我们查看了DelayedJob,但这似乎适合一次性工作(因为永无止境的工作似乎会阻止任何其他工作完成,因为工作是按顺序完成的)。我们正在运行构成我们环境的一堆Ubuntu服务器。有什么想法吗? 最佳答案

随机推荐