1 问题提出
无人机(Unmanned Aerial Vehicles, UAVs)凭借其卓越的机动性和灵活部署能力,已广泛应用于空中基站,以支持与地面用户(Ground Users, GUs)之间的高质量无线通信连接。与传统地面通信网络相比,UAV能够提供更为优质的通信链路质量,并根据用户需求提供灵活的按需服务。UAV在多个领域具有重要应用,如天然气管道巡检、应急救援和火灾监控等,这些应用场景要求UAV与GUs构建高效的视频传输网络。
视频服务对数据传输速率和画面清晰度有严格要求,但由于视频数据量大且对传输连续性要求高,UAV的视频传输系统在服务质量(Quality of Service, QoS)和体验质量(Quality of Experience, QoE)方面面临更高的挑战。此外,由于UAV机载电池容量受限,飞行时间和任务执行时间受到较大约束,因此,如何在保证QoE和QoS的基础上有效降低UAV系统的能耗,成为亟需解决的重要问题。
为了确保UAV视频传输系统能够满足不同地面用户的服务需求,可以在UAV上配备多根天线,实现同时对多个用户的通信,并通过波束成形技术将信号精确引导至每个用户的最佳接收路径,避免信号干扰并增强信号强度,从而提升系统的整体性能和服务质量。
2 系统模型
a) 系统模型
基于旋翼UAV的空中视频监控系统由K 个单天线GUs和一架配备M x ×M y =M ≥2个均匀矩形阵列(Uniform Rectangular Array , URA)天线的旋翼UAV组成。UAV配备摄像头,从起点起飞并飞往目的地,在飞行过程中捕捉视频。随后,它利用多天线波束成形技术将视频信号传输给K 个单天线用户。
为减少因UAV频繁升降导致的能量消耗,假设UAV的飞行高度保持固定不变,设为恒定值H 0
。将UAV的总运行时间作为优化变量,记为T 。在任意时刻t ∈ 0,T 时,UAV的三维位置和速度可表示为q t =[ x u t , y u t , H 0] T∈R 3 ×1 ,其中*⋅* T 代表矩阵的转置操作。初始位置和目的地是预先确定的,k
的坐标为u k =[ x k , y k ,0] T, UAV与用户k 之间的三维距离和水平距离分别表示为
由于UAV处于高空位置,空对地通信信道不仅需要考虑直接路径,还必须考虑来自周围建筑物和物体的多重反射和散射。因此,我们采用了包含视距(Line-of-Sight, LoS)和非视距(Non-Line-of-Sight, NLoS)多路径分量的Racian信道模型如下:
KR为系数,表示LoS路径功率与NLoS路径功率之比。α1 为UAV-GUs链路的路径损耗指数,
,λ*=*c/ fc, c 为光速,fc 为频率。另外,表示LoS路径的贡献,可表示为:
b)视频流模型
我们将时刻t 时UAV分配给GUs的波束成形向量表示为。。
因此,GU k 在时刻t 的信噪比(signal-to-noise ratio, SINR)可以表示为
UAV与用户之间的可达速率为
为了避免视频再缓冲,引入了信息因果约束;即在任意时刻t ,只能在用户处播放已经接收到的视频数据,即
视频用户在时刻t 的视频质量是通过一个具有收益递减性质的对数函数来评估的, 将时刻t 的视频速率变化评估为当前和时间平均播放速率之间的平方差,即.因此,我们将时刻t 的QoE定义为
其中λ 是一个积极的因素来平衡视频质量和视频速率变化之间的权衡。其中需要设置一个下限,以确保视频播放速率高于U min ,即满足以下条件:
C )能量模型
UAV有限的电池容量限制了其飞行时间和传输能力。如何有效管理能源消耗对于空中视频传输至关重要。主要探讨旋翼UAV在飞行推进和通信过程中的能量利用问题。
假设UAV在固定高度运行,假设能够使我们忽略与垂直运动相关的能量消耗,仅关注水平飞行的能量消耗。在时刻t ,UAV的推进功率可表示为:
其中P 0( 1+ 3∥ v t ∥ 2 Ω2 r 2) 表示UAV克服空气阻力所消耗的基础功耗,P i( 1+ ∥ v t ∥ 4 4 v 0 - ∥ v t ∥ 2 2 v 0) 1/2 表示旋翼的诱导功耗,d 0 ρs**A r 2 ∥ v t ∥ 3 表示旋翼的驱动功耗。v 0 , Ω*,r* 分别代表旋翼的诱导平均速度、旋翼叶片的角速度以及旋翼的半径。
P 0 和P i 分别表示悬停状态下的叶型功率和诱导功率。d 0 ,s, A r ,ρ 分别表示机身阻力比、旋翼的鲁棒性、旋翼盘面积和空气密度。此外,UAV在时刻t 的发射功率可以表示为: 因此,UAV的总能耗可以表示为:
3 优化问题
问题(P1)中的约束条件1规定了UAV的起始和终止位置,约束条件2则限制了其速度,其中V max
表示UAV的最大速度。约束条件3确保在任意时刻t ,只能在用户处播放已经接收到的视频数据.约束条件(12)(13)分别对UAV的传输性能和视频播放速率提出了最低要求。
4 代码实现
-
参数初始化:
num_users
:设置用户数量。transmit_power_max
和transmit_power_min
:设定无人机最大和最小发射功率(单位:dBm)。distances
:每个用户与UAV的随机距离(单位:米)。noise_power
:假设的噪声功率(单位:瓦特)。frequency
:信号频率(单位:Hz)。
-
路径损耗:使用自由空间路径损耗模型来计算每个用户的信号衰减。
-
信号-to-噪声比(SNR)和数据速率:根据路径损耗和发射功率计算每个用户的SNR,并使用Shannon公式计算数据速率。
-
约束条件 :假设系统中有多个用户,每个用户与基站之间的通信链路受到噪声、路径损耗等因素的影响。我们的目标是通过调整各个用户的发射功率,最小化系统的总体能耗,同时确保每个用户的QoE需求(例如数据速率)得到满足。这个问题可以被建模为一个非凸优化问题 ,其中包括了关于发射功率的约束(功率非负,数据速率约束)和系统的总能耗目标。为了简化问题,我们使用 CVX (MATLAB的优化工具箱)来求解该非凸问题。(cvx工具箱安装教程:MATLAB中cvx工具箱的使用-CSDN博客)
Matlab
% CVX工具箱需要预先安装
% 参数初始化
N = 10; % 用户数量
B = 1e6; % 系统带宽 (Hz)
R_min = 1e6; % 最低数据速率要求 (bps)
sigma2 = 1e-10; % 噪声功率 (W)
h = rand(1, N) * 10^(-3); % 每个用户的信道增益(随机值,单位:W)
% 用户间的距离 (单位:米) 用于计算路径损耗
distances = 100 + rand(1, N) * 100;
% 计算路径损耗 (假设自由空间模型)
path_loss = 20*log10(distances) + 20*log10(2.4e9) - 147.55;
% CVX优化
cvx_begin
% 定义优化变量:用户的发射功率 p_i (单位:瓦特)
variable p(N) nonnegative; % 发射功率必须为非负
% 定义SNR和数据速率
snr = p ./ (sigma2 * h); % 计算每个用户的SNR
rate = B * log2(1 + snr); % 计算每个用户的数据速率
% 目标函数:最小化总能耗
minimize( sum(p) );
% 约束条件
subject to
rate >= R_min * ones(1, N); % 每个用户的数据速率必须大于等于最低要求
p <= 30; % 每个用户的发射功率不超过30瓦特
p >= 0.1; % 每个用户的发射功率不低于0.1瓦特(假设的最小功率)
snr >= 1; % 确保SNR不低于1,避免过低的信号质量
cvx_end
% 输出结果
disp('优化后的发射功率 (瓦特):');
disp(p);
disp('每个用户的SNR:');
disp(snr);
disp('每个用户的数据速率:');
disp(rate);
disp(['总能耗: ', num2str(sum(p))]);
% 绘制优化前后的数据速率对比
figure;
bar(rate);
xlabel('用户编号');
ylabel('数据速率 (bps)');
title('每个用户的优化后数据速率');
grid on;
-
优化目标:根据每个用户的数据速率与最低要求进行对比,如果某些用户的速率低于最低要求,则调整其发射功率。
-
算法优化:优化部分采用了贪心方法,逐步调整功率,以确保每个用户的速率满足最低要求。也可以用更复杂的优化算法(例如粒子群优化、遗传算法等)
-
结果输出:计算并输出每个用户的SNR、数据速率、满足QoE需求的用户数量、总能耗。
-
优化后的结果:对功率进行调整后,重新计算优化后的数据速率和总能耗,并与原始结果进行对比。
Matlab
% 参数设置
num_users = 10; % 用户数量
transmit_power_max = 30; % 最大发射功率 (dBm)
transmit_power_min = 10; % 最小发射功率 (dBm)
distances = 100 + rand(1, num_users) * 100; % 随机生成用户与UAV的距离 (单位:米)
noise_power = 1e-10; % 噪声功率 (W)
frequency = 2.4e9; % 频率 (Hz)
% 计算路径损耗 (假设自由空间路径损耗模型)
path_loss = 20*log10(distances) + 20*log10(frequency) - 147.55; % 路径损耗 (dB)
% 假设的信号-to-噪声比(SNR)和数据速率的关系
snr_to_data_rate = @(snr) log2(1 + snr); % 基于Shannon公式的简单速率计算
% 目标:最小化通信能耗,满足QoE需求
% QoE需求:最小数据速率要求 (bps)
min_data_rate = 1e6; % 最小数据速率 (1 Mbps)
% 初始化功率分配
transmit_powers = linspace(transmit_power_min, transmit_power_max, num_users); % 初步假设每个用户的发射功率
% 计算每个用户的信号-to-噪声比(SNR)和数据速率
snrs = zeros(1, num_users);
data_rates = zeros(1, num_users);
for i = 1:num_users
% 计算SNR (dB)
snrs(i) = transmit_powers(i) - path_loss(i); % dB形式
% 计算实际SNR (线性)
snr_linear = 10^(snrs(i)/10);
% 计算数据速率 (bps)
data_rates(i) = snr_to_data_rate(snr_linear);
end
% 计算QoE满足条件的用户
valid_users = data_rates >= min_data_rate;
% 计算总能耗
total_energy = sum(10.^(transmit_powers / 10)); % 将dBm转化为瓦特并求和
% 输出结果
disp('每个用户的SNR (dB):');
disp(snrs);
disp('每个用户的数据速率 (bps):');
disp(data_rates);
disp(['满足QoE需求的用户数量: ', num2str(sum(valid_users))]);
disp(['总能耗 (瓦特): ', num2str(total_energy)]);
% 能耗最小化目标函数:约束最小化通信能耗
% 我们将通过优化算法(例如梯度下降、粒子群优化等)来调整发射功率
% 这里用贪心方法作为优化策略:逐渐增加发射功率,确保每个用户的数据速率不低于最低要求
optimize_powers = transmit_powers;
for i = 1:num_users
if data_rates(i) < min_data_rate
optimize_powers(i) = transmit_powers(i) + (min_data_rate - data_rates(i)) / 100; % 增加功率
end
end
% 重新计算优化后的数据速率和总能耗
snrs_opt = zeros(1, num_users);
data_rates_opt = zeros(1, num_users);
for i = 1:num_users
snrs_opt(i) = optimize_powers(i) - path_loss(i); % dB
snr_linear_opt = 10^(snrs_opt(i) / 10);
data_rates_opt(i) = snr_to_data_rate(snr_linear_opt);
end
% 计算优化后的总能耗
total_energy_opt = sum(10.^(optimize_powers / 10)); % 将dBm转化为瓦特并求和
% 输出优化后的结果
disp('优化后的发射功率 (dBm):');
disp(optimize_powers);
disp('优化后的数据速率 (bps):');
disp(data_rates_opt);
disp(['优化后总能耗 (瓦特): ', num2str(total_energy_opt)]);
% 绘制优化前后的数据速率对比
figure;
plot(1:num_users, data_rates, 'b-o', 'DisplayName', '优化前数据速率');
hold on;
plot(1:num_users, data_rates_opt, 'r-o', 'DisplayName', '优化后数据速率');
xlabel('用户编号');
ylabel('数据速率 (bps)');
legend;
title('优化前后数据速率对比');
grid on;