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サンプル解説】スケールを変えてボールを生成【soccerball.py】

Posted at

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


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

本コードを実行すると、スケールの異なる9個のサッカーボールが生成されます。

soccerball.gif

使用している機能

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

オブジェクトの生成

loadURDF 関数を使用することで、指定したurdfファイルのオブジェクトを生成できます。

objectId = pybullet.loadURDF(urdfFile, position, globalScaling)
  • objectId:オブジェクトのID
  • urdfFile:オブジェクトのurdfファイル
  • position:オブジェクトを生成する位置
  • globalScaling:オブジェクトのスケール

今回は、スケールを変えながら9個のボールのオブジェクトを生成しています。

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

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

import pybullet as p
import pybullet_data as pd
import time

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

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

offset = 0

# スケールを変えながらオブジェクトを生成
for scale in range (1,10,1):

  # ボールのオブジェクトを生成
  ball = p.loadURDF("soccerball.urdf",[offset,0,1], globalScaling=scale*0.1)
  
  # 動力学特性を変更
  p.changeDynamics(ball,-1,linearDamping=0, angularDamping=0, rollingFriction=0.001, spinningFriction=0.001)
  
  # ボールのビジュアルを設定
  p.changeVisualShape(ball,-1,rgbaColor=[0.8,0.8,0.8,1])

  # オフセットを移動させる
  offset += 2*scale*0.1

# 床のオブジェクトを生成
p.loadURDF("plane.urdf")

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

# リアルタイムシミュレーションモードに設定
p.setRealTimeSimulation(1)

# Pybulletに接続されている間ループを繰り返す
while p.isConnected():
  
  time.sleep(0.5)
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?