回到首页 返回首页
回到顶部 回到顶部
返回上一页 返回上一页

无人机航拍——非你莫属 简单

头像 寻有此人 2021.01.08 570 0

步骤1 案例详情

学校节目演出,如何拍到演员最佳视角呢?这个人脸部表情太有意思了,想离着近一点;学长吉他弹得太熟练了,如何才能看到细节呢?当然是找小飞机呀,帮助你找到最佳的拍摄视角,这个镜头非你莫属!

步骤2 本节拟解决的问题

1.如何保证无人机一直追随预设的主角持续拍摄

2.如何保证飞行器在电量小于20%时降落到指定地点

步骤3 教学准备

TT无人机*1

二哈识图AI智能传感器*1

挑战卡*4

3D打印固定件*1

project-image
代码
/*!
 * MindPlus
 * telloesp32
 *
 */
#include <RMTT_Libs.h>
#include <DFRobot_URM10.h>
#include <DFRobot_HuskyLens.h>
// 创建对象
DFRobot_HuskyLens huskylens;
RMTT_RGB          tt_rgb;
RMTT_Protocol     protocol;
DFRobot_URM10     urm10;


// 主程序开始
void setup() {
 tt_rgb.Init();
 Serial1.begin(1000000, 23, 18, SERIAL_8N1);
 led_effect_init();
 huskylens.beginI2CUntilSuccess();
 huskylens.writeOSD(String("Hello Dfrobot "), 230, 35);
 huskylens.writeAlgorithm(ALGORITHM_FACE_RECOGNITION);
 huskylens.writeName(String("dadada "), 1);
 tt_rgb.SetRGB(0,255,0);
 delay(2000);
 protocol.startUntilControl();
 delay(5000);
 protocol.sendTelloCtrlMsg("motoron");
 protocol.sendTelloCtrlMsg("takeoff");
 // 我的身高,飞机在我正前方
 protocol.sendTelloCtrlMsg((char *)String(String("up ")+int(163)).c_str());
 delay(5000);
 protocol.sendTelloCtrlMsg((char *)String(String("down ")+int(56)).c_str());
 protocol.sendTelloCtrlMsg((char *)String(String("left ")+int(250)).c_str());
}
void loop() {
 huskylens.request();
 if (huskylens.isAppear(1,HUSKYLENSResultBlock)) {
  protocol.sendTelloCtrlMsg("stop");
  if (huskylens.isAppear(1,HUSKYLENSResultBlock)) {
   // 在设别到人脸得情况下,判断飞机离人脸得距离.此时传感器在正前方,认为目标i在前方.为目标拍摄一张照片
   if ((45<(urm10.getDistanceCM(13, 14)))) {
    huskylens.takePhotoToSDCard();
   }
  }
  else {
   // 如果不是就旋转45°判断下个人脸的情况,如果判断到就继续拍照而且闪烁灯光
   protocol.sendTelloCtrlMsg((char *)String(String("cw ")+int(44)).c_str());
   if (huskylens.isAppear(1,HUSKYLENSResultBlock)) {
    huskylens.takePhotoToSDCard();
    led_effect_blink(255, 0, 0, 0, 255, 0, 8);
   }
  }
 }
}
project-image

步骤4 具体操作

通过官网学习:https://wiki.dfrobot.com.cn/_SKU_SEN0305_Gravity__HUSKYLENS_%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD%E6%91%84%E5%83%8F%E5%A4%B4

将所要识别的人脸导出一个人脸识别模型,假设被识别人脸在正前方,另外在飞机前加入一个超声波传感器,当所识别人脸位于飞机前45cm时,认为物体处于飞机前。在所写的程序中,运用if语句进行判断,后期程序改进,运用逻辑运算符进行重新改进(与)。拍摄一张照片储存于飞机设备内。飞机飞行过程中,发现所需识别目标,停止并悬停。

飞行前准备

1.测量摄影场地,计算最高距离(地面到屋顶高度),

2.提前试飞做续航测试(在搭载人脸识别模块的最长续航情况)

3.铺设挑战卡(飞行器在低电量下返航的路径标志)

4.对人脸识别模块进行调试(对要拍摄主体提前采集数据以用来训练人脸识别模型)

操作步骤

1.首先在环境明亮的情况下从各个角度采集拍摄主体20张(目的:训练人脸追踪模型使用)

2.打印3D固定件以固定二哈识图传感器

4.将TT扩展件与二哈识图通过一路串口相连

5.使用Arduino编程软件编写控制程序(当二哈识图传感器识别到人脸时会传输TT扩展件,会调用追踪算法以控制飞行器摄像头指向目标)

6.持续将视频流推送到电脑端保存

步骤5 知识点总结

传感器理论

卡尔曼滤波

1.对于模糊图像复原

2.关于目标位置的估计(利用目标动态信息,去掉噪声的影响)

3.随机因素的考虑

4.采样及分析

project-image

四旋翼飞行器

1.结构形式

2.工作原理

3.输入力与输出(欠驱动特性)

基础力学

1牛顿运动定律——动力学

2.力的合成与分解——重力与升力

3.伯努利原理—流体力学

project-image

4.运动速度(速度范围、角速度、姿态角等)

5.运动稳定性理论——空气动力、陀螺效应

PID研究(自动调节)

PID的研究历史悠久,甚至可以说是自动化控制的灵魂。这里形象的就一个例子:假如让你去拿桌子上面的一个包裹,你拿的时候可能不知道有多重,你用了抗麻袋的力气去拿,事实上没有那么重。接着你就慢慢的把力气放小,肌肉慢慢松弛,到了一个感觉很平稳的时候你停下来。这个过程如果用很控制学和数学的理论描述出来就是一个简单的PID过程。一开始对目标的未知判断而输出了太大的力称为过载,后来慢慢的输出输出力度相当于缓慢的积分。后来在颠簸的路上箱子上上下下,你随着路况不停的变化腕部力量,颠簸大就用力一点,否则就力小,实现了动态的调节。我们的无人机也是这样,当内部的传感器被飞控处理过以后会生成一个描述当前无人机状态的3个角度(上文有描述相关知识),接着无人机会通过算法来判断当前机器是不是够平稳,不够平的时候就会调节4个螺旋桨的转速来使无人机系统平稳。整个过程都是PID控制在调整

评论

user-avatar