chenyu93 / billiard

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

WIP, not stable.

Install

firsttime install

sudo apt install mesa-utils-extra
sudo apt install imagemagick graphviz -y


pip install cython pillow shapely msgpack_numpy pi3d gprof2dot

cd speed
python setup.py build_ext -i

test speed script

python -m cProfile -o result.out -s cumulative run_env.py

gprof2dot -f pstats result.out | dot -Tpng -o result.png

Usage

Fast version for training

from billiard_env.utils import DisplaySwitch
DisplaySwitch.use_display()

from billiard_env.pool_env import Env

Env.set_speed(999)
state = Env.get_state()
Env.act(angle=0.0, v_cue=2.0)
Env.plot_table('test1.jpg')
Env.set_state(state)
Env.plot_table('test2.jpg')

fast version speed performance

e5-2680v2 single core, ~13 shoot per seconds. no need for display

from billiard_env.pool_env import Env
import random
from tqdm import tqdm
Env.set_speed(999)

for _ in tqdm(range(100)):
    Env.reset()
    Env.act(angle=0.0, v_cue=1.0 + random.random())

slow version for generating gif

from billiard_env.utils import DisplaySwitch
DisplaySwitch.use_display()

from billiard_env.pool_env import Env

Env.set_speed(0.032)   # 1 / 0.0032 = 31.25 fps
state = Env.get_state()
Env.act(angle=0.0, v_cue=2.0, gif_filename='test.gif')
Env.plot_table('test.jpg')

About

License:MIT License


Languages

Language:Python 67.7%Language:HTML 27.3%Language:C++ 4.4%Language:C 0.6%