turtlebot强化学习导航(⽆需安装gym)
之前写过⼀篇博客:,这篇博客详细介绍了如何在ubuntu 16.04环境下安装gym-gazebo,从⽽对turtlebot进⾏强化学习导航。由于其中ros中python是2.7版本的,⽽安装gym-gazebo需要安装gym包,它是python3版本的,两个python版本不⼀致,所以安装起来⽐较复杂,具体参加我的那篇博客。
最近,我发现了⼀个软件包,其可以避免安装gym,从⽽可以不⽤python3,这样就可以全程使⽤python2.7来进⾏强化学习了,不⽤担⼼python版本兼容问题了,安装过程我主要参考了这篇博客:,整个安装过程⾮常简单。
接下来,我来讲解⼀下具体的安装步骤,⾸先假设你已经安装好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 le/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版本也需要匹配,版本对应关系参考:)
conda install cudatoolkit==9.0
conda install cudnn==7.1.2
下载编译源码包
接下来下载并编译源码包(下载源码包可能⽐较慢,慢的话就⽤我给的gitee上的4个链接代替):
mkdir -p catkin_ws/src
cd ~/catkin_ws/src/
git clone github/ROBOTIS-GIT/turtlebot3_msgs.git
git clone github/ROBOTIS-GIT/turtlebot3.git
git clone github/ROBOTIS-GIT/turtlebot3_simulations.git
git clone github/ROBOTIS-GIT/turtlebot3_machine_learning.git
#上⾯的4个git clone⽐较慢,可以⽤下⾯的4个代替
#git clone gitee/zthcool/turtlebot3_msgs.git
#git clone gitee/zthcool/turtlebot3.git
#git clone gitee/zthcool/turtlebot3_simulations.git
#git clone gitee/oliver_zxh/turtlebot3_machine_learning.git
cd ~/catkin_ws && catkin_make
然后在.bashrc⽂件中添加:
source /home/zpp/catkin_ws/devel/setup.bash
export TURTLEBOT3_MODEL=burgertensorflow版本选择
设置参数并运⾏
设置参数:
打开源码⽂件 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
问题及解决办法
在参考原博客安装的过程中,遇到了⼀些问题,在此记录⼀下,按照我上⾯的教程应该不会遇到问题了。
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 de 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