Ubuntu安装PyBullet | PyBullet 导入Ur5 | PyBullet简单使用 | 关于机械臂强化学习仿真引擎的选择 | PyBullet入门操作

前言

  • 最近在搞强化学习,需要找一个物理仿真软件来跑我的机械臂强化学习模型,去网上搜了一下,当前比较主流的有
    • PyBullet
    • Mujoco
    • VREP
  • 一开始是想用Mujoco,听说Mujoco现在免费了很适合强化学习,还有一个基于Mujoco的Robosuite很适合机器人的强化学习,一顿操作下来发现Bug实在太多(两个都是),想要去复现 这一篇带着UR5的强化学习凯源代码,发现各种报错,甚至重装了系统仍然不行。
  • 软件肯定是好软件,但本人能力实在有限,还是转战PyBullet。 20230326
  • 然后本文参照了很多前辈、大佬的文章,太乱了不一一列举了。

环境

配置版本
显卡3080
Ubuntu20.04
Python3.8
Nvidia515
cuda11.7
PyTorch2.0
gym0.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中,就可以优雅的直接加载了,而不用写这么长的文件位置。

在学习的过程中阅读了大量前辈的博客,要感谢他们的付出!

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
扎眼的阳光的头像扎眼的阳光普通用户
上一篇 2023年11月13日
下一篇 2023年11月13日

相关推荐