11(3)-AirSim+四旋翼仿真-AirSim中人工势场法方法改进
在11(2)中已经将人工势场法避障代码迁移至AirSim中,但是有一些待解决问题,这里一并说明后续的解决方案。
1.障碍物检验
之前使用了AirSim中提供的目标识别接口,主要问题在于
- 受到可搜索目标种类的限制,无法识别的物体不会被视作障碍物;
- 检测距离受限,在距离小于3米时难以识别。
在拿到了障碍物检测接口后,对相关部分进行替换,以上问题得到较好的解决。这部分内容不是本人负责,相关代码可参考:https://github.com/Kun-k/airsim_python/tree/main/ObstacleDetection。该接口可实时检测障碍物,并返回box3D
类型的障碍物信息,如下所示:
'box3D': <Box3D> { 'max': <Vector3r> { 'x_val': 4.900000095367432,
'y_val': 0.7999999523162842,
'z_val': 0.5199999809265137},
'min': <Vector3r> { 'x_val': 3.8999998569488525,
'y_val': -0.19999998807907104,
'z_val': 1.5199999809265137}},
box3D
类型提供了8个顶点信息,8个顶点可组成一个立方体,进而得到想要的障碍物信息。
这里取用了x−yx-yx−y平面内的4个顶点计算斥力。需注意以下两点:
- 检测障碍物时的距离阈值,与避障时的距离阈值定义不同,故计算斥力时需再次确认障碍物是否在距离阈值内。
- 直接获取的障碍物信息是在机体坐标系下的信息,需变换至全局坐标系再进行计算。
2.无人机速率和偏航控制
在之前使用LQR方法进行控制,能够较好地控制无人机跟踪目标状态,实现无人机机头朝向与飞行方向的一致。但为了进行速度、加速度限幅,目标状态的速度和加速度并不匹配,控制误差也较大,对无人机的速度限制效果一般。
参考三维航路点跟踪时使用的控制器限幅方法,通过当前速度对控制器输出进行限制,进行如下调整:
# 无障碍物时,三维航路点跟踪的控制器输出
U1 = np.array((K0 * Pt_matrix + K1 * A.dot(Pt_matrix)).T)[0]
if np.linalg.norm(U1, ord=np.inf) > Ul_track:U1 = U1 * Ul_track / np.linalg.norm(U1, ord=np.inf)
U = -(U1 + V_curr) / K2 # 有障碍物时的控制器输出
U = Fatt + Frep
if np.linalg.norm(U, ord=np.inf) > Ul_avoid:U = Ul_avoid * U / np.linalg.norm(U, ord=np.inf)
U = (U - V_curr) / K2 # 改进部分
3.改进局部极小值判断方法
考虑下图所示的情况,无人机由轨迹1-2
切换至轨迹2-3
时,在航路点2处先减速再加速。
此时速度较小,如加速过程中检测到障碍物,会认为满足航路点检测条件,产生不必要的避障动作。
解决方法为,只在加速运动的过程中进行局部极小值检验。
4.实现效果
改进APF方法与RRT方法结合进行避障飞行
RRT+APF无人机避障飞行
11(3)-AirSim+四旋翼仿真-AirSim中人工势场法方法改进相关推荐
- 基于人工势场法的二维平面内无人机的路径规划的matlab仿真,并通过对势场法改进避免了无人机陷入极值的问题
目录 1.算法描述 2.matlab算法仿真效果 3.MATLAB核心程序 4.完整MATLAB 1.算法描述 人工势场法原理是:首先构建一个人工虚拟势场,该势场由两部分组成,一部分是目标点对移动机器 ...
- 第四章:文法中的递归以及消除方法
在介绍递归文法之前,首先介绍一下递归下降分析器及其原理,然后分析右递归是如何处理的,再来分析左递归和间接左递归. 递归下降分析器 自顶向下语法分析的目的是为输入串寻找最左推导,或者说,从根节点(文法开 ...
- 【ParaView教程】第四章 常见问题 —— ParaView中的各种流线生成方法
流线主要可以分为空间流线和面流线,空间流线是在三维的计算域上生成的流线,面流线是在二维面上生成的流线.下面分别进行介绍. 空间流线 通过点源或线源生成流线 通过点源生成流线的内容可以参考[ParaVi ...
- 【AirSim】05.四旋翼的简单动作指令
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.AirSim提供了哪些和移动有关的API? 二.用好`moveByVelocityZ()` 总结 前言 为实现四旋 ...
- 四旋翼动力学和仿真翻译(Quadcopter Dynamics and Simulation)
本文翻译自Andrew Gibiansky的同名文章,该文献介绍了四旋翼的动力学模型和Matlab仿真的具体实现,对四旋翼入门非常有好处.原文如下 http://andrew.gibiansky.co ...
- 【飞行器】基于matlab四旋翼无人机控制仿真【含Matlab源码 2238期】
⛄一.四旋翼飞行器简介 0 引 言 四旋翼飞行器由于具有可垂直起降.机动性强.操作方便等诸多优点,在军事和民用场合得到广泛应用,从而成为众多学者的研究热点.四旋翼飞行器是具有四输入.六输出的欠驱动.非 ...
- 四旋翼无人机仿真之hector_quadrotor无人机(ROS + Gazebo)(一)
这里写自定义目录标题 应用环境 hector_quadrotor 功能包结构简介 hector_quadrotor 功能包安装 1. 安装所需依赖库 2. 下载.安装hector_quadrotor ...
- 四旋翼无人机建模 (附github源代码)
前言 四旋翼无人机的应用十分广泛,而且四旋翼无人机是非常理想的控制模型.因为四旋翼是四输入(四个螺旋桨的升力) 六输出 (三个位置,三个姿态角)的欠驱动系统,而且四旋翼的三个姿态角之间是互相耦合的,并 ...
- matlab simulink四旋翼无人机模糊PID控制姿态
1.内容简介 略 532-可以交流.咨询.答疑 2.内容说明 四旋翼无人机控制灵活.安全性能较高,能够实现空中悬停.翻滚.任意角度横 向飞行,常常替代人们从事高空危险作业,给我们的生活与工作带来了很多 ...
- python turtle 绘图_谈一下Pycharm中关联系统Python解释器的方法
大家知道,PyCharm是一款著名的Python IDE开发工具,是拥有一整套可以帮助用户在使用Python语言开发时提高其效率的工具,具备基本的调试.语法高亮.Project管理.代码跳转.智能提示 ...
最新文章
- Can't create handler inside thread Thread that has not called Looper.prepare()
- LeetCode First Missing Positive
- 060_Unicode字符编码
- JSON 数据 演示
- SAP Spartacus Unit List树形数据的加载
- CVPR 2019 Oral 目标跟踪最强算法SiamRPN++开源实现
- 计算机教育专业需要学什么,教育知识:计算机专业都学什么
- 谷粒商城高级篇爬坑笔记--错误异常信息乱码问题
- SQLServer数据库字典维护方法
- php定时器使用,PHP实现javascript的定时器
- 地理加权归回模型 (GWR) 参数估计
- 澜沧江某水电站下坝址坝址初步设计
- win10微信打电话对方听不到你的声音,你能听到对方声音
- H3C交换机机框首次启动报错“The device (FFFFFFFF-40) doesn‘t support this kind of board.”
- 经典DP题目-滑雪问题
- Netty系列进阶篇一:阻塞和多路复用到底是个啥?
- 设计模式之访问者模式(Vistor)
- 【数据库】用户管理---君权神授
- ArcGIS工具 - 批量删除空图层
- android 根据图片路径获取图片缩略图