pybullet教程(二)连接物理引擎

一、connect, disconnect

导入pybullet模块后,要做的第一件事是“连接”到物理引擎。

pybullet采用客户端-服务端的API设计逻辑,即客户端发送命令,物理服务端(物理引擎)返回状态。为了方便记忆,下文统一把物理服务端称为物理引擎。

pybullet内置了物理引擎的两种连接方式:DIRECTGUI。无论哪种连接,在pybullet中都执行相同物理模拟和渲染。差别在于有无可视化的窗口。

不过需要注意的是,在DIRECT模式下,将无法访问OpenGL和VR硬件功能。

connect()API的参数如下:
在这里插入图片描述
api返回一个客户端ID,如果没有连接则为-1。

客户端ID是大多数其他pybullet API的可选参数。在其他API中,如果没有给定执行命令的对象,即客户端的ID,则默认ID =0。此外,我们可以连接到多个不同的物理引擎,GUI除外。

1、GUI连接

physicsClient = p.connect(p.GUI)

GUI连接将在与pybullet相同的处理空间内创建一个具有3D OpenGL渲染的新图形用户界面(GUI)。在Linux和Windows上,由于操作系统限制,该GUI在单独的线程中运行,而在OSX上,它在同一线程中运行。

在Mac OSX上,可能会在OpenGL窗口中看到一个旋转的轮子,直到您运行 stepSimulation或其他pybullet命令。

2、DIRECT连接

physicsClient = p.connect(p.DIRECT)

这种情况下,DIRECT连接将命令直接发送到物理引擎,而不使用任何传输层和图形可视化窗口,并且在执行命令后直接返回状态。

3、使用共享内存连接

pybullet.connect(pybullet.SHARED_MEMORY,1234) 

以下列举一些允许共享内存连接的物理引擎:App_SharedMemoryPhysics,App_SharedMemoryPhysics_GUI和Bullet Example Browser,在Experiment / Physics Server下有一个允许共享内存连接的示例。这样我们可以在单独的进程中执行物理模拟和渲染。

还可以通过共享内存连接到App_SharedMemoryPhysics_VR(虚拟现实应用程序),该应用程序支持头戴式显示器和6轴跟踪的控制器,例如HTC Vive和带触摸控制器的Oculus Rift。由于Valve OpenVR SDK仅在Windows下正常工作,因此App_SharedMemoryPhysics_VR只能使用premake(最好)或cmake构建

4、使用UDP或TCP网络连接

pybullet.connect(pybullet.UDP,"192.168.0.1") 
pybullet.connect(pybullet.UDP,"localhost", 1234) 
pybullet.connect(pybullet.TCP,"localhost", 6667)

对于UDP网络,有一个App_PhysicsServerUDP侦听某个UDP端口。它使用开源互联网库,用于可靠的UDP网络。这使您可以在独立的设备上执行物理模拟和渲染。

对于TCP pybullet,请使用clsocket 库。例如,可以在Linux上使用pybullet运行控制堆栈或机器学习,而在Windows上使用HTC Vive或Rift在Virtual Reality中进行仿真。

另一个UDP应用程序是App_PhysicsServerSharedMemoryBridgeUDP应用程序,该应用程序充当到现有物理服务器的桥接器:您可以通过UDP连接到该桥接器,并且该桥接器使用共享内存连接到物理服务器:该桥接器在客户端和服务器之间传递消息。以类似的方式,有一个TCP版本(用TCP代替UDP)。

python 注意:目前,客户端和服务器必须同时为32位或同时为64位版本!

4、断开连接

我们可以通过制定客户端ID,使其与物理引擎的连接断开。“'DIRECT”或“ GUI”物理服务器将关闭。

pybullet.disconnect(physicsClient)

二、getConnectionInfo()

该API用于获取连接状态,在连接到物理引擎后,我们可以通过getConnectionInfo()函数来获取连接状态, 需要输入参数physicsClient,该函数返回一个列表 [isConnected, connectionMethod]

在这里插入图片描述

发布了33 篇原创文章 · 获赞 216 · 访问量 8万+

猜你喜欢

转载自blog.csdn.net/weixin_41045354/article/details/104542506