有很多同学在我们微信群和我们阿木实验室论坛提问,无人机/无人车的路径规划和避障应该怎么入手。随着无人系统的发展,无人系统的路径规划的研究也越来热。生活中无人机器系统也越来越多的出现,从无人机,到无人车,商城的引导机器人。一个新兴机器人行业正在兴起。
一 系统软件和硬件框架
一个典型的无人机系统的计算机构架如下:
图一 无人机计算机系统
这种以PX4/Ardupilot为代表的小型无人系统的计算机系统构架图,主要有两块:感知和任务计算机和飞控计算机,无人车其实类似(车辆底盘驱动系统和感知系统)。目前来讲飞控计算机不断在成熟和完善,研究和应用的热点在感知和任务
计算机上。
二 研究方向
在Ardpuliot/PX4的感知和任务管理计算机开发中,和大型无人机的任务管理计算机开发不同,小型无人机的任务管理计算机集中在环境感知,自动避障路径规划,目标物体识别追踪,自动搜寻,集群控制策略等领域。符合小型化,低空域,在有限空间飞行的特点。
开发重点
1 环境感知:以激光雷达,视觉传感器等硬件为主的激光SLAM/视觉SLAM开发方向,获得设备自身的方位,速度和姿态为目的,作为GPS的补充或者替代。
2 路径规划:以自动避障的路径规划,以集群控制为主的路径规划,以自动搜寻的路径规划,以无人机自动调度系统的路径规划。获得当前空间和时间下的设备自身的最优运动路径(一般是期望的速度和期望的位置),来执行复杂任务为目的。
3 视觉识别:以目标物体的识别,感知,追踪,引导。获得目标物体的相对位置为目的。
很多的无人机应用开发的目标实际上同时包含了环境感知和路径规划,视觉识别三大块。比如可以进行一个良好的路径规划的基础是环境感知,本身的位置速度估算正确才可以去完成一个有效的路径规划,否则路径规划就会失效。
一般室外的环境感知GPS就可以完成,遮挡等复杂场景,环境感知由任务和感知计算机来做。
还是上一张图:
感知和任务计算机的开发三大方向,和开发流程方法。
三 无人系统开发手段和方法
1 任务和感知计算机开发硬件载体
以往工业级以PowerPC,FPGA等为代表的硬件载体,现在的消费级或者说准工业级以Arm构架和Intel为多。像大疆的妙算系列无人机板载计算机就有英伟达的TX2和Intel的。
因为任务和感知计算机通常要求计算能力比较强,普通的单片机构架无法胜任。还有就是飞控计算机和任务计算机是模块化分立的,模块化的。业界由玩家把树莓派同时用来飞控计算机和任务和感知计算机,这样设计是很不合理的,且不说树莓派的运算能力如何,飞控计算机和任务计算机软件运行在同一个硬件上,从软件和硬件设计上都有重大的缺陷。专业领域不推荐那么做,这也是这类一体化板卡没有发展起来的原因。飞控计算机要求实时性,任务计算机计算复杂,如果任务计算机软件复杂性问题导致了整个系统的崩溃,飞控计算机也崩溃,那么无人系统就失控了,如果任务计算机崩溃,只要飞控计算机不崩溃,整个无人系统还是可以安全着陆的。我们曾经也有一款这样的板卡,后来我们停产了,没有发展起来。我们在硬件设计上还是走向分模块,相对独立的做法。同样软件设计上也遵守这样的设计,模块独立,降低耦合。
我们目前用到的硬件如下:
英伟达的nano
英伟达的TX2
我们淘宝店铺均有售,可以关注
https://shop142114972.taobao.com/?spm=a230r.7195193.1997079397.2.3efb3d8dLWaZOj
2 开发流程
以避障为例:
开发硬件平台
https://item.taobao.com/item.htm?spm=a1z10.1-c.w4004-18433176671.6.13def907NjLqL4&id=591693894635
开发手段
按照完整的开发流程
1 建立数学模型
2 算法开发
3 仿真
4 实机测试
以完成一个激光雷达避障为例:
1 数学建模
业界关于避障的算法,有很多论文,开源的代码。比如可以采用简单高效的VFH算法,数学模型相对比较简单,方便构建。
2 算法开发
根据数学模型编写代码,涉及复杂的数学公式可以采用matlab来开发,VFH比较简单,开源的代码做一下优化就可以完成,或者直接用matlab来编写也相对比较容易。
3 仿真
避障属于场景和逻辑,最好用三维可视环境搭建出虚拟环境,在虚拟环境中仿真,常用的仿真工具有FlightGear,Gazebo,AirSim等等,写好的算法在虚拟仿真环境中运行,看一看避障的效果如何。总结就是仿真有问题,实际测试一定有问题。
4 实机测试
仿真测试通过以后,然后实机测试具体功能,在仿真中传感器数据大多为理想值,仿真的代码有时候不能完全适用于真实环境。当然可以在仿真系统中加入噪声数据,和建立仿真模型的时候高度还原真实物理场景,这样也可以提高仿真代码的适应性。
以上4个步骤,尤其的仿真环节一定不可缺少,可以提升开发效率,降低开发成本。我们的板载计算机功能包,提供了完善的仿真环境和代码框架,欢迎大家关注我们的github和wiki。
以上详细文档参考wiki和我们的github.
板载计算机介绍 腾讯链接
https://v.qq.com/x/page/f3014rj41ib.html
微信公众号关注《阿木实验室》获取更多无人机开发测评信息,关注《阿木社区》获取更多学习课程信息。
社区论坛地址:bbs.amovauto.com 参与讨论。