実際のところ
ライブラリ群の読み込み
pybulletは当然として、描画のためにIPython.displayのdisplayとclear_outputよみます。
import pybullet as p import time import pybullet_data from IPython.display import display, clear_output import matplotlib.pyplot as plt
Pybulletのセットアップ
# PyBulletのセットアップ physicsClient = p.connect(p.DIRECT) # GUIなしでシミュレーション p.setAdditionalSearchPath(pybullet_data.getDataPath()) # デフォルトのデータパスを設定 # 重力の設定 p.setGravity(0, 0, -10) # 平面の追加 planeId = p.loadURDF("plane.urdf") # キューブの追加 cubeStartPos = [0,0,1] cubeStartOrientation = p.getQuaternionFromEuler([0,0,0]) cubeId = p.loadURDF("cube.urdf",cubeStartPos, cubeStartOrientation)
描画
for i in range(100): p.stepSimulation() cubePos, cubeOrn = p.getBasePositionAndOrientation(cubeId) # グラフの描画 plt.figure(figsize=(5,5)) plt.xlim(-2, 2) plt.ylim(-2, 2) plt.plot(cubePos[0], cubePos[1], 'bo') # XとYの位置にキューブをプロット display(plt.gcf()) # 現在の図を表示 clear_output(wait=True) # 次の図を表示する前に出力をクリア plt.close() # 図を閉じる time.sleep(0.1) # 少し待つ p.disconnect()