移动机器人导航中的深度强化学习教程 — 第 5 部分:补充说明

在本系列文章中,我旨在介绍存储库的 python 代码部分,解释代码,并提供一些见解,以便其他人更容易使用、更改、重构、重新利用或忽略它。主要是,我想回顾一下 TD3 神经网络的代码实现以及它如何连接到 Gazebo 模拟器。我觉得前面的4个部分应该足够了。但是,还有一些其他额外的信息,可能有助于更好地使用存储库。

提高仿真速度

神经网络训练的执行方式遵循以下步骤:

Collect motion samples -> Train policy on samples -> Update Policy

训练和更新速度将取决于硬件的功能,但一般来说,它不应该超过一秒钟。但是在模拟中收集样本呢?每个步骤都以 0.1 秒的速率传播,在我们的实现中最多可以有 500 个步骤(使用默认参数)。这意味着一集可以播放超过 50 秒。很明显,为了加快整个训练过程,加快这部分会带来最大的好处。Gazebo 模拟器天生不支持比实时更快地运行模拟,但有一种方法可以“超频”它。

可以通过更改坐标动画文件中的<real_time_update_rate>值来加快模拟速度。在我们的存储库中,您将在以下目录中找到 world 文件:

DRL-robot-navigation/catkin_ws/src/multi_robot_scenario/launch

(默认)坐标文件为:

TD3.world

在这里,您可以在文件的 physics部分找到<real_time_update_rate>:

    <physics name='default_physics' default='0' type='ode'>
      <max_step_size>0.001</max_step_size>
      <real_time_factor>1</real_time_factor>
      <real_time_update_rate>1000</real_time_update_rate>
    </physics>

更新速率以毫秒为单位,默认情况下,在模拟中实时执行 1 秒为 1000 毫秒。我们可以增加这个数字以更快地执行模拟。例如,(通过将其更改为 2000)在模拟中,实时 1 秒将执行为 2000 毫秒。

注意:使用此方法可自行决定。使用过高的频率通常会导致仿真出现问题,因为传感器和其他插件无法跟上它。因此,请尝试一下,看看哪些频率不会在您的实现中导致问题。

启动 Gazebo 模拟器可视化

如果安装成功,您应该能够启动训练并看到 Rviz 窗口自动弹出。但是,您会注意到 Gazebo 模拟器无法打开。Gazebo 模拟器会消耗大量 GPU 资源,并且(取决于您的机器有多强大)甚至可能使模拟崩溃。因此,默认情况下,模拟器 GUI 不会启动。Rviz 通常足以评估训练进度,但如果您想启动 Gazebo 模拟器 GUI,有 2 种方法可以做到这一点。

1 在运行时运行:

像往常一样启动训练。如前所述,这只会启动 Rviz。然后打开一个新终端,并执行以下命令:

gzclient

这将打开当前正在运行的 Gazebo 模拟的 GUI

2 开始训练时启动 GUI

您可以在启动训练时通过更改默认行为自动启动 Gazebo GUI。打开目录中的文件 empty_world.launch:

DRL-robot-navigation/catkin_ws/src/multi_robot_scenario/launch

并更改行:

  <arg name="gui" default="false"/>

变成:

  <arg name="gui" default="true"/>

更改Velodyne传感器设置

正如您现在已经注意到的,我们使用模拟的Velodyne Puck 16通道LiDAR来记录机器人周围的环境。我们的基本实现假设激光传感器在机器人前面只有一个 180 度的 FOV。这意味着机器人只能向前移动,因为它看不到自己身后的任何东西。如果需要机器人后面的视图,则应更改默认的Velodyne传感器设置。Velodyne Puck的配置文件,您可以在这里找到:

DRL-robot-navigation/catkin_ws/src/velodyne_simulator/velodyne_description/urdf

可更改的参数可以在 VLP-16.urdf.xacro 文件的顶部找到:

  <xacro:macro name="VLP-16" params="*origin 
  parent:=base_link 
  name:=velodyne 
  topic:=/velodyne_points 
  hz:=10 
  lasers:=16 
  samples:=1875 
  collision_range:=0.3 
  min_range:=0.9 
  max_range:=130.0 
  noise:=0.008 
  min_angle:=-${M_PI} 
  max_angle:=${M_PI} 
  gpu:=false">

当我们在机器人设置中调用插件时,我们会设置这些参数。机器人插件设置可用于:

DRL-robot-navigation/catkin_ws/src/multi_robot_scenario/xacro/p3dx

在文件中:

pioneer3dx.xacro

参数在Velodyne部分设置:

  <!-- Velodyne -->
  <xacro:include filename="$(find velodyne_description)/urdf/VLP-16.urdf.xacro"/>
  <xacro:VLP-16 parent="base_link" 
                name="velodyne" 
                topic="/velodyne_points" 
                hz="10" 
                samples="360" 
                gpu="false" 
                min_angle="-1.57" 
                max_angle="1.57" 
                min_range="0.1">
    <origin xyz="0.125 0 0.25" rpy="0 0 0" />
  </xacro:VLP-16>

在这里,我们可以设置要接收的样本数量、观察频率以及 FOV(除其他外)。FOV设置在从最小值到最大值的范围内,相对于机器人的航向从左到右(如果不更改原点中的“rpy”值)。这些值以弧度为单位设置。

另一件需要注意的事情是我们可以设置原点。这将指定传感器在机器人上的位置,并相对于机器人的原点以米为单位进行描述。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
深度强化学习在各个领域都有广泛的应用,以下是一些常见的实例: 1. 游戏智能:深度强化学习在游戏智能领域应用广泛,例如 AlphaGo、AlphaZero、OpenAI Five 等。这些模型通过学习最优的决策策略,在围棋、象棋、扑克、星际争霸等游戏击败了人类顶尖选手。 2. 机器人控制:深度强化学习可以帮助机器人学习如何在复杂环境移动、抓取、操作等,例如 OpenAI 的 Dactyl 机器人和 Boston Dynamics 的 Atlas 机器人。这些机器人可以通过深度强化学习学习到最优的控制策略,以完成各种任务。 3. 自动驾驶深度强化学习可以帮助自动驾驶汽车学习如何在复杂的交通环境安全地行驶。例如,DeepDrive 是一个基于深度强化学习自动驾驶系统,它可以在虚拟的城市环境学习到最优的驾驶策略。 4. 语音识别:深度强化学习可以帮助语音识别系统学习如何更准确地识别语音信号。例如,Google 的 WaveNet 模型使用深度强化学习来学习如何生成更自然的语音合成。 5. 金融交易:深度强化学习可以帮助金融交易系统学习如何制定最优的交易策略。例如,DeepMind 和大华银行合作开发了一个基于深度强化学习的股票交易系统,可以在股票市场上实现较好的收益率。 总之,深度强化学习在各个领域都有广泛的应用,可以帮助机器学习如何在复杂环境做出最优的决策策略。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值