💥💥💞💞欢迎来到本博客❤️❤️💥💥
🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。
⛳️座右铭:行百里者,半于九十。
📋📋📋本文目录如下:🎁🎁🎁
目录
💥1 概述
基于Koopman算子合成的CBF进行碰撞避免研究是指利用学习的Koopman算子和控制边界函数(CBF)来实现无人机的碰撞避免。这种方法结合了动力学系统的模型和安全性约束,通过学习系统的动态特性和边界函数来设计出一个控制策略,使得无人机在避免碰撞的同时,能够实现其特定任务目标,比如着陆等。这项研究旨在提高无人机的飞行安全性和任务执行效率,为实际应用场景中无人机的自主飞行提供更多可靠的解决方案。
碰撞避免是机器人运动控制中的重要问题,通过合成控制边界函数(CBF)来实现碰撞避免是一种常见的方法。最近的研究表明,使用Koopman算子来合成CBF可以提高系统的性能和鲁棒性。
Koopman算子是一种线性动力学系统的无限维度表示方法,可以将非线性系统映射到高维空间中的线性系统。通过使用Koopman算子合成CBF,可以将非线性系统的动力学特性转化为线性系统的特性,从而更容易设计和分析控制器。
在碰撞避免问题中,Koopman算子可以用来建模系统的动力学,并通过合成CBF来设计碰撞避免控制器。通过将系统状态空间划分为安全和危险区域,并使用CBF来确保系统状态不会进入危险区域,可以实现有效的碰撞避免控制。
未来的研究可以进一步探索使用Koopman算子合成CBF进行碰撞避免的方法,以提高机器人系统的性能和鲁棒性。同时,还可以研究如何将Koopman算子与其他控制方法结合,以实现更复杂的碰撞避免任务。
本文包含7个主要脚本,运行不同部分的实验,展示了Koopman + CBF框架。前4个脚本涉及学习Dubin小车模型的近似Koopman算子,然后使用学习模型在乔治亚理工学院Robotarium进行实验。这些文件为(都可以通过利用存储在代码库中的学习模型分别运行):
- 'dubin_learning.m' 生成训练数据并学习模型
- 'robotarium_obstacle_avoidance.m' 在Robotarium上执行一个模拟实验,其中单个代理避开固定障碍物
- 'robotarium_collision_avoidance.m' 在Robotarium上执行一个模拟实验,其中5个代理避免彼此碰撞
- 'robotarium_collision_obstacle_avoidance.m' 在Robotarium上执行一个模拟实验,其中5个代理避免彼此碰撞和固定障碍物
剩下的3个脚本涉及学习无人机的近似Koopman算子,并利用学习模型模拟2个不同的实验。这些文件为(都可以通过利用存储在代码库中的学习模型分别运行):
- 'uav_learning.m' 生成训练数据并学习模型
- 'uav_collision_avoidance.m' 执行一个简单的实验,其中2个无人机避免相互碰撞
- 'uav_collision_ge_exp.m' 执行一个实验,在这个实验中,3个无人机试图降落在相同的着陆垫上,同时避免相互碰撞和与地面的强烈撞击
一、研究背景与意义
随着无人机技术的快速发展,无人机在民用、商用、军事等领域的应用日益广泛。然而,无人机数量的增加也带来了飞行安全问题,特别是无人机与障碍物或其他无人机的碰撞风险。因此,研究无人机碰撞避免技术具有重要意义,旨在提高无人机的飞行安全性和任务执行效率。
二、研究内容与方法
本研究基于Koopman算子合成控制边界函数(CBF)来实现无人机的碰撞避免。具体研究内容与方法如下:
- Koopman算子理论:Koopman算子是一种线性动力学系统的无限维度表示方法,可以将非线性系统映射到高维空间中的线性系统。本研究利用Koopman算子来建模无人机系统的动力学特性。
- 控制边界函数(CBF):CBF是一种用于描述系统状态空间中的安全区域的函数。本研究通过合成CBF来定义无人机系统的安全边界,确保无人机在飞行过程中不会进入危险区域。
- 碰撞避免策略:结合Koopman算子和CBF,本研究设计了一种碰撞避免策略。该策略通过实时监测无人机系统的状态,并根据CBF判断是否存在碰撞风险。一旦检测到碰撞风险,策略将调整无人机的飞行状态,以避免碰撞发生。
- 实验验证:为了验证所提方法的有效性,本研究进行了实验验证。实验包括在Matlab环境中的模拟实验和在Robotarium平台上的实际飞行实验。通过对比实验结果,评估了所提方法的性能和鲁棒性。
三、研究结果与分析
实验结果表明,基于Koopman算子合成的CBF方法能够有效地实现无人机的碰撞避免。在模拟实验中,无人机能够成功地避开固定障碍物和其他无人机,同时保持稳定的飞行状态。在实际飞行实验中,无人机也表现出了良好的避障能力和飞行稳定性。此外,该方法还具有较高的计算效率和实时性,能够满足无人机飞行过程中的实时避障需求。
四、结论与展望
本研究提出了一种基于Koopman算子合成的CBF方法进行无人机碰撞避免的研究,并通过实验验证了其有效性。该方法结合了动力学系统的模型和安全性约束,通过学习系统的动态特性和边界函数来设计出一个控制策略,使得无人机在避免碰撞的同时,能够实现其特定任务目标。然而,本研究还存在一些局限性,如系统模型的精度、传感器数据的准确性等。未来研究可以进一步探索如何提高系统模型的精度和传感器数据的准确性,以及如何将该方法应用于更复杂的飞行环境和任务场景中。
综上所述,基于Koopman算子合成的CBF方法在无人机碰撞避免领域具有广阔的应用前景和重要的研究价值。通过不断优化和改进该方法,有望为无人机行业的进一步发展和应用拓展提供有力支持。
📚2 运行结果
部分代码:
%% Define experiment parameters:
%State constraints and backup controller parameters:
global Ts T_max x_bdry
Ts = 0.01; % Sampling interval
T_max = 1;
N_max = ceil(T_max/Ts);
ts = 1e-3; % Simulator time interval
x_bdry = [-1 1; -1 1; 0.2 2; % Position limits (m)
-pi/6 pi/6; -pi/6 pi/6; -pi/12 pi/12; % Attitude limits (in euler angles XYZ) (rad)
-1 1; -1 1; -1 1; % Linear velocity limits (m/s)
-pi/12 pi/12; -pi/12 pi/12; -pi/12 pi/12; % Angular velocity limits (rad/s)
450 550; 450 550; 450 550; 450 550]; % Propeller angular velocity limits (rad/s)
% Define system and dynamics:
config = quad1_constants;
KpVxy = 0.7; %0.7
KpVz = 1; %1
KpAtt = 10; %10
KdAtt = 1; %1
KpOmegaz = 2; %2
V_max = 14.8;
V_min = 0.5;
hoverT = 0.5126*V_max; %0.52
Omega_hover = 497.61*ones(4,1);
M = [KpVxy; KpVz; KpAtt; KdAtt; KpOmegaz; hoverT]; % Backup controller parameters
z_land = 0.05;
affine_dynamics = @(x) UAVDynamics_eul(x); % System dynamics, returns [f,g] with x_dot = f(x) + g(x)u
backup_controller = @(x) backupU_eul(x,M); % Backup controller (go to hover)
controller_process = @(u) min(max(real(u),V_min*ones(4,1)),V_max*ones(4,1));
stop_crit1 = @(t,x)(norm(x(7:12))<=5e-2 || x(3) <= z_land); % Stop if velocity is zero
sim_dynamics = @(x,u) sim_uav_dynamics(x,u,config,false,false); % Closed loop dynamics under backup controller
sim_process = @(x,ts) x; % Processing of state data while simulating
initial_condition = @() generate_initial_state_uav(false);
fname = 'uav';
%Koopman learning parameters:
n = 16;
func_dict = @(x) uav_D_eul_ge(x(1),x(2),x(3),x(4),x(5),x(6),x(7),x(8),x(9),x(10),...
x(11),x(12),x(13),x(14),x(15),x(16)); % Function dictionary, returns [D,J] = [dictionary, jacobian of dictionary]
n_samples = 250; % Number of initial conditions to sample for training
gather_data = false;
tune_fit = true;
%% Learn approximated discrete-time Koopman operator:
if gather_data == true
[T_train, X_train] = collect_data(sim_dynamics, sim_process, backup_controller, controller_process, stop_crit1, initial_condition, n_samples, ts);
plot_training_data(X_train,n_samples)
% Process data so it only contains the states chosen for training:
for i = 1 : length(X_train)
X_train{i} = X_train{i}(:,1:n);
end
save(['data/' fname '_train_data.mat'], 'T_train','X_train');
else
load(['data/' fname '_train_data.mat']);
end
[Z, Z_p] = lift_data(X_train,func_dict,false);
Z_p = Z_p - Z;
Z_p = Z_p(5:end,:);
if tune_fit == true
[K, obj_vals, lambda_tuned] = edmd(Z, Z_p, 'lasso', true, [], [],true, tune_fit, 3);
save(['data/' fname '_lambda_tuned.mat'], 'lambda_tuned');
else
load(['data/' fname '_lambda_tuned.mat']);
[K, obj_vals, ~] = edmd(Z, Z_p, 'lasso', true, lambda_tuned, [],true, false, 0);
%[K, obj_vals, ~] = edmd(Z, Z_p, 'gurobi', true, lambda_tuned, false, 0);
end
🎉3 参考文献
文章中一些内容引自网络,会注明出处或引用为参考文献,难免有未尽之处,如有不妥,请随时联系删除。
[1]彭柯瑞,陈天翼,唐梓轩,等.基于Koopman算子的软体机器人数据驱动建模方法研究[J].武汉理工大学学报, 2022.
[2]彭柯瑞,陈天翼,唐梓轩,等.基于Koopman算子的软体机器人数据驱动建模方法研究[J].武汉理工大学学报, 2022.
[3]陈提.基于Koopman算子理论的航天器姿态协同控制[J].[2024-02-27].
[4]丁承君,吴礼荣,朱雪宏,等.基于Koopman算子的差速驱动AGV数据驱动控制[J].组合机床与自动化加工技术, 2023(3):109-112.