首先明确的是Gym和Gym_gazebo是python的功能包。使用ROS+Gazebo的仿真去实现RL的仿真环境训练。直观的显示RL的过程。
总结这一套环境的配置过程和注意事项
1、install ROS kinetic(ubuntu16.04)
refer to ROS wiki
https://www.ncnynl.com/archives/201801/2273.html
(可以依照连接上的安装,以full的形式安装,这样ROS+Gazebo就可以直接安装成功,
当然你也可以先安装ROS,再源码去安装Gazebo,相关内容可以去本人博客的Gazebo标签中去找)
开始安装Gym前,注意该安装是基于Gazebo7的相关版本,python2.7+pip(你可以改成python3.5+pip3,只需要将下面的pip改成pip3,但是要注意之间的对应关系,另外根据官网上的安装是基于Gazebo8版本的,也对应于不同ubuntu版本的系统,版本对应不上,可能会出现各种的错误)
2、install Gym
- sudo apt-get install -y python-numpy python-dev cmake zlib1g-dev libjpeg-dev xvfb libav-tools xorg-dev python-opengl libboost-all-dev libsdl2-dev swig
- sudo pip install gym
3、install Gym-Gazebo
- sudo pip install rospkg catkin_pkg
- sudo apt-get install pyqt4-dev-tools
- sudo apt-get install ros-kinetic-ar-track-alvar-msgs
- sudo apt-get install libspnav-dev libbluetooth-dev libcwiid-dev python-skimage
- sudo apt-get install qt4-qmake libqt4-dev libusb-dev libftdi-dev python-defusedxml python-vcstool ros-kinetic-octomap-msgs ros-kinetic-joy ros-kinetic-geodesy ros-kinetic-octomap-ros ros-kinetic-control-toolbox ros-kinetic-pluginlib ros-kinetic-trajectory-msgs ros-kinetic-control-msgs ros-kinetic-std-srvs ros-kinetic-nodelet ros-kinetic-urdf ros-kinetic-rviz ros-kinetic-kdl-conversions ros-kinetic-eigen-conversions ros-kinetic-tf2-sensor-msgs ros-kinetic-pcl-ros ros-kinetic-navigation ros-kinetic-turtlebot*
4、源码安装sophus
- git clone https://github.com/stonier/sophus -b release/0.9.1-kinetic
- cd sophus
- mkdir build
- cd build
- cmake ..
- make
- sudo make install
5、源码安装gym-gazebo包
- git clone https://github.com/erlerobot/gym-gazebo
- cd gym-gazebo
- sudo pip install -e .
6、Modify source code:
Correct ecl packages version:
Edit file “gym-gazebo/gym_gazebo/envs/installation/gezabo.repos”
and correct the version field of 3 packages “ecl_core”, “ecl_lite” and “ecl_tools” to “release/0.61-indigo-kinetic”
在 gazebo.repos文件 在其中加入:
ar_track_alvar:
type: git
url: https://github.com/ros-perception/ar_track_alvar.git
version: kinetic-devel
mav_comm:
type: git
url: https://github.com/ethz-asl/mav_comm.git
version: master
7、创建gym-gazebo下面的catkin_ws
- cd gym-gazebo/gym_gazebo/envs/installation
- bash setup_kinetic.bash
- bash turtlebot_setup.bash
- bash turtlebot_nn_setup.bash
8、Correct “kobuki.launch.xml” file:
Edit file “gym-gazebo/gym_gazebo/envs/installation/catkin_ws/src/turtlebot_simulator/turtlebot_gazebo/launch/includes/kobuki.launch.xml” and correct line 6 to(这里是加载xacro文件的两种方式,原来的--inorder也是对的,只是新旧版本的要求)
“<arg name="urdf_file" default="$(find xacro)/xacro.py '$(find turtlebot_description)/robots/$(arg base)_$(arg stacks)_$(arg 3d_sensor).urdf.xacro'"/>”
9、Killing background processes:
echo "alias killgazebogym='killall -9 rosout roslaunch rosmaster gzserver nodelet robot_state_publisher gzclient'" >> ~/.bashrc
10、Test gym-gezabo:
- cd gym-gazebo/gym-gazebo/examples/turtlebot
- export ROS_PORT_SIM=11311
- python circuit2_turtlebot_lidar_qlearn.py
11、Open ANOTHER terminal to display simulation:
- gzclient
12、Open ANOTHER terminal to display reward plot:
- cd examples/utilities
- python display_plot.py
Other problems
- 运行出现 kinetic/share/hector_pose_estimation/hector_pose_estimation_nodelets.xml
Solution: sudo gedit /opt/ros/kinetic/share/hector_pose_estimation/hector_pose_estimation_nodelets.xml
<library path="lib/libhector_pose_estimation_nodelet">
<class name="hector_pose_estimation/PoseEstimationNodelet" type="hector_pose_estimation::PoseEstimationNodelet" base_class_type="nodelet::Nodelet">
<description> This nodelet initializes the pose estimation filter with a generic system model driven by IMU measurements only.
</description>
</class>
</library>
- Correct circuit2_turtlebot_lidar_qlearn.py
from gym import wrappers
- Correct display_plot.py
from gym.wrappers import monitor
results = monitor.load_results(self.outdir)