python:pybullet 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 如下

import pybullet as p
import pybullet_data as pd
import math
import time
import numpy as np
import pybullet_robots.panda.panda_sim as panda_sim

p.connect(p.GUI)
p.configureDebugVisualizer(p.COV_ENABLE_Y_AXIS_UP,1)
p.setAdditionalSearchPath(pd.getDataPath())

timeStep=1./60.
p.setTimeStep(timeStep)
p.setGravity(0,-9.8,0) #set 重力值
 
panda = panda_sim.PandaSim(p,[0,0,0])
while (1):
	panda.step()
	p.stepSimulation()
	time.sleep(timeStep)

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

机器狗 python -m pybullet_robots.laikago.laikago

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值