当前位置:   article > 正文

python:pybullet 3D游戏物理引擎 安装过程_python 3d物理仿真

python 3d物理仿真

先从 Microsoft C++ Build Tools - Visual Studio

下载 1.73GB 安装 "Microsoft C++ Build Tools“

现在,我们将创建一个虚拟环境,并在其中安装 numpy , pybullet

cd /python

python -m venv myenv

cd myenv

使用 Scripts\activate 激活环境,

接着 (myenv) D:\python\myenv\Scripts>pip install numpy

Downloading  numpy-1.26.1-cp310-cp310-win_amd64.whl (15.8 MB)

Successfully installed numpy-1.26.1

然后 pip install pybullet
pybullet-3.2.5.tar.gz (80.5 MB)

  Preparing metadata (setup.py) ... done
Installing collected packages: pybullet

Running setup.py install for pybullet ... done
Successfully installed pybullet-3.2.5

\python\myenv\Lib\site-packages\ 目录下有

pybullet_data:存放各种机器人的URDF文件和模型。
pybullet_envs:存放各种机器人环境(类似gym)和示例效果。
pybullet_examples:介绍pybullet的各种基本功能,如运动学、动力学、PD控制、碰撞检测等。
pybullet_robots:演示几种典型的机器人,如 laikago、panda、xarm。
pybullet_utils:提供一些实用工具,如读写urdf、数学函数、矩阵操作等。

一个典型的仿真程序主要分为两块:
1.配置:PyBullet 的API 基于 client-server 设计,client 发送命令,physics server 返回状态。所以首先是 p.connet(xxx),常用 p.GUI(带渲染) 和 p.DIRECT(不带渲染,适合强化学习训练) 两种模式。之后就是设置重力以及仿真器的一些参数,最后是加载机器人的模型。
2.循环:p.stepSimulation() 在一个正向动力学仿真步骤中执行所有动作,默认时间步长 1/240 秒。


每个存档都包含一个带有元数据的 json文件,包括用于呈现和碰撞检测的子资产的路径,以及PyBullet使用的统一机器人描述格式(URDF)中物理属性的定义。对于纹理模型,采用GLTF标准。

官网 例子开始,看下 Franka Emika Panda 的机器人仿真效果:

python -m pybullet_robots.panda.loadpanda
按住Ctrl+左键可旋转场景,Ctrl+中键可平移场景,滑动中键可拉近拉远。Panda 机器人模型就在 pybullet_data/franka_panda 中。

最后安装 OpenAI 强化学习工具 pip install gym

Downloading gym-0.26.2.tar.gz (721 kB) Successfully built gym
Installing collected packages: gym-notices, cloudpickle, gym
Successfully installed cloudpickle-3.0.0 gym-0.26.2 gym-notices-0.0.8

请参阅:强化学习笔记:Gym入门

\python\myenv\Lib\site-packages\pybullet_robots\panda\loadpanda.py 如下

  1. import pybullet as p
  2. import pybullet_data as pd
  3. import math
  4. import time
  5. import numpy as np
  6. import pybullet_robots.panda.panda_sim as panda_sim
  7. p.connect(p.GUI)
  8. p.configureDebugVisualizer(p.COV_ENABLE_Y_AXIS_UP,1)
  9. p.setAdditionalSearchPath(pd.getDataPath())
  10. timeStep=1./60.
  11. p.setTimeStep(timeStep)
  12. p.setGravity(0,-9.8,0) #set 重力值
  13. panda = panda_sim.PandaSim(p,[0,0,0])
  14. while (1):
  15. panda.step()
  16. p.stepSimulation()
  17. time.sleep(timeStep)

机器手臂 python -m pybullet_robots.xarm.loadxarm_sim

机器狗 python -m pybullet_robots.laikago.laikago

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号