Skip to main content

PackSim

PackSim provides the regular-box simulation environments used by the RoboBPP robot bin-packing benchmark. The package includes a canonical occupancy dataset, replay actions, configuration files, PyBullet scenes, the IRB6700 robot model, and the native OMPL bindings required by the robot-planning mode.

Project documentation: https://robot-bin-packing-benchmark.github.io/documentation.html

Features

  • self-contained canonical inputs for a first run;
  • headless PyBullet simulation for server environments;
  • three simulation settings, from packing-only to robot motion planning;
  • backward-compatible simulate(dict) API;
  • structured Python results and machine-readable command-line output;
  • installation diagnostics with packsim doctor.

PackSim 0.1.0 supports regular 3D box packing with the bundled occupancy dataset and PCT replay. Irregular and 2D packing are outside this release.

Requirements

Version 0.1.0 retains native OMPL 1.5.2 bindings and therefore has a narrow runtime target:

  • Linux x86-64/amd64;
  • CPython 3.8;
  • glibc 2.31 or newer;
  • a repaired manylinux_2_31_x86_64 wheel.

Python 3.9 or newer, macOS, Windows, and ARM are not supported by this release. The wheel is platform-specific and is not published as py3-none-any.

Python 3.8 is end-of-life. Version 0.1.0 uses it only to preserve compatibility with the bundled OMPL ABI, and should be installed in an isolated environment. A later release will move to rebuilt or current OMPL bindings and a maintained Python version.

Installation

Create an isolated Python 3.8 environment, then install from PyPI:

python3.8 -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade "pip<25.1"
python -m pip install packsim==0.1.0
packsim doctor

Ubuntu 24.04 does not provide Python 3.8 as its system Python. See docs/installation.md for the supported Miniforge setup and clean-install checks.

Quick start

The existing dictionary API remains available:

from packsim import simulate

summary = simulate({
    "setting": 1,
    "data": "occupancy",
    "test_data_config": 0,
    "gui": 0,
})
print(summary)

Configuration, actions, planning times, and occupancy data are loaded from the installed package when their paths are omitted. Results are written to ./packsim-results by default.

New code can use the structured API:

from packsim import SimulationConfig, run

result = run(SimulationConfig(
    setting=1,
    data="occupancy",
    test_data_config=0,
    gui=False,
))

print(result.status)
print(result.placed_items)
print(result.occupancy)
print(result.termination_reason)

Custom paths are still supported:

from packsim import simulate

simulate({
    "setting": 1,
    "data": "occupancy",
    "test_data_config": 0,
    "gui": 0,
    "config": "/absolute/path/to/default.yaml",
    "action_path": "/absolute/path/to/action.json",
    "planning_time_path": "/absolute/path/to/planning_time.json",
    "save_path": "/absolute/path/to/results",
})

Simulation settings

Setting Components Bundled replay
1 Packing environment 27 actions
2 Packing environment and PyBullet physics 24 physics-aware actions
3 Packing environment, PyBullet, IRB6700, and OMPL 24 physics-aware actions

Run a headless canonical simulation from any directory:

packsim smoke-test --setting 1
packsim smoke-test --setting 2
packsim smoke-test --setting 3

Add --json for machine-readable output or --output DIR to select the result directory. Use --gui only when a desktop display is available.

status="completed" means the simulator reached a controlled terminal state. Check all_items_placed, placed_items, failed_item, and termination_reason for the outcome of an individual run.

The canonical regression values for 0.1.0 are:

Setting Expected result
1 27 requested, 27 placed, mean occupancy 0.8692859120457622
2 24 requested, 23 placed, item index 23 rejected by the stability preflight, mean occupancy 0.8889730809076817
3 Native OMPL loads and the robot planner exits cleanly with a structured result

Diagnostics

Run the environment check before reporting an installation problem:

packsim doctor
packsim doctor --json

The report checks Python and platform compatibility, installed dependency versions, canonical resource hashes, bundled OMPL locations, and an isolated native-library load on the supported runtime.

Common issues:

Symptom Action
No matching distribution found Confirm Linux x86-64 and CPython 3.8.
OMPL or shared-library load error Confirm that pip installed the repaired manylinux_2_31_x86_64 wheel, then save packsim doctor --json.
PyBullet cannot connect to X Run headless without --gui.
A custom input cannot be found Use the bundled defaults or pass an absolute path.

Development

Installation details are in docs/installation.md. Maintainer build, validation, and upload commands are in docs/release.md. The release process rejects universal, raw linux_x86_64, incomplete, or incorrectly tagged wheels.

License

Original PackSim code is distributed under the MIT License. Bundled components and assets retain their upstream licenses. See THIRD_PARTY_NOTICES.md and the LICENSES directory.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

packsim-0.1.0-cp38-cp38-manylinux_2_31_x86_64.whl (25.5 MB view details)

Uploaded CPython 3.8manylinux: glibc 2.31+ x86-64

File details

Details for the file packsim-0.1.0-cp38-cp38-manylinux_2_31_x86_64.whl.

File metadata

File hashes

Hashes for packsim-0.1.0-cp38-cp38-manylinux_2_31_x86_64.whl
Algorithm Hash digest
SHA256 0983bc23ec81d47f8383e61b84febfb2f7cb18f1182f75125554a74abcc0eda0
MD5 99315ab8827da4bbc295d1126d1451c6
BLAKE2b-256 49837d7c3be6d87522def0580228ffffc42a8ea580597ebc31afe72d09b6af2f

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page