Robomaster SDK源码解读.Camera.上

先搜索关键字

在这里

对应的引入的库,机器库

相机的库,里面有TT

开始读这个camera的源码,主要是要了解是有什么方法。

我主要是要一个逐帧的方法,因为需要算法去处理每一帧的照片

里面主要是有三个相机类

我们还是主要看TT的方法,我们的硬件是这个

一共10个方法,从第三个开始用了一个装饰器

用了一个@property的装饰器

这个是它的作用

一开始的是初始化的方法,可以看到是继承到robot的,我们稍微看一下

在robot里面看到了drone

这是robot里面对无人机的所有的SDK的封装

所有的SDK方法

对应的用户的文档是在这里

这个是我写的一个demo,在我这里可以看到一个红框

因为这个方法是我们下面要说的方法

可以看到,对于一些涉及硬件的方法都是设置保护了

接着是两个方法

可以看到对于一个

接着是一个传感器函数,这个方法返回的是

在这里破案了,我一直以为是飞机下面的红外对管

接下来是tello的LED灯

搜索

总之这些就是对扩展件灯特效的设置,我之前看SDK,还以为是哪里的灯

注意的是,要想实现这些个功能,扩展件的固件需要是出厂的固件

在SDK里面有说明

我们看一个最简单的例子,设置点阵屏幕的亮度

这个是在代码中的体现,老早就说研究SDK的封装方式。

大疆的这个整的真好~

这个地方的函数有点有趣,get_module是一个方法。

注意我图中画的框子

这个模块有点看不懂

搜索了一圈,看上去应该是一个初始化里面要执行的代码

按照这个函数的命名方法,应该是调用一个方法以后

里面进行的自动化的方法

里面有一些方法是没有在SDK里面写得

这个方法是自动的扫描无人机在局域网里面

可以看到是开启了多线程去扫描的,返回的是一个TT的IP地址

这个方法是当扫描到这个TT的地址以后

去开一个TCP的方法去监听TT的回应,一次缓存区是1024个字节那么大

看这个写的,将Ip以strings的形式加到ip这个列表里面

然后去判断TT返回的信息,是OK的情况的然后在去检测上个方法里面看我下面的打码部分的返回列表里面的ip列表

如果有的话就把这个ip加到机器维护的ip列表里面

而且以日志的方式来打印这个ip列表

这个一开始就是先看源码阅配置的ip,优先级高

如果没有就看自己的程序在电脑里面维护的ip列表

实现了自动的连接

接着用一个元组(不可变),来放IP和端口号码

因为是UDP的连接方式,所以上面的代码也有体现

更加具体的可以参考我以上的说明,等待TT返回的数据

初始化的方法太长了,大部分逻辑都是在写如何稳定的建立连接

这个翻译,我emmmm

这个是所有的程序最后要执行的一个方法,释放所有的资源

这个方法是比较主要的,发送命令用的方法

我们来主要的看一下这个使能sdk的方法

这个里面是写的向端口的8889发送command

在这个方法里面就是对所有连接在主机的TT循环发送开启SDK的指令

我们继续看这个使能的方法,确定这个标识位为1重新发送

如果是0,就用log打印警告

这个方法我后面会用到,就是要保证我的飞行器定高。因为图像识别是要稳定的环境才可以保证成功率

先看这个发送的命令

在协议的文件里面有,参数是这样的

找到参数,这个是打包数据的顺序

返回的是打包好的数据流

这个是打包的逆向过程,解包过程

我们还需要再程序里面获得飞机的三轴信息,因为在决定下一个动作之前

是要知道自己当前的姿态再进行调整。

这里说下具体的发送步骤,首先在程序里面你不用考虑这么多细节。写个函数名字就好~首先是将这个查询的命令去用cmd承接,接着用协议.文字包装协议()创建一个新的对象。接着这个新对象还有一个叫Text_cmd的方法,

这个是设置信道来获得更好的连接性能

组队模式设置

设置订阅的信息

最后是一个对于所有的信息的订阅

在SDK文档内的具体对应表

还记得在协议里面哪个奇怪的字符吗

我们终于读完了关于robot的源码,现在来看我们的camera的类

初始化的时候会初始化5个私有的bianl

有它的连接方式,视频或者音频的开启,以及是不是开启图像窗口预览

接下来是一对功能,开和关闭视频流。这个display的参数我们去探索一下

搜索一下

对于在多媒体的关闭是要关闭视频和音频的接口

这个是默认开启视频流的功能,可以知道可以放三个参数

