Ubuntu安装PyBullet | PyBullet 导入Ur5 | PyBullet简单使用 | 关于机械臂强化学习仿真引擎的选择 | PyBullet入门操作
•
人工智能
前言
- 最近在搞强化学习,需要找一个物理仿真软件来跑我的机械臂强化学习模型,去网上搜了一下,当前比较主流的有
- PyBullet
- Mujoco
- VREP
- …
- 一开始是想用Mujoco,听说Mujoco现在免费了很适合强化学习,还有一个基于Mujoco的Robosuite很适合机器人的强化学习,一顿操作下来发现Bug实在太多(两个都是),想要去复现 这一篇带着UR5的强化学习凯源代码,发现各种报错,甚至重装了系统仍然不行。
- 软件肯定是好软件,但本人能力实在有限,还是转战PyBullet。 20230326
- 然后本文参照了很多前辈、大佬的文章,太乱了不一一列举了。
环境
| 配置 | 版本 |
|---|---|
| 显卡 | 3080 |
| Ubuntu | 20.04 |
| Python | 3.8 |
| Nvidia | 515 |
| cuda | 11.7 |
| PyTorch | 2.0 |
| gym | 0.17.2 |
- 感觉gym版本要更新一下
如果下面有报错,基本上就是你的环境不满足,去网上搜下把缺的环境补足就行
安装及简单测试
安装
- 安装指令
pip3 install pybullet
- 跑一下官方的案例
python -m pybullet_robots.panda.loadpanda

python3 -m pybullet_envs.examples.enjoy_TF_HumanoidFlagrunHarderBulletEnv_v1_2017jul

python3 -m pybullet_envs.examples.enjoy_TF_AntBulletEnv_v0_2017may

PyBullet文件介绍
- 再看一下文件位置,因为我装了anaconda,所以这个PyBullet也就到了anaconda的库文件下了
- /home/xxx/anaconda3/lib/python3.9/site-packages

- 看一下各个文件的作用
- pybullet_data:存放各种机器人的URDF文件和模型。
- pybullet_envs:存放各种机器人环境(类似gym)和示例效果。
- pybullet_examples:介绍pybullet的各种基本功能,如运动学、动力学、PD控制、碰撞检测等。
- pybullet_robots:演示几种典型的机器人,如 laikago、panda、xarm。
- pybullet_utils:提供一些实用工具,如读写urdf、数学函数、矩阵操作等。
- pybullet-3.1.7.dist-info:安装信息。
PyBullet导入Ur5
虽然说,我们可以直接从官方GitHub上直接下载到ur5的文件。但是它并不能直接为我们所用,因为官方为了通用性,已经用xacro格式将整个ur系列进行了统一管理。这也导致了并不方便我们直接使用
改造我们可用的ur文件
- 我们直接参照PyBullet中它对franka_panda的描述,打造一个我们自己的ur5文件夹。先看这个franka_panda:

- franka - meshes - collision - visual - LICENSE - panda.urdf
- 这其中 meshes下的collision,visual下的dae和stl文件我们直接用官方的,但ur5e.urdf需要自己从.xacro转换成.urdf文件
ur5e 和ur5模型通用
-
原版ur5e.urdf`文件有几个小细节要修改:
删掉ur_description : 使之与文件位置对应。因为不用gazebo,我把gazebo相关的标签也删掉了同理,删掉了transmission相关的标签(关节驱动电机)也删掉了最后的描述坐标系的三个标签内容
-
搞了半天,我自己删了东西的urdf总是出现link偏斜的问题,所以我觉得【只调整下文件位置+mesh filename =”xxx”这里文件地址对应好】就行了。
-
我的文件上传到CSDN了,大家可以直接点击下载

-
最终我们有了和PyBullet案例中一样的文件结构

撰写Python代码
- 这里直接把Python代码列举出来
注意robotId = p.loadURDF 这里改成自己的文件地址
import pybullet as p
import time
import pybullet_data
import math
from collections import namedtuple
# from attrdict import AttrDict
# 连接物理模拟
physicsClient = p.connect(p.GUI)
p.setAdditionalSearchPath(pybullet_data.getDataPath())#
p.setGravity(0,0,-9.81)
#转变视角
p.resetDebugVisualizerCamera(cameraDistance=2,cameraYaw=0,cameraPitch=-40,cameraTargetPosition=[0.5,-0.9,0.5])
planeId = p.loadURDF("plane.urdf") #地面
robotId = p.loadURDF("/home/zhangshidi/GitHub/ReinforcementLearning/PyBullet/ur5e/ur5e.urdf",useFixedBase = True) #机器人
#机器人起始位姿设定
robotStartPos = [0,0,0]
robotStartOrientation = p.getQuaternionFromEuler([0,0,0])
p.resetBasePositionAndOrientation(robotId,robotStartPos,robotStartOrientation)
p.setRealTimeSimulation(1)
while True:
pass
# p.disconnect()
- 感觉还不错,按住ctrl+鼠标可以控制视角


小小的锦上添花
- 假如我把我的ur5e文件夹完全放到这个pybullet_data中,就可以优雅的直接加载了,而不用写这么长的文件位置。


在学习的过程中阅读了大量前辈的博客,要感谢他们的付出!
本文来自网络,不代表协通编程立场,如若转载,请注明出处:https://www.net2asp.com/02bd81994f.html
