3_竞赛无人机激光雷达SLAM建图条件下的室内定点控制——零基础学习竞赛无人机搭积木式编程

        根据上一节讲的仅依靠姿态自稳在角度层面的控制,无法避免无人机水平位置发生偏移,需要在姿态控制的基础上,额外增加水平位置、速度控制器去实现无人机的定点控制,其中位置—速度控制器的输出结果为期望运动加速度,需要根据多旋翼无人机动力关系将期望加速度转化成期望姿态倾角,相关映射关系见函数control_poshold.c第66行。

        位置-速度控制器决定了姿态控制器中水平俯仰、横滚方向的角度期望值。调整姿态能实现无人机速度、位置控制的根源在于姿态倾角直接决定了无人机水平运动的加速度,通过改变无人机的加速度进而实现了无人机速度、位置的改变。

        新手在没有掌握无人机动力学关系的情况下,可以内层姿态控制器理解成外环位置-速度控制器的执行机构,用户在对无人机进行二次开发时,绝大多数情况下都是在位置、速度控制层面来设计任务流程和控制逻辑

void Horizontal_Control_VIO(uint8_t force_brake_flag)

        参数 force_brake_flag为1时表示强制锁定当前位置作为悬停点,根据第一讲中的坐标关系,我们知道SLAM建图条件下无人机的位置、速度控制是在EN坐标系中完成的,EN坐标系由飞机SLAM建图初始时刻的位置和机头朝向决定的。是故当SLAM初始建图时刻飞机放置在起飞点并且机头朝正前方时,等效导航坐标系EN示意图如下。

        以2021年电赛国赛基础题部分为例,用户以起飞点为原点,建立等效导航坐标系EN,将待播撒区域的每个小块的中心点坐标列出来,飞机将这些坐标点作为飞行航点依次遍历并在到达各个小块时,用视觉模块(树莓派OPENCV、OPENMV、K210等)对飞行器正下方区域的颜色进行识别,决策激光笔的亮灭与否。在激光雷达SLAM建图高精度位置输出的前提下,原题目中起飞点十字以及播撒入口的A字标识检测与否变得无关紧要。需要做这部分检测并让无人机对准下方标识的方案,可参考视觉demo里面的色块追踪样例,这部分工作量可以忽略不计。

        上述案例中挨个遍历航点位置用到的就是SLAM建图条件下的位置控制来实现的,下一讲我们将会把高度控制、SLAM建图条件下的定点控制进行封装,最终形成导航控制函数,用户使用导航控制函数和基本自动飞行支持函数就实现飞行器的三维位置控制。

void Horizontal_Navigation(float x,float y,float z,uint8_t nav_mode,uint8_t frame_id)

相关新增功能介绍视频链接:深度开源—NC360竞赛无人机平台宣传片_哔哩哔哩_bilibili

猜你喜欢

转载自blog.csdn.net/u011992534/article/details/123762394