基于Turtlebot3机器人进行一些仿真学习,主要是针对DRL方向,基于开源项目进行。
Turtlebot3安装
- 
在此已经默认已经安装好了ROS等相关内容,只需要安装Turtlebot3的相关依赖 sudo apt install ros-melodic-desktop-full ros-melodic-joy ros-melodic-teleop-twist-joy ros-melodic-teleop-twist-keyboard ros-melodic-laser-proc ros-melodic-rgbd-launch ros-melodic-depthimage-to-laserscan ros-melodic-rosserial-arduino ros-melodic-rosserial-python ros-melodic-rosserial-server ros-melodic-rosserial-client ros-melodic-rosserial-msgs ros-melodic-amcl ros-melodic-map-server ros-melodic-move-base ros-melodic-urdf ros-melodic-xacro ros-melodic-compressed-image-transport ros-melodic-rqt-image-view ros-melodic-gmapping ros-melodic-navigation ros-melodic-interactive-markers ros-melodic-turtlebot3-gazebo
- 
创建需要的工作空间,此处命名为catkin_ws mkdir -p catkin_ws/src cd ~/catkin_ws/src/ # 克隆相关的包 git clone https://github.com/ROBOTIS-GIT/turtlebot3.git git clone https://github.com/ROBOTIS-GIT/turtlebot3_msgs.git git clone https://github.com/ROBOTIS-GIT/turtlebot3_simulations.git cd ~/catkin_ws # 编译 catkin_make
- 
设置相关的环境,将setup.bash文件写入.bashrc中,并添加Turtlebot3的模型(提供两种方式供选择) # First sudo gedit .bashrc # 添加和修改内容 source ~/catkin_ws/devel/setup.bash export TURTLEBOT3_MODEL = burger # 关闭.bashrc source .bashrc # Second echo "source ~/catkin_ws/devel/setup.bash" >> ~/.bashrc echo "export TURTLEBOT3_MODEL = burger" >> ~/.bashrc source .bashrc
- 
测试Turtlebot3是否安装成功(仿真测试) - 
启动Gazebo仿真环境 roslaunch turtlebot3_gazebo turtlebot3_world.launch如出现如下错误: 
   
 **解决如下:**在config.yaml文件中将servers下的url修改为https://api.ignitionrobotics.org,注意对齐。修改后保存,重启命令即可成功启动Gazebo。sudo gedit ~/.ignition/fuel/config.yaml  
- 
启动SLAM roslaunch turtlebot3_slam turtlebot3_slam.launch slam_methods:=gmapping
- 
键盘控制 roslaunch turtlebot3_teleop turtlebot3_teleop_key.launch注:如果出现没有**“rospkg”*则运行 pip install rospkg即可。现在可以正常操作机器人进行建图。
- 
地图保存 rosrun map_server map_saver -f ~/map/map_name
- 
导航 关闭以上所有终端,重新启动Gazebo环境,并运行导航节点: roslaunch turtlebot3_navigation turtlebot3_navigation.launch map_file:=~/map/map_name.yaml  可以使用Rviz中的2D POSE Estimate进行初始的位置估计,等到位姿估计准确后,便可以用2D Nav Goal设置目标点的位姿,进行导航功能测试。   此时会根据起始位姿和终点位姿生成一条全局路径,也会在Turtlebot3的周围一定范围内进行局部路径规划,如上图所示。 
 
- 
DRL环境搭建
系统为Ubuntu18.04,采用melodic的ros版本,当前版本支持Python2.7(到ubuntu20.04-neotic就支持Python3),而涉及到强化学习、深度学习部分大都以python3为主,因此要解决ros中关于两个不同版本的使用问题。(目前已采用Ubuntu20.04)
方法一:建立基于python2.7的pytorch环境
- 
首先创建虚拟环境,并完成初始化 conda create -n turtlebot3 python=2.7 conda activate turtlebot3 conda install numpy # 检测python版本 python --version
- 
安装ROS需要的包 pip install catkin-tools pip install rospkg
- 
安装Pytorch,详细参考官网,Python版本比较低,这个Pytorch可以使用 pip install torch==1.4.0+cu92 torchvision==0.5.0+cu92 -f https://download.pytorch.org/whl/torch_stable.html测试Pytorch环境是否成功: # 进入python python torch.cuda.is_available() # 查看返回值 是否为 True 根据错误信息进行补充安装 # 如下错误 根据错误修改即可 pip install future  
Turtlebot3 with DDPG
Code:[Github]
- 
在catkin_ws/src下下载所需要的功能包,并进行重新编译,最后用VScode打开 cd ~/catkin_ws/src/ # 克隆相关的包 git clone https://github.com/dovanhuong/project.git cd ~/catkin_ws # 编译 catkin_make # VScode code .
- 
修改Turtlebot3参数: # 修改turtlebot3/turtlebot3_description/urdf/turtlebot3_burger.gazebo.xacro sudo gedit turtlebot3_burger.gazebo.xacro # 内容修改如下 # 激光雷达可视化 <xacro:arg name="laser_visual" default="false"/> # Visualization of LDS. If you want to see LDS, set to `true` # 采样的数量 <scan> <horizontal> <samples>360</samples> # The number of sample. Modify it to 10 <resolution>1</resolution> <min_angle>0.0</min_angle> <max_angle>6.28319</max_angle> </horizontal> </scan>
- 
指定Python2.7编译运行ddpg_stage_1.py,在该文件开头加入如下代码 #! /usr/bin/env python2.7
- 
启动仿真环境,以stage_1为例 roslaunch project ddpg_stage_{number_of_stage}.launch  ddpg_stage_1 
以上都是训练的过程,训练结果与多方因素相关,需要深入研究代码和DDPG原理,后续根据需要进行修改。
Anaconda技巧
并不是每次都需要虚拟环境的,并且每次激活环境都需要输入对应命令,麻烦不够简单,为此提前在.bashrc中加入相应的alias命令。这样只需要在终端中输入starte即可激活anaconda虚拟环境,输入turtlebot即可进入turtlebot的虚拟环境中。
sudo gedit .bashrc
alias turtlebot='source activate turtlebot'
alias close_env='conda deactivate'
# 需要注释前面关于conda initialize的内容
alias starte='source ~/anaconda3/bin/activate'
 
    
 
           
           
          