无人机踩坑提醒:
比赛前报名表千万别填第一个,不然你将会是踩坑小组,评委会把所有评分点以及扣分点通过你总结出来(文章会随时补充)
方案介绍:
本人比赛期间采用的是纯光流加openmv视觉闭环,这里建议视觉闭环部分可以把openmv用树莓派+1080P的摄像头进行替换可以忽视大部分的光线导致的数据不稳定问题。
路线
1.起飞至1.5米高度,平移一段距离后前进去找A点(这里的找A点方案等同于17年国赛的无人机题跟踪小车)
2.找到A点后水平移动到18号格(修正方案后面讲,先讲流程)
3.水平移动到4号格
4.转角3 水平移动到17号格
5.转角16 水平到2号
6.转角1 水平到22
7.水平到28
8.水平移动越过A点然后找降落点
修正方案
这里用到的方案就是用绿色色块中心点坐标和摄像头的中心的欧几里得距离来修正飞机的水平偏移
设理想的欧几里得距离为W (通过实际情况自行标定)
当前的欧几里得距离为err
E为允许误差范围
前后修正举例(此处是21号-19号的修正)
if ((err - W) < -E) //当中心点距离太小,则应该向后方水平移动调整err间距
{
Program_Ctrl_User_Set_HXYcmps(-10, -20); //后退修正
}
else if ((err - W) > E) //当中心点距离太大,则应该向前方水平移动调整err间距
{
Program_Ctrl_User_Set_HXYcmps(10, -20); //前进修正
}
else if ((err - W) < E && (err - W) > -E)
{
Program_Ctrl_User_Set_HXYcmps(0, -20);
}
左右修正举例
if ((err - W) < -E) //当中心点距离太小,则应该向左方水平移动调整err间距
{
Program_Ctrl_User_Set_HXYcmps(-20, 10); //向左移修正
}
else if ((err - W) > E) //当中心点距离太大,则应该向右方水平移动调整err间距
{
Program_Ctrl_User_Set_HXYcmps(-20, -10); //向右移修正
}
else if ((err - W) < E && (err - W) > -E)
{
Program_Ctrl_User_Set_HXYcmps(-20, 0);
}
这里建议使用树莓派+1080P高清长焦摄像头,本人比赛的时候使用的是长焦的openmv,相信我你过分相信openmv的话,光照条件会给你迎头痛击。
在绿色边缘的部分,也就是21-4 以及1-28 这两个大直角边缘可以全程闭环修正飞机姿态
对于中间的路径,可以选择进行盲飞至9号格停顿一下,用同样的方案进行飞机姿态修正
非播撒区和播撒区判定
这里视觉方案采取对绿色色块进行框选并且计算框选的矩形面积,通过矩形面积在相机中的占比来判定此时飞机是否进入非播撒区