pinocchio库使用教程(三)

几何模型

python 复制代码
from pathlib import Path
from sys import argv
 
import pinocchio
 
# This path refers to Pinocchio source code but you can define your own directory here.
pinocchio_model_dir = Path(__file__).parent.parent / "models"
 
model_path = Path(
    (pinocchio_model_dir / "example-robot-data/robots") if len(argv) < 2 else argv[1]
)
mesh_dir = pinocchio_model_dir
urdf_model_path = model_path / "ur_description/urdf/ur5_robot.urdf"
 
# Load the urdf model
model, collision_model, visual_model = pinocchio.buildModelsFromUrdf(
    urdf_model_path, mesh_dir
)
print("model name: " + model.name)
 
# Create data required by the algorithms
data, collision_data, visual_data = pinocchio.createDatas(
    model, collision_model, visual_model
)
 
# Sample a random configuration
q = pinocchio.randomConfiguration(model)
print(f"q: {q.T}")
 
# Perform the forward kinematics over the kinematic tree
pinocchio.forwardKinematics(model, data, q)
 
# Update Geometry models
pinocchio.updateGeometryPlacements(model, data, collision_model, collision_data)
pinocchio.updateGeometryPlacements(model, data, visual_model, visual_data)
 
# Print out the placement of each joint of the kinematic tree
print("\nJoint placements:")
for name, oMi in zip(model.names, data.oMi):
    print("{:<24} : {: .2f} {: .2f} {: .2f}".format(name, *oMi.translation.T.flat))
 
# Print out the placement of each collision geometry object
print("\nCollision object placements:")
for k, oMg in enumerate(collision_data.oMg):
    print("{:d} : {: .2f} {: .2f} {: .2f}".format(k, *oMg.translation.T.flat))
 
# Print out the placement of each visual geometry object
print("\nVisual object placements:")
for k, oMg in enumerate(visual_data.oMg):
    print("{:d} : {: .2f} {: .2f} {: .2f}".format(k, *oMg.translation.T.flat))
相关推荐
Ares-Wang1 天前
flask 》》内置HTMLParser
后端·python·flask
gaoshengdainzi1 天前
导航手术具身机器人测试系统YY/T 1901-2023
机器人·导航手术具身机器人测试系统
2401_837163891 天前
PHP怎么写API接口_RESTful API基础写法介绍【介绍】
jvm·数据库·python
qq_413502021 天前
PHP跨平台部署AI应用_Docker容器化方案【教程】
jvm·数据库·python
2401_832365521 天前
HTML怎么区分正文与广告_HTML aside与广告位语义【技巧】
jvm·数据库·python
AI玫瑰助手1 天前
Python基础:字典的键值对结构与增删改查操作
android·开发语言·python
m0_676544381 天前
HTML5中SVG线性渐变LinearGradient的矢量实现
jvm·数据库·python
深度学习lover1 天前
<项目代码>yolo航拍军事目标识别<目标检测>
人工智能·python·yolo·目标检测·计算机视觉·航拍军事目标识别
IMPYLH1 天前
Linux 的 sync 命令
linux·运维·服务器·python·bash·运维开发
噜噜噜阿鲁~1 天前
python学习笔记 | 7.4、高级特性-生成器
笔记·python·学习