告别调参玄学:在AirSim中用Python手把手调通LQR,让无人机稳稳跟踪8字轨迹
当你在AirSim中第一次尝试用LQR控制无人机跟踪8字轨迹时,是否遇到过这样的场景:明明按照教科书设置了Q和R矩阵,无人机却像喝醉了一样左右摇摆?或者调了一整天的参数,跟踪误差反而越来越大?这就像试图用一把没有刻度的调音器给钢琴调音——看似科学,实则玄学。
今天,我们要用Python在AirSim中搭建一套可视化调试系统,让你亲眼看到每个参数如何影响无人机的运动。就像给调音器装上数字显示屏,我们将用Matplotlib实时绘制跟踪误差曲线,用颜色编码显示不同参数组合的效果,最终找到那组让无人机优雅滑过8字轨迹的"黄金参数"。
1. 环境准备:从零搭建LQR调试实验室
1.1 配置AirSim-Python联动环境
首先确保你的AirSim环境能通过Python控制。创建一个新的Python环境并安装必要依赖:
bash复制conda create -n airsim_lqr python=3.8
conda activate airsim_lqr
pip install msgpack-rpc-python numpy matplotlib airsim
在AirSim设置文件settings.json中添加如下配置,确保无人机初始状态稳定:
json复制{
"SettingsVersion": 1.2,
"SimMode": "Multirotor",
"Vehicles": {
"Drone1": {
"VehicleType": "SimpleFlight",
"X": 0, "Y": 0, "Z": -2,
"Yaw": 0
}
}
}
1.2 设计8字轨迹生成器
我们需要的不是一个简单的8字,而是包含位置、速度、加速度的完整轨迹信息。在trajectory.py中定义参数化8字轨迹:
python复制import numpy as np
def figure8(t, scale=5, speed=0.5):
"""生成带一阶二阶导数的8字轨迹"""
x = scale * np.sin(speed
