Skip to content

H0waB0utJ1/FLIT

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

FLIT

English

FLIT 是一个无人机研究型仓库,用于解决部分可观测条件下无人机与目标之间相对位置信息不可得的问题,设计了 LP-Net 用于预测目标点与无人机的相对位置信息。

总体设计结构图

飞行轨迹图汇总 复杂环境飞行任务 GT-RL

项目结构

FLIT/
├── flit_rl/   # 强化学习训练、评估、导出
├── flit_gz/   # PX4 + Gazebo + ROS 2 sim2sim 工作区
├── flit_exp/  # 实验数据与绘图脚本

子项目说明

1. flit_rl

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 环境中,基础安装流程如下:

  1. 先准备好 Isaac Lab 和对应的 isaaclab conda 环境。
  2. 进入这个仓库里的 flit_rl 目录。
  3. source/flit_rl 以 editable 模式装进去。
conda activate isaaclab
cd flit_rl
pip install -e source/flit_rl

完成安装后,可以先执行以下命令确认环境是否注册成功:

python scripts/list_envs.py

如果输出中包含 Flit-HoverFlit-TrajectoryTrackFlit-TargetTrack,说明环境注册正常。

联合训练入口

当前保留的训练入口为联合训练脚本,分别对应三个任务:

  • scripts/hover/train_joint.py
  • scripts/trajectorytrack/train_joint.py
  • scripts/targettrack/train_joint.py

以目标跟踪任务为例,启动命令如下:

python scripts/targettrack/train_joint.py \
  --task Flit-TargetTrack \
  --num_envs 1024 \
  --headless

这些脚本支持通过 --goal_source_mode 切换目标相对位置信息输入来源,当前一共有四种模式:

  • --goal_source_mode 0GT,使用真值状态
  • --goal_source_mode 1LP,使用 LP-Net 输出
  • --goal_source_mode 2IS,使用 reset 后固定的真值输入
  • --goal_source_mode 3MI,使用 IMU 积分得到的数学模型输入

实验脚本

实验数据采集与方法对比主要使用以下脚本:

python scripts/debug/collect_experiment_data.py \
  --task target \
  --method LP \
  --episodes 4

该脚本常用参数如下:

  • --task:任务类型,可选 hovertrajectorytarget
  • --method:实验方法,可选 GTLPISMI
  • --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:视频视角,可选 externalfollowonboard
  • --video_root:视频输出根目录,默认是 exp_videos
  • --policy_path:手动指定 policy checkpoint 路径
  • --predictor_path:手动指定 predictor checkpoint 路径

除上述参数外,该脚本还继承了部分 Isaac Lab / RSL-RL 的通用启动参数,因此也可以通过命令行进一步覆盖运行设备、日志目录或 checkpoint 加载方式等设置。

导出相关脚本如下:

  • scripts/export_policy_onnx.py
  • scripts/export_predictor_onnx.py

2. flit_gz

flit_gz 是一个 ROS 2 工作区,用来把 FLIT 策略接入 PX4 + Gazebo 仿真闭环,目标是做 sim2sim 验证,而不是重新实现一套完全独立的控制逻辑。

当前 README 和代码里明确说明的 Phase 1 目标是完成最小悬停闭环:

  1. PX4 状态桥接
  2. 悬停任务状态构建
  3. GT 相对位置提供器
  4. 策略推理节点
  5. 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_bridge
  • tasks/hover_task_node
  • providers/gt_hover_provider
  • policy/hover_policy_node
  • control/offboard_control_node

如果要在本地构建该工作区:

cd flit_gz
colcon build
source install/setup.bash

3. flit_exp

flit_exp 主要用于实验结果整理与可视化,包括:

  • scripts/plot_training_curves.py: 绘制训练曲线
  • scripts/plot_experiment_figures.py: 绘制实验结果图
  • all_metrics_summary.txt: 汇总后的指标文本
  • train_curve_csv/: 训练曲线 CSV 数据

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages