大数跨境

用SIGMA free快速实现固定翼Dubins航迹规划

用SIGMA free快速实现固定翼Dubins航迹规划 北京大翔航空科技有限公司
2024-01-04
0
导读:在学习了SIGMA free的数据接口及SDK后,飞控数据、环境数据都可以随心所欲得拿到。本篇咱们以固定翼无人机的Dubins路径飞行为例,基于前文所学,带诸位走一遍从理论计算到代码实现,再到效果演示

在学习了SIGMA free的数据接口及SDK后,可以随心所欲得拿到飞控数据、环境数据等,想必诸位用户老爷早已按耐不住,或想小试牛刀,或想大刀阔斧的复现新奇idea。本篇咱们以固定翼无人机的Dubins路径飞行为例,基于前文所学,带诸位走一遍从理论计算到代码实现,再到效果演示的完整流程~


照惯例,我们会同步推出B站视频教学,更直观,更细致,手把手教你用SIGMA free实现dubins,大家可以在文章末尾找到关注方法和我们SDK的开源链接,不要迷路哦。


永久免费只是第一步,开源共享是我们最终的目标!还希望大家关注公众号和B站主页支持我们!



01



什么是Dubins路径

简单来说,二维Dubins曲线为我们提供了一个从起始点到目标点的路径规划方案:在满足最小转弯半径约束的前提下使用直线与圆弧对路径进行求解,而由直线段和圆弧段组合形成的复合路径就是经典的Dubins曲线。

我们很容易把二维Dubins曲线和固定翼飞行器的航迹联系到一起:固定翼无人机在巡飞阶段向着目标点飞行的过程中,周围涌现出众多威胁区和任务点,怎样才能在有限的续航和机动条件下规划最优航迹呢?Dubins曲线可以简单的给出答案。



02



固定翼如何实现Dubins路径

不难发现,Dubins路径仅仅规划了圆弧和直线,这个结果对于固定翼的控制来说是非常困难的。我们只需要将飞行器按照大致Dubins的路径飞就可以了,因为飞行器控制最需要保证的其实是飞行安全。运用我们之前学到的知识,很自然的就会联想到,在Dubins路径上取特征航点,进而控制固定翼飞行器完成整个航迹。

01

Dubins曲线的生成


当然,第一步还是要找到Dubins曲线,这里不做赘述,感兴趣的小伙伴可以通过阅读相关的文献和SIGMA free提供的相关SDK代码就可以了解。一句话:画出所有可能的组合,选最短的一条。


二维Dubins路径考虑的圆弧和直线对于固定翼飞行器而言并不是一个理想的航迹,因此很难通过航迹跟踪等方法去实现。Dubins路径的优势就是足够简单,理解容易,方便展示SIGMA free在算法复现方面的能力。更好的路径规划方法,我们也会陆续更新,用户老爷有特别想看到的算法也可以私信和我们沟通,也欢迎大家将自己复现的结果投稿给我们进行展示。


02

关键航点选取与插值


结合之前的内容,SIGMA free中固定翼无人机的航点控制可以在offboard模式下完成。这个模式需要按照固定频率输送航点信息,我们需要做的就是将得到的Dubins路径的关键点发送给PX4。简而言之:

第一步,需将初始点沿初始速度做反向延伸,将延伸点作为无人机开始进入Dubins飞行的第一个关键点。


第二步,调用send_local_pos_target_to_px4函数,将起始圆切点坐标、终止圆切点坐标、终点坐标的北东地坐标作为期望航点分别发给PX4完成飞行控制。

不过,在实际的飞行仿真过程中仅利用上述关键点坐标来控制无人机是不够的。受动力学约束的影响,无人机无法较好的贴合Dubins曲线,因此我们需要增加航点插值分别在起始圆弧段和终止圆弧段中自适应插入一系列离散航点,以增加轨迹控制精度,在一定程度上可以减少实际飞行轨迹和理论路线的偏移。

