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.

Metadata

Release files for packsim 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distribution (wheel)

Table of built distributions (wheels) for packsim 0.1.0
File Interpreter ABI Platform
packsim-0.1.0-cp38-cp38-manylinux_2_31_x86_64.whl CPython 3.8 CPython 3.8 Linux glibc 2.31+ x86-64 Details

Release files / packsim-0.1.0-cp38-cp38-manylinux_2_31_x86_64.whl

Download URL packsim-0.1.0-cp38-cp38-manylinux_2_31_x86_64.whl
Size 25.5 MB
Tags CPython 3.8 Linux glibc 2.31+ x86-64
SHA-256 checksum
How to use checksums
0983bc23ec81d47f8383e61b84febfb2f7cb18f1182f75125554a74abcc0eda0
BLAKE2b-256 checksum
How to use checksums
49837d7c3be6d87522def0580228ffffc42a8ea580597ebc31afe72d09b6af2f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.1 CPython/3.9.6

Release history Release notifications | RSS feed

This release

0.1.0 This release

1 release file

0.0.4

2 release files

0.0.3

2 release files

0.0.2

2 release files

0.0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page