注意
僕は初心者です.
記事の通りにすれば動きはすると思いますが,熟練の方から見ると不自然なところがあるかもしれません.ご了承下さい.
環境構築
- C++を実行できるようにする
https://visualstudio.microsoft.com/ja/visual-cpp-build-tools/
このリンクの先のやつを押してダウンロードして実行する.
「C++ によるデスクトップ開発」(Desktop development with C++)という項目にチェックを入れて,ダウンロードする. - 適当なところに"Hoge"フォルダを作る
- コマンドプロンプロでそのフォルダまで移動する
- pybulletを入れるコマンドを実行
「pip install pybullet」をコマンドプロンプトで実行するだけ - なんか便利なgitリポジトリをクローン
「git clone https://github.com/bulletphysics/bullet3.git」をコマンドプロンプトで実行するだけ
Hogeフォルダの中にbullet3というフォルダができるはず
コーディング
先程作ったHogeフォルダの中にtest.pyをつくり
次のようにする.
import pybullet
import pybullet_data
import time
physicsClient = pybullet.connect(pybullet.GUI)
pybullet.setAdditionalSearchPath(pybullet_data.getDataPath())
pybullet.setGravity(0,0,-9.8)#重力の設定
start_pos = [0,0,2]#ボールの初期位置
start_ori = pybullet.getQuaternionFromEuler([0, 0, 0])#ボールの初期角度?
object=pybullet.loadURDF("soccerball.urdf",basePosition = start_pos)#先ほどクローンしたリポジトリの中から読み込むオブジェクトとしてサッカーボールを選択.
floor = pybullet.loadURDF("plane.urdf")#同様に床を選択
bt=pybullet.addUserDebugParameter("Reset",1,0,0)#ボタンを追加
pre_bt_clicks=pybullet.readUserDebugParameter(bt)#クリックされた数を代入
pybullet.resetBaseVelocity(object,angularVelocity=[0,10,0])#サッカーボールの初期速度
while pybullet.isConnected():#while trueでもok
pybullet.stepSimulation()
time.sleep(1./240.)
current_bt_clicks = pybullet.readUserDebugParameter(bt)#ボタンのクリック数を代入
if current_bt_clicks > pre_bt_clicks:#クリック数が増えていたらResetする
pybullet.resetBasePositionAndOrientation(object, start_pos, start_ori)
pybullet.resetBaseVelocity(object, linearVelocity=[0,0,0],angularVelocity=[0,10,0])
pre_bt_clicks = current_bt_clicks
実行
コマンドプロンプトでHogeフォルダに移動し次のように入力
python test.py
ウィンドウが表れシミュレーションが実行される.
右のResetボタンを押すと,リセットされる.

参考文献