PyRep

机器人学习研究工具包。(A toolkit for robot learning research.)

Github星跟踪图

PyRep

PyRep 是用于机器人学习研究的工具包,建立在 CoppeliaSim(以前称为 V-REP)的基础上。

注意:V-REP 最近已更改为 CoppeliaSim。 如果安装了旧版本的 V-REP/PyRep,则应从 bashrc/zshrc 中删除所有 V-REP 引用(VREP_ROOT,LD_LIBRARY_PATH,QT_QPA_PLATFORM_PLUGIN_PATH),然后重新运行安装部分。

安装

除了 PyRep API,您还需要从下载页面下载最新版本的 CoppeliaSim。

下载 CoppeliaSim 之后,您可以从 git 中提取 PyRep:

git clone https://github.com/stepjam/PyRep.git
cd PyRep

将以下内容添加到您的 ~/.bashrc 文件中:(注意:第一行中的“EDIT ME”)

export COPPELIASIM_ROOT=EDIT/ME/PATH/TO/COPPELIASIM/INSTALL/DIR
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$COPPELIASIM_ROOT
export QT_QPA_PLATFORM_PLUGIN_PATH=$COPPELIASIM_ROOT

__请记住在此之后“source” 您的 bashrc(source ~/.bashrc)或zshrc(source ~/.zshrc)。

最后安装python库:

pip3 install -r requirements.txt
python3 setup.py install --user

好了,现在万事俱备了!你可以尝试运行 examples/ 文件夹中的示例之一。

尽管您可以在任何平台上使用 CoppeliaSim,但目前仅在 Linux 上支持通过 PyRep 进行通信。

无头运行(Running Headless)

如果计划在无头计算机上运行,则还需要在虚拟帧缓冲区中运行。例如:

sudo apt-get install xvfb
xvfb-run python3 my_pyrep_app.py
# or if you are using jupyter
# xvfb-run jupyter notebook

故障排除

以下是安装过程中可能会遇到的一些问题。 如果这些方法都不能解决您的问题,请提出问题。

ModuleNotFoundError:没有名为“pyrep.backend._v_rep_cffi”的模块

如果遇到此错误,请检查您是否不在项目根目录下运行解释器。 如果是这样,那么您的Python解释器将尝试导入这些文件,而不是已安装的文件。

错误:命令“ x86_64-linux-gnu-gcc”失败

您可能缺少构建python扩展所需的软件包。 尝试:sudo apt-get install python3-dev,然后重新运行安装。

入门

首先,查看“用法”和“ examples /”文件夹中的示例,以查看PyRep是否可以加速您的研究。

看看CoppeliaSim教程。

用法

了解PyRep如何为您的研究提供帮助的最好方法是查看examples /文件夹中的示例!

启动模拟

from pyrep import PyRep
pr = PyRep()
# Launch the application with a scene file in headless mode
pr.launch('scene.ttt', headless=True) 
pr.start()  # Start the simulation
# Do some stuff
pr.stop()  # Stop the simulation
pr.shutdown()  # Close the application

修改场景

from pyrep.objects.shape import Shape
from pyrep.const import PrimitiveShape
object = Shape.create(type=PrimitiveShape.CYLINDER, 
                      color=[r,g,b], size=[w, h, d],
                      position=[x, y, z])
object.set_color([r, g, b])
object.set_position([x, y, z])

使用机器人

机器人被设计成模块化;手臂和钳子分开处理。

使用在 robots/ttms 中定义的 robot ttm 文件。与 CoppeliaSim 随附的原始产品相比,这些产品已经稍作更改,可以直接用于运动计划中。机器人的“tip”可能不在您想要的位置,因此可以随意使用。

from pyrep import PyRep
from pyrep.robots.arms.panda import Panda
from pyrep.robots.end_effectors.panda_gripper import PandaGripper
pr = PyRep()
# Launch the application with a scene file that contains a robot
pr.launch('scene_with_panda.ttt') 
pr.start()  # Start the simulation
arm = Panda()  # Get the panda from the scene
gripper = PandaGripper()  # Get the panda gripper from the scene
velocities = [.1, .2, .3, .4, .5, .6, .7]
arm.set_joint_target_velocities(velocities)
pr.step()  # Step physics simulation
done = False
# Open the gripper halfway at a velocity of 0.04.
while not done:
    done = gripper.actuate(0.5, velocity=0.04)
    pr.step()
pr.stop()  # Stop the simulation
pr.shutdown()  # Close the application

我们建议用字典或小型结构来构造你的机器人,例如:

class MyRobot(object):
  def __init__(self, arm, gripper):
    self.arm = arm
    self.gripper = gripper
arm = Panda()  # Get the panda from the scene
gripper = PandaGripper()  # Get the panda gripper from the scene
# Create robot structure
my_robot_1 = MyRobot(arm, gripper)
# OR
my_robot_2 = {
  'arm': arm,
  'gripper': gripper
}

运行多个 PyRep 实例

