基于强化学习的机器人导航。本项目Fork自EpMineEnv.
我们设计了一个包含辅助任务的强化学习导航框架,使用PPO算法训练模型,完成点目标视觉导航。具体请参考实验报告。
微软WSL2官方文档
Docker文档
注意在WSL2内安装Docker而不是在Windows上安装Docker Desktop。
cd /path/to/this/repo
docker build -t rl_nav:latest .GUI的部分参考了WSLg的文档
docker compose up -d之后可以Attach到容器中。
conda create -n mine_env python=3.8 -y && \
conda activate mine_env && \
pip install setuptools==65.5.0 pip==21 && \
pip install wheel==0.38.0 && \
pip install mlagents-envs opencv-python==4.5.5.64 && \
pip install stable-baselines3==1.5.0 gym torch accelerate && \
pip install protobuf~=3.20 tensorboard ipykernel pynput参考原项目仿真环境下载部分。
让drl可执行文件(drl.x86_64或drl.exe)在EpMineEnv-main/envs/SingleAgent/MineField/目录下。(例如,在Windows下修改下载的MineField_Windows-0510-random文件夹名称为MineField,并移动到EpMineEnv-main/envs/SingleAgent/)
给出训练好的checkpoint文件,从OneDrive下载(42MB)
可以通过训练脚本中的model.set_parameters()方法,或评估脚本中--model-path参数,传入checkpoint路径。
该checkpoint的测试结果为:
Deterministic Action:
Mean reward: 11.51 +/- 2.38
Mean episode length: 47.39 +/- 92.33
Success rate: 0.96
Non-deterministic Action:
Mean reward: 11.71 +/- 2.07
Mean episode length: 44.18 +/- 64.36
Success rate: 0.99注意,由于Unity环境的随机性,测试结果可能会有所不同。
demo.mp4
在训练前,先调整n_envs参数,设置训练的环境数量。由于给定的环境存在问题,训练固定种子仍然存在随机性。
默认的训练参数应该得到与Baseline_with_pose类似的结果。
cd EpMineEnv-main
python train_ppo_simple.py在评估前,前往EpMineEnv-main/models/nav_policy.py中,修改约222行的:
# pose_projection = self.pose_projection(pose.detach() / 3) # (batch_size, hidden_dim), avoid gradient
pose_projection = self.pose_projection(x["state"][:, -1, :].float() / 3) # use real pose and normalize将第一行取消注释,第二行注释,以确保评估时使用训练得到的pose。
使用evaluate.py脚本评估训练好的模型,需要指定模型路径。
cd EpMineEnv-main
python evaluate.py --model-path /path/to/your/checkpoint.zip