突破极限!!!20米每秒的端到端无人机自主导航

引言 无人机在复杂环境中的自主导航是一项重要且具有挑战性的任务,例如搜索救援、电力巡检和物流运输等领域。传统的导航方法通常采用“感知-建图-规划-控制”的框架,然而这种级联结构容易导致误差累积和延迟,尤其在高速飞行和动态环境中表现不佳。此外,由图1所示,以主流的传统导航方法为例,建图占据了大量的计算与内存资源,进一步限制高速飞行和动态环境的表现[1]。近年来,端到端学习方法逐渐兴起,试图直接从传感器数据学习控制策略,从而简化导航流程并提高效率。

©️【深蓝AI】编译

论⽂题目:Back to Newton’s Laws: Learning Vision-based Agile Flight via Differentiable Physics

论文作者:Yuang Zhang, Yu Hu, Yunlong Song, Danping Zou, Weiyao Lin

论文地址:https://arxiv.org/abs/2407.10648

▲图1|传统方法CPU与内存消耗占比©️【深蓝AI】编译

端到端学习方法的核心思想是直接学习从传感器输入到控制命令的映射关系,从而绕过中间的建图和规划步骤。这种方法可以显著降低系统延迟,并提高对动态环境的适应能力。尽管端到端学习具有诸多优势,但其在实际应用中仍面临一些挑战。首先,端到端模型的性能依赖于高质量的数据,而获取足够的高质量无人机导航数据成本高昂且极为困难。其次,如果采用强化学习方法进行训练,过程往往非常复杂,训练效率低下,并且模型的表现严重依赖于代价估计网络的质量,这增加了模型的训练难度。这些问题仍然是制约端到端学习在无人机导航等领域广泛应用的关键障碍。

算法理论

针对上述问题,本文提出了一种基于可微物理仿真的端到端视觉导航方法,该方法的核心思想是将物理引擎集成到学习回路中,通过反向传播算法直接优化控制策略。 可微物理模拟器能够计算损失函数关于控制策略参数的梯度,从而实现高效的策略学习。系统总体框架如图2所示,通过与环境交互来训练策略网络。 策略网络接收深度图像作为输入,并输出控制指令(推力加速度和偏航角)。 可微物理模拟器根据控制指令模拟无人机的运动,并生成新的深度图像和奖励信号。 代价函数由多个子项组成,包括速度跟踪代价、避障代价、平滑代价等。 通过最小化代价函数,可以优化策略网络的参数,使其能够在复杂环境中实现安全高效的导航。

▲图2|基于可微物理仿真的端到端视觉导航总体框架©️【深蓝AI】编译

策略网络采用卷积循环神经网络结构,结合了一个轻量级卷积神经网络用于深度图特征提取,以及一个GRU层实现一致的规划和控制。策略网络接收深度图像并经过反转与最大池化处理到16 × 12大小作为网络输入。每一帧图像通过多个卷积层处理,这些卷积层的核大小分别为32(2) - 64(3) - 128(3),然后经过展平操作并线性投射到一个192维的特征向量。所有卷积层的步幅均为1,并紧跟一个LeakyReLU激活函数。同时,目标速度、姿态估计和速度估计也被线性投射到一个192维的特征,并与对应的图像特征相加。组合后的特征被输入到一个GRU单元中,GRU的状态用于通过一个全连接层输出期望的推力加速度以及当前速度估计,其中推力加速度是控制指令。

为了实现高效的策略学习,本文提出了一种可微物理仿真,该仿真采用基于质点动力学模型的可微分物理引擎模拟无人机运动,并考虑了空气阻力和飞控延迟。 该引擎可以高效地计算损失函数关于控制策略参数的梯度。具体公式如下:

v_{k+1} = v_k + \frac{a_k + a_{k+1}}{2} \Delta t, \quad p_{k+1} = p_k + v_k \Delta t + \frac{1}{2} a_k \Delta t^2.

由于仿真是物理可微的,因此通过构建代价函数并通过链式法则计算梯度实现反向传播直接优化控制策略。本文采用的代价函数由速度跟踪代价、避障代价和平滑代价加权求和而成。速度跟踪代价利用Smooth L1函数计算实际速度\bar{v}_{k}与期望速度v_{k}^{set}之间的差异。其公式如下:

                                    \mathcal{L}_v = \frac{1}{T} \sum_{k=1}^{T} \text{Smooth L1}(\|v_k^{\text{set}} - \bar{v}_k\|_2, 0)

避障代价鼓励无人机避开障碍物。 它基于无人机与最近障碍物之间的距离d_{k},无人机半径r_{q}和接近速度v_{k}^{c}计算。其公式如下:

\mathcal{L}_c = \frac{1}{T} \sum_{k=1}^{T} v_k^c \max\left(1 - (d_k - r_q)^2, 0\right) + \beta_1 \ln\left(1 + e^{\beta_2 (d_k - r_q)}\right)

平滑代价包含推力加速度代价和加加速度代价,分别限制了推力加速度和加加速度的变化,使其更加平滑,有利于飞控的稳定性。 推力加速度代价计算的是一段时间内加速度的平方累加和,加加速度代价计算的是一段时间内相邻两个时间步的推力加速度之差的平方累加和。 二者的公式如下:

\mathcal{L}_a = \frac{1}{T} \sum_{k=1}^{T} \|a_k\|^2

\mathcal{L}_j = \frac{1}{T-1} \sum_{k=1}^{T-1} \left\| \frac{a_k - a_{k+1}}{\Delta t} \right\|^2

总代价函数是以上四个代价函数的加权和:

