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
杯子2urdf/mug.urdf
机械臂franka_panda/panda.urdf
grippergripper/下面各种

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表示不渲染。
如果要取消渲染时候周围的控制面板,可以使用如下命令进行去除:

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

  • 6
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值