Skip to content

luke711-xyy/RL_Research

Repository files navigation

RL_Research

低雷诺数多连杆微泳机器人强化学习研究工程。

这个仓库已经从最初的单一 flagella_reorient 实验目录,演化成一个共享物理求解器 + 多个平行训练 primitive 的研究工作台。当前核心思路是:

  • 把“推进”和“转向”拆成独立技能训练
  • 让每个策略只解决一个明确问题
  • 再在上层控制逻辑里组合这些 primitive

当前仓库结构

RL_Research/
  calculate_v.py                 # 共享:正则化 Stokeslet + 运动学求解器
  discretization.py              # 共享:离散化预处理
  *.pt                           # 共享:几何/映射预处理产物
  swimmer.py                     # 历史保留环境
  train.py                       # 历史保留训练入口
  visualize_reorient.py          # 历史保留可视化

  Unbias_Propel/                 # 当前:无偏直线推进策略
    calculate_v.py
    discretization.py
    swimmer.py
    train.py
    visualize_reorient.py
    requirements-mac-myenv-equivalent.txt
    setup_mac_myenv_equivalent.sh
    README.md
    *.pt

  Turn_Primitive/                # 当前:真正意义上的转向 primitive
    calculate_v.py
    discretization.py
    swimmer.py
    train.py
    visualize_turn.py
    README.md
    *.pt

两个核心训练方向

Unbias_Propel/

目标:训练机器人学会持续推进,并在窗口尺度上保持整体前进方向稳定

它不是“强行要求每一步都朝同一方向”,而是允许鞭毛式周期摆动,同时压制长期偏航。

当前特点:

  • reset-free 训练
  • pressure_reward 维持推进能力
  • 用窗口级方向一致性惩罚抑制长期弯行
  • 观测已与当前奖励核心量对齐
  • 可视化支持:
    • 全历史质心轨迹
    • 近期渐隐质心轨迹
    • 当前奖励分解和窗口方向信息

Turn_Primitive/

目标:训练机器人学会尽可能少平移地改变整体朝向

当前特点:

  • 非 reset-free,而是技能型 episode
  • 用全身 10 根连杆平均角定义整体朝向
  • 目标是相对转角,而不是固定世界角
  • 奖励以:
    • 误差减少
    • 最终对齐
    • 平移惩罚
    • 过冲/角速度惩罚 为主

设计目标不是“朝某个方向前进”,而是:

先把身体转过去,再稳定下来。


共享物理核心

calculate_v.py

仓库最核心的共享组件。

作用:

  • 使用正则化 Stokeslet 方法求解低雷诺数流体中的机器人运动
  • 输入:机器人形态 + 关节动作
  • 输出:
    • 平移速度
    • 旋转角速度
    • 压力信息

discretization.py

预处理脚本。

作用:

  • 生成稀疏/稠密离散点映射
  • 输出一组 .pt 文件,供 calculate_v.py 使用

如果在新机器/新环境上部署,建议优先跑:

python discretization.py

推荐运行方式

训练无偏推进

cd Unbias_Propel
python train.py --cpus 4 --threads 6

可视化无偏推进

cd Unbias_Propel
python visualize_reorient.py --checkpoint <checkpoint_dir_or_file> --cpus 2 --threads 4

训练转向 primitive

cd Turn_Primitive
python train.py --cpus 4 --threads 6

可视化转向 primitive

cd Turn_Primitive
python visualize_turn.py --checkpoint <checkpoint_dir_or_file> --cpus 2 --threads 4

参数说明:

  • --cpus:传给 ray.init(...) 的 CPU 资源数量
  • --threads:传给物理求解器 torch.set_num_threads(...) 的 CPU 线程数

如果不传:

  • --cpus 使用 Ray 默认
  • --threads 使用 PyTorch / 系统默认线程数

Mac 环境迁移

Unbias_Propel/ 目录下已经附带:

  • requirements-mac-myenv-equivalent.txt
  • setup_mac_myenv_equivalent.sh

用于在 Mac 上创建一个尽量贴近 Windows myenv 的虚拟环境。

运行方式:

cd Unbias_Propel
bash setup_mac_myenv_equivalent.sh

当前工程定位

这个仓库现在是一个研究工作台,不是单任务脚本目录。

它包含:

  • 共享低雷诺数物理求解器
  • 多个并行 RL primitive
  • 环境、奖励、日志、可视化的持续迭代版本

后续继续扩展时,建议保持这种结构:

  • Propel
  • Turn
  • 未来还可以有:
    • Steer
    • Track_Path
    • Primitive_Composer

这样整个工程会越来越清晰。

About

RL research workspace for flagella_reorient refactor

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors