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

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_datap.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

pybullet入门第一节相关推荐

  1. 语音识别入门第一节:语音识别概述

    目录 语音识别的定义 语音识别的重要性 语音交互 语音识别的挑战性 语音识别的发展历史 语音识别的深度学习时代 现代语音识别框架 语料库与工具包 语音识别的定义 语音识别:Automatic Spee ...

  2. matlab 仿真入门,MATLAB/simulink仿真入门(第一节)

    1前言 MATLAB/simulink是个强大的仿真工具,是电气工程专业从业人员必备软件,它可以完成数据分析.闭环控制设计.滤波器设计等功能,是一种比较偏理论的分析,需要自己先进行模型抽象,然后搭建电 ...

  3. Java快速入门第一节

    一.Java简介 1.安装JDK 因为Java程序必须运行在JVM之上,所以,我们第一件事情就是安装JDK.搜索JDK 14,确保从Oracle的官网下载最新的稳定版JDK找到Java SE 14的下 ...

  4. Java入门 第一节 计算机的基础概念+Java环境配置

    文章目录 1 计算机基本知识了解 1.1 啥是计算机? 1.2 计算机硬件系统 1.3 计算机软件系统 1.3.1 程序 1.4 计算机语言 1.5 计算机快捷键介绍 1.6 常见的Dos命令操作 2 ...

  5. threejs入门第一节如何用threejs创建一个简单的场景

    什么是threejs? threejs是一个用于在浏览器中绘制3D图像的JS库.它是基于webgl实现了,包括了webgl1和webgl2的渲染引擎.同时也包括了最新的webgpu.(部分浏览器基本不 ...

  6. GAMES101现代计算机图形学入门-第一节-图形学导论

    最近在为之后找工作面试做准备,所以把大二学习的计算机图形学又拿出来重新学起来了,也推荐大家一起看闫大神的课!!! 然后笔记是在lengyueling大佬的版本上进行的修改,总体还是大佬的模板. 希望大 ...

  7. Linux 入门第一节

    注:默认采用的是Centos7.6的版本 一.Linux目录结构 Linux的文件系统是采用层级式的树状目录结构,在此结构最上层的是目录 "/",然后在此目录下再创建其它文件,在L ...

  8. android 教程概要,Android精通教程-第一节Android入门简介

    前言 大家好,我是 Vic,今天给大家带来Android精通教程-第一节Android入门简介的概述,希望你们喜欢 每日一句 If life were predictable it would cea ...

  9. java 排序 1和1_新手入门-冒泡排序和选择排序第一节排序1.1排序概述排序(

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 新手入门-冒泡排序和选择排序 第一节排序 1.1排序概述 排序(sorting)的功能是将一个数据元素的任意序列,重新排列成一个按关键字有序的序列.  ...

最新文章

  1. 如何让Spring Boot 的配置 “动” 起来?
  2. 人工智能创业指南:AI 产品未来的发展模式及策略
  3. mysql数据库引擎博客_2、MySQL常见数据库引擎及比较?
  4. 关于Unity中Mecanim动画的动画状态代码控制与代码生成动画控制器
  5. 【数据分析】用于数据分析的8个SQL技术
  6. JavaWeb结合七牛云存储搭建个人相册服务
  7. LiveVideoStack线上交流分享 (十六) —— 爱奇艺剧场直播云端混流方案
  8. 取木棒21根c语言,关于m根火柴 ,人机最多取n根火柴(21根火柴进阶)
  9. 邢台职业技术学院计算机系宿舍,邢台职业技术学院宿舍条件怎么样 男生女生宿舍图片...
  10. Nodejs 4.0 ES6特性
  11. 婚宴座位图html5,婚礼小知识,婚宴座位怎么安排才不得罪人(主桌)
  12. 学习 Python 这么多年,掉过的那些安全漏洞
  13. python之 十进制与十二进制 相互转换~clash of coding
  14. 微信多开设置网络代理服务器,微信多开终极技巧,可随意控制数量已亲测很好用...
  15. S5PV210芯片的DRAM控制器介绍、初始化DDR的流程分析
  16. 路由器显示找不到服务器从新设置,怎么重新设置路由器ip地址
  17. 金融分析与风险管理——资本资产定价模型
  18. python3 字典遍历操作
  19. Cesium|xt3d模型展开动画
  20. CA策略发布目录SPC

热门文章

  1. 爬取网络视频和小说资源
  2. Ubuntu 20.04 添加字体 cascadia
  3. 小米 2016届实习生招聘笔试
  4. XCP协议基础知识 - 协议层
  5. 对讲机技术术语中英文翻译对照表
  6. Android自定义View之实现简单炫酷的球体进度球
  7. 史上最详尽,全方位解读车路协同
  8. 分享我编程工作经历及对软件开发前景的看法
  9. Linux下find与exec的联手干大事
  10. Docker安装NextCloud搭建私有网盘