基于OpenAI gym的Sawyer机器人环境
项目描述
gym-sawyer
使用OpenAI Gym接口的Sawyer强化学习环境,以及带有ROS的Dockerfile,用于与真实机器人或Gazebo中的仿真机器人进行通信。
此仓库处于开发中,因此所有代码仍然是实验性的。
Docker容器
Sawyer仿真
我们使用Gazebo来仿真Sawyer,因此需要一个专用GPU(查看系统要求)。目前仅支持NVIDIA GPU。
NVIDIA GPU
本节包含使用NVIDIA GPU在ROS环境中构建docker镜像和运行docker容器以仿真Sawyer的指令。
先决条件
- 安装Docker CE
- 安装Docker Compose
- 安装最新的NVIDIA驱动程序,已在nvidia-390上进行测试
- 安装nvidia-docker2
- 在您的本地工作区中克隆此仓库
已在Ubuntu 16.04上测试
指令
- 在克隆仓库的根目录下运行以下命令构建镜像:
$ make build-nvidia-sawyer-sim
- 镜像构建完成后,运行容器:
$ make run-nvidia-sawyer-sim
-
应使用Sawyer启动Gazebo和MoveIt!
-
要退出容器,请在新的终端中输入
sudo docker stop sawyer-sim
。
控制Sim Sawyer
- 通过运行以下命令在容器中打开一个新的终端:
$ docker exec -it sawyer-sim bash
- 一旦进入终端,运行以下命令以执行键盘控制器:
$ cd ~/ros_ws
$ ./intera.sh sim
$ rosrun intera_examples joint_position_keyboard.py
- 应出现以下消息:
Initializing node...
Getting robot state...
[INFO] [1544554222.728405, 33.526000]: Enabling robot...
[INFO] [1544554222.729527, 33.527000]: Robot Enabled
Controlling joints. Press ? for help, Esc to quit.
- 输入?以获取控制Sawyer的键。
在Sim Sawyer中查看头戴摄像头
- 执行上一节的第一步
- 一旦进入容器shell,运行以下命令:
rosrun image_view image_view image:=/io/internal_camera/head_camera/image_raw
Sawyer机器人
建议为rviz和其他可视化工具使用专用GPU。目前仅支持NVIDIA GPU。
NVIDIA GPU
本节包含使用NVIDIA GPU在ROS环境中构建docker镜像和运行Sawyer机器人的docker容器的说明。
先决条件
- 与Sawyer模拟相同。
指令
- 导出Sawyer主机名、Sawyer IP地址和工作站IP地址。
$ export SAWYER_HOSTNAME=__sawyerhostname__
$ export SAWYER_IP=__sawyerip__
$ export WORKSTATION_IP=__workip__
- 在克隆仓库的根目录下运行以下命令构建镜像:
$ make build-nvidia-sawyer-robot
- 镜像构建完成后,运行容器:
$ make run-nvidia-sawyer-robot
-
Rviz应包含Sawyer。现在您可以通过rviz计划和执行轨迹。
-
要退出容器,请在新的终端中输入
sudo docker stop sawyer-robot
。
Garage-ROS-Intera
为了与Sawyer机器人一起运行强化学习算法,我们使用包含大量用于RL实验的实用工具和原语的garage docker镜像。
在garage镜像之上,我们添加了与Python3(garage使用Python3)一起工作的ROS和Intera层,这样我们就能通过Python的便利库(rospy、intera_interface、moveit_commander和moveit_msgs)与Sawyer进行ROS通信。
根据此架构,需要两个docker容器:一个用于模拟或真实的Sawyer,另一个用于garage-ros-intera。前者创建ROS主节点,而后者订阅ROS主题,通过强化学习算法控制并可视化Sawyer的行为。
先决条件
- 安装Docker CE。已在版本18.09.0上测试。
- 安装Docker Compose。已在版本1.23.2上测试。
在Ubuntu 16.04上测试。建议使用上述docker-ce和docker-compose版本。
指令
在gym-sawyer仓库的根目录下执行:
$ make run-nvidia-sawyer-<type>
其中type可以是sim
(在Gazebo上运行模拟Sawyer)或robot
(您已连接到真实的Sawyer)。
容器启动并运行后(如果运行模拟Sawyer,请确保Gazebo已完全初始化)。然后运行:
$ make run-garage-<type>-ros RUN_CMD="examples/hello_world_sawyer.py"
其中type可以是
- headless:不带环境可视化的garage。
- nvidia:使用NVIDIA显卡进行环境可视化的garage。如果您的计算机具有NVIDIA GPU,请使用此镜像在garage中渲染环境,其先决条件与Sawyer Simulation镜像相同。
您应该看到Sawyer移动到中性位置并挥动其手臂三次。
在镜像中执行的命令指定在变量RUN_CMD
中。
运行带有ros-intera的本地garage仓库
如果您在本地仓库中使用garage,并希望包含最新的更改,请遵循以下说明。
- 请确保首先构建garage的docker镜像。有关更多信息,请访问garage。
- 然后重建并运行garage-ros镜像
$ make run-garage-<type>-ros RUN_CMD="..."
项目详情
gym-sawyer-0.2.0.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | b158cfd72ac9b8607043536628675f6cd2a6892ffd0fe45055e67c77d7a12911 |
|
MD5 | 4ee22f410925c07645710f1b1bc5be86 |
|
BLAKE2b-256 | 07886a97d5f11e20b3470cf97dcd03157a14e312582542d7f8c143b13ac0b00e |