L = \lambda_v \mathcal{L}_v + \lambda_c \mathcal{L}_c + \lambda_a \mathcal{L}_a + \lambda_j \mathcal{L}_j

通过反向传播算法,可以将损失函数的梯度传播到策略网络的参数,从而实现策略优化。

物理实现

为验证基于可微物理仿真的端到端视觉导航算法的有效性,本文在轻量级无人机平台上进行板载部署,如图3所示,其中计算单元仅需21美元,该平台的具体硬件配置如下:

  • 机架: Roma 3英寸机架

  • 螺旋桨: GEMFAN 3英寸螺旋桨

  • 电机: 1606 3750KV 电机

  • 飞控: Aocoda F7mini 飞控

  • 电调: HAKRC 4合1 电调

  • 深度相机: RealSense D435i 深度相机

  • 计算单元: Mango Pi 开发板

▲图3|轻量级无人机平台©️【深蓝AI】编译

如图4所示,纯视觉无定位信息的自主导航无人机在图3所示无人平台上进行飞行策略的轻量低成本部署,实现在杂乱环境中以20m/s的速度实现端到端自主导航。图4A展示无人机在包含静态和动态障碍物的室内环境中自主飞行。图4B、C展示无人机在室外场景自主飞行。

▲图4|物理实现飞行效果展示©️【深蓝AI】编译

总结

本文提出了一种基于可微物理仿真的端到端视觉导航方法,用于无人机在复杂环境中的自主导航。传统方法存在误差累积和资源消耗大的问题,而端到端学习通过直接从传感器数据学习控制策略,简化了流程并提高了效率。本文方法将物理引擎集成到学习回路中,利用可微物理模拟器优化策略网络,结合卷积循环神经网络实现规划与控制。实验在轻量级无人机平台上验证了该方法的有效性,无人机能够在静态和动态障碍物环境中实现端到端自主导航。该方法为无人机导航提供了一种高效、低成本的解决方案。

参考文献

[1] Zhou X, Wen X, Wang Z, et al. Swarm of micro flying robots in the wild[J]. Science Robotics, 2022, 7(66): eabm5954.

### 视觉端到端无人机自主导航技术概述 视觉端到端无人机自主导航是一种新兴的导航方式,它通过直接从传感器数据(如摄像头图像)学习控制策略来实现无人机的自主飞行。这种方法相比传统的分层架构具有更高的效率和更低的成本,因为它省去了中间的手动设计特征提取和状态估计环节。 一种典型的基于可微物理仿真的端到端视觉导航方法被提出[^2]。此方法的核心在于将物理引擎集成到学习回路中,从而能够利用可微物理模拟器优化策略网络。具体而言,该方法采用卷积循环神经网络(Convolutional Recurrent Neural Network, CRNN),结合规划与控制功能,在静态和动态障碍物环境中实现了高效的端到端自主导航。实验表明,这种轻量级无人机平台可以在复杂环境下达到约20每秒的速度,展示了其高性能和鲁棒性。 此外,还有研究专注于提升检测精度和适应特定应用场景的能力。例如,YOLOMG 是一款针对无人机间检测的任务提出的算法,它融合了外观信息和像素级运动信息以提高检测效果[^5]。这类研究成果不仅增强了无人机在密集环境下的感知能力,还扩展了其在诸如编队飞行、空域安防等领域的实际应用价值。 对于希望深入探索这一主题的研究者来说,可以参考一些公开资源获取更多细节和支持材料。比如加入某些专注3D视觉的知识社区可能有助于获得最新的顶会论文和技术教程[^3];或者访问专门提供自动驾驶及相关领域多方向学习视频的内容平台也能帮助理解背后原理及其工程实践[^4]。 以下是部分关键技术点及其实现思路: #### 数据预处理阶段 为了使输入适合深度学习框架处理,原始相机捕获的画面通常需经过裁剪、缩放等一系列操作标准化尺寸大小,并转换成张量形式供后续计算使用。 ```python import cv2 import torch def preprocess_image(image_path): img = cv2.imread(image_path) resized_img = cv2.resize(img, (WIDTH, HEIGHT)) # WIDTH 和 HEIGHT 定义为目标分辨率 tensor_img = torch.from_numpy(resized_img).permute(2, 0, 1).float() / 255.0 return tensor_img.unsqueeze(0) # 增加批次维度以便于批量训练 ``` #### 构建CRNN模型结构 这里展示了一个简单的CRNN定义例子,其中包含了时间分布上的卷积层用来捕捉空间特性以及LSTM单元负责序列依赖关系分析。 ```python class CRNNAgent(torch.nn.Module): def __init__(self): super(CRNNAgent, self).__init__() self.cnn_layers = torch.nn.Sequential( torch.nn.Conv2d(in_channels=3, out_channels=64, kernel_size=(3, 3), padding='same'), torch.nn.ReLU(), ... ) self.lstm_layer = torch.nn.LSTM(input_size=LATENT_DIMS, hidden_size=HIDDEN_SIZE) def forward(self, x): batch_size, timesteps, C, H, W = x.size() c_in = x.view(batch_size * timesteps, C, H, W) c_out = self.cnn_layers(c_in) r_in = c_out.view(batch_size, timesteps, -1) output, _ = self.lstm_layer(r_in) return output[:, -1] ``` #### 训练过程概览 设定损失函数衡量预测动作与真实标签之间的差距并通过反向传播调整权重参数直至收敛。 ```python criterion = torch.nn.MSELoss() optimizer = torch.optim.Adam(model.parameters(), lr=LEARNING_RATE) for epoch in range(NUM_EPOCHS): for data, target in dataloader: optimizer.zero_grad() pred = model(data) loss = criterion(pred, target) loss.backward() optimizer.step() ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值