大部分用户老爷到这里应该是满脸问号,别着急,我们在SDK套件中将代码放到SDK中dubins.cpp里面(我们SDK的开源链接见文章末尾)不会用git拉代码的小伙伴可以稍微补充一下git的相关知识。这一部分需要结合代码和之前的内容仔细阅读。还是推荐大家在文章最后关注b站主页收藏学习。


03

控制超调优化


需要注意的是,在实际的飞行仿真过程中直接使用生成的Dubins路径来控制固定翼无人机,其飞行轨迹无法较好地贴合Dubins曲线。


这是由于Dubins生成时没有考虑飞行器的动力学模型。因此实际仿真效果和航点切换逻辑密切相关,当参数设置不是很合理时,会导致无人机“飞出”起始/终止圆,因此我们在程序中可以进行一系列优化,具体的方法也很简单:例如将实际求得的Dubins路径点作为参考点,根据无人机自身位置、速度自适应的期望航点向圆弧内外侧延伸/偏移,将优化后的航点发给PX4,这样在一定程度上可以有效避免控制超调的现象。

Dubins的引入仅仅是展示一下SIGMA free是如何将一个算法进行实现的,从而让用户熟悉SDK中各个函数的用法,这里我们就不再深入讨论Dubins路径相关的实现和优化问题,有兴趣的小伙伴可以私信我们进行学术上的探讨~b站留言也是可以的。




03



Dubins路径实现的效果展示

SIGMA free就是这么任性,代码写完直接运行程序,QGC和三维飞行模拟都有。提供的SDK里面dubins.cpp,直接运行,飞行器将自动解锁起飞并按照默认生成的Dubins航迹飞行。此时,在以出生点为原点的本地-北东地坐标系下,默认起飞点坐标为(400,0),起始点坐标为(800,0),起始速度向量方向为用(30,0)表示,终止点坐标为(400,800),终点速度向量方向用(-30,-40)表示,巡飞高度固定设为30m,巡飞速度固定设为30m/s。

大家应该能看明白了吧,之后利用这个框架,多增加几个目标点,自己设计几个威胁区域,修改点优化条件,生成奇形怪状的路径,完成类似躲避威胁区域、最短路径规划的作业/毕设什么的,还不是美滋滋~~~

今天的分享到此结束,没看懂的,不过瘾的,有想法的,关注公众号,获得SIGMA free下载链接。关注b站,获得完整安装与使用教程,趁着新年努力的决心和开题的压力,操练起来吧~

新年快乐~

重要:SIGMA free将永久免费,请仅把它当做学术交流的工具来使用,未经授权软件本身不允许用于任何商业行为,望大家理解。 

扫取二维码关注


我们在b站等你


相关软件及文档链接

SIGMA free永久免费下载链接:

http://download.dxuas.com.cn/SigmaFree/SigmaFree.zip

B站主页地址:
https://space.bilibili.com/1528135571 
SDK开源代码网址 Sigma-SDK:
https://gitee.com/beijing-daxiang-airlines/sigma-sdk.git

QGroundControl下载链接:

http://download.dxuas.com.cn/Software/QGroundControl-installer.exe

VsCode下载链接:

http://download.dxuas.com.cn/Software/VSCodeUserSetup-x64-1.80.1.exe

PX4官方文档:

https://docs.px4.io/main/en/

地面站官方文档:

http://qgroundcontrol.com/

【声明】内容源于网络
0
0
北京大翔航空科技有限公司
本公众号主要用于推广SIGMA free免费飞行仿真软件,并介绍课题组使用本软件实现的最新研究成果,包括无人机群、机器视觉等。 获取更多信息,欢迎访问B站主页https://space.bilibili.com/1528135571
内容 32
粉丝 0
北京大翔航空科技有限公司 本公众号主要用于推广SIGMA free免费飞行仿真软件,并介绍课题组使用本软件实现的最新研究成果,包括无人机群、机器视觉等。 获取更多信息,欢迎访问B站主页https://space.bilibili.com/1528135571
总阅读0
粉丝0
内容32