Cesium 无人机航线规划

鉴于大疆司空平台和大疆无人机app高度绑定,导致很多东西没办法定制化。

从去年的时候就打算仿大疆开发一套完整的平台,包括无人机app以及仿司空2的管理平台,集航线规划、任务派发、实时图像、无人机管理等功能的平台。

当前阶段主要实现了:

1、无人机实时数据(包括视频、音频、拍照数据、位置信息以及无人机姿态)回传至web端,web端实时预览

2、web端实时编辑航线,编辑好的航线直接派发到无人机,无人机按照编辑航线进行作业;
3、......

后续我们还做了喊话、图像自动识别动功能

......

下面是基于Cesium开发的航线编辑功能,后面会对这个这个模块的实现进行记录,供大家参考。
当前我做的是三维空间的航线编辑,还有种方式是快速编辑(此处不做说明)。

简单操作说明:
航点编辑支持两种方式:键盘和鼠标点击。        
W -- 向前
S  -- 向后

A -- 向左

D -- 向右

并且相机姿态编辑,也支持键盘和鼠标操作:

⬆ --  镜头抬升
⬇  -- 镜头降低
⬅ -- 镜头左转
➡ -- 镜头右转

具体操作大家可以参考司空2的平台,后续我会将此功能放到线上,大家也可以体验。

后续我写完了,统一放出核心代码。当前仅作记录。

2024-04-12

 // 根据距离计算位置computeByDistance(offset) {// 根据相机的heading 计算前后左右的朝向let heading = this.startMoveHeading;const center = Cesium.Matrix4.multiplyByPoint(this.localMtx_inverse, this.localCenter, new Cesium.Cartesian3());const x = (offset.a.val || 0) - (offset.d.val || 0);const y = (offset.w.val || 0) - (offset.s.val || 0);const directionX = Cesium.Cartesian3.multiplyByScalar(new Cesium.Cartesian3(1, 0, 0), -1 * x, new Cesium.Cartesian3());const directionY = Cesium.Cartesian3.multiplyByScalar(new Cesium.Cartesian3(0, 1, 0), y, new Cesium.Cartesian3());let newc = Cesium.Cartesian3.add(center, directionX, new Cesium.Cartesian3());newc = Cesium.Cartesian3.add(newc, directionY, new Cesium.Cartesian3());const rotationZ = Cesium.Matrix3.fromRotationZ(Cesium.Math.toRadians(-1 * heading || 0), new Cesium.Matrix3());newc = Cesium.Matrix3.multiplyByVector(rotationZ, newc.clone(), new Cesium.Cartesian3());const res = Cesium.Matrix4.multiplyByPoint(this.localMtx, newc.clone(), new Cesium.Cartesian3());return res;}computeHeadingPitch(offset) {const heading = (offset.ArrowRight.val || 0) - (offset.ArrowLeft.val || 0);const pitch = (offset.ArrowUp.val || 0) - (offset.ArrowDown.val || 0);return { heading, pitch }}

未完待续。。。。。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/620910.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Redis中的BigKey

Redis中的BigKey 文章目录 Redis中的BigKey什么是BigKey?BigKey的危害找到Bigkey删除BigKey优化BigKeyBigKey对持久化的影响对AOF日志的影响对AOF重写和RDB的影响 什么是BigKey? 大 key 并不是指 key 的值很大,而是 key 对应的 value 很大。…

【GPU】冲击高性能

计算量估计 卷积神经网络复杂度分析 卷积神经网络CNN中的参数量(parameters)和计算量(FLOPs ) Roofline Model Roofline Model与深度学习模型的性能分析 有了上面这些基础知识,再来往下分析会更有收获 发现问题 — …

六、数据呈现

目录 6.1 理解输入输出 6.1.1 标准文件描述符 1 STDIN (0) 2 STDOUT (1) 3 STDERR(2) 6.1.2 重定向错误 1 只重定向错误 2 重定向错误和数据 6.2 在脚本中重定向输出 6.2.1 临时重定向 6.2.2 永…

汇智知了堂学员风采:网络安全学习之路,我们在行动

在这个数字化浪潮汹涌的时代,网络安全已经成为维护国家安全、社会稳定和个人隐私的重要一环。汇智知了堂深知网络安全人才的重要性,因此我们致力于培养具备扎实技术功底和创新能力的网络安全人才。 近日,我们网络安全培训班74部的学员们迎来…

QT联合Opencv进行车辆的计数

QT联合Opencv进行车辆的计数 前言初始界面展示运行界面展示视频展示 前言 ⭐️⭐️⭐️这个项目旨在利用Qt和OpenCV技术,实现一个车辆计数系统。⭐️⭐️⭐️ 🌎通过结合Qt的用户界面设计和OpenCV的图像处理功能,系统能够对输入的交通视频进…

R-Tree原理及朴素实现代码

R树是用于空间访问方法的树数据结构,即用于索引多维信息,例如地理坐标、矩形或多边形。 NSDT工具推荐: Three.js AI纹理开发包 - YOLO合成数据生成器 - GLTF/GLB在线编辑 - 3D模型格式在线转换 - 可编程3D场景编辑器 - REVIT导出3D模型插件 -…

实打实好用!微信客户高效管理神器大揭秘!

如果你的微信里的客户很多,每次回复消息都不及时,或是有遗漏,那么,你一定要试试这个微信客户高效管理神器——微信管理系统,能够让你事半功倍,提高工作效率。 首先,让我们来看看这款微信管理系…

掼蛋残局技巧

一、根据对手张数出牌 口诀:十打二来九打一,打成八张不着急; 对手七张或八张,可以反手打一夯; 五打二来六打三,打得对手把眼翻; 枪不打四; 两张:出两张以上的牌&#xff…

【嵌入式】SD NAND:小身躯蕴含大能量的新型嵌入式存储解决方案

🧑 作者简介:阿里巴巴嵌入式技术专家,深耕嵌入式人工智能领域,具备多年的嵌入式硬件产品研发管理经验。 📒 博客介绍:分享嵌入式开发领域的相关知识、经验、思考和感悟,欢迎关注。提供嵌入式方向的学习指导…

Day16_学点儿JavaEE_实践_基于IDEA2023的简易JavaWeb项目、Tomcat输出乱码解决

0 JavaWeb项目目录 └──JavaWeb├──resources│ └──db.properties├──src│ └──com.sdust.web│ ├──servlet│ │ └──StudentServlet│ ├──pojo│ │ └──Student│ └──util│ └──JDBCUtil├──web│ ├──st…

使用icpc tool进行滚榜操作

前言 参加ACM的同学都知道,比赛非常有趣的环节就是赛后的滚榜环节,所以为了一个比赛的完整性,自己办比赛时也想要加入滚榜的操作,经过一段时间的研究学习,已经可以将滚榜程序与domjudege程序成功完成融合,…

2024.4.15

代码&#xff1a;uart4.c #include "uart4.h"void uart4_config() {//使能GPIO\GPIOG\UART4的外设时钟RCC->MP_AHB4ENSETR | (0x1<<1);RCC->MP_AHB4ENSETR | (0x1<<6);RCC->MP_APB1ENSETR | (0x1<<16);//设置PB2和PG11为管脚复用功能//P…