turtlebot强化学习导航(无需安装gym)

之前写过一篇博客:详解ubuntu 16.04安装gym-gazebo,这篇博客详细介绍了如何在ubuntu 16.04环境下安装gym-gazebo,从而对turtlebot进行强化学习导航。由于其中ros中python是2.7版本的,而安装gym-gazebo需要安装gym包,它是python3版本的,两个python版本不一致,所以安装起来比较复杂,具体参加我的那篇博客。

最近,我发现了一个软件包,其可以避免安装gym,从而可以不用python3,这样就可以全程使用python2.7来进行强化学习了,不用担心python版本兼容问题了,安装过程我主要参考了这篇博客: ROS开发笔记(8)——Turtlebot3 Gazebo仿真环境下深度强化学习DQN(Deep Q-Learning)开发环境构建,整个安装过程非常简单。

接下来,我来讲解一下具体的安装步骤,首先假设你已经安装好ROS(kinetic版本)、gazebo(7版本)以及anoconda(2和3都可以)。备注:我是在用的anoconda3.

软件安装

首先,利用anoconda创建虚拟环境 tensorflow

conda create -n tensorflow pip python=2.7

接着激活虚拟环境

conda activate tensorflow

在虚拟环境中相继安装ROS包、tensorflow、keras和画图工具包(注意,都在conda虚拟环境中安装),这里我安装的tensorflow是gpu版本,注意tensorflow需要和keras版本相匹配。

pip install -U rosinstall msgpack empy defusedxml netifaces
 
pip install --ignore-installed --upgrade https://download.tensorflow.google.cn/linux/gpu/tensorflow_gpu-1.8.0-cp27-none-linux_x86_64.whl
 
pip install keras==2.1.6

pip install pyqtgraph

conda install pyqt

接下来安装cuda和cudnn(注意cuda和cudnn版本也需要匹配,版本对应关系参考:tensorflow各个版本的CUDA以及Cudnn版本对应关系)

conda install cudatoolkit==9.0
conda install cudnn==7.1.2

下载编译源码包

接下来下载并编译源码包(下载源码包可能比较慢,慢的话就用我给的gitee上的4个链接代替):

mkdir -p catkin_ws/src
cd ~/catkin_ws/src/

git clone https://github.com/ROBOTIS-GIT/turtlebot3_msgs.git
git clone https://github.com/ROBOTIS-GIT/turtlebot3.git
git clone https://github.com/ROBOTIS-GIT/turtlebot3_simulations.git
git clone https://github.com/ROBOTIS-GIT/turtlebot3_machine_learning.git

#上面的4个git clone比较慢,可以用下面的4个代替
#git clone https://gitee.com/zthcool/turtlebot3_msgs.git
#git clone https://gitee.com/zthcool/turtlebot3.git
#git clone https://gitee.com/zthcool/turtlebot3_simulations.git
#git clone https://gitee.com/oliver_zxh/turtlebot3_machine_learning.git
 
cd ~/catkin_ws && catkin_make

然后在.bashrc文件中添加:

source /home/zpp/catkin_ws/devel/setup.bash
export TURTLEBOT3_MODEL=burger

设置参数并运行

设置参数:

打开源码文件 turtlebot3/turtlebot3_description/urdf/turtlebot3_burger.gazebo.xacro,修改一下两处:

<xacro:arg name="laser_visual" default="false"/>   # 如果想看到激光扫描线,设置成 'true'
<scan>
  <horizontal>
    <samples>360</samples>            # 修改成24
    <resolution>1</resolution>
    <min_angle>0.0</min_angle>
    <max_angle>6.28319</max_angle>
  </horizontal>
</scan>

运行程序:

打开一个终端执行如下命令开启仿真环境:

roslaunch turtlebot3_gazebo turtlebot3_stage_1.launch

再打开一个终端执行如下命令启动强化学习节点:

conda activate tensorflow
 
roslaunch turtlebot3_dqn turtlebot3_dqn_stage_1.launch

再打开第3个终端并执行如下命令进行数据图形显示:

conda activate tensorflow
 
roslaunch turtlebot3_dqn result_graph.launch

问题及解决办法

在参考原博客ROS开发笔记(8)——Turtlebot3 Gazebo仿真环境下深度强化学习DQN(Deep Q-Learning)开发环境构建安装的过程中,遇到了一些问题,在此记录一下,按照我上面的教程应该不会遇到问题了。

Q1:运行roslaunch turtlebot3_gazebo turtlebot3_stage_1.launch时出现以下错误:

Invalid <arg> tag: environment variable 'TURTLEBOT3_MODEL' is not set.

A1:在.bashrc文件最后添加:

export TURTLEBOT3_MODEL=burger

Q2:运行roslaunch turtlebot3_dqn turtlebot3_dqn_stage_1.launch时出现以下错误:

ImportError: libcublas.so.9.0: cannot open shared object file: No such file or directory Failed to load the native TensorFlow runtime

A2:原因是没有安装cuda,在conda虚拟环境中安装cuda和cudnn

conda install cudatoolkit==9.0
conda install cudnn==7.1.2

Q3:运行roslaunch turtlebot3_dqn turtlebot3_dqn_stage_1.launch时出现以下错误:

rospy.service.ServiceException: transport error completing service call: receive_once[/controller_manager/load_controller]: DeserializationError cannot deserialize: unknown error handler name 'rosmsg

A3:在普通环境(不是conda虚拟环境)下执行

sudo apt-get install ros-kinetic-rosmsg 
sudo apt-get install ros-kinetic-genpy

Q4:运行roslaunch turtlebot3_dqn result_graph.launch时出现以下错误:

ModuleNotFoundError: No module named 'PyQt5.QtWidgets'

A4:在conda虚拟环境下执行

conda install pyqt

 

  • 2
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值