第一个是要不要直接预览,以及一个地址+协议的类型。视频是TCP的连接

具体是有个叫conn的文件里面有源码,其实我是觉得这个的文件的作用就是管连接。

如果是tcp的协议的话,下面就是建立连接的过程

还有设置3s的超时时间。还用log打印出相应的地址

接着延时0.1继续连接

以及UDP的连接

这个是读取一帧的视频

这个是函数的实现,后面是策略。就是视频流的传出方式

这个是管道的输出方式

http://www.opencv.org.cn/opencvdoc/2.3.2/html/modules/stitching/doc/introduction.html

快12点了,先发了吧

(0)

相关推荐

  • 基于4G Cat.1的内网穿透实践

    这一篇继续BearPi-4G开发板实践:内网穿透实践. 基本TCP的socket通信测试 之前我们学习WiFi模块时,与PC进行TCP协议的socket通信测试我们只要在我们的PC上通过网络助手建立一 ...

  • 如何使用OpenCV和Socket进行视频聊天?

    重磅干货,第一时间送达 一.简介 在本文中,我们要构建的是视频聊天,但话音通道使用的OpenCV和Python中的Socket.流程: 创建用于一对一通信的 TCP 套接字. 从相机中获取实时流. 对 ...

  • 【精品博文】EDK之路(4)——自定义IP(SDK部分)

    SDK部分(BSP的创建) 由于我们存在一个自定义IP,这导致在建立BSP时,会增加一点操作.如果我们什么都不做,直接建立BSP,那么该BSP将不会包括自定义IP的驱动.其实,不用该驱动也行,我们直接 ...

  • Robomaster SDK源码阅读.5

    一位读者催更了很长时间的文章,想看robomaster SDK的源码解读,有点感动,就我的水平居然还有人想看. 其实我写这个还是比较小众的 https://github.com/dji-sdk/Rob ...

  • 在线教育平台源码:线上教育平台开发的发展方向

    在线教育的发展历程非常漫长,甚至比任何一个科技巨头的历史都要长久,其实,早在上个世纪初,美国就有了自己的线上教育,只是那时候是互联网前期的态势.在我国,线上教育平台开发的发展速度是非常快的,但是成长却 ...

  • 教育系统源码:线上教育平台开发中的准则与见解

    当代,信息技术的快速发展,催生了许多新事物出现在我们的视野中,也时刻影响着我们的生活,比如:直播.短视频.教育软件等等,特别是线上教育平台开发,给教育带来了新的生机与活力,也让我们尽情遨游在知识的海洋 ...

  • 开源网校源码:线上教育平台开发的可取之处

    当代,教育行业依旧处于高速发展的阶段,有越来越多的创业者把眼光投向教育行业,同时,教育要想持续发展,就离不开线上教育平台开发.相信在未来20年,教育行业依旧是市场潜力最大的行业.如果只有传统的线下教育 ...

  • 网校系统源码:线上教育软件开发给我们的学习带来了哪些变化

    学习这个话题无论何时都不会落后,无论是在校学生也好,还是已经步入职场的青年,亦或是中年人.老年人,都需要不断学习才能跟得上时代的步伐,而且要想在社会上拥有自己的一番天地,少不了要学习各种知识充实自己, ...

  • ASP.NET CORE 启动过程及源码解读

    在这个特殊的春节,大家想必都在家出不了们,远看已经到了回城里上班的日子,但是因为一只蝙蝠的原因导致我们无法回到工作岗位,大家可能有的在家远程办公,有些在家躺着看书,有的是在家打游戏:在这个特殊无聊的日 ...

  • 教育系统源码:线上教育平台开发的教育模式及发展

    科技日新月异的当代,网络的衍生品数不胜数,让我们的生活也变得更加便利.比如线上教育平台开发就是这样,它正是利用互联网的优势,把线下的教师搬到了线上,方便学生的同时,也方便了家长和老师,但是在进行线上教 ...

  • 教学网站源码:线上教育软件开发的成本影响因素

    移动互联网的迅猛发展,让我们的生活也发生了天翻地覆的变化,比如:可以网上购物.买车票.排队挂号等,我们再也不用浪费那么多的时间去办事情了,大部分事情都能在网上完成,就连学习也是,教与学也不再受空间.时 ...

  • 雨青的指标源码解读

    R1:=EMA(HHV(HIGH,500),21); R2:=EMA(HHV(HIGH,250),21); R3:=EMA(HHV(HIGH,90),21); R4:=EMA(LLV(LOW,500) ...