每个 PyRep 实例都需要自己的进程。 这可以使用 Python 的多处理模块来实现。 这是一个简单的示例:

from multiprocessing import Process
PROCESSES = 10
def run():
  pr = PyRep()
  pr.launch('my_scene.ttt', headless=True)
  pr.start()
  # Do stuff...
  pr.stop()
  pr.shutdown()
processes = [Process(target=run, args=()) for i in range(PROCESSES)]
[p.start() for p in processes]
[p.join() for p in processes]

支持的机器人

以下是 PyRep 当前支持的机器人列表:

Arms

  • Kinova Mico
  • Kinova Jaco
  • Rethink Baxter
  • Rethink Sawyer
  • Franka Emika Panda
  • Kuka LBR iiwa 7 R800
  • Kuka LBR iiwa 14 R820
  • Universal Robots UR3
  • Universal Robots UR5
  • Universal Robots UR10

Grippers

  • Kinova Mico Hand
  • Kinova Jaco Hand
  • Rethink Baxter Gripper
  • Franka Emika Panda Gripper

Mobile Robots

  • Kuka YouBot
  • Turtle Bot
  • Line Tracer

随时发送对新机器人的拉取请求!

添加机器人

如果当前不支持所需的机器人,那么为什么不添加它呢!

这是添加机器人的教程。

计划的未来更新

  • 支持 MuJoCo
  • Sim-to-Real 的支持(例如域随机化)

贡献

我们希望使 PyRep 成为快速机器人学习研究的最佳工具。如果您想参与其中,请联系!

欢迎修复错误的拉请求!

使用PyRep的项目

如果您在工作中使用 PyRep,请与我们联系,我们可以将您添加到列表中!

致谢

Georges Nomicos(伦敦帝国学院)用于增加移动平台。

V-REP 发生了什么?

Coppelia Robotics 停止了 V-REP 的开发。作为替代,他们现在将精力集中在 CoppeliaSim 上。 CoppeliaSim 与 V-REP 100% 兼容。在此处查看更多信息。

PyRep 与 V-REP 和 CoppeliaSim 完全兼容。

引文

@article{james2019pyrep,
  title={PyRep: Bringing V-REP to Deep Robot Learning},
  author={James, Stephen and Freese, Marc and Davison, Andrew J.},
  journal={arXiv preprint arXiv:1906.11176},
  year={2019}
}


(The first version translated by vz on 2020.07.26)

主要指标

概览
名称与所有者stepjam/PyRep
主编程语言Python
编程语言Python (语言数: 3)
平台Linux
许可证MIT License
所有者活动
创建于2019-06-26 12:15:58
推送于2024-08-16 12:54:08
最后一次提交2024-07-02 09:49:17
发布数1
最新版本名称4.1.0 (发布于 )
第一版名称4.1.0 (发布于 )
用户参与
星数732
关注者数12
派生数169
提交数153
已启用问题?
问题数298
打开的问题数28
拉请求数74
打开的拉请求数1
关闭的拉请求数26
项目设置
已启用Wiki?
已存档?
是复刻?
已锁定?
是镜像?
是私有?

PyRep Build Status Documentation Status

PyRep is a toolkit for robot learning research, built on top of CoppeliaSim (previously called V-REP).

NOTE: V-REP has recently been changed to CoppeliaSim.
If you had an old version of V-REP/PyRep installed, you should removing all
references of V-REP from your bashrc/zshrc (VREP_ROOT, LD_LIBRARY_PATH,
QT_QPA_PLATFORM_PLUGIN_PATH), and then re-run through the installation section.

Install

In addition to the PyRep API, you will aso need to download the latest version of CoppeliaSim from the downloads page.

Once you have downloaded CoppeliaSim, you can pull PyRep from git:

git clone https://github.com/stepjam/PyRep.git
cd PyRep

Add the following to your ~/.bashrc file: (NOTE: the 'EDIT ME' in the first line)

export COPPELIASIM_ROOT=EDIT/ME/PATH/TO/COPPELIASIM/INSTALL/DIR
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$COPPELIASIM_ROOT
export QT_QPA_PLATFORM_PLUGIN_PATH=$COPPELIASIM_ROOT

__Remember to source your bashrc (source ~/.bashrc) or
zshrc (source ~/.zshrc) after this.

Finally install the python library:

pip3 install -r requirements.txt
python3 setup.py install --user

You should be good to go!
Try running one of the examples in the examples/ folder.

Although you can use CoppeliaSim on any platform, communication via PyRep is currently only supported on Linux.

Running Headless

If you plan to run on a headless machine, you will also need to run with a virtual framebuffer. E.g.

sudo apt-get install xvfb
xvfb-run python3 my_pyrep_app.py
# or if you are using jupyter
# xvfb-run jupyter notebook

Troubleshooting

Below are some problems you may encounter during installation. If none of these solve your problem, please raise an issue.

  • ModuleNotFoundError: No module named 'pyrep.backend._v_rep_cffi'
    • If you are getting this error, then please check that you are not running the interpreter from the project root. If you are, then your Python interpreter will try to import those files rather the installed files.
  • error: command 'x86_64-linux-gnu-gcc' failed
    • You may be missing packages needed for building python extensions. Try: sudo apt-get install python3-dev, and then re-run the installation.

