FLIT 是一个无人机研究型仓库,用于解决部分可观测条件下无人机与目标之间相对位置信息不可得的问题,设计了 LP-Net 用于预测目标点与无人机的相对位置信息。
FLIT/
├── flit_rl/ # 强化学习训练、评估、导出
├── flit_gz/ # PX4 + Gazebo + ROS 2 sim2sim 工作区
├── flit_exp/ # 实验数据与绘图脚本
flit_rl 是仓库中的强化学习核心部分,组织方式遵循 Isaac Lab extension 的结构,并通过 Gymnasium 注册任务。当前仓库中已经整理出的主要任务有:
| 任务 | 环境名 | 目标 |
|---|---|---|
| Hover | Flit-Hover |
悬停稳定、姿态控制、抗扰能力 |
| Trajectory Tracking | Flit-TrajectoryTrack |
跟踪圆形或圆角矩形轨迹 |
| Target Navigation | Flit-TargetTrack |
在静态/动态障碍环境中到达目标点 |
flit_rl 是本仓库中用于训练、评估和实验数据导出的核心工作目录,常用内容如下:
scripts/hover/,scripts/trajectorytrack/,scripts/targettrack/:三个任务各自的联合训练入口scripts/debug/:实验、调试分析与指标统计脚本source/flit_rl/flit_rl/tasks/manager_based/:三个 manager-based 任务的核心定义policies/:策略与 predictor checkpoint 存放目录logs/、exp/、exp_videos/:训练日志、实验 CSV 和视频输出目录
flit_rl 默认运行在 Isaac Lab 环境中,基础安装流程如下:
- 先准备好 Isaac Lab 和对应的
isaaclabconda 环境。 - 进入这个仓库里的
flit_rl目录。 - 把
source/flit_rl以 editable 模式装进去。
conda activate isaaclab
cd flit_rl
pip install -e source/flit_rl完成安装后,可以先执行以下命令确认环境是否注册成功:
python scripts/list_envs.py如果输出中包含 Flit-Hover、Flit-TrajectoryTrack、Flit-TargetTrack,说明环境注册正常。
当前保留的训练入口为联合训练脚本,分别对应三个任务:
scripts/hover/train_joint.pyscripts/trajectorytrack/train_joint.pyscripts/targettrack/train_joint.py
以目标跟踪任务为例,启动命令如下:
python scripts/targettrack/train_joint.py \
--task Flit-TargetTrack \
--num_envs 1024 \
--headless这些脚本支持通过 --goal_source_mode 切换目标相对位置信息输入来源,当前一共有四种模式:
--goal_source_mode 0:GT,使用真值状态--goal_source_mode 1:LP,使用 LP-Net 输出--goal_source_mode 2:IS,使用 reset 后固定的真值输入--goal_source_mode 3:MI,使用 IMU 积分得到的数学模型输入
实验数据采集与方法对比主要使用以下脚本:
python scripts/debug/collect_experiment_data.py \
--task target \
--method LP \
--episodes 4该脚本常用参数如下:
--task:任务类型,可选hover、trajectory、target--method:实验方法,可选GT、LP、IS、MI--episodes:采集的 episode 数量,默认4--max_steps_per_episode:单个 episode 的最大步数,默认800--num_envs:环境数量,当前脚本默认按1个环境使用--seed:随机种子--env_id:记录的环境实例编号,默认0--beta:LP/MI 模式使用的混合系数,默认1.0--real-time:按实时速度运行采集流程--print_every:日志打印间隔--save_root:CSV 输出根目录,默认是exp--video:录制每个 episode 的调试视频--video_view:视频视角,可选external、follow、onboard--video_root:视频输出根目录,默认是exp_videos--policy_path:手动指定 policy checkpoint 路径--predictor_path:手动指定 predictor checkpoint 路径
除上述参数外,该脚本还继承了部分 Isaac Lab / RSL-RL 的通用启动参数,因此也可以通过命令行进一步覆盖运行设备、日志目录或 checkpoint 加载方式等设置。
导出相关脚本如下:
scripts/export_policy_onnx.pyscripts/export_predictor_onnx.py
flit_gz 是一个 ROS 2 工作区,用来把 FLIT 策略接入 PX4 + Gazebo 仿真闭环,目标是做 sim2sim 验证,而不是重新实现一套完全独立的控制逻辑。
当前 README 和代码里明确说明的 Phase 1 目标是完成最小悬停闭环:
- PX4 状态桥接
- 悬停任务状态构建
- GT 相对位置提供器
- 策略推理节点
- Offboard 控制指令发布
工作区中的核心包:
src/bringup: 启动文件与运行编排src/interfaces: 共享数据契约src/px4_bridge: PX4 话题接入与统一状态整理src/tasks: 任务侧状态与几何逻辑src/providers: GT / LP / IS / MI 等相对位置提供器src/policy: 策略加载与推理src/control: PX4 offboard 控制桥src/px4_msgs: PX4 ROS 消息定义
Phase 1 启动文件:
ros2 launch bringup hover_gt_phase1.launch.py从启动文件可以看出,它会依次拉起这些节点:
px4_bridge/vehicle_state_bridgetasks/hover_task_nodeproviders/gt_hover_providerpolicy/hover_policy_nodecontrol/offboard_control_node
如果要在本地构建该工作区:
cd flit_gz
colcon build
source install/setup.bashflit_exp 主要用于实验结果整理与可视化,包括:
scripts/plot_training_curves.py: 绘制训练曲线scripts/plot_experiment_figures.py: 绘制实验结果图all_metrics_summary.txt: 汇总后的指标文本train_curve_csv/: 训练曲线 CSV 数据


