0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

お題は不問!Qiita Engineer Festa 2024で記事投稿!
Qiita Engineer Festa20242024年7月17日まで開催中!

【Pybulletサンプル公式】ソフトボディのオブジェクトの生成【load_soft_body.py】

Posted at

Pybullet公式gitリポジトリのサンプルコードを解説するシリーズです(一覧はこちら)。


今回は、load_soft_body.pyを解説します。(コードのリンクはこちら

本コードを実行すると、ソフトボディのオブジェクトが生成されます。

load_soft_body.gif

使用している機能

本コードは、以下の機能を使用して「ソフトボディのオブジェクトの生成」を実現しています。

ソフトボディのオブジェクトの生成

loadSoftBody 関数を使用することで、ソフトボディのオブジェクトを生成できます。

softBodyId = p.loadSoftBody(objectFile)
  • softBodyId:ソフトボディのオブジェクトのID
  • objectFile:ソフトボディのオブジェクトのファイル

コメントをつけたサンプルコード

サンプルコードにコメントをつけたものが以下になります(もともとあった不要と思われるコメント等については削除しています)

import pybullet as p
from time import sleep
import pybullet_data

# PybulletをGUIモードで接続
physicsClient = p.connect(p.GUI)

# Pybulletに関するデータパスを取得
p.setAdditionalSearchPath(pybullet_data.getDataPath())

# 重力を設定
p.setGravity(0, 0, -10)

# 床のオブジェクトを生成
planeId = p.loadURDF("plane.urdf", [0,0,-2])

# ボックスのオブジェクトをベースリンクを固定した状態で生成
boxId = p.loadURDF("cube.urdf", [0,3,2],useMaximalCoordinates = True)

# ソフトボディのウサギのオブジェクトを生成
bunnyId = p.loadSoftBody("bunny.obj")#.obj")#.vtk")

# リアルタイムシミュレーションを有効化
useRealTimeSimulation = 1
if (useRealTimeSimulation):
  p.setRealTimeSimulation(1)

# 床とボックスの動力学情報を取得
print(p.getDynamicsInfo(planeId, -1))
print(p.getDynamicsInfo(boxId, -1))

# ボックスの重量を10kgに変更
p.changeDynamics(boxId,-1,mass=10)

# pybulletが接続されている間、ループを接続
while p.isConnected():

  # 重力を設定
  p.setGravity(0, 0, -10)
  
  if (useRealTimeSimulation):
    sleep(0.01)  # Time in seconds.
  else:
    p.stepSimulation()
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?