本文介绍了基于强化学习的turtlebot3自主导航的仿真环境搭建过程,包括ROS Noetic,openai_ros的安装,以及创建自己的强化学习任务环境。
最终效果如下所示:

操作系统:Ubuntu 20.04 LTS
ROS版本:Noetic
Python版本:3.8
目录
5. 将openai_ros和turtlebot3包一起编译。
ROS的安装
ros安装参考官方wiki。
因为以前版本的ros存在与python3不兼容的问题,故博主使用的ros为较新的Noetic版本(该版本推荐在ubuntu 20.04上安装)。
1. 设置source.list
打开终端,输入以下指令设置source.list
sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
如下载过慢,可使用官方提供的源列表中寻找可用的国内源,如清华源的指令如下:
sudo sh -c '. /etc/lsb-release && echo "deb http://mirrors.tuna.tsinghua.edu.cn/ros/ubuntu/ `lsb_release -cs` main" > /etc/apt/sources.list.d/ros-latest.list'
2. 设置密钥
终端输入以下指令:
sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
3. 开始安装
安装前更新apt:
sudo apt update
这里建议安装完整的ros桌面版(此过程耗时较长)。如欲安装其他版本,可将noetic替换成对应版本名称:
sudo apt install ros-noetic-desktop-full
4. 添加环境变量
建议将环境设置添加到.bashrc中,这样每次打开终端都会自动加载ros环境。指令如下:
echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc
source ~/.bashrc
5. 安装其他依赖
这里只安装官方列举的包:
sudo apt install python3-rosdep python3-rosinstall python3-rosinstall-generator python3-wstool build-essential
6. 更新rosdep
终端输入依次如下指令:
sudo rosdep init
rosdep update
没有科学上网的话可能因为网络问题会卡在这一步,这里给出实测可用的解决方法。
7. 测试是否安装成功
打开终端,输入如下指令启动ros服务:
roscore
另开一新终端, 输入如下指令:
rosrun turtlesim turtlesim_node
若均无报错,且弹出有一个小乌龟的图形界面,则安装成功。
OpenAI ROS的使用
这部分同样参考官方wiki。
1. 创建catkin工作空间
先创建catkin工作空间,依次输入如下指令。
mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/src
catkin_init_workspace
2. 下载openai_ros
终端输入如下指令,git下载openai_ros包:
cd ~/catkin_ws/src
git clone https://bitbucket.org/theconstructcore/openai_ros.git
cd openai_ros
git checkout version2
这里同样将source ~/catkin_ws/devel/setup.bash放入.bashrc文件,以便每次打开终端都自动加载该环境变量。
3. 下载turtlebot3任务测试代码
先将官方提供的全部例子git到其他文件夹,下载完别忘了使用git checkout version2调整到和安装的openai_ros相同的分支version2。
git clone https://bitbucket.org/theconstructcore/openai_examples_projects.git
cd openai_examples_projects
git checkout version2
将其中的my_turtlebot3_openai_example文件夹拷贝到catkin_ws/src目录下,等下一步的包安装完后一同编译。如需测试其他机器人任务,则拷贝相应的example文件夹。
4. 下载支持openai_ros的turtlebot3包
这里注意下载的turtlebot3包一定是从openai_ros作者提供的turtlebot3的包,否则会缺少相应的如put_robot_in_world.launch等文件。
cd ~/catkin_ws/src
git clone https://bitbucket.org/theconstructcore/turtlebot3.git
cd turtlebot3
git checkout noetic
下载完同样要注意调整git分支。
5. 将openai_ros和turtlebot3包一起编译。
catkin工作包在使用前都需要使用catkin_make进行编译:
cd ~/catkin_ws
catkin_make
echo "source ~/catkin_ws/devel/setup.bash" >> ~/.bashrc
source ~/.bashrc
进行catkin_make编译过程中一定会报错,因为缺少安装相应的包,请按照报错提示安装相应的包。
如提示缺少xxxConfig.cmake 及 xxx-config.cmake时,需要运行以下指令(替换其中的xxx)安装相应包:
sudo apt install ros-noetic-xxx
最后两行是将source ~/catkin_ws/devel/setup.bash指令添加到.bashrc文件中,以便每次打开终端都会载入catkin工作环境。
6. 测试
在终端运行如下指令
roslaunch my_turtlebot3_openai_example start_training_v2.launch
如提示缺少python包,安装相应的包就可以。
注意my_trutlebot3_openai_example包下start_training_v2.launch文件中引用了config/my_turtlebot3_openai_qlearn_params_v2.yaml配置文件,需要将该配置文件的第3行的ros_ws_abspath修改为你的catkin包的路径。
如安装无问题,则会弹出gazebo软件界面,其中有一个turtlebot3提供的默认地图,以及turtlebot3 burger机器人。
自定义任务环境
自定义任务环境需要了解gym的结构,这里不在赘述。
在参考openai_ros的代码时,需要注意官方给的注释有一部分是错的
1. Openai_ros 包的结构
自定义任务环境需要搞清楚openai_ros包的结构。
下载的openai_ros源码位于src/openai_ros目录下,自定义任务环境就是重写一个与src/openai_ros/task_envs目录下相似的环境类。以turtlebot3为例,官方示例代码中使用的环境定义在src/openai_ros/task_envs/turtlebot3/turtlebot3_world.py中。类继承关系如下:
gym.Env(gym 环境基类)
→ openai_ros.robot_gazebo_env.RobotGazeboEnv
(定义了reset和step操作,完成gazebo的交互)
→ openai_ros.robot_envs.turtlebot3_env.Turtlebot3Env
(加载机器人,完成机器人传感器初始化相关处理)
→ openai_ros.task_envs.turtlebot3.turtlebot3_world
(加载地图,定义训练任务,包括状态空间、动作空间、奖励值等)
在定义好环境类后,需要在src/openai_ros/task_envs/task_envs_list.py文件中,将自定义的环境注册到gym中。简单理解就是给你定义的环境命名,可以通过openai_ros.openai_ros_common.StartOpenAI_ROS_Environment函数得到自定义的环境。
2. 定义环境地图
我们可以先将turtlebot3_world复制一份,然后对内容进行修改。
地图主要是修改26行中,ROSLauncher里面的ros包和.launch文件。
制作ros包的过程可以自行百度;.launch文件可以参照原来的文件,修改其中的.world路径。
.world文件可以用gazebo制作,终端运行roscore打开ros服务,然后另开终端输入gazebo
roscore
# 打开新终端
gazebo
具体制作地图方式可以在网上找一下,比较简单。
3. 定义机器人观测,机器人动作,奖励函数
观测在_get_obs()函数中修改,
动作在_set_action()函数中修改,
奖励函数为_compute_reward()
本文详述了如何在Ubuntu 20.04上安装ROS Noetic,并结合OpenAI_ROS创建Turtlebot3的强化学习仿真环境,包括设置源、安装ROS、创建catkin工作空间、下载相关包及自定义任务环境的步骤。
4372

被折叠的 条评论
为什么被折叠?



