跳转到主要内容

基于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的指令。

先决条件

已在Ubuntu 16.04上测试

指令
  1. 在克隆仓库的根目录下运行以下命令构建镜像:
$ make build-nvidia-sawyer-sim
  1. 镜像构建完成后,运行容器:
$ make run-nvidia-sawyer-sim
  1. 应使用Sawyer启动Gazebo和MoveIt!

  2. 要退出容器,请在新的终端中输入sudo docker stop sawyer-sim

控制Sim Sawyer
  1. 通过运行以下命令在容器中打开一个新的终端:
$ docker exec -it sawyer-sim bash
  1. 一旦进入终端,运行以下命令以执行键盘控制器:
$ cd ~/ros_ws
$ ./intera.sh sim
$ rosrun intera_examples joint_position_keyboard.py
  1. 应出现以下消息:
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.
  1. 输入?以获取控制Sawyer的键。
在Sim Sawyer中查看头戴摄像头
  1. 执行上一节的第一步
  2. 一旦进入容器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模拟相同。
指令
  1. 导出Sawyer主机名、Sawyer IP地址和工作站IP地址。
$ export SAWYER_HOSTNAME=__sawyerhostname__  
$ export SAWYER_IP=__sawyerip__ 
$ export WORKSTATION_IP=__workip__ 
  1. 在克隆仓库的根目录下运行以下命令构建镜像:
$ make build-nvidia-sawyer-robot 
  1. 镜像构建完成后,运行容器:
$ make run-nvidia-sawyer-robot
  1. Rviz应包含Sawyer。现在您可以通过rviz计划和执行轨迹。

  2. 要退出容器,请在新的终端中输入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的行为。

先决条件

在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,并希望包含最新的更改,请遵循以下说明。

  1. 请确保首先构建garage的docker镜像。有关更多信息,请访问garage
  2. 然后重建并运行garage-ros镜像
$ make run-garage-<type>-ros RUN_CMD="..."

项目详情


下载文件

下载适用于您平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源代码分发

gym-sawyer-0.2.0.tar.gz (5.5 MB 查看哈希值)

上传时间 源代码

由以下支持