pybullet入门第一节

pybullet第一节学习

pybullet的安装

首先安装pybullet,非常简单直接pip即可。在一台可渲染的ubuntu电脑食用更佳~因为本人没有遇到什么安装上的问题,故就不再这里细说。

安装完成pybullet之后,可以通过跑一些其提供的demo进行渲染。
如直接运行:

python -m pybullet_envs.examples.loadpanda

即可看到一个机械臂在进行manipulation:
在这里插入图片描述

安装完成后可以看到pybullet提供了些什么:

在这里插入图片描述
这4种文件里面包含了各种各样现成的模型供我们加载和使用,所以我们先来熟悉一下这些文件里面有什么:

pybullet_data: 这一文件夹中包含了一系列的实物模型,这里简单列举几个:

类型 加载方式
自行车 bicycle/bike.urdf
双足人 bipid/biped2d_pybullet.urdf
平面 plane.urdf
各种平面 plane100.urdf, plane_implicit.urdf, plane_transparent.urdf
赛车 racecar/racecar.urdf
杯子 urdf/mug.urdf
杯子2 urdf/mug.urdf
机械臂 franka_panda/panda.urdf
gripper gripper/下面各种

pybullet_envs: 有一些现成的环境可以用来进行操作。
pybullet_examples: 里面有一些非常好的exmpales可以用来学习如何构建任务,以及使用强化学习来进行simulate和training。
pybullet_robots: 内部包含有2种机械臂(xarm,pandas)和1种机械狗(laikago)。里面有相应的py文件和相关的任务示例展示了如何使用这些部件。
**pybullet_utils:**里面也有相关的代码示例。

打开urdf文件后其编写格式与ROS,Mujoco等比较像,可以通过修改内部的参数进行对model的改进。

pybullet基本操作

先导入一些包:

import pybullet as p
import time
import pybullet_data

对物理引擎进行连接:

physicsCilent = p.connect(p.GUI)

connect函数接受一个参数,代表用户选择连接的物理引擎服务器。p.GUI表示可渲染,p.DIRECT表示不渲染。
如果要取消渲染时候周围的控制面板,可以使用如下命令进行去除:

扫描二维码关注公众号,回复: 17351819 查看本文章
p.configureDebugVisualizer(p.COV_ENABLE_GUI, 0)

设置重力:

p.setGravity(0, 0, -10)

使用loadURDF函数进行模型加载:
loadURDF函数具体信息如下:
在这里插入图片描述
filename用于指加载文件的路径,basePosition指放置模型位置,baseOrientation用于描述模型放置的朝向,globalScaling用于控制模型比例等。

为了加载模型我们通常会载入这一行代码来使用相对路径读入库中现成的模型:

p.setAdditionalSearchPath(pybullet_data.getDataPath())

注意: 除了使用loadURDF加载urdf模型外,我们还可以通过loadSDF来加载sdf模型,通过loadMJCF来加载mjcf模型。其中sdf是数据库文件,mjcf是MuJoCo平台的机器人描述文件。

使用stepSimulation函数进行模拟:

p.stepSimulation()
time.sleep(1/240)

但是渲染出来的样子感觉像是重力加速度变小了,可以通过加time.sleep(1/240)来让渲染变得舒服。
同时还可以是用下面的函数进行实时渲染,直接将物理引擎渲染的时间和RTC(real time clock)同步:

p.setRealTimeSimulation(1)

一个简单的demo:

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
import pybullet_data

p.connect(p.GUI)
p.setGravity(0, 0, -10)
p.configureDebugVisualizer(p.COV_ENABLE_RENDERING, 0)
p.configureDebugVisualizer(p.COV_ENABLE_RENDERING, 1)

p.resetSimulation()
p.setAdditionalSearchPath(pybullet_data.getDataPath())
planeId = p.loadURDF("plane.urdf")
tableUid = p.loadURDF("table/table.urdf", basePosition=[0, 0.3, -0.45], globalScaling=1)
mugid = p.loadURDF("urdf/mug.urdf", basePosition=[1, 1, 1], globalScaling=1)
cubeStartPos = [0, 0, 0,5]
cubeStartOrientation = p.getQuaternionFromEuler([0, 1, 1])
pandaUid = p.loadURDF('franka_panda/panda.urdf', cubeStartPos, cubeStartOrientation)



while 1:
    p.stepSimulation()
    time.sleep(1 / 240)
    p.getCameraImage(320, 240)
一个好用的看urdf文件的网站

https://mymodelrobot.appspot.com/5629499534213120

参考链接:
https://zhuanlan.zhihu.com/p/347618698

猜你喜欢

转载自blog.csdn.net/weixin_42988382/article/details/124274411