Getting Started

  1. First take a look at Usage and the examples in the examples/ folder to see if PyRep might be able to accelerate your research.
  2. Take a look at the CoppeliaSim tutorials.

Usage

The best way to see how PyRep can help in your research is to look at the examples in the examples/ folder!

Launching the simulation

from pyrep import PyRep

pr = PyRep()
# Launch the application with a scene file in headless mode
pr.launch('scene.ttt', headless=True) 
pr.start()  # Start the simulation

# Do some stuff

pr.stop()  # Stop the simulation
pr.shutdown()  # Close the application

Modifying the Scene

from pyrep.objects.shape import Shape
from pyrep.const import PrimitiveShape

object = Shape.create(type=PrimitiveShape.CYLINDER, 
                      color=[r,g,b], size=[w, h, d],
                      position=[x, y, z])
object.set_color([r, g, b])
object.set_position([x, y, z])

Using Robots

Robots are designed to be modular; arms are treated separately to grippers.

Use the robot ttm files defined in robots/ttms. These have been altered slightly from the original ones shipped with CoppeliaSim to allow them to be used with motional planning out of the box.
The 'tip' of the robot may not be where you want it, so feel free to play around with this.

from pyrep import PyRep
from pyrep.robots.arms.panda import Panda
from pyrep.robots.end_effectors.panda_gripper import PandaGripper

pr = PyRep()
# Launch the application with a scene file that contains a robot
pr.launch('scene_with_panda.ttt') 
pr.start()  # Start the simulation

arm = Panda()  # Get the panda from the scene
gripper = PandaGripper()  # Get the panda gripper from the scene

velocities = [.1, .2, .3, .4, .5, .6, .7]
arm.set_joint_target_velocities(velocities)
pr.step()  # Step physics simulation

done = False
# Open the gripper halfway at a velocity of 0.04.
while not done:
    done = gripper.actuate(0.5, velocity=0.04)
    pr.step()
    
pr.stop()  # Stop the simulation
pr.shutdown()  # Close the application

We recommend constructing your robot in a dictionary or a small structure, e.g.

class MyRobot(object):
  def __init__(self, arm, gripper):
    self.arm = arm
    self.gripper = gripper

arm = Panda()  # Get the panda from the scene
gripper = PandaGripper()  # Get the panda gripper from the scene

# Create robot structure
my_robot_1 = MyRobot(arm, gripper)
# OR
my_robot_2 = {
  'arm': arm,
  'gripper': gripper
}

Running Multiple PyRep Instances

Each PyRep instance needs its own process. This can be achieved using Pythons multiprocessing module. Here is a simple example:

from multiprocessing import Process

PROCESSES = 10

def run():
  pr = PyRep()
  pr.launch('my_scene.ttt', headless=True)
  pr.start()
  # Do stuff...
  pr.stop()
  pr.shutdown()

processes = [Process(target=run, args=()) for i in range(PROCESSES)]
[p.start() for p in processes]
[p.join() for p in processes]

Supported Robots

Here is a list of robots currently supported by PyRep:

Arms

  • Kinova Mico
  • Kinova Jaco
  • Rethink Baxter
  • Rethink Sawyer
  • Franka Emika Panda
  • Kuka LBR iiwa 7 R800
  • Kuka LBR iiwa 14 R820
  • Universal Robots UR3
  • Universal Robots UR5
  • Universal Robots UR10

Grippers

  • Kinova Mico Hand
  • Kinova Jaco Hand
  • Rethink Baxter Gripper
  • Franka Emika Panda Gripper

Mobile Robots

  • Kuka YouBot
  • Turtle Bot
  • Line Tracer

Feel free to send pull requests for new robots!

Adding Robots

If the robot you want is not currently supported, then why not add it in!

Here is a tutorial for adding robots.

Planned Future Updates

  • Support for MuJoCo
  • Sim-to-Real support (e.g. domain randomization)

Contributing

We want to make PyRep the best tool for rapid robot learning research. If you would like to get involved, then please get in contact!

Pull requests welcome for bug fixes!

Projects Using PyRep

If you use PyRep in your work, then get in contact and we can add you to the list!

Acknowledgements

  • Georges Nomicos (Imperial College London) for the addition of mobile platforms.

What Happened to V-REP?

Coppelia Robotics discontinued development of V-REP. Instead, they now focus
their efforts on CoppeliaSim. CoppeliaSim is 100% compatible with V-REP.
See more information here.

PyRep is fully compatible with both V-REP and CoppeliaSim.

Citation

@article{james2019pyrep,
  title={PyRep: Bringing V-REP to Deep Robot Learning},
  author={James, Stephen and Freese, Marc and Davison, Andrew J.},
  journal={arXiv preprint arXiv:1906.11176},
  year={2019}
}