文章目录
1. Pybullet安装与简单测试
1.1 安装
PyBullet wraps the Bullet Physics library for Python. Pybullet是一个相当不错的库,安装也十分简单,pypi直接可以安装
pip install pybullet -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com
如果编译没通过的话可以看看visual studio的win10 win11sdk是否安装好
1.2 简单测试
import pybullet as p
Quaternion = p.getQuaternionFromEuler([0, 0, 0]) # 欧拉角转四元数
Euler = p.getEulerFromQuaternion([0, 0, 0, 1]) # 四元数转欧拉角
print("四元数: ", Quaternion) # 四元数: (0.0, 0.0, 0.0, 1.0)
print("欧拉角: ", Euler) # 欧拉角: (0.0, -0.0, 0.0)
2. Pybullet导入自己本地模型
2.1. solidworks构建模型
在solidoworks中构建自己所需要的模型。
2.2 导出stl模型
由于插件原因,solidworks无法直接导出为obj格式文件,需要先转为stl格式。
2.3 导出为obj格式文件
打开ScanTo3D插件,如下图所示,点击stl另存为obj即可。
然后,注意需要采用scanto3D打开这个文件为网格格式,具体可以参考这个教程[2]。
https://blog.csdn.net/qq_41035283/article/details/125375176 pybullet坐标系–运动过程
https://blog.csdn.net/qq_41035283/article/details/123960060 载入obj文件
2.4 obj文件转换为urdf文件
URDF文件格式为父子关系树形式:连杆link1 --> 关节joint1 --> 连杆link2 --> 关节joint2 ······ urdf exporter插件可以实现自动的obj文件转为urdf,当然也需要完成一系列的配置操作[5]。
对于每个连杆模型,其主要包括3部分
每根连杆包括
- 可视化模型 visual:包括初始姿态rpy、原点位置xyz,几何形状geometry
- 碰撞检测模型 collision:包括初始姿态rpy、原点位置xyz,几何形状geometry
- 惯性计算模型 inertial:包括初始姿态rpy、原点位置xyz,质量mass、惯性张量
2.5 加载URDF模型到pybullet环境中
设置urdf模型对应的位置的姿态,加载到pybullet环境
上面是设置重力、惯性,鼠标拖动的旋转效果;当然也可以通过直接设置角度。
object_urdf = "fancy_cube/small_holder.urdf"
boxStartPos = [0, 0, 0.5]
boxStartOr = p.getQuaternionFromEuler(np.deg2rad([0, 0, 0]))
boxId = p.loadURDF(object_urdf, boxStartPos, boxStartOr)
2.5.3 通过这个包可以方便的查看urdf模型是否存在错误【6】
其他一些函数的意义,如:视椎体、投影矩阵、模型变换、视图变换等可以参考资料【7】。另外,可以通过使用opencascade软件+step格式中转,给obj模型添加颜色纹理特征,直接保存就会生成mtl文件。另外,step应为ap214格式。
PS:发现官方文档里单个连杆都是设置为一种颜色,可能作者就没想着做的花里胡哨的。
参考文献材料
[1] https://fans.solidworks.com.cn/portal.php?mod=view&aid=615&page=1
[2] https://blog.csdn.net/qq_41035283/article/details/123960060
[3] 深度强化学习的一些stable baseline:https://pybullet.org/wordpress/
[4] https://github.com/ros/solidworks_urdf_exporter/releases
[5]https://pypi.org/project/object2urdf/
[6] https://www.guyuehome.com/35510
[7] https://blog.csdn.net/aoxuestudy/article/details/109828030
[8] https://blog.csdn.net/qq_31073871/article/details/108407272