移动机器人导航教程中的深度强化学习 — 第 1 部分:安装
长期以来,人们一直认为深度强化学习(DRL)能够解决各个领域的各种任务。它有一个相当令人印象深刻的简历,从保持钟摆直立到能够直接从图像输入玩视频游戏。经验法则是——如果它有一个状态、一个动作和一种方法来决定如何奖励这对,我们就可以了解摆在我们面前的任何问题。当然,这包括机器人运动。或者专门针对我们这里的案例——轮式移动地面机器人运动(模拟中)。我想我们都可以承认,给定传感器数据,机器人应该能够学习如何确定下一步行动。数学就在那里(在这里不会详细介绍,但这里使用的 DRL 方法的一些很好的概述可以在 openai 网站上找到这里),开发工具在那里,但是实现呢?嗯,这正是我们在这里要研究的内容——实现双延迟深度确定性策略梯度 (TD3) 架构,用于在 python 中使用 Pytorch 和 ROS Noetic 学习移动机器人运动。
作为本教程的基础,我将使用 GitHub 存储库:https://github.com/reiniscimurs/DRL-robot-navigation
为了简化教程描述,我将假设您对开发此存储库中使用的软件有一定的了解,例如:
- Ubuntu 20.04
- Python 3.8.10
- Pytorch 1.10
- ROS Noetic
- Tensorboard
这些是安装此存储库的主要依赖项。
假设所有这些都已设置好,我们可以克隆并安装我们的存储库。首先,打开一个终端并导航到要克隆存储库的文件夹。(在此处以及代码中的其他位置,将<PATH_TO_FOLDER>替换为文件夹的绝对路径)
cd <PATH_TO_FOLDER>
克隆存储库:
git clone https://github.com/reiniscimurs/DRL-robot-navigation
存储库需要编译。为此,请导航到以下文件夹并编译:
cd ~<PATH_TO_FOLDER>/DRL-robot-navigation/catkin_ws
catkin_make_isolated
要在 ROS 中运行神经网络训练,首先需要导出和获取一些变量。这可以通过在终端中执行以下行来完成
export ROS_HOSTNAME=localhost
export ROS_MASTER_URI=http://localhost:11311
export ROS_PORT_SIM=11311
export GAZEBO_RESOURCE_PATH=~<PATH_TO_FOLDER>/DRL-robot-navigation/catkin_ws/src/multi_robot_scenario/launch
source ~/.bashrc
cd ~<PATH_TO_FOLDER>/DRL-robot-navigation/catkin_ws
source devel_isolated/setup.bash
( 注意:这些命令在终端中设置源。请记住在每次打开新的终端窗口时运行它们。)
这应该足以安装和获取存储库,以便能够运行神经网络训练。您可以通过导航到相应的文件夹并通过在终端中执行以下命令来运行train_velodyne_TD3.py文件来开始训练:
cd ~<PATH_TO_FOLDER>/DRL-robot-navigation/TD3
python3 train_velodyne_td3.py
在训练运行时,您可以看到 tensorboard 可视化打开新终端并执行的进度:
cd ~<PATH_TO_FOLDER>/DRL-robot-navigation/TD3
tensorboard --logdir runs
终端将输出类似于下图的内容

复制http://localhost:6006/(或等效项)并将其粘贴到您选择的浏览器中以查看张量板输出。或者,您可以按住 CTRL 并简单地单击http://localhost:6006/,页面将自动打开。
若要在训练完成之前停止训练,只需在开始训练的终端中按 CTRL+c。但是,这不会停止所有后台进程。要停止在后台运行的进程,请打开一个新终端并执行:
killall -9 rosout roslaunch rosmaster gzserver nodelet robot_state_publisher gzclient python python3
训练完成后,可以通过执行测试脚本来测试经过训练的神经网络:
cd ~<PATH_TO_FOLDER>/DRL-robot-navigation/TD3
python3 test_velodyne_td3.py
这应该足以在 ROS 仿真中运行和测试神经网络训练。但是,对于全新安装,可能需要注意以下几点:
1.缺少的包
在本教程中,我只提到了主要的依赖项,但如果系统中还没有其他包,则可能需要单独安装它们(numpy、collections、squaternion 等)。如果训练未运行,请检查终端日志中是否缺少包。显示的消息将类似于:
ModuleNotFoundError: No module named '<MISSING_PACKAGE>'
要修复此错误,只需安装软件包:
sudo apt update
pip3 install <MISSING_PACKAGE>
(快速说明,包名称并不总是与日志输出中显示的名称相同。如果 pip 找不到这样的包,请查看它是否在 pip 中没有使用不同的名称。在这里,你可以通过谷歌搜索轻松找到正确的软件包名称 “ModuleNotFoundError: No module named ‘<MISSING_PACKAGE>’”)
2. 训练开始了,但什么也没发生。
碰巧的是,ROS 模拟环境使用的 3D 模型尚未随 ROS 安装一起下载。这意味着,它们将在第一次需要它们时下载,就像第一次运行训练时一样。在这种情况下,您可能只需要等待一段时间,直到 ROS 在后台完成下载它们。
在第 2 部分中,我们将详细了解 TD3 网络代码。
更多推荐



所有评论(0)